2007年2月26日星期一

Text doesn't snap to grid

Contiue to investigate the layout behavior when the text doesn't snap to grid.

For East Asian text, not more than one Asian character is displayed within a signle cell. The space between two Asian characters is (grid width - font height)

For Western text, The space between two Western characters is (grid width - font height)/2.

The following diagram illustrates this algorithm in brief.



Certainly, it just specifies what happens if grid width is greater than font height.

2007年2月16日星期五

Some knowledge about text grid

I just checked the Office OpenXML file format and try to find the difference between the two types of text grid.
  • linesAndChars (Line and Character Grid): Specifies that the parent section shall have both the additional line pitch and character pitch added to each line and character within it (as specified on the docGrid element (§2.6.5)) in order to maintain a specific number of lines per page and characters per line. When this value is set, the input specified via the user interface may be allowed in exact number of line/character pitch units.
  • snapToChars (Character Grid Only) : Specifies that the parent section shall have both the additional line pitch and character pitch added to each line and character within it (as specified on the docGrid element (§2.6.5)) in order to maintain a specific number of lines per page and characters per line.When this value is set, the input specified via the user interface may be restricted to the number of lines per page and characters per line, with the consumer or producer translating this information based on the current font data to get the resulting line and character pitch values
OpenXML file format just specifies the difference of the user interface between these two types of text grid, while it doesn't piont out the difference of the layout behavior, especially for the layout behavior of Asian text and Webtern Text.

It seems that the author of the specification doen't know the essential difference between these two types of text grid. :-)
Currently, I am investigating the Document Grid specified in CSS3 mensioned by Florian.
http://www.w3.org/TR/2003/CR-css3-text-20030514/#document-grid

2007年2月15日星期四

Investigated the behavior of "Text snaps to characters grid".
* If the grid type is grid(line and characters) and the "snap-to-characters" attribute is ture, the Asian character is centered in the single cell, while the non Asian text is centered within as many cells as required.

* If the grid type is grid(line and characters) and the "snap-to-characters" attribute is false, the Asian character is not centered in the single cell, but what is the behavior for the non Asian text?

Below is the screenshot from MS Word


Figure 1,Text snaps to character grid

Figure 2, Specify line and character grid

It seems that there is a special behavior for non Asian text when the text doesn't snap to the character grid.
Where can I get some clues?

2007年2月14日星期三

Text Grid Enhancement

It is my pleasure to announce a new enhancement feature (Text Grid) in writer document. Currently I am work on this feature.

* Create a new page in openoffice wiki to ask for input. Here is the link : http://wiki.services.openoffice.org/wiki/Text_grid

* Below is the two kinds of text grid layout.







Figure1, Squared page mode


Figure2, Rectangle page mode

1) "Squared paper mode". It is used by ODF.
For this kind of grid layout, the page is divided in a fixed numbers of lines (lines per page). The lines are divided into squared cells (characters per line). The number of lines per page depends on the line height ( i.e., the sum of grid base and ruby height), and the characters per line also depends on the line height.

In "Squared paper mode", the “Characters per line” setting has the most high priority, it will determine the height of line, then the “Lines per page” setting has the second priority, it will determine the height of type area.

This kind of grid layout "Squared paper mode" is used to simulate “squared paper”, which is a kind of specific paper used 20 years ago(before personal computer is widely used in text processing). But now, “squared paper” is only used in very limited case, and most CJK users won't use it anymore.

2) "Rectangle paper mode". It is used by OpenXML, UOF (Chinese Office File Format) and other CJK office suites (i.e., EIOFFICE, WPS).
For this kind of grid layout, the page is divided in a fixed numbers of lines (lines per page). While the lines are divided into rectangle cells (characters per line). Ruby grid is not specified in this paper mode. So the line height is grid base height and the characters per line depends on the grid base width, not grid base height.

In "Rectangle paper mode", type area has the most high priority, it will determine the height of line; the “Lines per page” setting has the second priority, and “Characters per line” setting can only determine the width of characters, and can't influence line height in anyway.

This kind of grid layout "Rectangle paper mode" is wildly used in CJK users.

* Snap to characters

We add a “snap to characters” attributes to specify whether the Asian character is centered in the grid cell or not when the grid type is set as “Grid(lines and characters)”. The default value “snap to characters” is “true”.

This additional attribute also improve the compatibility with MS word. Below is the map of grid type between MS Word 2003 and OpenOffice

Word 2003
OpenOffice.org 2.1.0
1. No grid
A. No grid
2. Specify line grid only (Default)
B. Grid (lines only) (Default)
3. Specify line and character grid 
C. Grid (lines and characters), “snap-to-characters” is false.
4. Text snaps to character grid  
D. Grid (lines and characters), “snap-to-characters” is true.


Figure 3. No grid

Figure 4 . Grid (lines only)


Figure 5. Grid (lines and characters), “snap-to-characters” is false


Figure 6. Grid (lines and characters), “snap-to-characters” is true

As shown in Figure 5, when "snap-to-chars" is false, the Asian characters are not centered in the cell, while the Western character ("OpenOffice.Org) are also centered in the cell. This is not accurate. It is work in progress now.

Valentine's Day Evening

In Valentine's Day evening, other staffs are off work. Only I am in office to create a blog to blog what I am doing everyday, quite interesting.
Florian help me to create it, thank Florian