[whatwg] Text APIs on <canvas>

Ian Hickson ian at hixie.ch
Fri May 9 17:53:51 PDT 2008

On Fri, 9 May 2008, Vladimir Vukicevic wrote:
> On May 5, 2008, at 8:10 PM, Ian Hickson wrote:
> > 
> > I have introduced the following APIs:
> > 
> >   context.font
> I think this should be "textStyle" -- both to match existing fillStyle/ 
> strokeStyle, and for consistency with the rest of the text functions.

I was about to make this change when Maciej suggested keeping 'font'... 
I'll leave this open for now and see what other people think.

> > I haven't provided a way to render text to or along a path, nor a way 
> > to do vertical text, nor a way to measure anything but the nominal 
> > layout width of text (e.g. there's no way to measure bounding boxes or 
> > get baseline metrics). I also haven't provided a way to render 
> > document fragments straight to a canvas.
> Rendering text to a path or along a path are both useful operations; why 
> were they omitted?

I completely agree that we want those operations.

Specifically, we want two things: rendering text along a path, and 
rendering text _to_ a path.

However, with the current API, which has just one active path, it isn't 
possible to draw text to a path that is itself drawn around a path. I 
think it would be bad to not provide this in a generic way -- we really 
just need to introduce path _objects_, at which point this all becomes 
much easier.

Path objects have been requested for other reasons (e.g. so that you can 
stamp out different paths without having to reconstruct them each time) 
and so my preference would be to delay rendering text along a path and 
text to a path until such time as we have Path objects as a primitive.

I would guess that Path objects would be the next thing that we would add 
to <canvas>.

> I don't think the restriction that "putImageData" must only work with 
> objects returned by create/get is a good one

This restriction was made because it allows for dramatic (many orders of 
magnitude) optimisations. With createImageData(), the use cases for custom 
imageData objects should be catered for -- what are the cases where you 
would need another solution? (Note that hand-rolling imageData objects is 
dangerous since you don't know what resolution the backing store is using, 
necessarily, which is something else that createImageData() solves.)

> but it would be good to have some way to mark sections of the spec as 
> stable/unstable --

I've gone through and added annotations for each of the canvas sections to 
distinguish the stable parts from the unstable parts. Does that work?

> otherwise someone's liable to take a snapshot and implement it, and then 
> have it change under them if a portion is still in flux.

In general, the spec is unlikely to change significantly _before_ the 
first implemenation. We get more feedback from the first implementation of 
anything than from people just looking at the spec. I agree that the first 
implementation should know what it's getting itself into, though. :-)

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list