Introduction
Compact Font Format (CFF) - це формат опису бінарних гліфов, що використовується в OpenType. шрифти з контурним двигуном, сумісним з PostScript. Aspose. Шрифт FOSS для Python експонесів спеціальний набір класів під aspose_font.cff namespace для читання та перевірка структур даних CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex, і Type2Interpreter.У цьому статті розповідається про те, як завантажувати шрифти CFF., переглядати їх внутрішні таблиці, і інтерпретувати програми charstring з використанням бібліотеки.
Пакет має ліцензію MIT. Інсталюйте його з допомогою pip install aspose-font>=1.0.0.
Ключові особливості
Завантаження шрифту CFF
FontLoader.open() виявляє формат CFF автоматично проходить або автономно .cff Файл або файл OTF, який вбудований у таблицю контур CFF. Возвращений об’єкт є CffFont (доступний через cff_font майно на TtfFont для файлів 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 Картування ідентифікаторів гліпфіків на імена
CffCharset мапірує ідентифікатори гліпфов (GID) до імен глипфових PostScript. Використовуйте standard() до отримати стандартний ISO Adobe charset або from_reader() для аналізу набору символів з двоякової системи. Дані CFF. name_for() метод повертає ім’я PostScript для GID, і gid_for() виконує зворотний пошук.
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"
Кодировка CFF Картування від Юнікоду до ГІД
CffEncoding обробляє таблицю кодування CFF, яка відображає код символів на ідентифікатори гліфов. standard() повертає стандартний кодування, expert() повертає кодування експерта, і from_reader() аналізує персоналізований кодування з двоякісних даних CFF. використовує unicode_to_gid() до Подивитися за GID по Unicode коду точка і get_all_codepoints() перерахувати всі наведені в карті Кодні точки.
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")
Складник CFF Parsing
Шрифти CFF зберігають метадані верхнього рівня та приватні в словниках. CffDict.from_bytes() аналізує грубий CFF DICT blob і дає вам get() і set() доступ за допомогою ключа оператора. TopDict.from_dict() спеціалізується на висококласних словниках CFF, і PrivateDict.from_dict() робить те ж саме для приватних DICT.
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)
Структури індексу CFF
CffIndex представляє структуру даних CFF INDEX масив змінних з префіксом довжини. довжина байтових радків, що використовуються для таблиць з позначаннями. from_reader() перевірки Індекс з двоячного читача, а результат підписується за цілковитим индексом.
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)}")
Тип 2 інтерпретація Charstring
Type2Interpreter виконує програму Type 2 charstring (комп’ктний PostScript-подібний формат, що використовується в шрифтах CFF) і виробляє GlyphPath Покликання interpret() з байт-карстрингом та пов’язаним приватним словником. дозволяє витягувати грубі очертики гліфа з CFF charstrings без повного Постскриптовий інтерпретатор.
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)
Швидкий старт
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)}")
Підтримувані формати
| Format | Extension | Read | Write |
|---|---|---|---|
| CFF | .cff | ✓ | ✓ |
| OTF | .оф | ✓ | ✓ |
| TTF | .ttf | ✓ | ✓ |
| WOFF | .- Я не знаю. | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | . ніщо | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
Відкритий код та ліцензія
Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at aspose-font-foss/Aspose.Font-FOSS-for-Python (Фонт для Python). Інсталювати з PyPI як aspose-font.