Въведение

WOFF (Web Open Font Format) е стандартният контейнер за доставка на шрифтове в мрежата. WOff 1 обгръща TrueType или CFF шрифт с zlib компресия; WOffs 2 прилага Brotli компресиране вместо това, обикновено постига 20-30% по-добри съотношения на комприкция. И двата формата са поддържани от всеки модерен браузър и са препоръчителния формат за изпращане за уеб типография.

Aspose.Font FOSS for Python exposes WOFF and WOFF2 through the WoffFont и в) Woff2Font И двата класа споделят едно и също API: те разкриват свойствата на шрифта. (font_name, font_family, num_glyphs), незадължително. metadata_xml блок, и inner_font аксесоар, който връща базовото TtfFont, и а to_bytes() метод за преобразуване на формат.

Библиотеката е публикувана на PyPI като: aspose-font и лицензирани под MIT. Лиценз без задължителни търговски зависимости.


Ключови характеристики

Зареждане на WOFF и WOff2 шрифтове

Използване на: FontLoader.open за зареждане на файл WOFF или WOff2. Зареждащият устройство открива формата от файла магически байтове автоматично:

from aspose_font.loader import FontLoader

# Load WOFF 1
woff = FontLoader.open("MyFont.woff")
print(f"Name   : {woff.font_name}")
print(f"Family : {woff.font_family}")
print(f"Style  : {woff.font_style}")
print(f"Glyphs : {woff.num_glyphs}")
print(f"Type   : {woff.font_type}")

# Load WOFF 2
woff2 = FontLoader.open("MyFont.woff2")
print(f"Name   : {woff2.font_name}")
print(f"Glyphs : {woff2.num_glyphs}")

FontLoader.open връща a WoffFont за: .woff Досиетата и Woff2Font за: .woff2 И двата класа прилагат едно и също. Font базови интерфейс, така че кодът, който “чита” свойствата са идентични за двата формата.


Проверка на метаданните за WOFF

Файловете WOFF могат да включват допълнителен блок от XML метаданни, съдържащ лицензиране. информация, кредити и описание на шрифта. metadata_xml собственост:

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# metadata_xml is a WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
if xml:
    print("WOFF metadata XML:")
    print(xml[:500])
else:
    print("No metadata block in this WOFF file")

Съветът на ЕС metadata_xml свойството връща a str съдържащ суровия XML, или None ако: шрифтът не включва блок от метаданни. WoffFont и в) Woff2Font излагане на информация тази собственост.


Достъп до вътрешни ТТФ таблици

WOFF и WOff2 обгръщат шрифт на TrueType. inner_font Имотът ви дава подлежащи на разглеждане TtfFont с пълен достъп до своя набор от таблици OpenType:

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# inner_font is a WoffFont-specific property returning the TtfFont
inner = getattr(font, "inner_font")
tables = inner.ttf_tables        # TtfTableSet

print(f"Units/em    : {tables.head.units_per_em}")
print(f"Ascender    : {tables.hhea.ascender}")
print(f"Num glyphs  : {tables.maxp.num_glyphs}")
print(f"Family name : {tables.name.best_name(1)}")

Преминава през… inner_font.ttf_tables можете да получите достъп до всички стандартни OpenType таблици: head, hhea, maxp, os2, name, и post.За таблици без наименование Допълнителен апарат, употреба inner_font.get_blob(tag) да изтеглят сурови байтове чрез OpenType тег.


Двойки от ядра от WOFF шрифт

get_kern_pairs() Върна всички двойки ядра вградени във шрифта. KernPair превозващи средства left (Глифид), right (Глифид) и value (int, в шрифтни единици):

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
pairs = font.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  {pair.left} + {pair.right} = {pair.value}")

Ядровите двойки се съхраняват в вътрешните TTF’s. kern шрифтове с OpenType GPOS Кърнични характеристики вместо а kern таблица ще върне празен списък от този метод.


Преобразуване на формат

FontConverter.convert преобразува между формати на шрифтове. FontType Енум да се определи целевият формат, след това повикване на to_bytes() за сериализиране:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path

