2010-07-22 16 views
13

Esistono mezzi per ottenere le metriche dei font in SVG? Mi piacerebbe ottenere: discesa, salita, altezza massima, anticipo.Metriche SVG e font

Mi serve per disegnare il testo con gli elementi grafici & insieme come nei diagrammi di flusso.

Ad esempio, ho bisogno di disegnare una casella attorno al testo e di tracciare una linea di connessione dalla metà della dimensione (dimensione della lettera 'x'), e non dal centro del lato della scatola.

risposta

3

Se si dispone dell'accesso DOM, esiste un numero di SVG DOM methods for text elements. Poi c'è il metodo getBBox che è disponibile sulla maggior parte degli elementi svg.

Se hai a che fare con SVGFonts, quindi i dati sono già disponibili in formato XML come attributi normali, ad esempio ascent, descent ecc

Per il vostro caso d'uso io consiglierei getBBox, dal momento che può occuparsi di grafica anche gli elementi (nel caso tu voglia aggiungere più cose che solo testo ai grafici).

+2

Non consiglio assolutamente di utilizzare 'getBBox', poiché rispetta solo i limiti assoluti del testo. Tuttavia, per posizionare correttamente il testo, una volta deve rispettare l'ascesa e la discesa. L'attributo 'y' di un SVGTextElement specifica la posizione verticale di _baseline_. Quindi usare solo il 'BBox' non sarebbe di grande aiuto. Il problema è che i metodi SVG DOM non consentono di interrogare le informazioni di salita e discesa! Non ho idea del perché questo è carente nella Spec. – radlan

+2

Per calcolare la discesa, ecco cosa ho fatto. Impostare "y" per l'elemento di testo in SVG su zero. Ora la tua previsione è zero. Quindi ottieni la proprietà "y2" da getBBox e questa sarà l'altezza della tua "discesa". – Chad