- From: Dave Raggett <dsr@w3.org>
- Date: Sun, 23 Sep 2007 17:58:05 +0100 (BST)
- To: www-svg@w3.org
I am trying to see if it is practical to implement a slide editor/presenter in SVG and have run into some problems with the positioning of sequences of tspan elements. The basic idea is to emulate a text editing caret using a tspan element with a vertical bar character, e.g. <defs> <rect id="bullet1" x="0" y="0" width="20" height="20" fill="#55C"/> </defs> <g class="paragraph"> <use x="85.71429" y="145.21933" xlink:href="#bullet1"/> <text x="135.71429" y="165.21933" fill="black"><tspan id="caret" fill="red" >|</tspan><tspan>This is the first point</tspan></text> </g> which renders a square bullet, a caret and the text for the "paragraph". I set event handlers to move the caret to the right or left when the corresponding key is pressed. The problem is that Firefox introduces an error in the position of the second and third tspan elements, where the additional space introduced is roughly proportional to the amount of text in the first tspan. Opera and Bitflash don't suffer from this problem. Placing dx attributes on both text and tspan elements seems to be recipe for masochism. It is rather to predict how existing implementations behave, so I rapidly gave up trying. The SVG spec doesn't make it obvious (at least to me) how dx should work in such cases. I have also tried using a vertical line to draw the caret, but current SVG implementations are inaccurate in the extent they report for tspans. I suspect this may be related to errors in the mapping from the internal coordinate system and the coordinate system used when rendering to the target viewport, but that is just a guess. In case you wondered, yes I have tried the editable feature for SVG Tiny 1.2, but at least on Bitflash, this results in a pop-up dialog box for the text, and not the wysiwyg user experience I am trying to provide. I am however very impressed by the SVG microDOM compared to the DOM available on Firefox2 and Opera9. The DOM3 keystroke and text input events are a great improvment and there are lots of other nice details! Now if only I could lay my hands on an implementation of SVG Tiny 1.2 that is truly 100% compliant to the spec ... Dave Raggett <dsr@w3.org> http://www.w3.org/People/Raggett
Received on Sunday, 23 September 2007 16:58:13 UTC