Introducción
El tipo 1 es el formato de fontas escalable original de Adobe, que predan TrueType y OpenTYpe. Los tipos 1 de las letras se componen de dos archivos: a. .pfb (Fonte Binario de Impresión) El archivo que contiene el El programa de cifrado, y un .afm (Adobe Font Metrics) archivo con cernido y A pesar de ser superado por OpenType, las letras del tipo 1 permanecen prevalentes en el Publicación de flujos de trabajo, pipelinas PostScript y documentos de archivo.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer,y, Type1Interpreter.Puedes cargar PFB o archivos de PFA a través de FontLoader.open, inspecciona los metadatos del programa de fontas incorporados, interpretar los charstrings a los caminos de glif, y serializar las letras de vuelta al formato PFB o PFA.
La biblioteca se publica en Pypi como aspose-font Licenciado bajo la licencia MIT. No tiene dependencias comerciales obligatorias y se ejecuta en Python 3 estándar.
Características clave
Tipo de cargador 1 Fonts
Uso FontLoader.open para cargar un archivo PFB o PFA. El objeto devuelto exponerá ambos los estándar Font Interface y funcionalidad específica de tipo 1 a través del Type1Font Clase de la clase:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
print(loaded.font_name) # e.g. "Courier"
print(loaded.font_family) # e.g. "Courier"
print(loaded.num_glyphs) # number of defined glyphs
print(loaded.font_style) # style string, e.g. "Regular"
FontLoader.open Detecta el formato de tipo 1 automáticamente desde la cabeza del archivo.PFB Los archivos de PFA están apoyados.
Métreo de AFM
Tipo 1 las letras envían sus metrinas en una separada .afm El archivo. el Type1Font clase Exponer a load_afm(path) método que adhiere los datos de AFM al objeto de la letra cargada, Se permite el uso de las búsquedas de pares kernel a través de get_kern_pairs().
Sin el archivo de AFM, get_kern_pairs() devolver una lista vacía porque los datos del kern viven en el archivo AFM, no en la propia programación PFB. load_afm El método acepta un archivo El camino que indica al compañero .afm El archivo.
Acceso a los metadatos de tipo 1FontData
El Type1FontData clase exponer el dicionario del programa de fontas incorporado en el tipo 1 Incluye métricas, cuadro de límite, vector de codificación, charstrings y subroutinas:
from aspose_font.type1.data import Type1FontData
# Type1FontData is the font program dictionary parsed from the PFB
# Access its properties to inspect the raw PostScript font data
Type1FontData Propiedades :
font_name(str- PostScript nombre del fontfull_name(strNombre completo humano-leablefamily_name(str- La familia de la fontweight(str• El peso de la línea (por ejemplo,."Medium")italic_angle(float- Ángulo italiano en gradosis_fixed_pitch(bool- Real para las fuentes monopasafont_bbox(tuple[int, int, int, int]- La cuenca de límite(llx, lly, urx, ury)underline_position(int- Posición sublineada en unidades de fontosunderline_thickness(int- Subraya la espesor del accidente cerebralencoding(list[str]256-Slot codificación vector (Nombres de Glif PostScript)charstrings(dict[str, bytes]- Nombre de Glif → charstring bytes mappingsubrs(list[bytes]- las líneas de byte subroutinas utilizadas por el motor de chartramientolen_iv(intParámetros de cifrado leniv
Interpretación de Charstrings
Type1Interpreter Descargar programas de tipo 1 en el GlyphPath Página de inicio: Pass Los bajos de charstring crudo de Type1FontData.charstrings para interpret:
from aspose_font.type1.interpreter import Type1Interpreter
interpreter = Type1Interpreter()
charstring = b"\x0e" # seac or other charstring bytes
glyph_path, stack_depth = interpreter.interpret(charstring)
for cmd in glyph_path.commands:
print(cmd)
interpret Volver a (GlyphPath, int) Tombes. el GlyphPath Contiene el dibujo comando para la línea de salida del glif. el integral es la profundidad final de la estaca después de ejecución, que es útil para desbloquear los cartridges malformados.
Serialización a PFB y PFA
Type1Serializer Convertir una letra de tipo 1 cargada en formato PFB binario o texto. Ambas formas aceptan cualquier Font Instancia y devolución de bajos crudos:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("fonts/Courier.pfb")
# Serialize to PFB (binary) format
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
with open("output/Courier_copy.pfb", "wb") as fh:
fh.write(pfb_bytes)
# Serialize to PFA (text) format
pfa_bytes = Type1Serializer.serialize_pfa(loaded)
with open("output/Courier_copy.pfa", "wb") as fh:
fh.write(pfa_bytes)
print(f"PFB: {len(pfb_bytes)} bytes")
print(f"PFA: {len(pfa_bytes)} bytes")
Fontes Métriques
Metricas y codificación están accesibles a través del estándar. Font Interfaz de la:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Underline pos : {metrics.underline_position}")
print(f"Underline tck : {metrics.underline_thickness}")
Inicio rápido
Instalar la biblioteca:
.venv/bin/pip install aspose-font
Cargue una fuente PFB y inspecte:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("Courier.pfb")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Style : {loaded.font_style}")
print(f"Glyphs : {loaded.num_glyphs}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
# Round-trip: serialize back to PFB
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
print(f"Serialized: {len(pfb_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 | ✓ | — |
Los tipos 1 se cargan por FontLoader.open Se serializó a través de Type1Serializer.
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.