Не удается получить кернинг некоторых определенных шрифтов .ttf с помощью freetype.
Я пытаюсь извлечь информацию о кернинге из некоторых шрифтов .ttf с помощью библиотеки freetype 2.6.
Вот как я получаю информацию о кернинге (перебирая символы):
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;
}
Я попробовал программу с несколькими разными шрифтами: «Times new roman.ttf», «Tymes.ttf», «minion.otf». Только для нового римского шрифта Times информация о кернинге извлекается правильно, и я проверил это, зарегистрировав информацию.
Проблема в том, что я не понимаю, почему кернинг всегда равен 0 (т.е. FT_HAS_KERNING возвращает false, а FT_GetKerning возвращает 0 в любом случае) для других 2 шрифтов.
Я проверил с помощью fontforge, что информация о кернинге присутствует для пар "VA" и "To", и они есть! Поэтому они должны храниться в .ttf. Тем не менее, с кодом выше кернинг всегда равен 0 для «VA» или «To», либо FT_HAS_KERNING возвращает false.
Есть ли здесь какая-либо опция или настройка freetype? Любое просвещение ценится ..
РЕДАКТИРОВАТЬ: я устанавливаю размер лица с
FT_Set_Pixel_Sizes( face->getFace(), 0, size);
РЕДАКТИРОВАТЬ: Информация о кернинге для шрифта "tymes" в fontforge: