Въведение

Compact Font Format (CFF) е формат за описание на двоичен глиф, използван в OpenType. шрифтове с PostScript-съвместим очертателен двигател. Aspose.Font FOSS за Python експозиции специален набор от класове под aspose_font.cff пространство за имена за четене и проверка на структурите на данните за СФС: CffFont, CffCharset, CffEncoding, CffDict, CffIndex, и Type2Interpreter.В този пост ще разберете как да заредите CFF шрифтове, да навигират по вътрешните си таблици и да интерпретират програми за харстринг, използвайки библиотеката.

Пакетът е с лиценз на 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 символ или 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 Unicode-to-GID Mapping

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 шрифтовете съхраняват метаданни от най-високо ниво и лични в речници. 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 структура на данни масив с префикс от дължина на променливата- дължина на байтски нишки, използвани за charstrings, подпоредици и таблици с имена. 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 Изпълнява програма за разписание тип 2 (компактна PostScript-подобна на формат, използван в шрифтовете CFF) и произвежда GlyphPath Нарича се “Коммандиране”. interpret() с байт-цифрите и свързания частен речник. позволява да извлечете сурови графични очертания от CFF charstrings без пълен Интерпретатор за PostScript.

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)}")

Подкрепени формати

Формат на изображениетоРазширяване на срокаПрочети.Напиши.
CFF.cff (включително счетоводни)
OTF.отв.
TTF.ttf (на английски)
WOFF.- Да, добре.
WOFF2.Wowf2 (включително вж.
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.


Започваме

Свързани ресурси