OpenType-CFF2-Default-Instance-Appearances

Die nativen Builder für Plain-, Rich-, Shaped- und Family-Appearances akzeptieren einen vollständigen OpenType-OTTO-Font mit CFF2-Outlines an seinen Default-Variation-Koordinaten

Der Original-Font bleibt die Quelle für Unicode-Zeichenmapping, Glyph-Indizes, horizontale Advances und Shaping; HarfBuzz löst seine Default-Instance-Outlines auf, einschließlich Outlines, die über mehrere Font-Dictionaries ausgewählt wurden

Der Builder wandelt jedes Glyph in ein statisches CID-keyed-CFF-1-Programm um und bettet es als FontFile3 mit Subtype CIDFontType0C, einer Adobe-Identity-Collection und CIDs gleich den ursprünglichen Glyph-Indizes ein

Das erzeugte Encoding, die Widths und das ToUnicode-Mapping behalten die ursprüngliche Glyph-Identität und logische Unicode-Sequenzen bei, einschließlich Supplementary Characters, Ligaturen und Combining Marks

Das ergibt ein PDF-1.7-Fontprogramm mit den CFF-1-Strukturen aus ISO 32000-1:2008 9.7 und 9.9; CFF2 wird nicht direkt in einen PDF-Font-Stream eingebettet

Eine HarfBuzz-Bibliothek mit passender Architektur, die hb_font_draw_glyph und unveränderliche Draw-Callbacks bereitstellt, ist erforderlich, auch für unshapeden Text; diese APIs gibt es ab HarfBuzz 7, und HOTPDF_HARFBUZZ_LIBRARY wählt eine explizite Bibliothek

Komplexes Shaping nutzt zusätzlich die bestehende FriBidi-Abhängigkeit und den bestehenden Scale-1000-Integer-Advance-Kontrakt; ideale, nicht quantisierte Advances am ursprünglichen unitsPerEm bleiben eine separate Präzisionseinschränkung

Editierbare Appearances verlangen Installable- oder Editable-Embedding-Rechte; die schreibgeschützte Appearance-Erzeugung erlaubt Preview-and-Print-Rechte, während Restricted- und Bitmap-only-Rechte weiter abgelehnt werden

No-Subsetting behält jedes ursprüngliche Glyph im konvertierten Programm, auch ungenutzte; die Konvertierung ändert das Fontprogramm-Format und verspricht keine bytegenaue Erhaltung des ursprünglichen OpenType-Containers

Das konvertierte Programm nutzt einen eigenen Primary Name und behält lesbare Copyright- und License-Hinweise plus die Original-Name-Table-Bytes

Quellfont-, Working-Buffer-, Complete-Font-Layout-, Objektgrößen-, Rich-Font-Aggregat-, Abbruch- und native Rendering-Grenzen werden vor der Veröffentlichung geprüft; fehlerhafte Missing-Glyph-Programme bleiben Fehler, während gültige leere Glyphs erhalten bleiben

Die Type-2-Ausgabe hat 16.16-Koordinatenpräzision und begrenzte Operand-Deltas, höchstens 65.535 Glyphs und höchstens 65.535 Bytes pro Glyph-Programm

Eigenständige rohe CFF2-Tables, direkte CFF2-Font-Streams in bestehenden PDF-Default-Appearance-Ressourcen, Nondefault-Variation-Achsen-Auswahl und breiteres Complex-Text-Layout liegen außerhalb dieses Backends

Bestehende CFF-1-OpenType-Eingaben nutzen weiter das kompakte Appearance-Backend, während eingebettete Type1-, Type1C- und CIDFontType0C-Annotations-Ressourcen den ursprünglichen Raw-Font-Fallback verwenden

TryGetCFF2FontTable ist eine begrenzte Format-Capability-Abfrage, keine vollständige Outline- oder Rechtevalidierung

Siehe HPDFBuildHeadlessTextAppearance und THPDFTrueTypeData