- From: Håkon Wium Lie <howcome@opera.com>
- Date: Sun, 8 Feb 2009 20:03:07 +0100
- To: Giovanni Campagna <scampa.giovanni@gmail.com>
- Cc: www-style@w3.org
Also sprach Giovanni Campagna: > I recently came into the CSS Generated Content for the Paged Media and found > some strangeness comparing between Generated and Replaced Content and > Generated Content for the Paged Media. Yes, there are some differences. Note the dates, though: CSS3 Generated and Replaced Content Module W3C Working Draft 14 May 2003 http://www.w3.org/TR/css3-content/ CSS3 module: Generated Content for Paged Media Editor's Draft 8 January 2009 http://dev.w3.org/csswg/css3-gcpm/ That is, GRCM is dormant, while GCPM is actively developed. > css3-content. introduces footnotes with the "::alternate" pseudo-element for > the note itself, "::alternate::marker" for the footnote call, with the > "footnote" content keyword and the "move-to" property, adding a > "content:pending(footnotes)" on the @bottom-left page margin box. This also > works well with endnotes and section-notes, and it relatively easy to write > down: > > example: > > <p>My content. <span class="note">my note</span></p> > with the following CSS: > .note { > content: footnote; > } > /* this implies: > .note::alternate { > move-to: footnotes; > content: contents; > } > .note { > counter-increment:footnote; > } */ > and the following addition to UA defaults: > @counter footnote super-decimal; > @page { > @bottom-left { > content:pending(footnotes); > } > } > > If you want end notes instead of footnotes, just change the content value. > > If you want custom notes, just ensure that ::alternate is generated and > contains the correct content. > > css3-gcpm instead uses the "::footnote-marker" and "::footnote-call" > pseudo-elements, with the "footnote" float keyword, while for the other > types of notes uses the "to()" functional notation in float and "from()" in > content. > > example (same content as above): > .note { > float:footnote; > } > /* this implies: > .note::footnote-call, .note::footnote-marker, @footnote page area > */ > > on the other side, for endnotes and section-notes it is more difficult as > every property has to be set separately. It's quite easy to create endnotes in GCPM: .note { float: to(endnote) } To number them, you would use a counter: .note:before { content: counter(endnote) } I don't see how this is difficult. Or, am I misunderstanding what you are trying to say? > In addition to this new pseudo-elements, syntaxes, values and properties > that Paged UAs must implement (and that are not needed, since the same > effect can achieved with the different properties). Therefore I propose that > the whole section about footnotes in css3-gcpm be reduced to the addition of > "@footnotes" and footnotes magics. Also the section on named flows should be > dropped in favour of the move-to property. I'm open for changes to the draft, but I don't think it should be dropped in favor of GRCM. First, GRCM isn't implemented by anyone and isn't maintained at this point. The good parts -- and there are many -- have been imported into GCPM. The differences are: - GCPM offers both a generic model for moving elements (like GRCM does, but with slightly different names) and a specific one for footnotes. The specific method is necessary as the formatting of footnotes sometimes needs som heuristics. (This is described in the "Footnote magic" section.) - GCPM reuses property names more than GRCM does. For example, 'float' is used instead of 'move-to'. I think it best to reuse properties whenever possible and 'float' was chosen after a long debate. - GCPM can pull elements from other parts of the document (by way of a link) and can turn these elements into footnotes > The latter leads me to the running header. Can those be achieved without > adding a new "position" value? Position should express the positioning > model, not where the element is actually position, and in many places > "positioned elements" are those which have a position different than static: > this would break it. You can invent a new property, but that has a cost an implementors tend to object. Reusing 'position' is a pragmatic choice. 'Position' is already used to express to very different concepts -- relative positioning and absolute positioning -- so I think it's ok to use it for running headers and footers. > I think that adding a keyword to move-to is what we need: > move-to: <identifier> once; > means elements are appended to the <identifier> and then removed when > processing pending() (like footnotes and named flows) > move-to: <identifier> running; > means that the current elements replaces the content of <identifier> and it > is not removed when inserted with pending() (so it may be inserted an > arbitrary number of times) That could work. I don't think it's any more intutive and it adds the cost of an extra property. However, if implementors think it's worth changing I will not object. > Other changes that I would like to propose: > 1) named strings are defined in two modules, with different syntaxes (in > particular about the page-policy property) > I think they're useful also outside of the Paged Media, so they should be > inside css3-content Do you have a used case outside of paged media? > 2) hypenation is in the scope of Text module (just copying may be fine) > 3) we have a ::line-marker and 4 ::line-number pseudo-element: I think that > one of two proposal should be removed There should only be one model, yes. The model presented in GCPM is only a sketch, but it addresses a common scenario: that line numbers are only shown on every x lines. This seems useful, no? Thank you for your review. -h&kon Håkon Wium Lie CTO °þe®ª howcome@opera.com http://people.opera.com/howcome
Received on Sunday, 8 February 2009 19:03:44 UTC