Introducción
Los datos de la letra (.ttfy su abismo de la tierra (.otfEs el font dominante. Los formatos en los sistemas operativos modernos. ambos formados comparten la misma estructura de tabla binaria en la especificación OpenType. Aspose.Font FOSS para Python expresa esta estructura A través de TtfFont, que proporciona acceso directo a las tablas OpenType individuales, los datos de pares de núcleos, variables de los áceros de la letra y las líneas de Glif.
El TtfFont La clase se extiende a la Font clase de base con métodos específicos TTF incluidos en los que se get_blob, get_table_bytes, set_table_bytes,y, instantiate Para la variable font El cerro de la aguja. el TtfTableSet La propiedad (ttf_tables• proporcionar acceso tipizado a la Las tablas de OpenType más comunes: head, hhea, maxp, os2, name, post.
La biblioteca se publica en Pypi como aspose-font Licenciado bajo la licencia MIT. No tiene dependencias comerciales obligatorias.
Características clave
Cargar Fontes TTF y OTF
Uso FontLoader.open Para cargar cualquier archivo de fontos TrueType o OpenTYpe:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open Detecta el formato de la letra del título de archivo. ambos .ttf (El verdadero tipo) y .otf (OpenType CFF) se apoyan los archivos y ambos devuelven un TtfFont de instancia.
Acceso a las tablas OpenType mediante TtfTableSet
El ttf_tables La propiedad devuelve a TtfTableSet Con accesorios para comúns Tablas de OpenType. Cada propiedad devolve el objeto de la tabla o None Si no hay:
El ttf_tables Propiedad en TtfFont Volver a TtfTableSet El caso. disponible Accesorios de mesa:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Cada propiedad devolve el objeto de la tabla o None Si no está presente en la Archivo de la etiqueta: Acceso TtfTableSet Propiedades para comprobar las tablas específicas antes de leer Para las tablas no cubiertas por los accesorios nombrados, utilizar TtfTableSet.get_raw(tag) para Recuperar los bajos crudos con la etiqueta OpenType de cuatro caracteres.
Leer la mesa de los Bytes
get_table_bytes(tag) devolve los bajos crudos para cualquier tabla OpenType. get_blob(tag) para una variante sin seguridad que vuelve None Cuando la mesa no esté disponible:
TtfFont proporciona dos métodos para el acceso de mesa cruda:
get_table_bytes(tag) -> bytes- devolver los bajos crudos para una tabla nombrada (recibe si no)get_blob(tag) -> bytes | None- RetornoNoneSi la tabla no está disponible (variante segura)
Ambos métodos aceptan una etiqueta de mesa OpenType de cuatro caracteres como: "cmap", "GDEF",o "GPOS".Uso de get_blob Cuando una tabla es opcional para que pueda comprobar None Antes de procesamiento .
Cuerpo de Nucleos
get_kern_pairs() devolver todos los pares de núcleos encriptados en el font. cada uno KernPair Ha tenido left (El de Glyphid), right (Glyphid) y value (En las unidades de font):
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Fontes Métriques
Las metrinas estándar son accesibles a través de la metrics Propiedad de la propiedad:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Soporte de Fontes Variables
Para las variables de los fuentes, TtfFont Exposiciones is_variable, variable_axes,y, named_instances.Uso de get_axis(tag) para recuperar un ácido específico por su cuarto letra El tag:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
El get_axis(tag) El método en TtfFont Recupera a VariableAxis por su cuarto texto El Título (e.g. "wght" por el peso, "wdth" de la tierra. (de vuelta) None Si el ácido es No está presente en el font fvar Mesa de la mesa.
Convertir Fontes
to_bytes(font_type) Convertir el formato en un formato diferente.Utilizar la FontType Enum Para definir el objetivo:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Inicio rápido
Instalar la biblioteca:
.venv/bin/pip install aspose-font
Cargue una letra TTF y inspecte:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Formatos apoyados
| Formato | Extensiones | Leer | Escribe |
|---|---|---|---|
| TTF | .TF | ✓ | — |
| OTF | .OTV | ✓ | — |
| EOT | .El EOT | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb / pfa | ✓ | — |
| WOFF | .Woff | ✓ | — |
| WOFF2 | .El WooF2 | ✓ | — |
Todos los formatos cargan a través de FontLoader.open. TTF/OTF fonts devolver a TtfFont de instancia.
Open Source y Licenciación
Aspose.Font FOSS for Python is released under the MIT License. You can use it in Proyectos personales, comerciales y de código abierto sin costo. el código fuente es disponible en GitHub y el paquete se distribuye a través de PyPI como: aspose-font.