Управление на основния шрифт
Управление на основния шрифт
Това ръководство показва как да зареждате шрифтове от файлови пътища или байт масиви, четете свойства на метаданните, намеквайте Unicode кодове към идентификатори за глифи, извличайте глифове и работите с променливи осейни шрифт и именувани инстанции.
FontLoader е основната входна точка за всички операции по зареждане на шрифтове. натоварен, Font базови клас осигурява достъп до метаданни, кодиране, glyph достъп и метрики, без да се изисква анализиране на двоични таблици.
Зареждане на шрифтове
FontLoader.open(source, font_type, collection_index) зареди шрифт от път на файл с автоматично откриване на формат. FontLoader.load(source, font_type, collection_index) приема сурови байтове за работните потоци в паметта или мрежата.
from aspose_font.loader import FontLoader
# From a file path — format auto-detected
font = FontLoader.open("Roboto-Regular.ttf")
# From raw bytes — useful for in-memory or network workflows
with open("OpenSans-Regular.otf", "rb") as f:
font = FontLoader.load(f.read())Четене на метаданни от шрифт
След натоварване, Font експониране на обекти font_name, font_family, font_style, и num_glyphs свойства за бързо проверка без ръчно анализиране на таблиците.
from aspose_font.loader import FontLoader
font = FontLoader.open("MyFont.ttf")
print(font.font_name) # full PostScript name
print(font.font_family) # family name
print(font.font_style) # style name e.g. "Regular", "Bold"
print(font.num_glyphs) # total glyph countКодиране на глифите
FontEncoding Картите с код на Unicode сочат към идентификатори за глифи. Използвайте unicode_to_gid(cp) да се разреши една точка от кода, или get_all_codepoints() да изброяват всяка карта на кода в шрифта.
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map a single code point
gid = font.encoding.unicode_to_gid(0x41) # GID for 'A'
# Enumerate all mapped code points
all_cps = font.encoding.get_all_codepoints()
print(f"Font covers {len(all_cps)} Unicode code points")Достъп с глифи
GlyphAccessor извлича обекти с глифи по ID, Unicode или текстови нишки.
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph = font.glyph_accessor.get_glyph_by_id(gid)
glyph_a = font.glyph_accessor.get_glyph_by_unicode(0x41)
glyphs = font.glyph_accessor.get_glyphs_for_text("Hello")
all_ids = font.glyph_accessor.get_all_glyph_ids()Изменливи шрифтове
За променливите шрифтове (тези, които съдържат fvar таблица), TtfFont ос на излагане дефиниции и наименования на случаите директно.
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
ttf: TtfFont = loaded.font
# Check if the font is variable
if ttf.is_variable:
# List all variation axes
for axis in ttf.variable_axes:
print(f"{axis.tag} range: {axis.min_value}..{axis.max_value} default: {axis.default_value}")
# Look up a single axis by tag
wght = ttf.get_axis("wght")
if wght:
print(f"Weight axis: {wght.min_value}..{wght.max_value}")
# Enumerate named instances (e.g. Bold, Condensed)
for inst in ttf.named_instances:
print(f"Instance: name_id={inst.name_id} coordinates={inst.coordinates}")За работни потоци за инстанциране на по-високо ниво, SmartInstancer броене на осите за обмотване и наречена резолюция на инстанцията в един обект:
from aspose_font.loader import FontLoader
from aspose_font.instancing import SmartInstancer
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
instancer = SmartInstancer(loaded.font)
print(f"Axes: {[a.tag for a in instancer.axes]}")
print(f"Named instances: {len(instancer.named_instances)}")Съвети и най-добри практики
- Каше заредено
Fontобекти при обработка на един и същи файл с шрифт няколко пъти - Използване на:
FontLoader.load(bytes)за мрежови или бази данни работни потоци, за да се избегнат временни файлове; - Проверка.
num_glyphsпреди сублимация за оценка на покритието след събиране на субилими get_all_glyph_ids()е полезен за итерация на пълния сложен график.
Общи проблеми
| Издание | Причина за това | Ремонтиране |
|---|---|---|
UnsupportedFontFormatException | Формат на файла не е разпознат | Проверка дали файлът е валиден TTF/OTF / CFF / WOFF/WOFF2/EOT/Type1 |
FontParseException | Неправилно оформени двоични данни | Одобри файла с шрифт преди зареждане. |
GlyphNotFoundException | ГИД извън обхват на действие | Проверка. num_glyphs преди достъп чрез идентификационен номер |
FAQ
Поддържа ли FontLoader WOFF2?
- Да, много добре.
FontLoader.open()и в)FontLoader.load()и двете приемат файлове WOFF2 и автоматично откриват формата.
Мога ли да заредим шрифт от URL адрес?
Не директно. Свали байт от шрифта с urllib или с други: requests и да ги предаде на… FontLoader.load(bytes).
Безопасно ли е за товаренето?
Всеки от тях. FontLoader.open() повикване връща независима Font Съвпадните обаждания. на отделни обекти са безопасни.
Снимка на API референтна информация
| Клас / метод | Описание на състоянието |
|---|---|
FontLoader.open(path) | Зареждане на шрифт от пътека за файл |
FontLoader.load(data) | Зареждане на шрифт от сурови байтове |
Font.font_name | Пълно име на шрифта PostScript |
Font.font_family | Фамилия на шрифта |
Font.font_style | Име на стила на шрифта |
Font.num_glyphs | Общ брой на глифовете |
FontEncoding.unicode_to_gid(cp) | Карта Unicode код точка на идентификатор за глиф |
FontEncoding.get_all_codepoints() | Всички точки с код на Unicode със съотношения на глифите |
GlyphAccessor.get_glyph_by_id(gid) | Извличане на глиф по ID |
GlyphAccessor.get_glyph_by_unicode(cp) | Извличане на глиф по Unicode код точка |
GlyphAccessor.get_glyphs_for_text(text) | Извличане на глифи за текстови нишки |
GlyphAccessor.get_all_glyph_ids() | Избройте всички идентификатори на глифите във шрифта. |
TtfFont.is_variable | Дали шрифтът съдържа променливи данни за шрифтовете |
TtfFont.variable_axes | Списък на: VariableAxis обекти за всяка ос на изменение; |
TtfFont.get_axis(tag) | Вижте една ос по нейния четири-значен етикет |
TtfFont.named_instances | Назовани инстанции, дефинирани в шрифта на fvar таблица |
SmartInstancer(font) | Оси за обгръщане на помощници от високо ниво и запитвания по инстанции |