Hoe te werken met CFF-lettertypen in Python
CFF (Compact Font Format) is het outline-formaat dat wordt gebruikt in OpenType-lettertypen en zelfstandige .cff-bestanden. Aspose.Font FOSS vertegenwoordigt CFF-lettertypen als CffFont-instanties, die de basis Font-klasse uitbreiden en CFF-specifieke gegevens blootleggen.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Stap 2: Importeer vereiste klassen
from aspose_font import FontLoader
from aspose_font import CffFont
from aspose_font import FontTypeStap 3: Laad een CFF-lettertype
Roep FontLoader.open() aan met het pad naar uw .cff-bestand. Het geretourneerde object is een CffFont-instantie die het aantal glyphs, de fontnaam en CFF-specifieke eigenschappen blootlegt:
font = FontLoader.open("MyFont.cff")
print(font.font_name)
print(font.num_glyphs)Stap 4: Toegang tot kernparen
Cast het geladen lettertype naar CffFont, roep vervolgens get_kern_pairs() aan om de lijst met kernpaar-records op te halen. Niet alle CFF-lettertypen bevatten kern-data; controleer de lengte voordat u iterereert:
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)}")Stap 5: Converteer CFF naar TTF
Geef het geladen CffFont door aan FontConverter.convert() met FontType.TTF om een nieuwe TtfFont in TTF-outlineformaat te produceren:
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)Veelvoorkomende problemen en oplossingen
CffFont has no attribute cff_font — cff_font is een eigenschap van TtfFont die ingebedde CFF-gegevens retourneert, niet op de basis Font klasse. Voor zelfstandige CFF-bestanden gebruik CffFont direct.
Lege kerningparen — Niet alle CFF-lettertypen bevatten kerningpaargegevens. Controleer met len(cff_font.get_kern_pairs()) > 0 voordat u iteraties uitvoert.
Veelgestelde vragen
Wat is het verschil tussen CffFont en TtfFont?
CffFont staat voor zelfstandige CFF-bestanden. TtfFont staat voor TTF/OTF-bestanden; een OTF kan een CFF-outline bevatten die toegankelijk is via ttf_font.cff_font.
Kan ik een CFF-lettertype converteren naar WOFF2?
Ja. FontConverter.convert(font, FontType.WOFF2) werkt met elke Font-instantie, inclusief CffFont.