-
Notifications
You must be signed in to change notification settings - Fork 231
Description
Zusammenfassung
GlyphDataTable.CompleteGlyphClosure() durchläuft die Menge der benötigten Glyphen nur einmal, um zusammengesetzte Glyphen in ihre Bestandteile aufzulösen. Sobald ein Composite Glyph als verschachtelte Komposition auf einen weiteren Composite Glyph verweist, werden die transitiven Abhängigkeiten nicht erkannt. Das resultierende Font-Subset ist unvollständig.
Betroffene Zeichen
Jedes Zeichen, dessen Glyph in einem bestimmten Schriftschnitt verschachtelt zusammengesetzt ist – also ein Composite Glyph, dessen Komponente selbst ein Composite Glyph ist.
In Barlow Bold sind deutsche Umlaute (Ä, Ö, Ü, ä, ö, ü) zusammengesetzt aus Basisbuchstabe + Diakritikum. Die Basisbuchstaben im Bold-Schnitt sind wiederum selbst Composite Glyphs. Der Single-Pass verfehlt die zweite und alle weiteren Ebenen.
Beispielprojekt
# 1. Mit PDFsharp 6.2.4 von NuGet.org bauen -> Bug sichtbar
dotnet run -c Release -p:PdfSharpVersion=6.2.4
# 2. Ausgabe.pdf öffnen -> fette Umlaute fehlen / sind leer
# 3. Mit Fix bauen (6.2.4-fixNestedCompositeGlyphClosure) -> Bug behoben
dotnet run -c Release -p:PdfSharpVersion=6.2.4-fixNestedCompositeGlyphClosure
# 4. Ausgabe.pdf öffnen -> alle Zeichen korrekt