Hur man arbetar med CFF-teckensnitt i Python

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 FontType

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

Se även

 Svenska