
FreeType behebt ineffizienten Code, der beim Laden der Schriftart Arial TTF zu einer 10-fachen Verlängerung der Startzeit führt
Die FreeType-Bibliothek zum Rendern von Text auf Bitmaps, die von einer Vielzahl von Anwendungen verwendet wird, hat heute drei Patches erhalten, die eine wichtige Leistungsverbesserung bieten, um eine erhebliche Ineffizienz innerhalb der bestehenden FreeType-Codebasis zu beheben.
Eine Übersetzung von 🇬🇧 Phoronix.com
Der Open-Source-Entwickler Werner Lemberg hat drei Patches veröffentlicht, die die Erstellung der Reverse Map der Anpassungsdatenbank beschleunigen. Dies geschah, nachdem aufgedeckt wurde, dass eine der Funktionen extrem langsam sein kann, wenn eine Schriftart einen umfangreichen Satz von OpenType-Schriftartenmerkmalen verwendet. Die Funktion wurde beim Laden der Schriftart Arial TTF 66,9k
mal aufgerufen und konnte die Startzeit von FreeType um das Zehnfache
erhöhen.
Werner Lemberg erklärt im ersten Patch der Serie, der jetzt in FreeType Git eingebunden ist:
Wie sich herausstellte, ist die ursprüngliche Implementierung mit `hb_ot_shape_glyphs_closure` extrem langsam, wenn eine Schriftart eine Vielzahl von OpenType-Funktionen hat. Zum Beispiel wurde diese Funktion 66954 Mal aufgerufen, während die Schrift `arial.ttf` Version 7.00 geladen wurde, was die Startzeit von FreeType um den Faktor 10 erhöhte, was inakzeptabel ist.
Der neue Algorithmus verwendet einen völlig anderen, tieferen Ansatz, der nicht mehr mit OpenType-Features, sondern mit OpenType-Lookups arbeitet. Er stützt sich auf die Funktion `hb_ot_layout_lookup_get_glyph_alternates` und ersetzt ebenfalls die Rekursion durch eine einfache Schleife. Insgesamt bringt dies die zusätzliche Startzeit wieder in einen akzeptablen Bereich von ein paar Prozent.
Ein Nebeneffekt des neuen Ansatzes ist, dass er mehr alternative Formen abfängt: Der alte Code konnte skript-spezifische Merkmale nicht richtig behandeln.
Alle drei Patches zur Beschleunigung der Erstellung der Reverse-Map der Anpassungsdatenbank wurden heute in FreeType Git integriert, um die Ladezeiten für Schriften zu verkürzen, die die umfangreichen OpenType-Funktionen nutzen.
Ein Service von s3n🧩net
Comments