Lucrarea cu fonturi CFF

Lucrarea cu fonturi CFF

Acest ghid arată cum să încărcați și să inspectați fonturile interne CFF seturi de caractere, tabele de codificare, dicţionare și structuri indexare ?? folosind Aspose.Font FOSS pentru Python .

Fontele Compact Font Format (CFF) stochează contoarele glifului ca programe de tip 2 charstring. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff spațiu de nume pentru citirea caracterelor CFF, a tabelurilor de codificare, dicționarilor și indexelor.


CFF Charset

CffCharset mapă identificatorii de glife la numele de glyphe PostScript. Apel CffCharset.standard() pentru a obține setul de caractere Adobe ISO integrat, apoi utilizați name_for() și de: gid_for() pentru a traduce între identificatorii de glifoane și nume.

from aspose_font.cff.charset import CffCharset

charset = CffCharset.standard()
name = charset.name_for(1)   # PostScript name for GID 1
gid  = charset.gid_for("A")  # GID for PostScript name "A"

Codarea CFF

CffEncoding codurile de caractere sunt înlocuite cu ID-uri de glifoane. Codarea standard acoperă setul de caracteristici Adobe Latin; utilizare unicode_to_gid() pentru a căuta puncte de cod individuale și get_all_codepoints() să listeze fiecare valoare cartografiată.

from aspose_font.cff.encoding import CffEncoding

enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()

Parsarea dicționarului CFF

CffDict.from_bytes() Parsează un blob CFF DICT brut într-o cartografiere cu cheie operator. Fiecare cheia operatorului cartografează o listă de valori numerice care configurează fontul, cum ar fi lățimea implicită sau offsetele subroutine.

from aspose_font.cff.dict_ import CffDict

d = CffDict.from_bytes(raw_bytes)
vals = d.get(21)   # retrieve values for operator 21

Indicele CFF

CffIndex.from_reader() analizează o structură de date CFF INDEX dintr-un flux binar. Structurile INTEX sunt matrițe de datele cu lungime variabilă utilizate pentru tabele de nume, tabelele string și stocarea charstring în fonturi CFC.

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

reader = BinaryReader(io.BytesIO(raw_index_bytes))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Interpretarea tipului 2 Charstring

Type2Interpreter.interpret() execută un charstring de tip 2 și returnează o GlyphPath.

from aspose_font.cff.type2 import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)

Sfaturi şi cele mai bune practici

  • Utilizare: CffEncoding.standard() ca o linie de bază; să se suprime cu: from_reader() pentru codificări încorporate
  • CffDict.to_bytes() permite re-serializarea dicționarilor modificați
  • Interpretarea de tip Charstring este necesară numai pentru extracția conturului greșit al glifului; GlyphAccessor acoperă majoritatea cazurilor de utilizare la un nivel mai înalt;

Rezultatele de la data aplicării.

Clasa / metodaDescriere:
CffCharset.standard()Standard ISO Adobe caracterizator set
CffCharset.name_for(gid)Numele PostScript pentru un identificator de glifoane
CffCharset.gid_for(name)Glyph ID pentru un nume PostScript
CffEncoding.standard()Tabelul standard de codificare CFF
CffEncoding.unicode_to_gid(cp)Codul de pe hartă pentru GID
CffDict.from_bytes(data)Analiza unui CFF DICT brut
CffDict.get(operator)Obțineți valori pentru un operator DICT
CffIndex.from_reader(reader)Analiza un CFF INDEX
Type2Interpreter.interpret(cs, pd)Executați o serie de caracteristici tip 2

Vezi și:

 Română