- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Wed, 12 Dec 2007 15:44:27 -0500
- To: WWW Style <www-style@w3.org>
http://www.w3.org/TR/2007/CR-CSS21-20070719/syndata.html#characters
http://csswg.inkedblade.net/spec/css2.1#issue-19
Case-insensitivity in CSS is currently not precisely defined. The
meaning of "case-insensitive" is pretty obvious in ASCII, but it's
not so obvious in Unicode. Some characters map differently based
on the locale, some characters can't round-trip a case mapping
operation so you get different matches depending on whether you map
to lowercase, uppercase, or "case-fold" case, etc.
There was a recent discussion about this problem on www-style:
http://lists.w3.org/Archives/Public/www-style/2007Nov/0169.html
Martin summarized the problem and its constraints best in
http://lists.w3.org/Archives/Public/www-style/2007Nov/0188.html
There are two issues here:
a) What the case mapping should be for CSS-defined identifiers such
as property and keyword names.
b) What the case mapping should be for user-defined identifiers such
as counters and page names.
For the first issue, since CSS-defined identifiers only use characters
in the ASCII range anyway, ASCII case-insensitivity would be sufficient.
It would also prevent strings containing characters outside the ASCII
range from unexpectedly matching CSS keywords (which could cause
security problems).
For the second issue, we could adopt the Unicode case-folding algorithm,
which is at least well-defined. However a test shows that
implementations already treat counter names as case-sensitive. This is
interoperable across all four major CSS counters implementations:
Firefox, Opera, Safari, and PrinceXML (an HTML/XML + CSS -> PDF
converter):
http://lists.w3.org/Archives/Public/www-style/2007Nov/0222.html
Also because it's much more straightforward than case-insensitivity in
Unicode, it is more likely to be interoperable going forward. The
downside is that case-sensitive counters could be more confusing for
authors used to case-insensitive CSS.
The CSS Working Group proposes to adopt the following changes
http://lists.w3.org/Archives/Public/www-style/2007Nov/0219.html
http://lists.w3.org/Archives/Public/www-style/2007Nov/0221.html
which would
a) define case-insensitivity of CSS-defined identifiers as ASCII
case-insensitivity: i.e. a-z and A-Z match, but no other
characters outside that range will ever map into that range.
b) define counter names as case-sensitive in CSS2.1, which would
also set case-sensitivity as the precedent for user-defined
identifiers introduced in future specs
Unless there are objections that cause us to reconsider, we plan to
formally resolve this issue on 8 January 2008. Please send any comments
before then.
Thanks~
~fantasai
Received on Wednesday, 12 December 2007 20:45:03 UTC