Jak pracować z czcionkami CFF w Python
CFF (Compact Font Format) jest formatem konturów używanym w czcionkach OpenType oraz w samodzielnych plikach .cff. Aspose.Font FOSS reprezentuje czcionki CFF jako instancje CffFont, które rozszerzają podstawową klasę Font i udostępniają dane specyficzne dla CFF.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Krok 2: Zaimportuj wymagane klasy
from aspose_font import FontLoader
from aspose_font import CffFont
from aspose_font import FontTypeKrok 3: Załaduj czcionkę CFF
Wywołaj FontLoader.open() z ścieżką do swojego pliku .cff. Zwrócony obiekt jest instancją CffFont udostępniającą liczbę glifów, nazwę czcionki oraz właściwości specyficzne dla CFF:
font = FontLoader.open("MyFont.cff")
print(font.font_name)
print(font.num_glyphs)Krok 4: Dostęp do par kerningowych
Rzutuj wczytaną czcionkę na CffFont, a następnie wywołaj get_kern_pairs(), aby pobrać listę rekordów par kerningowych. Nie wszystkie czcionki CFF zawierają dane kerningu; sprawdź długość przed iteracją:
from aspose_font import FontLoader
from aspose_font import CffFont
cff_font: CffFont = FontLoader.open("MyFont.cff")
kern_pairs = cff_font.get_kern_pairs()
print(f"kern pairs: {len(kern_pairs)}")Krok 5: Konwersja CFF do TTF
Przekaż wczytany CffFont do FontConverter.convert() wraz z FontType.TTF, aby wygenerować nowy TtfFont w formacie konturu TTF:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
font = FontLoader.open("MyFont.cff")
ttf = FontConverter.convert(font, FontType.TTF)Typowe problemy i rozwiązania
CffFont has no attribute cff_font — cff_font jest właściwością w TtfFont która zwraca osadzone dane CFF, nie w bazie Font klasie. Dla samodzielnych plików CFF użyj CffFont bezpośrednio.
Puste pary kerningu — Nie wszystkie czcionki CFF zawierają dane o parach kerningu. Sprawdź za pomocą len(cff_font.get_kern_pairs()) > 0 przed iteracją.
Najczęściej zadawane pytania
Jaka jest różnica między CffFont a TtfFont?
CffFont reprezentuje samodzielne pliki CFF. TtfFont reprezentuje pliki TTF/OTF; OTF może zawierać osadzony kontur CFF dostępny poprzez ttf_font.cff_font.
Czy mogę przekonwertować czcionkę CFF na WOFF2?
Tak. FontConverter.convert(font, FontType.WOFF2) działa z każdą instancją Font, w tym CffFont.