W3C home > Mailing lists > Public > www-style@w3.org > January 2014

Re: [css-syntax] ISSUE-329: @charset has no effect on stylesheet??

From: Zack Weinberg <zackw@panix.com>
Date: Wed, 15 Jan 2014 17:11:33 -0500
Message-ID: <CAKCAbMjwGCMnaWfbuNV9dOwS1eX-1hUF1CG7O1DT4AwWx-htdg@mail.gmail.com>
To: "Tab Atkins Jr." <jackalmage@gmail.com>
Cc: www-style list <www-style@w3.org>
On Wed, Jan 15, 2014 at 4:48 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
> On Wed, Jan 15, 2014 at 8:08 AM, Zack Weinberg <zackw@panix.com> wrote:
>> That's true but I don't think it affects Richard's point regarding the
>> exposition.  Concretely, I think that section 8.2 would be better if
>> it read something like this:
>>
>> The @charset rule is a reflection in the object model of the
>> stylesheet's fallback encoding as determined by the algorithm in
>> section 3.2.
>
> But it's not!  A preceding BOM will override it, for example.  The
> @charset rule really, *truly* has no effect on the document, and
> should not be looked at for any reason.

That was what I was trying to indicate with this bit ...

>>  For compatibility's sake, an @charset rule will still
>> appear in the object model, as-if parsed as a normal @-rule, even if
>> it was not recognized as an encoding annotation by the algorithm in
>> section 3.2

... but I can see where it might not be emphatic enough.

> I've attempted to further clarify the explanatory text.

I think the text in the note is good, but the lead-in still gives the
wrong impression.  Let me try again.

| The @charset rule is an artifact of the algorithm used to [determine
| the fallback encoding] for the stylesheet.  That algorithm looks for
| a specific byte sequence as the very first few bytes in the file, which
| has the syntactic form of an @-rule. Those bytes are not discarded
| from the input, whether or not they influence the encoding actually
| used to process the stylesheet. Therefore, the stylesheet parser
| recognizes an @-rule with the general syntax
|
|    <at-charset-rule> = @charset <string> ;
|
| and, for backward compatibility, includes it in the object model for
| the stylesheet.  Modifying, adding, or removing an @charset rule via
| the object model has no effect (in particular it does *not* cause the
| stylesheet to be rescanned in a different encoding).
|
| The @charset rule is invalid if it is not the very first, top-level
| rule in the stylesheet, but it is parsed according to the normal
| syntax for @-rules, which are less restrictive than the algorithm that
| determines the fallback encoding.  Therefore, an @charset rule may
| appear in the object model even if it was ignored by that algorithm.
| (For instance, if it was written with extra whitespace or with single
| rather than double quotes.)

zw
Received on Wednesday, 15 January 2014 22:12:19 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:39:18 UTC