Робота з шрифтами 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 |