PaperForge.Fonts.TrueType (PaperForge v1.2.0)

Copy Markdown View Source

Minimal TrueType parser for embedded PDF Type 0 fonts.

Summary

Types

t()

@type t() :: %{
  data: binary(),
  units_per_em: pos_integer(),
  number_of_glyphs: non_neg_integer(),
  unicode_to_gid: %{optional(non_neg_integer()) => non_neg_integer()},
  widths: %{optional(non_neg_integer()) => non_neg_integer()},
  bbox: [integer()],
  ascent: integer(),
  descent: integer(),
  cap_height: integer(),
  italic_angle: number(),
  postscript_name: binary(),
  flags: pos_integer(),
  index_to_loc_format: integer(),
  glyph_offsets: [non_neg_integer()],
  raw_tables: %{optional(binary()) => binary()}
}

Functions

expand_glyph_dependencies(font, glyph_ids)

@spec expand_glyph_dependencies(t(), Enumerable.t()) :: MapSet.t(non_neg_integer())

glyph_dependencies(font, glyph_id)

@spec glyph_dependencies(t(), non_neg_integer()) :: [non_neg_integer()]

glyph_id(map, codepoint)

@spec glyph_id(t(), non_neg_integer()) :: {:ok, non_neg_integer()} | :error

glyph_width(map, glyph_id)

@spec glyph_width(t(), non_neg_integer()) :: non_neg_integer()

parse(data)

@spec parse(binary()) :: {:ok, t()} | {:error, term()}

parse!(data)

@spec parse!(binary()) :: t()

pdf_width(font, glyph_id)

@spec pdf_width(t(), non_neg_integer()) :: integer()