- From: Håkon Wium Lie <howcome@opera.com>
- Date: Sat, 18 Aug 2012 00:21:17 +0200
- To: Simon Sapin <simon.sapin@kozea.fr>
- Cc: "www-style@w3.org" <www-style@w3.org>
Also sprach Simon Sapin: > > > For each element where the computed value of neither bookmark-level or > > > bookmark-label is 'none', generate a bookmark entry. > > > > Isn't is sufficient that 'bookmark-label' is different from 'none'? > > > > In a simple book with several consecutive chapters, you'd want to say: > > > > h2 { bookmark-label: contents } > > > > And not having to say: > > > > h2 { > > bookmark-label: contents; > > bookmark-level: 2 > > } > > You mention below that h1..h6 get a bookmark-label value in the HTML UA > stylesheet. I think it’s hard to generate a bookmark if bookmark-level > is none. Where would you put it in a PDF outline tree, for example? It could be level 1. (In which case we might as well make the initial value 1 instead of none.) Or we could say that, in order for a bookmark to be generated, both 'bookmark-level' and 'bookmark-label' must be different from 'none'. This will allow UAs and authors to use any switch they want, no? > > > The used value of > > > bookmark-label is as described for the string-set property, with the > > > text taken *after* white space processing (according to the white-space > > > property.) > > > > According to the white-space value of the element in question? > > Yes. This is what I implemented, but it could change. > > > I'd probably suggest always processing white-space as if 'white-space: > > normal' had been set on the label. > > I don’t see a strong argument either way. 'normal' is the initial value > so headings rarely have another value for white-space anyway. I could see the value of 'white-space' change for effect in the document without wanting a similars effect in the outline (where space is more precious). So, I suggest adding this to the definition of <content-list>: The textual content is processed as if 'white-space: normal' had been set. > > > By the way, I think that the initial value of bookmark-label should be > > > 'contents', not 'none'. Actually I’m not even sure that 'none' is ever > > > useful. 'bookmark-level: none' (the initial) is enough to say "this > > > element does not generate a bookmark". > > > > I agree that 'bookmark-level' can be used as the on/off switch for > > bookmarks, but I'd probably prefer to use 'bookmark-label' as the > > switch. This way one can have (say) this in the default style sheet: > > > > h1 { bookmark-level: 1 } > > h2 { bookmark-level: 2 } > > h3 { bookmark-level: 3 } > > > > without triggering the generation of bookmarks. Bookmarks can then be > > switched on with: > > > > h1, h2, h3 { bookmark-label: contents } > > > > (or something) > > > > Thus, one can turn on bookmarks with one declaration rather than > > having to use (and remember) many levels. > > If no bookmark is generated by default I agree that it is interesting > for authors not to have to specify levels explicitly. But in WeasyPrint > we chose to have h1..h6 generate bookmarks by default. (Again, nothing > set in stone.) In that case, opting-out is also easy: > > /* Limit bookmarks to 3 levels */ > h4, h5, h6 { bookmark-level: none } Yes, turning off is easy. This is compatible with my proposal above. > > > bookmark-level specifies what "depth" this entry is supposed to be at, > > > in the bookmark tree. The UA stylesheet for HTML has something like this: > > > > > > h1 { bookmark-level: 1 } /* ... */ h6 { bookmark-level: 6 } > > > > > > The order of the generated bookmarks is always the same as the tree > > > order of the corresponding elements. If the values of bookmark-level are > > > inconsistent (for example a level 1 entry followed by a level 3, without > > > a level 2 in-between) the levels are adjusted somehow to make a proper > > > tree without "holes". > > > > This requires more intellingence than we should expect from > > implementations, no? (A similar rule for elements would convert all h3 > > elements into h2 if no h2 element was found.) > > I was only describing our implementation. I think it is good to leave > such details unspecified so that implementation can but do not have to > make a smart algorithm for broken pages. Ok. > > > The bookmark "target" is a single point. We picked the before-start > > > corner (top-left in horizontal-tb ltr) of the margin edge of the first > > > box/fragment generated by the element. > > > > That seems reasonable. Is this what browsers do? > > Actually I switched from margin box to border box after writing the > quoted emails: > > http://lists.w3.org/Archives/Public/www-style/2012Jun/0318.html > > I do not know of a browser that implements bookmarks, but the closest is > internal hyperlinks. Apparently browsers scroll the top of the *border > box* to the top of the viewport (assuming a box far enough from the top > and bottom of the document.) Horizontally things are more subtle. If the > box is narrower than the viewport, browsers scroll horizontally as > little as possible so that the whole width of the border box is visible. > > But in PDF we do not have such fine-grained control: the targets for > outlines and internal hyperlinks is a single (X, Y) point on a page. What do you suggest the spec should say? (if anything) -h&kon Håkon Wium Lie CTO °þe®ª howcome@opera.com http://people.opera.com/howcome
Received on Friday, 17 August 2012 22:21:53 UTC