1. Productos
  2.   Aspose.Font
  3.   Aspose.Font FOSS for Python

Aspose.Font FOSS para Python

Biblioteca Python de código abierto para cargar, inspeccionar, convertir y crear subconjuntos de archivos de fuentes TTF, OTF, CFF, WOFF, WOFF2 y EOT.

Trabaja con fuentes de forma programática en Python

Aspose.Font FOSS para Python es un conjunto de herramientas pure-Python para cargar, inspeccionar, convertir, subestablecer y previsualizar fuentes en formatos TrueType, OpenType, CFF, Type 1, WOFF, WOFF2 y EOT. La biblioteca se ejecuta en Python 3.10 o posterior y no requiere bibliotecas de fuentes del SO externas ni dependencias nativas.

La biblioteca expone una API limpia para la carga de fuentes a través de FontLoader, el acceso a glifos a través de GlyphAccessor, la conversión de formatos a través de FontConverter, la optimización web a través de FontCleaner, la subsegmentación consciente del texto a través de FontSubsetter, y la animación de fuentes variables a través de AnimationPreviewBuilder. Los metadatos de la fuente, como el nombre, la familia, el estilo, el recuento de glifos, la codificación y las métricas, son accesibles a través de la clase base Font sin analizar manualmente las tablas binarias.

Aspose.Font FOSS está bajo licencia MIT y se puede instalar desde PyPI con un solo comando pip install. Es adecuado para herramientas de diseño de fuentes, canalizaciones de fuentes web, motores de renderizado de glifos y cualquier aplicación Python que necesite leer, transformar o generar archivos de fuentes. Para la familia de productos empresariales, consulte Aspose.Font — Enterprise Product Family.

Carga de fuentes y detección de formato

  • Cargue fuentes desde rutas de archivo o bytes sin procesar con FontLoader.open() y FontLoader.load()
  • Detectar formato automáticamente: TTF, OTF, CFF, WOFF, WOFF2, EOT, Type 1
  • Acceda a los metadatos de fuentes a través de la clase base Font: font_name, font_family, font_style, num_glyphs
  • Leer mapas de codificación de glifos con FontEncoding.unicode_to_gid() y get_all_codepoints()
  • Inspeccionar métricas de fuente con FontMetrics: ascenso, descenso, espacio entre líneas, cuadrado em

Casos de uso típicos

  • Pipelines de validación de fuentes y extracción de metadatos
  • Comprobaciones CI/CD que verifican el nombre de la familia de fuentes y el recuento de glifos
  • Servicios de ingestión de fuentes web que aceptan múltiples formatos de entrada
  • Herramientas de diseño de fuentes que muestran metadatos sin un tiempo de ejecución de escritorio

Acceso a glifos e inspección de trazos

  • Recuperar glifos por ID o Unicode con GlyphAccessor.get_glyph_by_id() y get_glyph_by_unicode()
  • Resuelve todos los glifos de una cadena con GlyphAccessor.get_glyphs_for_text()
  • Inspeccionar rutas de contorno de glif como comandos escritos: MoveTo, LineTo, QuadraticTo, CurveTo, ClosePath
  • Acceda al cuadro delimitador del glifo, al ancho de avance y a los bordes laterales desde las propiedades Glyph.
  • Leer pares de kerning de KernPair para cálculos precisos de disposición de texto

Casos de Uso Típicos

  • Comprobaciones de cobertura de glifos para la renderización de texto multilingüe
  • Extracción de contorno para ruta SVG o generación de vectores
  • Validación de la tabla de kerning en flujos de trabajo de QA de fuentes
  • Investigación de modelado de texto y experimentación de maquetación de bajo nivel

Conversión de fuentes

  • Convertir entre TTF, OTF, CFF, WOFF, WOFF2, EOT y Type 1 con FontConverter.convert()
  • Adaptar tipos de curva Bézier con CurveAdapter.quad_to_cubic() y cubic_to_quads()
  • Convertir rutas de glifos entre cuadráticas y cúbicas con convert_path_quad_to_cubic() y convert_path_cubic_to_quad()

Casos de Uso Típicos

  • Canales de fuentes web que convierten fuentes maestras TTF a WOFF2 para distribución
  • Herramientas de fundición tipográfica que exportan a múltiples formatos de destino desde una única fuente
  • Conversión heredada de EOT para pilas de fuentes web compatibles con versiones anteriores
  • Normalización automatizada del formato de fuentes en integración continua

