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 font
  • full_name (strNombre completo humano-leable
  • family_name (str- La familia de la font
  • weight (str• El peso de la línea (por ejemplo,. "Medium")
  • italic_angle (float- Ángulo italiano en grados
  • is_fixed_pitch (bool- Real para las fuentes monopasa
  • font_bbox (tuple[int, int, int, int]- La cuenca de límite (llx, lly, urx, ury)
  • underline_position (int- Posición sublineada en unidades de fontos
  • underline_thickness (int- Subraya la espesor del accidente cerebral
  • encoding (list[str]256-Slot codificación vector (Nombres de Glif PostScript)
  • charstrings (dict[str, bytes]- Nombre de Glif → charstring bytes mapping
  • subrs (list[bytes]- las líneas de byte subroutinas utilizadas por el motor de chartramiento
  • len_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

FormatoExtensionesLeerEscribe
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.


Empezando a

Recursos relacionados