Как да работим с WOFF шрифтове в Python

Как да работим с WOFF шрифтове в Python

Това ръководство показва как да зареждате, проверявате и конвертирате WOFF и WOff2 уеб шрифтове с помощта на Aspose.Font FOSS за Python. WOF (Web Open Font Format) е стандартът за доставяне на шрифтове в мрежата. ВОФ 1 използва компресия zlib и ВОВ 2 използва Brotli компресиране, като двете обгръщат основен TrueType или CFF шрит. Aspose.Font ФОСС зареждат двата формата и излага вътрешните данни от штрих чрез чист API.

Постепенно ръководство

Стъпка 1: Инсталирайте пакета

Инсталирайте пакета Aspose.Cells FOSS от PyPI, като използвате следната команда pip:

pip install "aspose-font>=1.0.0"

Стъпка 2: Импортиране на необходимите класове

Внос на продукти от други държави членки FontLoader, FontConverter, и FontType за зареждане и конвертиране на шрифтове WOFF:

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

Стъпка 3: Зареждане и проверка на WOFF шрифт

Зареждане на файл WOFF с: FontLoader.open() и да прочетете основни свойства като име, фамилия и брой на глифи:

from aspose_font.loader import FontLoader

woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")

Стъпка 4: Прочетете метаданните на WOFF

Файловете WOFF могат да съдържат блок от XML метаданни с лицензиране, кредити и Описание. metadata_xml собственост.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
    print(xml)
else:
    print("No metadata in this WOFF file")

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

И двете. WoffFont и в) Woff2Font да се изложи на inner_font имущество, което дава Ти си основата. TtfFont.Чрез него можете да получите достъп до всички стандартни Таблици с OpenType.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables

print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")

Стъпка 6: Преобразуване на TTF в WOFF

Заредете TTF шрифт и го превърнете във формат WOFF, като преминете FontType.WOFF в) към FontConverter.convert():

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

ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()

from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)

Стъпка 7: Преобразуване на TTF в WOFF2

Заредете TTF шрифт и го превърнете във формат WOFF2 чрез подаване на FontType.WOFF2 в) към FontConverter.convert():

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

ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()

from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)

Стъпка 8: Преобразуване между WOFF и WOff2

Преобразуване на зареден файл WOFF в WOff2 (или обратното) чрез преминаване на целта FontType в) към FontConverter.convert():

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

# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)

# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)

Обичайни проблеми и решения

FontParseException: Invalid WOFF signature Файлът не е валиден WOFF. Проверете дали файлът не е повреден и започва с магическите байтове WOFF.

FontParseException: WOFF table decompression failed Сгъстена маса Опитайте да изтеглите отново файла с шрифта.

Голям изход на WOFF2 WOFF2 използва Brotli компресия, която произвежда по-малки Ако изходът на WOFF2 е неочаквано голям, се уверете, че сте получили повече от необходимата информация. Вие започвате от оптимизиран TTF източник.

Често задавани въпроси

Каква е разликата между WOFF и WOff2?

WOFF 1 използва компресия zlib, а WOff 2 използва Brotli. WOF2 обикновено постига 20-30% по-добро компресиране от WOFC 1. И двете използват същите данни за основния TrueType или CFF шрифт.

Мога ли да получа достъп до таблици от шрифтове от файл WOFF?

Да, използвай… inner_font собственост, за да се получи базовото TtfFont,Тогава… достъпни таблици чрез: inner_font.ttf_tables.

Поддържа ли библиотеката метаданни за WOFF?

Да, и двете. WoffFont и в) Woff2Font да се изложи на metadata_xml собственост съдържащ необязателния блок от метаданни XML.

Вижте също:

 Български