# TTF -> WOFF
ttf = FontLoader.open("MyFont.ttf")
woff = FontConverter.convert(ttf, FontType.WOFF)
Path("MyFont.woff").write_bytes(woff.to_bytes(FontType.WOFF))

# TTF -> WOFF2 (Brotli-compressed)
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))

# WOFF -> WOFF2
existing_woff = FontLoader.open("MyFont.woff")
converted = FontConverter.convert(existing_woff, FontType.WOFF2)
Path("MyFont-from-woff.woff2").write_bytes(converted.to_bytes(FontType.WOFF2))

# WOFF2 -> WOFF (decompress back to WOFF 1)
existing_woff2 = FontLoader.open("MyFont.woff2")
woff1 = FontConverter.convert(existing_woff2, FontType.WOFF)
Path("MyFont-from-woff2.woff").write_bytes(woff1.to_bytes(FontType.WOFF))

Всички четири пътя за преобразуване (TTF към WOFF, TTF към WWFF2, WOff към Woff2 и WOF2 към WOFF) са подкрепени от същите FontConverter.convert API.


Създаване на уеб пакет от шрифтове

WebFontBuilder.build генерира пълен пакет от уеб шрифтове от един TTF. Източник: произвежда WOFF, WOff2 и опционален SVG предварителен преглед в един разговор.:

from aspose_font.web import WebFontBuilder
from aspose_font.loader import FontLoader
from pathlib import Path

# Load a TTF source font
font = FontLoader.open("MyFont.ttf")

# Build WOFF + WOFF2 output files
WebFontBuilder.build(
    font=font,
    file_stem="MyFont",
    include_woff=True,
    font_display="swap",
    preview_text="The quick brown fox",
    instance_coordinates=None,
    output_dir=Path("web-output"),
)

След обаждането, web-output/ съдържа: MyFont.woff, MyFont.woff2, и възможно е да се използва: MyFont-preview.svg.- Да, това е. font_display параметър карти директно към ССП font-display описател и приема "auto", "block", "swap", "fallback", или "optional".


Бързо стартиране

Инсталирайте библиотеката:

pip install "aspose-font>=1.0.0"

Заредете WOFF шрифт и го превърнете във WOff2:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path

# Load WOFF
font = FontLoader.open("MyFont.woff")
print(f"Font   : {font.font_name}")
print(f"Glyphs : {font.num_glyphs}")
print(f"Type   : {font.font_type}")

# Inspect metadata (if present) — WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
print(f"Has metadata: {xml is not None}")

# Access inner OpenType tables — WoffFont-specific property
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")

# Convert to WOFF2
woff2 = FontConverter.convert(font, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Converted to WOFF2")

Поддържани формати на шрифтове за уеб сайтове

Формат на изображениетоРазширяване на срокаЗарежданеПреобразуване на WOFFПреобразуване на WOFF2
TTF.ttf (на английски)Да, да. - Какво?Да, да. - Какво?Да, да. - Какво?
OTF.отв.Да, да. - Какво?Да, да. - Какво?Да, да. - Какво?
WOFF.- Да, добре.Да, да. - Какво?Да, да. - Какво?
WOFF2.Wowf2 (включително вж.Да, да. - Какво?Да, да. - Какво?
EOT.- Не съм.Да, да. - Какво?Да, да. - Какво?Да, да. - Какво?
CFF.cff (включително счетоводни)Да, да. - Какво?Да, да. - Какво?Да, да. - Какво?
TYPE1.pfb/.pfaДа, да. - Какво?Да, да. - Какво?Да, да. - Какво?

Всички формати на източника поддържат преобразуване във WOFF и WOff2 чрез: FontConverter.convert.


Отворени източници и лицензиране

Aspose.Font FOSS for Python is released under the MIT License. You can use it in Лични, търговски и с отворен код проекти без никакви разходи. Източният код е Пакетът се разпространява чрез PyPI като: aspose-font.


Започваме

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