Sto provando a misurare l'altezza esatta utilizzata per il rendering di una determinata stringa con un determinato carattere con un tag di testo SVG.È possibile misurare più accuratamente l'altezza del testo SVG?
Ho provato a utilizzare getBBox e getExtentOfChar, ma l'altezza restituita da entrambi include uno spazio aggiuntivo sopra (e talvolta sotto) il testo effettivamente visualizzato.
http://upload.wikimedia.org/wikipedia/commons/3/39/Typography_Line_Terms.svg Utilizzando i termini di questa immagine, sto cercando di ottenere l'altezza del cappuccio + l'altezza del discensore del testo da renderizzare. Oppure, se questo non è possibile, solo l'altezza del cappuccio. C'è un buon modo per calcolare questi valori?
Ecco un rapido codepen che mostra lo spazio extra di cui sto parlando: http://codepen.io/pcorey/pen/amkGl
HTML:
<div>
<svg><text>Hello</text></svg>
<svg><text>Age</text></svg>
</div>
JS:
$(function() {
$('svg').each(function() {
var svg = $(this);
var text = svg.find('text');
var bbox = text.get(0).getBBox();
svg.get(0).setAttribute('viewBox',
[bbox.x,
bbox.y,
bbox.width,
bbox.height].join(' '));
});
});
ho capito che questo è un piuttosto carattere -una cosa specifica, quindi questo potrebbe essere totalmente impossibile ...
OK, grazie. Sembra che tu possa calcolare l'altezza della discesa eseguendo il rendering del testo su y = 0 e sottraendo l'offset y del bbox dalla sua altezza (assumendo che la linea di base dominante sia impostata in ordine alfabetico). Non c'è ancora modo di ottenere l'altezza di risalita o l'altezza del cappello però ... Bummer. – pcorey