Subconjunto de fuentes

  • Subconjunto de fuentes por texto Unicode con FontSubsetter.subset_by_text()
  • Subconjunto por lista de ID de glifo con FontSubsetter.subset_by_gids()
  • Produce subconjuntos optimizados para web con FontSubsetter.subset_for_web()
  • Aplicar perfiles preestablecidos con nombre usando FontSubsetter.subset_by_presets() y available_presets()
  • Analizar la cobertura del subconjunto con FontSubsetter.analyze_coverage() y analyze_web_coverage()

Casos de Uso Típicos

  • Reducir el tamaño de la carga útil de WOFF2 para páginas web con conjuntos de caracteres limitados
  • Producción de subconjuntos de fuentes específicos por idioma para implementaciones i18n
  • Flujos de trabajo de licenciamiento de fuentes que distribuyen subconjuntos por conjunto de páginas
  • Optimización del rendimiento para aplicaciones web móviles

Optimización web y vistas previas de fuentes variables

  • Eliminar tablas heredadas y registros de nombres de Mac con FontCleaner.clean_for_web()
  • Verifique la compatibilidad del eje de fuente variable con CompatibilityChecker.compare_fonts() y compare_variable_instances()
  • Genera barridos de eje animados en APNG con AnimationPreviewBuilder.build_axis_sweep()
  • Crea rutas de animación de varios pasos con AnimationPreviewBuilder.build_path()

Casos de Uso Típicos

  • Páginas de muestras tipográficas y exploradores de ejes interactivos para fundiciones tipográficas
  • Pipelines CI que verifican el comportamiento de fuentes variables antes de la distribución
  • Pipelines de rendimiento web que descartan tablas binarias no esenciales
  • Miniaturas de vista previa de fuentes para aplicaciones de gestión de fuentes

Cargar un Archivo de Fuente

Abre una fuente TrueType u OpenType desde una ruta de archivo y lee sus metadatos básicos.

from aspose_font.loader import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
print(font.font_name)    # e.g. "Roboto"
print(font.font_family)  # e.g. "Roboto"
print(font.num_glyphs)   # e.g. 1294

Acceder a Glifos de una Cadena de Texto

Resuelve todos los glifos de un punto de código Unicode e inspecciona sus rutas de contorno.

from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41)  # Unicode for A
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

Generar una Animación de Barrido de Eje de Fuente Variable

Crea un APNG animado que recorra un eje de fuente variable desde el valor inicial hasta el valor final.

from aspose_font.loader import FontLoader
from aspose_font.animation import AnimationPreviewBuilder

font = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")

asset = AnimationPreviewBuilder.build_axis_sweep(
    font,
    axis_tag="wdth",
    start_val=75.0,
    end_val=100.0,
    frames=3,
    fps=10,
    text="A",
    size=10.0,
    bounce=True,
)

asset.write_to("roboto-sweep-wdth.png")

Limpiar una Fuente para Despliegue Web

Elimina las tablas heredadas y los registros de nombres de Mac para reducir el tamaño del binario antes de servirlo en la web.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
cleaned = FontCleaner.clean_for_web(font)
# DSIG, FFTM, meta tables removed; Mac platform name records stripped

Preguntas frecuentes

¿Qué es Aspose.Font FOSS para Python?

Es una biblioteca gratuita, bajo licencia MIT, pura-Python para cargar, inspeccionar, convertir y crear subconjuntos de fuentes en formatos TTF, OTF, CFF, Type 1, WOFF, WOFF2 y EOT. No se requieren dependencias nativas.

¿Cómo instalo Aspose.Font FOSS para Python?

Ejecute pip install "aspose-font>=1.0.0". No se necesitan dependencias a nivel de sistema. La biblioteca funciona en Windows, macOS y Linux con Python 3.10 o posterior.

¿Qué formatos de fuente son compatibles?

FontLoader.open() lee TTF, OTF, CFF, Type 1, WOFF, WOFF2 y EOT. FontConverter.convert() escribe TTF, CFF, WOFF y WOFF2. EOT es solo de lectura.

¿Está disponible Font.to_bytes()?

No. Font.to_bytes() no está implementado en la clase base. Use FontConverter.convert() para generar un nuevo Font en el formato deseado.

¿Puedo crear un subconjunto de una fuente para entrega web?

Sí. FontSubsetter.subset_by_text(font, text) devuelve un nuevo Font que contiene solo los glifos necesarios para el texto proporcionado. FontSubsetter.subset(font, codepoints) y subset_by_gids(font, gids) ofrecen un control más fino.

  

Recursos de soporte y aprendizaje

 Español