- From: Michel Suignard <michelsu@windows.microsoft.com>
- Date: Mon, 14 Apr 2003 18:45:25 -0700
- To: "fantasai" <fantasai@escape.com>
- Cc: <www-style@w3.org>
See my answers online. Michel | -----Original Message----- | From: fantasai [mailto:fantasai@escape.com] | | Michel Suignard wrote: | > | > In the introduction [1] (The BIDI problem), there are examples of | > upright (Chinese and latin) with a left-to-right block progression. | > The normal 'block direction' of such a case is 'rtl' (top to bottom | > physically), this means that L characters (as shown in the | > picture) go | > top to bottom (through bidi reordering) when their glyph | > orientation | > is -90deg clockwise, but if upright, no bidi reordering | > occurs so they | > will flow with the normal block direction which is top to bottom | > (which is the desired effect). Of course you can force a block | > direction to be 'ltr' which would get you in trouble as you | > demonstrate, but why do it when simply using 'direction:rtl' on the | > block would avoid the issue. | | The reason why you should /not/ use 'direction: rtl' on a | Chinese or English text: | | author.css | element { writing-mode: tb-lr } | | user.css | * { block-progression: tb !important } I don't see this as a realistic scenario. A document styled with vertical layout in mind cannot be rendered correctly by just changing block-progression. The main reason is that CSS positioning and many other properties have a 'physical' meaning. This is a debate we had in CSS long ago and it was decided that physical propery names had a 'physical' meaning. Furthermore, the normal usage of a 'block-progression:lr' is to have 'direction:rtl' as it will do the right thing for Mongolian which is the typical usage for that combination, and the upright characters will flow top to bottom which is again expected. | | The net result is "writing-mode: rl", which is | *inappropriate* for horizontal left-to-right scripts. | | 'direction' controls the directionality of the element's | text. This is different from the stylistic inline | progression, and you get problems if you conflate the two. I don't agree with this. 'direction' controls the inline-progression for block element, it doesn't change the inherent character directionality unless 'unicode-bidi:bidi-override' is also used. In that aspect, 'direction' is a bit overloaded, but imo we don't need another property/concept to control inline-progression. | | > The new case which is really fascinating is the 'context' | > orientation. | > ... It could be added as a new keyword to both | > glyph-orientation-horizontal and glyph-orientation-vertical. | | Overloading glyph-orientation like this bothers me, as it's | not just the glyph's orientation that's affected, but the | ordering of characters as well. "glyph-orientation: context", | for example, makes no sense whatsoever. In the "upright" | style, the inline progression depends on the glyph | orientation -- but in the "context" style, the glyph | orientation depends on the inline progression. Nonetheless, | these two styles are parallel; they're either-or, and they | belong in one property. In the latest draft of CSS3 text, I have added 'glyph-orientation-vertical: inline' which intends to do exactly that effect, it says: << Inline ------ All glyphs are laid out top to bottom regardless of inherent direction. The embedding levels, as determined by the bidirectional algorithm [UAX9], are used to set the orientation of some glyphs (see following prose). - Full-width ideographic and full-width Latin glyphs are oriented as if an <angle> of "0deg" had been specified. - Ideographic punctuation and other ideographic characters having alternate horizontal and vertical glyphs MUST use the vertical glyph. - Glyphs from the Mongolian script are also oriented as if an <angle> of "0deg" had been specified. - Glyphs for all characters in even embedding levels are rotated 90 degrees clockwise from the "0deg" orientation. - Glyphs for all characters in odd embedding levels are rotated 90 degrees counter-clockwise from the "0deg" orientation. For this value of 'glyph-orientation-vertical', the directionality of characters cannot be changed by the 'direction' property. >> | > In that case, each Mongolian word will (should?) be | > displayed top to | > bottom with each following word going on the right of the | > previous one | > (I have seen that layout in mixed German/Mongolian litterature | > samples). In that case each vertical fragment of the | > vertical script | > is by itself a 'L' entity. For that to work you need a | > line-stacking-strategy allowing these vertical fragments to | > expend the | > line height. | | Yes, that's one possibility. However, longer runs of | Mongolian will often run horizontally, as you can see in the | Chinese/Mongolian pages. (I found an English book, too, in | which inline Mongolian runs left to right.) The kind of | layout you describe is like having each Mongolian word inside | its own inline block. It's therefore much more complicated, | and, I think, not a necessary addition to CSS3 Text. | | If the inline progression is right-to-left, it would make | sense for Mongolian to also go from right to left. This kind | of contextual progression is what the "inline" (context) | value should do: if the block's inline progression is | right-to-left, it should go from right to left as well, not | left to right. Right now it seems they're using overrides for | this [1], which IMO should be avoided. (It doesn't handle | mixed scripts very well.) This is a case I had not thought of, but it could be added as a modification of the 'glyph-orientation-horizontal: auto' now reads like this: << auto ---- The glyph orientation relative to the inline-progression is determined automatically based on the Unicode character code of the rendered character. - Full-width ideographic and full-width Latin glyphs (excluding some ideographic punctuation and bracket symbol) are oriented as if an <angle> of "0deg" had been specified. - Ideographic punctuation and other ideographic characters having alternate horizontal and vertical glyphs MUST use the horizontal glyph. - Glyphs from the Mongolian script are also oriented as if an <angle> of "0deg" had been specified, however they are stacked vertically word by word. - Other glyphs, including Hebrew and Arabic are set as if an <angle> of "0deg" had been specified. >> We could change the the definition for Mongolian script in the case of 'auto' to read as follows: - When the 'direction' value is 'ltr', glyphs from the Mongolian script are also oriented as if an <angle> of "0deg" had been specified, however they are stacked vertically word by word. - When the 'direction' value is rtl, glyphs form the Mongolian script are oriented as if an <angle> of "270deg" had been specified. | | > As I have already completely separated 'direction' and | > 'block-progression' in my current draft it is reasonably | easy to add | > these new concepts in the draft. | | Wonderful! | | ~fantasai | | [1] http://uk.geocities.com/BabelStone1357/Test/Mongolian.html | | |
Received on Monday, 14 April 2003 21:45:44 UTC