Въведение

Тип 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.


Започваме

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