Bien, ya has descubierto los dos "accesos directos". El FontBBox da el cuadro delimitador de todos los glifos superpuestos en la fuente. false charpath flattenpath pathbbox
da la caja para una cadena especificada.
Para una fuente Tipo 3 (definida por el usuario) esto es todo lo que puede esperar razonablemente hacer; pero para las fuentes Tipo 1 más populares, hay una gran cantidad de información de métrica tanto en la fuente como en un archivo "métricas" (para otras aplicaciones).
Pero esta es la parte que no conozco muy bien. Así que voy a leer (en el manual de Adobe Type 1) y ampliar esta respuesta más adelante.
Edit: En realidad, parece que estas pueden ser las mejores formas en general.
Hay es una matriz de valores de alineación vertical en una fuente Tipo 1, en el diccionario/Privado, con el nombre/BlueValues; pero no hay garantía de que la fuente los honre. El primer número en la matriz es sobreimpulso base; este es el borde inferior de letras como 'O' que se sumergen por debajo de la línea de base. Y el valor más grande en la matriz será el sobregiros de altura de subida o sobreimpulso de altura de la tapa (el que sea mayor). Pero cualquier carácter individual puede trazarse sin tener en cuenta estos valores (por lo tanto, no hay garantía).
Por otro lado, el propio FontBBox puede reflejar el cuadro delimitador de cualquier carácter "especial" presente en la fuente, independientemente de si son accesibles a través del vector de codificación (es decir, no puede show
, pero debe glyphshow
ellos).
Así que la mejor opción sería tomar el pathbbox
de una cadena de todos los caracteres que tiene la intención de utilizar. Esto ignoraría la contribución de cualquier otro personaje que pueda estar presente pero que sea irrelevante para su propósito. Y no se olvide de flattenpath
para eliminar los puntos de control de las curvas (que pueden estar muy lejos del cuadro delimitador "real").