Hur man arbetar med CFF-teckensnitt i Python
CFF (Compact Font Format) är det konturformat som används i OpenType-typsnitt och fristående .cff-filer. Aspose.Font FOSS representerar CFF-typsnitt som CffFont-instanser, vilka utökar den grundläggande Font-klassen och exponerar CFF-specifik data.
Steg-för-steg-guide
Steg 1: Installera paketet
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Steg 2: Importera nödvändiga klasser
from aspose_font import FontLoader
from aspose_font import CffFont
from aspose_font import FontTypeSteg 3: Ladda ett CFF-typsnitt
Anropa FontLoader.open() med sökvägen till din .cff-fil. Det returnerade objektet är en CffFont-instans som exponerar teckenantal, typsnittsnamn och CFF-specifika egenskaper:
font = FontLoader.open("MyFont.cff")
print(font.font_name)
print(font.num_glyphs)Steg 4: Åtkomst till kern-par
Kasta den inlästa fonten till CffFont, anropa sedan get_kern_pairs() för att hämta listan med kern-par-poster. Alla CFF-fonter innehåller inte kern-data; kontrollera längden innan du itererar:
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)}")Steg 5: Konvertera CFF till TTF
Skicka den inlästa CffFont till FontConverter.convert() med FontType.TTF för att skapa en ny TtfFont i TTF-konturformat:
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)Vanliga problem och lösningar
CffFont has no attribute cff_font — cff_font är en egenskap på TtfFont som returnerar inbäddad CFF-data, inte på basen Font klass. För fristående CFF-filer använd CffFont direkt.
Tomma kern-par — Alla CFF-teckensnitt innehåller inte kern-par-data. Kontrollera med len(cff_font.get_kern_pairs()) > 0 innan du itererar.
Vanliga frågor
Vad är skillnaden mellan CffFont och TtfFont?
CffFont representerar fristående CFF-filer. TtfFont representerar TTF/OTF-filer; en OTF kan bädda in en CFF-kontur som är tillgänglig via ttf_font.cff_font.
Kan jag konvertera ett CFF-teckensnitt till WOFF2?
Ja. FontConverter.convert(font, FontType.WOFF2) fungerar med alla Font-instanser, inklusive CffFont.