Jak pracować z czcionkami CFF w Python

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 FontType

Krok 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.

Zobacz także

 Polski