Работа с шрифтами CFF
Работа с шрифтами CFF
В этом руководстве показано, как загружать и проверять интерналы шрифтов CFF наборы символов, таблицы кодирования, словарии и структуры индекса с помощью Aspose.Font FOSS для Python .
Шрифты компактного формата шрифта (CFF) сохраняют очертания глифов как программы типа 2 для заголовков. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff пространство имен для чтения символов CFF, таблиц кодирования, словарей и индексов.
CFF Шарсет
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()СФС Словарь Проанализировать
CffDict.from_bytes() анализирует сырой блок CFF DICT в оператор-ключевой картинке. Каждый оператор клавиша карты к списку числовых значений, которые настраивают шрифт, такие как по умолчанию ширина или субпрограммы смещения.
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.
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()позволяет пересериализировать измененные словарии.- Интерпретация Charstring необходима только для экстракции контуры необработанного глифа;
GlyphAccessorохватывает большинство случаев использования на более высоком уровне.
Справочное резюме API
| Класс / метод | Description |
|---|---|
CffCharset.standard() | Стандартный ISO Adobe Charset |
CffCharset.name_for(gid) | Название символа ID в 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) | Проанализировать индекс CFF |
Type2Interpreter.interpret(cs, pd) | Выполнение заряда типа 2 |