Proposal of generic interlinear/intercharacter object model

1999.2.12
Yasuhiro Okui
NIHON UNITEC CO., Ltd.

1. What is generic interlinear/intercharacter object model?

The word "interlinear" means "something between lines" or "something inserted between lines". It includes ruby, ken-dot, added kana (characters which represent the remaining of the pronunciation of Kanji), and return mark (a mark which indicates the reading order of Chinese ancient documents when Japanese are reading them) in Japanese documents.

The word "intercharacter" is a newly-coined word derived from "interlinear". That means "something between characters in the writing direction". This kind of object can appear in Chinese documents made by word processors.

Regarding properties of each interlinear object, we (CICC Font WG) made a presentation in MLIT (Multilingual Information Technology) meeting held in Hanoi, Vietnum in October 1998. We also brought the document to ISO SC34 meeting held in Chicago in November 1998 and they decided to go forward on this as a subdivision of the font project.

This time, we are proposing a generic model for interlinear/intercharacter object by adding the concept of intercharacter so that you can adopt it for its broad use in Asian countries other than Japan.

2. Definition

Parent object
Object with which the interlinear/intercharacter object is associated. This term is used when referring to relation between interlinear/intercharacter object and the object with which that interlinear/intercharacter object is associated.
Child object
Interlinear/intercharacter object. This term is used when referring to relation between interlinear/intercharacter object and the object with which that interlinear/intercharacter object is associated.

3. Specification items for recognition of interlinear/intercharacter object

You can associate multiple interlinear/intercharacter objects with the same character(s).

This document doesn't provide any particular way to specify these items above. For example, you may use customized SGML/XML tags to do that.

4. Properties

4.1 Type of interlinear/intercharacter object

Value:
name

4.2 Font size

Value:
size

Absolute or relative to font size of character(s) of the parent object with which the interlinear/intercharacter object is associated.

4.3 Typeface

Value:
typeface name

4.4 Rotation

This value is an angle measured counterclockwise from the parent object's writing direction to the child object's writing direction. Probably interlinear objects have 0 degree for this property and intercharacter objects have 270 degree (when the main text is horizontally flowed) or 90 degree (when the main text is vertically flowed).

Value:
0|90|180|270

4.5 Position in writing direction

Value:
size

Absolute or relative to font size of character(s) with which the interlinear object is associated.

This value is the offset between the positioning point of child object and parent object. (You may refer to writing direction as X direction.)

4.6 Formatting information in writing direction

Value:
"HEAD"b"CENTER"b"TAIL"b"JUSTIFICATION"

When this property is specified, the property for position in writing direction will be ignored even if there is one.

4.7 Position in line progression direction

Value:
size

Absolute or relative to font size of character(s) with which the interlinear object is associated.

This value is the offset between the baseline of character(s) with which interlinear object is associated and the baseline of interlinear object. (You may refer to line progression direction as Y direction.)

5. Enhanced BNF for generic interlinear object

ILC-property ::= ILC-name, ILC-value-property-list
ILC-name ::= STRUCTURED-NAME
ILC-value-property-list ::= (ILC-type-property|ILC-font-size-property|
ILC-formatting-type-property|ILC-typeface-property|
ILC-rotation-property|
ILC-writing-direction-offset-property|
ILC-line-progression-direction-offset-property)+

ILC-font-size-property ::= ILC-font-size-name, ILC-font-size-name, 
ILC-font-size-value
   -- Property for font size
ILC-font-size-name ::= STRUCTURED-NAME
ILC-font-size-value-type ::= "ABS" | "RELATIVE"
ILC-font-size-value ::= REL-RATIONAL 

ILC-typeface-property ::= ILC-typeface-name, ILC-typeface-value
   -- Property for typeface
ILC-typeface-name ::= STRUCTURED-NAME
ILC-typeface-value ::= STRUCTURED-NAME

ILC-formatting-type-property ::= 
                     ILC-formatting-type-name, ILC-formatting-type-value
   -- Property for formatting information in writing direction
ILC-formatting-type-name ::= STRUCTURED-NAME
ILC-formatting-type-value ::= "HEAD"|"CENTER"|"TAIL"|"JUSTIFICATION"

ILC-rotation-property ::= ILC-rotation-name, ILC-rotation-value
   -- Property for rotation
ILC-rotation-name ::= REL-RATIONAL
ILC-rotation-value ::= 0|90|180|270

ILC-writing-direction-offset-property ::= ILC-writing-direction-offset-name, 
ILC-writing-direction-offset-value, ILC-writing-direction-offset-value
   -- Property for position in writing direction 
ILC-writing-direction-offset-name ::= STRUCTURED-NAME
ILC-writing-direction-offset-value-type ::= "ABS" | "RELATIVE"
ILC-writing-direction-offset-value ::= REL-RATIONAL

ILC-line-progression-direction-offset-property ::= 
ILC-line-progression-direction-offset-name,
ILC-line-progression-direction-offset-value,
ILC-line-progression-direction-offset-value-type
   -- Property for position in line progression direction 
ILC-line-progression-direction-offset-name ::= STRUCTURED-NAME
ILC-line-progression-direction-offset-value-type ::= "ABS" | "RELATIVE"
ILC-line-progression-direction-offset-value ::= REL-RATIONAL

5. Expamples of the use of generic interlinear object model

5.1 Ruby

Property for type of interlinear object

Value:
"Ruby"

The name "Ruby" is just an example in this document. You can use any name.

Property for font size

Value:
size

Property for typeface

Value:
typeface name

Property for rotation

Value:
0

Property for position in writing direction

Value:
size

Property for formatting information in writing direction

Value:
"HEAD"b"CENTER"b"JUSTIFICATION"

Property for position in line progression direction

Value:
size

5.2 Ken-dot

Property for type of interlinear object

Value:
"Ken-dot"

The name "Ken-dot" is just an example in this document. You can use any name.

Property for font size

Value:
size

Property for typeface

Value:
typeface name

Property for rotation

Value:
0

Property for formatting information in writing direction

Value:
"HEAD"b"CENTER"

Property for position in line progression direction

Value:
size

5.3 Return Mark

Property for type of interlinear object

Value:
"Return-Mark"

The name "Return-Mark" is just an example in this document. You can use any name.

Property for font size

Value:
size

Property for typeface

Value:
name

Property for rotation

Value:
0

Property for position in writing direction

Value:
size

Property for position in line progression direction

Value:
size

5.4 Added Kana

Property for type of interlinear object

Value:
"Return-Mark"

The name "Added-Kana" is just an example in this document. You can use any name.

Property for font size

Value:
size

Property for typeface

Value:
name

Property for rotation

Value:
0

Property for position in writing direction

Value:
size

Property for position in line progression direction

Value:
size

6. Samples of interlinear/intercharacter objects

6.1 Ruby

Formatting information in writing direction is "HEAD"

Formatting information in writing direction is "CENTER"

Formatting information in writing direction is "JUSTIFICATION"

Position in writing direction is specified

6.2 Ken-dot

Formatting information in writing direction is "HEAD"

Formatting information in writing direction is "CENTER"

6.3 Return Mark & Added Kana