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

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

See Also

 Русский