Как да работим с 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.