Въведение
Тип 1 е оригиналният скалируем формат на шрифта на Adobe, предхождащ TrueType и OpenTybe. Шрифтове тип 1 се състоят от два файла: а) шрифт с формат на знака. .pfb (Биннария на принтерски шрифтове) файл, съдържащ криптирана програма за шрифтове и .afm (Adobe Font Metrics) файл с kerning и Въпреки че е заменен от OpenType, шрифтовете тип 1 остават преобладаващи в много други области. публикуване на работни потоци, PostScript pipelines и архивни документи.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer, и Type1Interpreter.Можеш да заредиш. Файлове PFB или PFA чрез: FontLoader.open, проверяват вградените метаданни на шрифта, интерпретирайте charstrings към glyph paths и сериализирайте шрифтовете обратно във формат PFB или PFA.
Библиотеката е публикувана на PyPI като: aspose-font и лицензиран под MIT лиценз. Той няма задължителни търговски зависимости и работи на стандартен Python 3.
Ключови характеристики
Зареждане на шрифтове тип 1
Използване на: FontLoader.open Връщеният обект излага както файла PFB, така и PFA. стандартно Font интерфейс и специфична за тип 1 функционалност чрез Type1Font клас:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
print(loaded.font_name) # e.g. "Courier"
print(loaded.font_family) # e.g. "Courier"
print(loaded.num_glyphs) # number of defined glyphs
print(loaded.font_style) # style string, e.g. "Regular"
FontLoader.open открива формата тип 1 автоматично от заглавието на файла. PFB и PFA файлове са поддържани.
Зареждане на AFM метрики
Тип 1 шрифтове изпращат своите метрики в отделен .afm Файлът. Type1Font клас излага на опасността от load_afm(path) метод, който свързва данните от AFM с зареденото обект на шрифта;, Позволяване на търсенето на двойки от ядра чрез: get_kern_pairs().
Без файла на АФМ, get_kern_pairs() връща празен списък, защото данни от ядрото са живи. в файла на AFM, а не в самата програма PFB. load_afm метод приема файл Пътна нишка, посочваща към спътника. .afm - Да, сър.
Достъп до метаданни от тип 1FontData
Съветът на ЕС Type1FontData клас разкрива речника на програмата за шрифтове, вграден в тип 1 Файл. Включва метрики, рамка за ограничаване, вектор на кодиране, charstrings и подпрограми:
from aspose_font.type1.data import Type1FontData
# Type1FontData is the font program dictionary parsed from the PFB
# Access its properties to inspect the raw PostScript font data
Type1FontData свойства:
font_name(str) PostScript име на шрифтаfull_name(str) пълно четиво за човека имеfamily_name(str) семейство шрифтовеweight(str) тежест на струните (напр."Medium")italic_angle(float) курсивен ъгъл в градусаis_fixed_pitch(bool) вярно за монопространствени шрифтовеfont_bbox(tuple[int, int, int, int]) гранична кутия(llx, lly, urx, ury)underline_position(int) подчертаване на позицията в шрифтните единициunderline_thickness(int) дебелина на подчертания ударencoding(list[str]) 256-слот кодиращ вектор (имена на PostScript глифи)charstrings(dict[str, bytes]) име на глифа → картографиране на байтове за чарстрингsubrs(list[bytes]) подпрограмирани байтови нишки, използвани от двигателя за нарязване.len_iv(int) параметър за криптиране lenIV
Тълкуване на “Чарстрингс”
Type1Interpreter Декодира типове 1 на програми за харстринг в GlyphPath Пропускане. суровите байтове за Charstring от Type1FontData.charstrings в) към interpret:
from aspose_font.type1.interpreter import Type1Interpreter
interpreter = Type1Interpreter()
charstring = b"\x0e" # seac or other charstring bytes
glyph_path, stack_depth = interpreter.interpret(charstring)
for cmd in glyph_path.commands:
print(cmd)
interpret връща a (GlyphPath, int) - Да, това е. GlyphPath съдържа рисунката. Целият брой е последната дълбочина на стека след изпълнение, което е полезно за дебагиране на неправилно оформени фигури.
Сериализиране към PFB и PFA
Type1Serializer преобразува зареден шрифт тип 1 обратно във двоичен формат PFB или текст PFA. И двата метода приемат всякакви Font инстанция и връщане на сурови байтове:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("fonts/Courier.pfb")
# Serialize to PFB (binary) format
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
with open("output/Courier_copy.pfb", "wb") as fh:
fh.write(pfb_bytes)
# Serialize to PFA (text) format
pfa_bytes = Type1Serializer.serialize_pfa(loaded)
with open("output/Courier_copy.pfa", "wb") as fh:
fh.write(pfa_bytes)
print(f"PFB: {len(pfb_bytes)} bytes")
print(f"PFA: {len(pfa_bytes)} bytes")
Метрични шрифтове
Метриките и кодирането са достъпни чрез стандарта. Font интерфейс:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Underline pos : {metrics.underline_position}")
print(f"Underline tck : {metrics.underline_thickness}")
Бързо стартиране
Инсталирайте библиотеката:
.venv/bin/pip install aspose-font
Заредете PFB шрифт и го проверете:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("Courier.pfb")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Style : {loaded.font_style}")
print(f"Glyphs : {loaded.num_glyphs}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
# Round-trip: serialize back to PFB
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
print(f"Serialized: {len(pfb_bytes)} bytes")
Подкрепени формати
| Формат на изображението | Разширяване на срока | Прочети. | Напиши. |
|---|---|---|---|
| TTF | .ttf (на английски) | ✓ | — |
| OTF | .отв. | ✓ | — |
| EOT | .- Не съм. | ✓ | — |
| CFF | .cff (включително счетоводни) | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .- Да, добре. | ✓ | — |
| WOFF2 | .Wowf2 (включително вж. | ✓ | — |
Шрифтове тип 1 се зареждат чрез: FontLoader.open и сериализиран чрез: Type1Serializer.
Отворени източници и лицензиране
Aspose.Font FOSS for Python is released under the MIT License. You can use it in Лични, търговски и с отворен код проекти без никакви разходи. Източният код е Пакетът се разпространява чрез PyPI като: aspose-font.