A font referenced by a PDF page, with its zero-based page index, the page's font resource name, and metadata describing the face.
The :base_font name has any six-letter subset prefix (ABCDEF+) stripped;
:subset? records whether one was present. :subtype is the PDF font type
("Type1", "TrueType", "Type0"), and :encoding is :identity,
:custom, or {:standard, name} for a named base encoding such as
"WinAnsiEncoding".
The raw embedded font program is not carried on the struct; instead :ref is a
handle to the font, and data/1 pulls the bytes on demand:
{:ok, bytes} = PdfElixide.Document.Font.data(font) # embedded TTF/OTF bytesFor a non-embedded font (:embedded? is false, e.g. one of the standard 14)
data/1 returns {:ok, nil}.
Summary
Types
A font's character encoding: {:standard, name} for a named base encoding,
or :custom / :identity.
Functions
Releases this handle's reference to the font immediately.
Returns whether the font handle has been released with close/1.
Returns the font's raw embedded font-program bytes — the TrueType / OpenType file, suitable for re-embedding elsewhere.
Same as data/1 but returns the bytes directly, raising on error.
Types
@type encoding() :: {:standard, String.t()} | :custom | :identity
A font's character encoding: {:standard, name} for a named base encoding,
or :custom / :identity.
Functions
@spec close(t()) :: :ok
Releases this handle's reference to the font immediately.
The embedded font program behind :ref is normally freed when the BEAM
garbage-collects the handle; close/1 releases it now. Calling it is optional
and idempotent. Because a font can be shared between pages, the underlying
bytes are freed once no other extracted handle still references the same font.
Afterwards data/1 returns {:error, %PdfElixide.Error{reason: :closed}}
(and data!/1 raises it); the metadata fields on the struct keep working. A
font's lifetime is independent of the document it came from — closing either
one leaves the other usable.
Returns whether the font handle has been released with close/1.
@spec data(t()) :: {:ok, binary() | nil} | {:error, PdfElixide.Error.t()}
Returns the font's raw embedded font-program bytes — the TrueType / OpenType file, suitable for re-embedding elsewhere.
Returns {:ok, nil} for a non-embedded font (:embedded? is false).
Same as data/1 but returns the bytes directly, raising on error.