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

RE: [CSS3 Text Layout] working draft

From: Paul Nelson (ATC) <paulnel@winse.microsoft.com>
Date: Wed, 3 Jan 2007 14:02:07 -0800
Message-ID: <49C257E2C13F584790B2E302E021B6F912152AFC@winse-msg-01.segroup.winse.corp.microsoft.com>
To: Christopher Tom <cctom@hawaii.rr.com>
CC: <www-style@w3.org>

Christopher,

Thanks for your mail. From my perspective, that which is already defined
for XSL-FO and what was previously defined by Michel Suignard's
documents are able to produce correct results.

1. I would classify neither Korean or Chinese as being "left". Also, my
interactions with the Japanese user community is that they consider it
"weird" to have vertical text on the computer...even though nearly every
book they purchase is laid out vertically. Thus, the categorical
classification of block progression for text can only be as an example. 

2. The HTML and CSS specifications already have properties (dir or
direction) to take care of left to right or right to left flow on the
line. The vertical line is still either left to right or right to left.
Only the escapement of the line has been changed. The confusion is the
rotation of most East Asian glyphs when the line is vertical.

3. All lines of text rotate 90 degrees clockwise when text is laid out
vertically. In fact, Mongolian should be considered a "left to right"
language as it is laid out left to right when it is horizontal and is
also laid out from top to bottom when vertical. Arabic is bottom to top
when laid out vertically. (Are you confused yet?)

4. Currently, the writing-mode property (lr-tb, rl-tb, tb-lr, tb-rl,
etc.) take care of the line flow and line stacking in a coherent manner.
The writing-mode property has been supported since IE5 (except for tb-lr
which will be added in a future version).

5. The glyph-orientation property of XSL-FO is one property that should
be added to CSS at some point to allow for authors to specify the
orientation of the glyphs on the line so Latin can be stacked
vertically, etc.


Paul Nelson
(Beijing)


-----Original Message-----
From: www-style-request@w3.org [mailto:www-style-request@w3.org] On
Behalf Of Christopher Tom
Sent: Wednesday, January 03, 2007 12:01 PM
To: www-style@w3.org
Subject: [CSS3 Text Layout] working draft


I am not sure what the status of the Text Layout module is so I decided 
to post this here.  This is my suggestion for the basis of a working 
draft of CSS Text Layout Level 3.  It is derived from Elika Eternad's 
Robust Vertical Text Layout paper for Unicode[1].

CSS Text Layout Level 3

Three properties and two classes of scripts describe the layout of text 
by this model.  The natural layout for each script determines its 
default property values and classes.

Properties:
Block progression direction specifies the direction in which successive 
lines of text are stacked.
Examples:
Latin, Arabic - down
Mongolian - right
Chinese, Japanese, Korean - left

Inline progression direction specifies the direction in which successive

glyphs are placed within a line of text.
Examples:
Latin - right
Arabic - left
Mongolian, Chinese, Japanese, Korean - down

Text orientation specifies the direction which the glyphs' "up" points 
towards.
Examples:
Latin, Arabic, Mongolian, Chinese, Japanese, Korean - up.

Classes:
Relative scripts are scripts for which there exists an invertible 
transformation between the inline progression direction and text 
orientation.  This transformation defines the natural relation between 
the two properties among all possible values.
Examples of transformations from text orientation to inline progression 
direction:
Latin - 90 degrees clockwise rotation
Arabic - 90 degrees counterclockwise rotation
Mongolian - reflection across the line of text

Independent scripts are scripts for which the inline progression 
direction and text orientation are independent of each other.
Examples:
Chinese, Japanese, Korean are independent scripts.

The CSS properties for Text Layout Level 3:
Name: block-progression
Value: up | down | left | right | natural
Initial: natural
This property describes the block progression direction.
    up      - block progression direction is up.
    down    - block progression direction is down.
    left    - block progression direction is left.
    right   - block progression direction is right.
    natural - block progression direction is the script's default.

Name: inline-direction-horizontal
Value: left | right | natural
Initial: natural
This property describes the inline direction for horizontal lines of 
text.  It applies only when the block progression direction is up or
down.
    left    - inline progression direction is left.
    right   - inline progression direction is right.
    natural - inline progression direction is given by the 
transformation of text-orientation-vertical if it exists and is 
horizontal.  If not then the inline progression direction is given by 
the script's default if it is horizontal, otherwise it is right.

Name: inline-direction-vertical
Value: down | up | natural
Initial: natural
This property describes the inline direction for vertical lines of 
text.  It applies only when the block progression direction is left or 
right.
    down    - inline progression direction is down.
    up      - inline progression direction is up.
    natural - inline progression direction is given by the 
transformation of text-orientation-vertical if it exists and is 
vertical.  If not then the inline progression direction is given by the 
script's default if it is vertical, otherwise it is down.

Name: text-orientation-vertical
Value: up | down | left | right | natural
Initial: natural
This property describes the text orientation.
    up      - text orientation is up.
    down    - text orientation is down.
    left    - text orientation is left.
    right   - text orientation is right.
    natural - when block-progression is up or down, if 
inline-direction-horizontal is not natural and the script is relative 
the text orientation is given by the inverse transformation of 
inline-direction-horizontal otherwise it is the script's default.  When 
block-progression is left or right, if inline-direction-vertical is not 
natural and the script is relative the text orientation is given by the 
inverse transformation of inline-direction-vertical otherwise it is the 
script's default.

[1] http://www.unicode.org/notes/tn22/

Note: the choice of right as the last case for natural 
inline-direction-horizontal is fairly arbitrary, if possible something 
like inheriting the direction of the surrounding text might be more
useful.
Does anyone have a suggestion for turning this into an actual working
draft?
Received on Wednesday, 3 January 2007 22:01:43 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:49 GMT