- From: Tab Atkins Jr. <jackalmage@gmail.com>
 - Date: Wed, 15 Jan 2014 14:04:17 -0800
 - To: Richard Ishida <ishida@w3.org>
 - Cc: Simon Sapin <simon.sapin@exyr.org>, www-style <www-style@w3.org>, WWW International <www-international@w3.org>
 
On Wed, Jan 15, 2014 at 8:06 AM, Richard Ishida <ishida@w3.org> wrote:
> On 07/01/2014 23:31, Simon Sapin wrote:
>> http://www.w3.org/International/track/issues/306
>>>>
>>>>  where XXX is a sequence of bytes other than 22 (ASCII for ")
>>>
>>> This is unclear and looks odd. [...]
>>
>>
>> In this rephrasing, I also avoid entirely mentioning the 0x22 ASCII
>> character. The details of the byte pattern are not central to this note.
>
> Actually, i think there's still a problem here. If the @charset 'thing' is
> to be useful (ie. recognised for fallback encoding), then it has to follow a
> precise syntax, ie. a single space between charset and quote mark, and
> double quotes used rather than single.
>
> That isn't expressed by the grammar
>
>         <at-charset-rule> = @charset <string>;
That's because the grammar for the @charset rule follows normal CSS
conventions, where you can use arbitrary whitespace, use either quote
character for strings, add comments, etc.
The grammar for the @charset has no connection whatsoever with the
byte sequence for specifying encoding information (see "The @charset
rule has no effect on a stylesheet").  You can easily create valid
@charset rules which show up in the CSSOM which have no effect on the
document encoding.  Example:
@charset    'iso-8859-1';
.foo© { color: red; }
Totally valid CSSCharsetRule shows up in the stylesheet.  Assuming
that the file is actually saved in iso-8859-1, though, the @charset
has zero effect, and the © symbol is corrupted.  Remove the extra
whitespace, change to double-quote chars, and it'll work.
~TJ
Received on Wednesday, 15 January 2014 22:05:06 UTC