Introducere

Formatul de font compact (CFF) este formatul descriptiv al glifului binar folosit în OpenType. fonturi cu un motor de contorizare compatibil PostScript. Aspose.Font FOSS pentru Python expuse un set dedicat de clase sub aspose_font.cff spațiul de nume pentru citire și inspecția structurilor de date ale CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex, și Type2Interpreter.Acest post merge prin modul de a încărca fonturi CFF, navigati tabelele lor interne, si interpreteaza programe charstring folosind biblioteca.

Pachetul este licenţiat MIT. Instalaţi-l cu pip install aspose-font>=1.0.0.


Caracteristici cheie

Încărcarea fontului CFF

FontLoader.open() detectează formatul CFF automat trece fie un standalone .cff fișier sau un fișier OTF care încorporează o tabelă de contur CFF. Obiectul returnat este un CffFont (accesibil prin intermediul cff_font proprietate pe TtfFont pentru fișierele OTF).

from aspose_font.loader import FontLoader

# Load a standalone CFF file
font = FontLoader.open("OpenSans.cff")

# Load a standalone CFF file (auto-detected from format)
font = FontLoader.open("OpenSans.cff")
print(font.font_name, font.num_glyphs)

CFF Charset Mapping Glyph ID-uri la nume

CffCharset mapă ID-urile de glifoane (GID) la numele de glyfoanele PostScript. Utilizați standard() la … în obțineți standardul ISO Adobe charset sau from_reader() pentru a analiza un set de caractere din binar Datele CFF. name_for() metoda returnă numele PostScript pentru un GID, și gid_for() efectuează căutarea inversă.

from aspose_font.cff.charset import CffCharset

charset = CffCharset.standard()
print(charset.name_for(1))    # ".notdef" or similar
print(charset.gid_for("A"))   # GID for the PostScript name "A"

Codarea CFF Unicode-to-GID Mapping

CffEncoding se ocupă de tabelul de codificare CFF, care mapează codurile caracterelor cu identificatorii glifoși. standard() returnă codificarea standard, expert() returnă codarea expertului și from_reader() Parsează o codificare personalizată din datele binare CFF. Utilizați unicode_to_gid() la … în căutați un GID prin punctul de cod Unicode și get_all_codepoints() pentru a enumera toate cartografiate Puncte de cod.

from aspose_font.cff.encoding import CffEncoding

encoding = CffEncoding.standard()
gid = encoding.unicode_to_gid(0x41)  # Unicode for 'A'
all_codepoints = encoding.get_all_codepoints()
print(f"Standard encoding covers {len(all_codepoints)} code points")

Parsarea dicționarului CFF

Fontele CFF stochează metadate de nivel superior și private în dicționare. CffDict.from_bytes() analizează o blob CFF DICT brut și vă oferă get() și de: set() acces prin cheia operatorului. TopDict.from_dict() specializarea acestora pentru dicționarele CFF de nivel superior și PrivateDict.from_dict() face același lucru pentru DICT private.

from aspose_font.cff.dict_ import CffDict

# Parse a raw CFF DICT from bytes
raw_dict_bytes = b"..."  # CFF-encoded DICT bytes
d = CffDict.from_bytes(raw_dict_bytes)
vals = d.get(21)  # retrieve values for operator 21 (PostScript CharstringType)

Structuri ale indicelui CFF

CffIndex reprezintă o structură de date CFF INDEX un matric cu prefix lungime a variabilelor - lungime de șiruri byte utilizate pentru charstrings, subrs și tabele cu nume. from_reader() Parsează un INDEX de la o cititoare binară și rezultatul este subscribibil prin index integer.

from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader  # internal API — may change between releases
import io

raw_index = b"..."  # raw CFF INDEX bytes
reader = BinaryReader(io.BytesIO(raw_index))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Interpretarea tipului 2 Charstring

Type2Interpreter execută un program de tip 2 charstring (compact PostScript-like format folosit în fonturile CFF) și produce un GlyphPath De comandă de schiţă. interpret() cu baiti charstring si dicționarul privat asociat. vă permite să extrageți contoururile de glif brut din CFF charstrings fără o completă Interpretator PostScript.

from aspose_font.cff.type2 import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)
for cmd in glyph_path.commands:
    print(type(cmd).__name__, cmd)

Început rapid

pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader

# Load an OTF with embedded CFF outlines
font = FontLoader.open("OpenSans-Regular.otf")

glyph_id = font.encoding.unicode_to_gid(0x41)
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")

Formatele suportate

FormatulExtindereCiteşte.Scrie .
CFF.cff
OTF.de la
TTF.ttf
WOFF.- Ce ?
WOFF2.woff2 (în limba engleză)
EOT.Nu.
TYPE1.pfb / .pfa

Open Source & Licențiere

Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Aspose-font-foss/Aspose.Font-FOSS-for-Python. Instalați din PyPI ca: aspose-font.


Cum să începem?

Resurse conexe