Kann nicht das Kerning bestimmter .ttf-Schriften mit freetype @ erhalt

Ich versuche, Kerning-Informationen aus einigen .ttf-Schriften mit der Freetype 2.6-Bibliothek zu extrahieren.

So erhalte ich Kerning-Informationen (Durchlaufen von Zeichen):

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 das Programm mit verschiedenen Schriftarten ausprobiert: "Times new roman.ttf", "Tymes.ttf", "minion.otf". Nur für Times New Roman-Schriftarten werden die Kerning-Informationen korrekt extrahiert, und ich habe dies durch Protokollieren der Informationen überprüft.

Das Problem ist, dass ich nicht verstehe, warum der 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, ob Kerning-Informationen für die Paare "VA" und "To" vorhanden sind, und sie sind da! Sie müssen also in der .ttf gespeichert werden. Mit dem obigen Code ist der Kerning jedoch immer 0 für "VA" oder "To", oder FT_HAS_KERNING gibt false zurück.

Ist hier eine Option oder Einstellung für den freien Typ nicht vorhanden? Jede Art von Erleuchtung ist willkommen.

EDIT: Ich stelle die Gesichtsgröße mit @ e

FT_Set_Pixel_Sizes( face->getFace(), 0, size);

EDIT: Kerning-Informationen für "tymes" -Schrift in fontforge:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage