Робота з шрифтами CFF

Робота з шрифтами CFF

Це керівництво показує, як завантажувати та оглядати CFF шрифтові внутрішні значки, таблиці кодування, словники і структури індекса ?? з використанням Aspose.Font FOSS для Python .

Шрифти Compact Font Format (CFF) зберігають очертані гліфов як програми для чарстрингу типу 2. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff namespace (простір імен) для читання знаків CFF, таблиць кодування, словників та індексів.


CFF Charset (СФЧ Чарсет)

CffCharset Картини ідентифікаторів гліпфіків до PostScript назви глипфики. Подзвонити CffCharset.standard() для отримання вбудованого ISO Adobe charset, потім використовуйте name_for() і gid_for() переведення між ідентифікаторами імена.

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"

Кодировка CFF

CffEncoding Стандартне кодування охоплює набір символів Adobe Latin; використання unicode_to_gid() пошук окремих точок коду та get_all_codepoints() перерахувати кожне відображено значення.

from aspose_font.cff.encoding import CffEncoding

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

Складник CFF Parsing

CffDict.from_bytes() аналізує грубий CFF DICT blob в операторський клавіш. Кожен операторський ключ відображає список числових значень, які конфігурують шрифт, наприклад, широту по умові або субпрограми зсуву.

from aspose_font.cff.dict_ import CffDict

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

Індекс CFF

CffIndex.from_reader() Розбирає структуру даних CFF INDEX з двоякового потоку. Структури INTEX - це масиви змінної довжини, що використовуються для таблиць назви, таблиц струн і зберігання чарстрингів в шрифтах 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)}")

Тип 2 інтерпретація Charstring

Type2Interpreter.interpret() виконує charstring типу 2 і повертає a GlyphPath.

from aspose_font.cff.type2 import Type2Interpreter

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

Поради та найкращі практики

  • Використання CffEncoding.standard() як базовий; перекривати з from_reader() для вбудованих кодуваннях
  • CffDict.to_bytes() дозволяє пересериалізувати модифіковані словники.
  • інтерпретація чарстрингу потрібна тільки для витягнення обрису нерозробленого гліфа; GlyphAccessor охоплює більшість випадків використання на більш високому рівні.

Реферат на API

Клас / методDescription
CffCharset.standard()Стандартний ISO Adobe charset
CffCharset.name_for(gid)Назва PostScript для ідентифікатора гліфа
CffCharset.gid_for(name)Гліф-іД для імені PostScript
CffEncoding.standard()Стандартна таблиця кодування CFF
CffEncoding.unicode_to_gid(cp)Код точки на карті до ГІД
CffDict.from_bytes(data)Аналізуйте грубий CFF DICT.
CffDict.get(operator)Отримати значення оператора DICT
CffIndex.from_reader(reader)Аналізуйте ІНДЕКС СФЗ
Type2Interpreter.interpret(cs, pd)Виконання зарядки типу 2

See Also

 Українська