- From: Domenico Strazzullo <strazzullo.domenico@gmail.com>
- Date: Thu, 11 Mar 2021 14:38:09 +0100
- To: www-svg <www-svg@w3.org>
- Message-ID: <CABgXer2-o9VV8kgzv3iQaCXDaLuCe9eOah4E3p8f7CqZNiUddw@mail.gmail.com>
Hi, The concerned methods are: getComputedTextLength(), getSubStringLength(), getStartPositionOfChar(), and getEndPositionOfChar(). The task is to get the advance values in a string of rendered and formatted text. getStartPositionOfChar() and getEndPositionOfChar() are obviously the most appropriate for that task. But they fail. Then getComputedTextLength() and getSubStringLength(), which can both do the job (programmatically rebuilding the string one character at a time), were tested, and also failed. This is true for Chrome and Edge, while Firefox executes the task flawlessly using any of those four methods. I repeat, Firefox executes the task flawlessly using any of those four methods. What’s causing the failure (errors thrown on wrong “charnum” and/or “nchars” parameters -> freeze of the concerned text element) is the charCode 32 (space bar) – which, incidentally, can be replaced programmatically by charCode 160 (non breaking space) during after-input processing, and before using any of the aforementioned methods (but still… this would be just a cheap workaround). More precisely, double spaces and trailing spaces cause the errors, but also a single inner space depending on the method used and the proceedings. After puzzlement and then investigation, you learn that the "xml:space" attribute is deprecated in SVG2, and at https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xml:space you read "Instead of using the xml:space attribute, use the white-space CSS property". But... in the Browser compatibility section you can see that only Firefox has full support, all the others showing the "Compatibility unknown" sign – at my expense I found out that Chrome and Edge obviously decided to break the support, even though it's nothing like common practice to break backward compatibility, quite the contrary. But that is nothing, when visiting the white-space CSS property page, Browser compatibility section, you learn that only Firefox – and defunct Internet Explorer – has full "Support in SVG"! All the others show a merciless "No". And not only that, the white-space CSS property is just a candidate recommendation in CSS Text Module Level 3. It seems then that somebody decided to take something fundamental out of SVG with the intention to replace it with an extraneous feature that is not quite there yet, and in any case not implemented. Did that/those persons even consider that SVG does not have the same text module as the markup language that is the natural target for CSS? Please, cancel the deprecation of "xml:space" in SVG. Regards, Domenico
Received on Thursday, 11 March 2021 13:38:33 UTC