[whatwg] Canvas 2d Proposal - Adding float TextMetrics baseline
Charles Pritchard
chuck at jumis.com
Thu Aug 18 18:29:50 PDT 2011
Following is a change proposal for the canvas 2d spec, adding an
additional floating point attribute to TextMetrics, the object returned
by measureText.
In my work on decorative text, we have had to get the current baseline
through doing css measurements. By setting the baseline of a div tag,
and measuring the changes in css values, we are able to get the values
for all of the baselines. It's a work-around.
This is something I prepared, to try to get an additional result in
measureText.
example:
var textMetrics = ctx.measureText('test');
Result (example numbers):
textMetrics = { width: 40, baseline: 10 }
This change proposal is part of an effort of improving the usability of
the canvas tag.
The *measureText()* method takes one argument, /text/. When the method
is invoked, the user agent must replace all the space characters in
/text/ with U+0020 SPACE characters, and then must form a hypothetical
infinitely wide CSS line box containing a single inline box containing
the text /text/, with all the properties at their initial values except
the 'font' property of the inline element set to the current font of the
context, as given by the _font_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-context-2d-font> attribute,
and must then return a new _TextMetrics_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#textmetrics> object
with its _width_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-textmetrics-width> attribute
set to the width of that inline box, in CSS pixels and its _baseline_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-textmetrics-baseline> attribute
set to the /anchor point/'s vertical position as determined by the
current _textBaseline_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-context-2d-textbaseline> value,
in CSS pixels. _[CSS]_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#refsCSS>
The _TextMetrics_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#textmetrics> interface
is used for the objects returned from _measureText()_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-context-2d-measuretext>.
It has two attributes, *width* and *baseline*, which are set by the
_measureText()_
<file:///private/var/folders/W6/W6JvvNbZE3m-nm24bFZ2rE+++TI/-Tmp-/TemporaryItems/canvasissue131.html#dom-context-2d-measuretext> method.
More information about the whatwg
mailing list