Skip to content

Verschachtelte Composite Glyphs werden unvollständig aufgelöst #348

@th-joerger

Description

@th-joerger

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.

output-upstream-6.2.4.pdf

output-fix-6.2.4-patched.pdf

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

MinimalWorkingExample.zip

# 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions