Próbuję wyodrębnić informacje kerningu z niektórych czcionek .ttf z biblioteki freetype 2.6.Nie można uzyskać kerningu niektórych określonych czcionek .ttf z typem wolnego
ten sposób uzyskać kerningu informacje (przelotowego znaków):
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;
}
Próbowałem programu z kilku różnych czcionek: "Times New roman.ttf", "Tymes.ttf", „miniona. otf ". Tylko dla czcionek Times New Roman informacje o kerningu są poprawnie wyodrębniane, a ja sprawdziłem je, rejestrując informacje.
Problem polega na tym, że nie rozumiem, dlaczego kerning ma zawsze wartość 0 (tzn. FT_HAS_KERNING zwraca wartość FAŁSZ, A FT_GetKerning zwraca wartość 0 mimo to) dla pozostałych 2 czcionek.
Sprawdziłem za pomocą fontforge, że informacje o kerningu są obecne dla par "VA" i "To", i są tam! Więc muszą być przechowywane w .ttf. Niemniej jednak, powyższym kerningiem jest zawsze 0 dla "VA" lub "To", lub FT_HAS_KERNING zwraca false.
Czy istnieje opcja lub ustawienie freetingu, którego tutaj brakuje? Wszelkiego rodzaju oświecenia jest doceniana ..
EDIT: ja ustawienie rozmiaru twarz z
FT_Set_Pixel_Sizes(face->getFace(), 0, size);
EDIT: Kerning informacji dla "Tymes" czcionki w FontForge:
Czy FontForge powie Ci, czy jest to TrueType 'kern' kerning (aka." Stary styl "), czy używasz nowoczesnej tabeli OpenOSP GPOS? "FreeType obsługuje tylko kerning za pomocą (raczej prostej) tabeli" kern "." (http://www.freetype.org/freetype2/docs/glyphs/glyphs-4.html) – usr2564301
Dziękuję za pomoc! ^^ Sprawdziłem informacje o kern w fontforge i wygląda mi to jak "podtable Kern" zawierające proste pary znaków i jedna wartość jest obecna .. (patrz edit), wygląda na to, że fontforge używa również freetype, co sprawia, że zastanawiam się, co robię źle – Lake
Terminologia "lookup * x * subtable" jest w rzeczywistości rozmową OpenOS z GPOS. Jeśli możesz dodać lokalizację pobierania online dla jednej z czcionek, na których się to nie udaje, mogę zajrzeć do środka. Napisałem sobie narzędzie do tego celu. – usr2564301