nicht erhalten Ich versuche, Kerning Informationen aus einigen. TTF-Schriftarten mit Freetype 2.6-Bibliothek zu extrahieren. DieseKann das Kerning von bestimmten TTF-Schriftarten mit Freetype
ist, wie ich Kerning Informationen (Durchschleifen Zeichen) erhalten:
if(FT_HAS_KERNING(face->getFace()) && previous){
FT_Vector delta;
FT_UInt glyph_index = FT_Get_Char_Index(face->getFace(), character);
FT_UInt prev_index = FT_Get_Char_Index(face->getFace(), previous);
FT_Get_Kerning(face->getFace(), prev_index, glyph_index,
FT_KERNING_DEFAULT, &delta);
kerning = delta.x >> 6;
}
Ich habe versucht, das Programm mit einigen verschiedenen Schriftarten: "Times New Roman.ttf", "Tymes.ttf", „Untergebener. otf ". Nur für die Times new Roman-Schriftart werden die Kerning-Informationen korrekt extrahiert, und das habe ich überprüft, indem ich die Informationen protokolliert habe.
Das Problem ist, dass ich nicht verstehe, warum das Kerning immer 0 ist (d. H. FT_HAS_KERNING gibt false zurück, UND FT_GetKerning gibt trotzdem 0 zurück) für die anderen 2 Schriftarten.
Ich habe mit fontforge überprüft, dass Kerning-Informationen für Paare "VA" und "To" vorhanden sind, und sie sind da! Sie müssen also in der .ttf gespeichert werden. Mit dem obigen Code ist das Kerning immer gleich 0 für "VA" oder "To", oder FT_HAS_KERNING gibt false zurück.
Gibt es eine Freetype-Option oder Einstellung, die ich hier fehlt? Jede Art von Erleuchtung geschätzt ..
EDIT: ich mit der Gesichtsgröße setze
FT_Set_Pixel_Sizes(face->getFace(), 0, size);
EDIT: Kerning-Info für "tymes" font in Fontforge:
Ermittelt FontForge, ob es sich um TrueType 'kern' Kerning (alias" ye olde style ") oder um eine moderne OpenType' GPOS' Tabelle handelt? "FreeType unterstützt nur Kerning über die (eher einfache) 'kern' Tabelle." (http://www.freetype.org/freetype2/docs/glyphs/glyphs-4.html) – usr2564301
Danke für deine Hilfe! ^^ Ich habe die Kerninfo in fontforge überprüft und es sieht für mich wie "kern Untertabelle" aus einfache Zeichenpaare und ein Wert ist vorhanden .. (siehe Edit), sieht aus wie fontforge benutzt auch freetype, was mich wundert was ich falsch mache – Lake
Die Terminologie "lookup * x * subtable" ist eigentlich OpenType GPOS talk. Wenn Sie einen Online-Download-Speicherort für eine der Schriftarten hinzufügen können, bei denen dies fehlschlägt, kann ich einen Blick hinein werfen. Ich habe mir zu diesem Zweck ein Tool geschrieben. – usr2564301