Ich versuche, die genaue Höhe zu messen, die verwendet wird, um eine gegebene Zeichenfolge mit einer gegebenen Schriftart mit einem SVG-Text-Tag zu rendern.Ist es möglich, die SVG-Texthöhe genauer zu messen?
Ich habe versucht mit getBBox und getExtentOfChar, aber die Höhe von beiden zurückgegebenen enthält etwas mehr Platz oberhalb (und manchmal unter) der tatsächlichen Text gerendert.
http://upload.wikimedia.org/wikipedia/commons/3/39/Typography_Line_Terms.svg Mit den Begriffen in diesem Bild versuche ich, entweder die Höhe der Kappe und die Unterlänge des gerenderten Textes zu erhalten. Oder, wenn das nicht möglich ist, nur die Kappenhöhe. Gibt es eine gute Möglichkeit, diese Werte zu berechnen?
Hier ist ein schnellen codepen den zusätzlichen Platz zeigen, ich spreche: 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(' '));
});
});
Ich verstehe, dass dies eine ziemlich Schriftart -spezifische Sache, so könnte dies völlig unmöglich sein ...
In Ordnung, danke. Es sieht so aus, als ob Sie die Abstiegshöhe berechnen können, indem Sie den Text bei y = 0 rendern und den y-Versatz der bbox von seiner Höhe subtrahieren (vorausgesetzt, die dominante Grundlinie ist auf alphabetisch gesetzt). Es gibt aber immer noch keine Möglichkeit, die Aufstiegshöhe oder die Kappenhöhe zu bekommen ... Bumm. – pcorey