Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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