- From: Daniel Glazman <daniel.glazman@disruptive-innovations.com>
- Date: Wed, 20 Feb 2013 13:36:57 +0100
- To: "www-style@w3.org" <www-style@w3.org>
- CC: "Tab Atkins Jr." <jackalmage@gmail.com>
(cc:ed to Tab Atkins because Variables are discussed)
I have finally taken the time to review CSS 3 GCPM line by line,
concept by concept. I have important comments to make about it and
I am again calling for a massive revamp of GCPM. It just cannot be
published as is.
Maybe an harmonization of string-set with CSS Variables is doable.
'string-set: title contents' becoming 'set-title: contents' that is
more readable and in my opinion cleaner. I understand it won't be
possible any more to define multiple strings in one rule only, but
that's in fact something good for authoring environments.
'content-first-letter' definition is not clear enough, it could
specifically retrieve the textual content of the ::first-letter
pseudo, that would be clearer.
Prose says the scope of a named string is the page of the element
but since the property applies to all media, does it mean the scope
of a named string in a 'screen' medium is the whole document? In
that case, they define document-level variables that will collide
with CSS Custom Inherited Properties (aka CSS Variables) in the mind
of users.
wow, issue 1 for env(date) is a very serious one... I think the UA's
locale should be used in all cases.
'first-except' in section 2.1.2 is quite a bad name. Hard to
understand. Can we try something better? I would like to see a clear
use case of this.
Running elements in section 2 are an incredible hack using position
and content properties just to hide th fact they are really defining
content flows. If I take example 10:
title { position: running(header) }
@page { @top-center {
content: element(header) }
}
this EXACTLY means
title { flow-into: header }
@page { @top-center {
flow-from: header }
}
but the latter is readable, not hacky. I understand first response
to that will be that running elements are copied into the flow AND
can remain also in place. This is an extra feature that can be
*easily* added to named flows. Similarly, the fact that multiple
elements into a flow aggregate into the flow's recipient instead of
resetting the flow's recipient each time can be easily added to
named flows.
Since running elements are explicitely said to be able to be copied
into a flow AND remain in place in example 11, a positioned element
cannot run into a page margin box. This is a rather drastic
limitation. Furthermore, section 2.2 example 11 seems to show an
extension of the 'position' property to multiple values that is not
described nor referenced.
All in all, running elements here seem to me an incredible hacky and
a very weak solution in comparison with named flows. I suggest to
drop this in favor of flows modulo addings the necessary extensions
to flows for copy handling (to match example 11 feature) and
resetting (to match the second argument of element()); that will
serve footnotes handling (see below).
The second argument to leader() in section 3 is a hack to avoid
applying text-align property to ::after and ::before. But if you
consider the fact leader() is currently the only notation allowing
to extend the width of such a pseudo-element from its minimal-width,
text-align is easy to deal with in this context, simplifying the
model and getting rid of a redundant parameter.
Target-counter, target-counters and target-text are nice features
but that seem to me a bit hacky. We should brainstorm a bit to see
if the currently proposed model can be improved. In particular, I
think the syntax quite ugly. I am also concerned about the fact this
will not work of external resources (let's say if in example 19 the
href attributes targets a different document).
I think Custom Inherited Properties (aka Variables) can help
here. For the time being, we're only able to retrieve the value of a
property but we could be in the future able to retrieve a variable
value on an arbitrary element. So if the target of the link is a h2:
a::after {
content: "(see page "
var(attr(href url) pageVar) /* note the whitespace */
")"
}
h2 { var-pageVar: counter(page, decimal); }
Don't focus on the syntax itself, in particular var(), focus on the
model. It's simpler and has a greater adherence to other specs
inside the WG.
Footnotes as defined in section 5 are so magic it's even mentioned
in 5.7's title... They require many new concepts instead of reusing
what we already have on the radar. Positioning the footnotes area in
a page (as presented in examples 27 to 29, please note there are two
example 28!) requires deep extension of the float property.
A much better model, simpler and far less magic is achievable using
named flows and regions. It is even more consistent with the concept
of running elements described above! As they're in the spec now,
footnotes seem to me unacceptable.
Bookmarks in section 7 seem to me an incomplete mechanism at this
time. I understand this is to be handled by the UA but how is it
retrieved? How does the UA create the bookmarks list? How can the
bookmarks list be generated (as in generated content) into a
specific page for instance? This section requires much more details,
clearer use cases with rendering examples and potentially a complete
revamp, including technically. I'm not sure the current model is
useable as is.
Section 8 has nothing to do here. Should be in the CSS Print Profile
in my opinion.
Section 10 has a long history with Opera slideshows. I think
implementation has shown validity and simplicity of the model. I'd
like to hear from other implementors though.
Issue 7 is right, 'paginated' is better than 'paged'
Section 11, this is not stylistic and not in the scope of the CSS
WG. I also doubt we should be the only ones caring about that. The
proposed solution seems to me incredibly dangerous, I don't like it
at all and I feel this section should be entirely removed from
GCPM. The syntax evolved between last WD and this ED, showing this
feature is not stabilized. As far as I am concerned, I plan to
object to a LC release of this document if this section is in,
this is outside of the scope of your Charter.
Many people have expressed concerns about this since the day it
was added to the GCPM draft. I think the CSS WG should say
explicitely if this is stylistic, if it should stay here, etc.
Section 12 should be moved to next level of multi-column. It goes
FAR beyond the previous versions of the GCPM WD. It is not specific
at all to PagedMedia and Håkon's demos I saw were all made on screen
in a non-paginated mode.
Whatever happens to that section, I express DEEP concerns about the
technical model even if I agree with the feature. This should be
discussed in the CSS WG before any kind of WD publication.
I don't understand the purpose of section 13. If there is an
alternative syntax to discuss, that should be done outside of the
spec among the Membership.
I just could not believe my eyes when I discovered section 14 about
Exclusions. We have a WG Charter listing CSS Exclusions and Shapes
as a deliverable and Håkon's ED contains (still contains?) a totally
incompatible model. I am asking this section to be deleted and
contributions to go into the Exclusions and Shapes basket, *as
described in the CSS WG Charter* section 2.2.
Similarly, I discovered sections 15 and 16. Same concerns.
(this line explicitly to Håkon: don't make the mistake you did wrt
my affiliations again, I will NOT accept it. See what I mean?)
Globally, these 3 sections seem to me too column-specific and they
seem like using a shoehorn to make regions and exclusions fit into
multicol. I don't understand this. The current CSS Regions and CSS
Exclusions and Shapes proposals work perfectly inside multicol. Why
do we need a more specific solution here? Just to prove multicols
can be extended to create arbitrary regions? How can someone call
example 80 in GCPM spec "columns"? Seriously? I can't even
understand how in that example the top region is defining an
exclusion into the lower ones. There is nothing in the CSS to handle
that.
Again, are section 18 to 20 a ED or a thinking-out-loud proposal? It
seems to be the latter. If it is, it should be in www-style, not in
a spec visible to the public.
All in all, GCPM seems to me more a "kitchen sink" document
aggregating unrelated things that matter to Opera and/or YesLogic
than a real "Generated Content for Paged Media" spec. Because of that,
I disagree with a release as is, even as a new regular WD.
</Daniel>
Received on Wednesday, 20 February 2013 12:37:27 UTC