Bene, hai già scoperto le due "scorciatoie". FontBBox dà il riquadro di delimitazione di tutti i glifi nel font sovrapposti insieme. false charpath flattenpath pathbbox
indica la casella per una stringa specificata.
Per un tipo 3 (definito dall'utente), questo è tutto ciò che si può ragionevolmente aspettarsi di fare; ma per i tipi di carattere Type 1 più popolari, vi è una ricchezza di informazioni metriche sia nel che nel font e in un file "metriche" (per altre applicazioni).
Ma questa è la parte che non conosco molto bene. Quindi ho intenzione di leggere (nel manuale di Adobe Type 1) ed espandere questa risposta più tardi.
Modifica: In realtà, sembra che questi potrebbero essere i modi migliori in generale.
Lì è un array di valori di allineamento verticale in un font Type 1, nel dizionario/Private, sotto il nome/BlueValues; ma non vi è alcuna garanzia che il carattere li onori. Il primo numero nell'array è il superamento della linea di base; questo è il bordo inferiore di lettere come 'O' che si abbassano sotto la linea di base. E il più grande valore dell'array sarà il superamento altezza ascensore o il limite cap-height (a seconda del valore più alto). Ma qualsiasi personaggio individuale può essere tracciato senza riguardo a questi valori (quindi, nessuna garanzia).
D'altra parte, il FontBBox in sé può riflettere il riquadro di delimitazione di eventuali caratteri "speciali" presenti nel font, anche se non sono accessibili attraverso il vettore di codifica (es. Non si possono show
, ma deve glyphshow
loro).
Quindi la soluzione migliore sarebbe probabilmente quella di prendere lo pathbbox
di una stringa di tutti i caratteri che si intende utilizzare. Questo ignorerebbe il contributo di altri personaggi che potrebbero essere presenti ma non pertinenti al tuo scopo. E non dimenticare di flattenpath
rimuovere i punti di controllo dalle curve (che potrebbero essere molto al di fuori del riquadro di delimitazione "reale").
fonte
2011-11-28 21:01:30