W3C

Ruby Annotation

W3C Working Draft 16 February 2001

This version:
http://www.w3.org/TR/2001/WD-ruby-20010216
(ZIP archive)
Latest version:
http://www.w3.org/TR/ruby
Previous version:
http://www.w3.org/TR/1999/WD-ruby-19991217
Editors:
Marcin Sawicki (until 10 October, 1999)
Michel Suignard, Microsoft
Masayasu Ishikawa (石川 雅康), W3C
Martin Dürst, W3C
Tex Texin, Progress Software Corp.
(See Acknowledgements for additional contributors)

Abstract

"Ruby" are short runs of text alongside the base text, typically used in East Asian documents to indicate pronunciation or to provide a short annotation. This specification defines markup for ruby, in the form of an XHTML module [XHTMLMOD].

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this series of documents is maintained at the W3C.

This document is a W3C Working Draft produced in preparation for moving to Candidate Recommendation. This document has been produced as part of the W3C Internationalization Activity by the Internationalization Working Group (I18N WG, members only) with the help of the Internationalization Interest Group (I18N IG). The I18N WG expects to ask the W3C Director to advance this document to Candidate Recommendation in the near future. The I18N WG and the editors will make any adjustments to the notation in case such adjustments should become necessary as a consequence of changes to XHTML 1.1.

Please send comments www-i18n-comments@w3.org. Archives of the comments are available. Comments in languages other than English, in particular Japanese, are also welcome. More general public discussion of Ruby Annotation takes place on the www-international mailing list (archive).

The only change in the actual markup since the Last Call publication of this document was to change the content model for simple ruby from (rb, rp?, rt, rp?) to (rb, (rt | (rp, rt, rp))) to allow two or zero rp elements, but not a single one. However, the document was editorially reorganized and rewritten substantially to take into account the many editorial comments received during Last Call. We therefore also invite further comments on presentation, wording, and examples.

A list of current W3C Technical Reports can be found at http://www.w3.org/TR. They may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". The W3C will not allow early implementation to constrain its ability to make changes to this specification prior to final release.

Due to its subject matter, and to make the examples more realistic, this document includes examples using a wide range of characters. Not all user agents may be able to display all characters. Depending on the user agent, changing the configuration can improve the situation. Also, great care has been taken to serve this document in various character encodings to cover a wide range of user agents and configurations.


Contents


1.  Introduction

This section is informative.

This document presents an overview of ruby annotation and defines the markup language that supports it. Several examples are provided. However, this document does not specify any mechanisms for presentation or styling of ruby; this is part of the respective stylesheet languages.

This document is organized as follows:

Section 1.1 gives an overview of Ruby.

Section 1.2 gives an overview of the markup for Ruby.

Section 2 provides the normative definition of ruby syntax. It contains the formal definition of ruby markup in the context of the XHTML Modularization framework [XHTMLMOD].

Section 3 discusses typical rendering and styling of ruby text.

1.1 What is ruby?

Ruby is the term used for a run of text that is associated with another run of text, referred to as the base. Ruby text is used to provide a short annotation of the associated base text. It is most often used to provide a pronunciation guide. Ruby annotations are used frequently in Japan in many kinds of publications, including books and magazines. Ruby is also used in China, especially in schoolbooks.

Ruby annotation is usually presented alongside the base text, using a smaller typeface. The name "ruby" in fact originated from the name of the 5.5pt font size in British printing, which is about half the 10pt font size commonly used for normal text. Figure 1.1 shows an example of ruby, with three ideographs (kanji) as base text, and six hiragana giving the pronunciation (shinkansen - Japanese bullet train).

Example showing ruby above the base in horizontal Japanese text

Figure 1.1: Ruby text giving the pronunciation of the base characters.

East Asian typography has developed various features that do not appear in western typography. Most of these can be addressed appropriately with style sheet languages such as CSS or XSL. However, additional markup is required to define the association between base text and ruby text.

This specification defines such markup, designed to be usable with XHTML, so that ruby text is available on the Web without using special workarounds or graphics. Although this specification gives examples of actual rendering of ruby to make it easier for most readers to understand the markup defined, all such examples are informational only. This document does not specify any mechanisms for presentation or styling of ruby; this is part of the respective stylesheet languages.

Sometimes more than one ruby annotation is associated with the same base. A typical example is to indicate both meaning as well as pronunciation for the same base text. In such cases, ruby annotations may appear on both sides of the base text. Ruby text before the base text is often used to indicate pronunciation; ruby text after the base text is often used to indicate meaning. Figure 1.2 shows an example of base text with two ruby texts, giving pronunciation using hiragana and Latin letters.

Example showing ruby text applied before and after the base in horizontal text

Figure 1.2: Two ruby texts applied to the same base text.

In some cases, where a base text has two ruby annotations, each ruby annotation may be associated with different, but overlapping, parts of the base text, such as in the following example:

Month Day Year
10 31 2002
Expiration Date

Figure 1.3: Base text with two ruby texts using different associations

In this example, the base text is the date "10 31 2002". One of the ruby annotations is the phrase "Expiration Date". This ruby text is associated with the entire base text. The other ruby annotation has 3 parts: "Month", "Day" and "Year". Each part is associated with a different part of the base text. "Month" is associated with "10", "Day" is associated with "31", and "Year" is associated with "2002".

1.2 Ruby markup overview

The markup defined in this specification is designed to cover all the above cases, namely markup for one or two ruby texts associated with the same base text and markup for associations of substrings of the ruby text(s) with components of the base text.

There are two variants of ruby markup, called simple ruby markup and complex ruby markup. Simple ruby markup associates a single ruby text with a run of base text. Simple ruby markup can also specify a fallback mechanism to allow display of ruby text by (older) browsers that do not know about ruby markup. Complex ruby markup can associate two ruby texts with one base text, and can define a more fine-grained association between components of the ruby text and the base text. However, complex ruby markup does not provide a fallback mechanism for browsers that do not understand ruby markup.

This section gives an overview of the markup for ruby defined in this specification. A full formal definition can be found in Section 2.

1.2.1 Simple ruby markup

In the simplest case, ruby markup defines a ruby element which contains one rb element for the base text and one rt element for the ruby text. This ruby element therefore creates an association between the base text and the ruby text, and is sufficient for most cases. Here is an example of simple ruby markup:

<ruby>
  <rb>WWW</rb>
  <rt>World Wide Web</rt>
</ruby>

Figure 1.4: Example of simple ruby markup

This may be rendered as follows:

Example showing ruby before the base in horizontal English text

Figure 1.5: Example of rendering for simple ruby markup in Figure 1.4

Note: The name of this enclosing element, "ruby", should be interpreted to mean that its contents are associating ruby text with base text. It must not be misunderstood to mean that everything inside, including the base text, is ruby. The name of the enclosing element was chosen to compactly and clearly identify the function of the markup construct; the names for the other elements were chosen to keep the overall length short.

1.2.2 Simple ruby markup with parentheses

Some user agents might not understand ruby markup, or may not be able to render ruby appropriately. In either situation, it is generally preferable to render the contents of ruby elements, so information is not lost. A generally acceptable fallback is to place the ruby text immediately after the base text, and to enclose the ruby text in parentheses. The parentheses reduce the potential for confusing the ruby text with other text. (It should be noted that text in parentheses in Japanese typography is never called "ruby".)

For compatibility with older user agents that do not understand ruby markup and simply render the content of elements they do not understand, rp elements can be added to simple ruby markup to distinguish ruby text.

The element name rp stands for "ruby parenthesis". The rp elements and the parentheses (or other characters) inside them are provided as a fallback mechanism only. User agents that ignore unknown elements, but render their contents, will display the contents of each rp element. Therefore the rp element can be used to denote both the beginning and end of ruby text.

User agents that do know about ruby markup will recognize the rp element, and intentionally not display its contents. Instead, they will render the simple ruby markup in a more appropriate way.

The following example demonstrates the use of the ruby parenthesis element:

<ruby>
  <rb>WWW</rb>
  <rp>(</rp><rt>World Wide Web</rt><rp>)</rp>
</ruby>

Figure 1.6: Example of simple ruby markup including rp elements for fallback

User agents that either:

will render the above markup as:

WWW (World Wide Web)

Figure 1.7: Rendering of simple ruby markup using fallback parentheses

User agents that do know about ruby markup, and that have more sophisticated presentation styles for ruby text, will choose to not render the parentheses. For example, the markup of figure 1.6 can be rendered as shown in the next figure.

Ruby markup with <code>rp</code> ignored in favor of more sophisticated rendering

Figure 1.8: rp element ignored in favor of more sophisticated rendering

1.2.3 Complex ruby markup

Complex ruby markup is used to associate more than one ruby annotation with a base element, or to associate parts of ruby text with parts of base text.

Complex ruby markup provides for multiple rb and rt elements. This specification defines container elements that make the association between the individual elements clear. The ruby base container element, rbc, encloses rb elements. There can be one or two ruby text container elements, rtc, that enclose rt elements. This allows association of two ruby text containers with the same base text. With complex ruby markup it is also possible to associate parts of the base text with parts of a ruby text by using a number of rb elements, and a corresponding number of rt elements. In addition, the rt element may use the rbspan attribute to indicate that a single rt element spans (is associated with) multiple rb elements. This is similar to the colspan attribute of the th and td elements in tables ([HTML4], section 11.2.6).

Where and how each part of complex ruby markup is rendered is defined as part of the respective style sheet languages; see also section 3 for further information.

The following example shows all these features.

<ruby>
  <rbc>
    <rb>10</rb>
    <rb>31</rb>
    <rb>2002</rb>
  </rbc>
  <rtc>
    <rt>Month</rt>
    <rt>Day</rt>
    <rt>Year</rt>
  </rtc>
  <rtc>
    <rt rbspan="3">Expiration Date</rt>
  </rtc>
</ruby>

Figure 1.9: Complex ruby markup to associate two ruby texts with different parts of the same base.

In this example, the first ruby text container encloses 3 components ("Month", "Day", "Year"). Each of these ruby components is associated with a corresponding component in the base text ("10", "31", "2002"). The second ruby container ("Expiration Date") consists of a single ruby element, and is associated with the entire base text ("10 31 2002"). It may be rendered as shown in figure 1.10.

Month Day Year
10 31 2002
Expiration Date

Figure 1.10: Rendering of the complex ruby markup in figure 1.9

The example shows that the association of ruby text with base text can be more or less granular as needed. For example, the ruby text can be associated with the entire base text in cases where:

More fine-grained associations can also be made when the relationships are known. For these situations, an improved rendering can therefore be provided. For example, a person's name can be decomposed into family name and given name, or a kanji compound or phrase can be decomposed into semantic subparts or individual characters. With either fine or course granularity, the spans of the ruby text can be set with the corresponding spacing in the base text, and better readability and a more balanced layout may be achieved.

The rp element is not available in the case of complex ruby markup. There are two reasons for this. First, the rp element is only a fallback mechanism, and it was considered that this is much more important for the more frequent simple case. Second, for the more complex cases, it is difficult to come up with a reasonable fallback display, and constructing markup for such cases can be even more difficult if not impossible.

1.2.4 Summary

In summary, the ruby element serves as a container for one of the following:

2.  Formal definition of ruby elements

This section is normative.

This section contains the formal syntax definition and the specification of the functionality of the ruby elements. Some familiarity with the XHTML Modularization framework, in particular the "Modularization of XHTML" [XHTMLMOD] specification, is assumed.

2.1  Abstract definition of ruby elements

The following is the abstract definition of ruby elements, which is consistent with the XHTML Modularization framework [XHTMLMOD]. Further definitions of XHTML abstract modules can be found in [XHTMLMOD].

Elements Attributes Minimal Content Model
ruby Common (rb, (rt | (rp, rt, rp)))
rbc Common rb+
rtc Common rt+
rb Common (PCDATA | Inline - ruby)*
rt Common, rbspan (CDATA) (PCDATA | Inline - ruby)*
rp Common PCDATA*

The maximal content model for the ruby element is as follows:

((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))

The minimal content model for the ruby element corresponds to simple ruby markup. The (rbc, rtc, rtc?) alternative of the maximal content model for the ruby element corresponds to complex ruby markup.

An implementation of this abstract definition as an XHTML DTD module can be found in Appendix A. An XML Schema [XMLSchema] implementation will be provided when feasible.

2.2  The ruby element

The ruby element is an inline (or text-level) element that serves as an overall container. It contains either the rb, rt and optional rp elements (simple ruby markup) or the rbc and rtc elements (complex ruby markup).

In the case of simple ruby markup, the ruby element contains either an rb element followed by an rt element, or a sequence of an rb element, an rp element, an rt element and another rp element. The content of the rt element is taken as ruby text and associated with the content of the rb element as the ruby base. The content of the rp elements, if present, is ignored.

In the case of complex ruby markup, the ruby element contains an rbc element followed by one or two rtc elements. The content of the subelements of each rtc element is taken as ruby text and associated with the content of the subelements of the rbc element as the ruby base.

The ruby element has common attributes only. Examples of common attributes include: id, class or xml:lang. Common attributes depend on the markup language with which ruby annotations are used. In the case of [XHTML 1.1], these are defined in XHTML Modularization, Section 5.1 [XHTMLMOD].

2.3  The rbc element

The rbc (ruby base container) element serves as the container for rb elements in the case of complex ruby markup. Only one rbc element may appear inside a ruby element.

The rbc element has common attributes only.

2.4  The rtc element

The rtc (ruby text container) element serves as the container for rt elements in the case of complex ruby markup. One or two rtc elements may appear inside a ruby element to associate ruby texts with a single ruby base, represented by an rbc element. More than two rtc elements MUST NOT appear inside a ruby element.

The rtc element has common attributes only.

2.5  The rb element

The rb element serves to markup the text of the ruby base. For simple ruby markup, only one rb element may appear. For complex ruby markup, multiple rb elements may appear inside an rbc element. Each rb element is associated with a corresponding rt element, for fine-grained control of ruby presentation.

The rb element may contain inline elements or character data as its content, but the ruby element MUST NOT appear as its descendant element.

The rb element has common attributes only.

2.6  The rt element

The rt element is the markup for ruby text. For simple ruby markup, only one rt element may appear. For complex ruby markup, multiple rt elements may appear inside an rtc element, and each rt element contains the ruby text for the relevant ruby base, represented by the corresponding rb element.

The rt element may contain inline elements or character data as its content, but the ruby element MUST NOT appear as its descendant element.

The rt element has common attributes and the rbspan attribute. In complex ruby markup, the rbspan attribute allows an rt element to span multiple rb elements. The value shall be an integer value greater than zero ("0"). The default value of this attribute is one ("1"). The rbspan attribute should not be used in simple ruby, and user agents should ignore the rbspan attribute when it appears in simple ruby.

2.7  The rp element

The rp element can be used in the case of simple ruby markup to specify characters that can denote the beginning and end of ruby text when user agents do not have other ways to present ruby text distinctively from the base text. Parentheses (or similar characters) can provide an acceptable fallback. In this situation, ruby text will only degrade to be rendered inline and enclosed in the fallback parentheses. This is the least inappropriate rendering under the condition that only inline rendering is available. The rp element cannot be used with complex ruby markup.

The rp element has common attributes only.

Using parentheses for the fallback may lead to confusion between runs of text intended to be ruby text and other runs that happen to be enclosed within parentheses. The document or style sheet author should be aware of the potential for that confusion and is advised to choose an unambiguous delimiter for the fallback.

3. Rendering and styling considerations

This section is informative.

This section discusses various aspects of rendering and styling of ruby in the context of ruby markup as defined in this document. However, this document does not specify any mechanisms for presentation/styling of ruby; this is part of the respective stylesheet languages. Formatting properties for styling ruby are under development for CSS and XSL. See for example "CSS3 module: Ruby" [CSS3-RUBY] (work in progress) for more details.

Details of ruby formating in a Japanese print context can be found in JIS-X-4051 [JIS].

3.1 Ruby on the Web vs. traditional typographic usage

The term "ruby" in Japanese is only used for text visually rendered alongside the base text. Considerations for such cases are given in section 3.2 (font size), section 3.3 (positioning), and 3.4 (presentation of ruby markup). However, introducing ruby to the Web leads to some phenomena and problems that are not present in traditional typography. Structural markup for ruby, as defined in this specification, does not guarantee that ruby annotations will always be rendered alongside the base text. There are a very wide variety of current and future output devices for documents marked up with XHTML. The following are possible scenarios and reasons for different rendering:

3.2 Font size of ruby text

In typical usage, the font size of ruby text is normally about half the font size of the base text. In fact, the name "ruby" originated from the name of the 5.5pt font size in British printing, which is about half the 10pt font size commonly used for normal text.

3.3 Positioning of ruby

There are several positions where the ruby text can appear relative to its base. Because East Asian text may be rendered vertically as well as horizontally, the terms "before" and "after" are used here rather than "above" and "below" or "right side" and "left side". The words "before" and "after" should be understood as "before"/"after" the line containing the base text. The correspondence is shown in the following table:

terminology Horizontal Layout
(left-to-right, top-to-bottom)
Vertical Layout
(top-to-bottom, right-to-left)
before above right-side
after below left-side

Ruby annotations are most frequently placed before the base text (see figure 1.3 and figure 3.2). Sometimes, especially in horizontal educational texts, ruby annotations may appear after the base text, i.e. below (see figure 3.1). In Chinese, it is rather common that Pinyin ruby text appears after the base text. Ruby may also appear after the base text in vertical layout (see figure 3.3). In all these cases, the writing direction of the ruby text is the same as that of its base, that is vertical if the base is vertical, and horizontal if the base is horizontal.

Example of ruby below the base in horizontal mode

Figure 3.1: Ruby (Latin letters) after/below the base text (Japanese ideographs)

Example showing ruby on the right side of base in vertical Japanese text

Figure 3.2: Ruby in vertical text (before/to the right)

Example showing ruby on the left side of base in vertical Japanese text

Figure 3.3: Ruby in vertical text (after/to the left).

In traditional Chinese texts, "Bopomofo" ruby can appear along the right side of the ruby base, even in horizontal layout.

Example of Bopomofo ruby, with Bopomofo on the right side of the base texts in horizontal layout

Figure 3.4: "Bopomofo" ruby in traditional Chinese (ruby text shown in blue/red for clarity) in horizontal layout

Note that Bopomofo tone marks (in the above example shown in red for clarity) seem to appear in a separate column (along the right side of the Bopomofo ruby) and therefore might be seen as "ruby on ruby". However, they are simply encoded as part of the ruby text. The details of this encoding are not addressed in this document.

3.4 Presentation of ruby markup

This specification does not prescribe how ruby markup will be displayed. Style sheets, in general, will be used to specify the exact behavior of ruby markup.

Note. Although the rendering of the ruby texts should be controlled by style sheets, in case no style information is provided by the author or the user, it is recommended that visual user agents should place the ruby text before the ruby base when only one ruby text is used. This is also the case for simple ruby. When there are two ruby texts, the first ruby text should be placed before the ruby base, and the second ruby text should be placed after the ruby base. A sample user agent default style sheet which describes this formatting will be provided by [CSS3-RUBY] or its successor document.

For non-visual rendering, in the absence of style sheet information, it is recommended that both the ruby base and the ruby text(s) should be rendered, with an indication (e.g. different voice, different pitch, ...) of the status of each.

In order for style sheets to be able to apply styling, it is very important to provide enough information on the function of each component. The following example illustrates the use of the class attribute to allow style sheets to define the exact presentation of the ruby text. The class "pronunciation" is used to indicate ruby text that is used for pronunciation. The class "annotation" is used to indicate ruby text that is used for annotation. The xml:lang attribute indicates the language of the text.

<ruby xml:lang="ja" class="pronunciation annotation">
  <rbc>
    <rb>斎</rb>
    <rb>藤</rb>
    <rb>信</rb>
    <rb>男</rb>
  </rbc>
  <rtc class="pronunciation">
    <rt>さい</rt>
    <rt>とう</rt>
    <rt>のぶ</rt>
    <rt>お</rt>
  </rtc>
  <rtc class="annotation">
    <rt rbspan="4" xml:lang="en">W3C Associate Chairman</rt>
  </rtc>
</ruby>

Figure 3.5: Ruby markup with class and xml:lang attributes.

In order to understand why the ruby element lists both pronunciation and annotation as classes, please see the next section. Using a stylesheet specifying horizontal text, rendering of the pronunciation before the base text, and rendering of the annotation after the base text, the markup above could be rendered like this:

@@

Figure 3.6: Horizontal rendering of two ruby texts associated with a single ruby base.

3.5 Considerations for non-visual rendering

Documents containing ruby markup may be rendered in many different ways, including being rendered by non-visual user agents such as voice browsers and braille user agents. For such rendering scenarios, it is important to understand that:

In the frequent case that ruby annotations represent pronunciation, rendering both the base text and the ruby text can be annoying. A speech synthesizer may be able to correctly pronounce the base text, in which case the same text is spoken twice (once for the base text and once for the ruby text). In cases where the synthesizer does not know the correct pronunciation of the text it makes up a pronunciation, which can cause confusion. An improved scenario is one where the ruby text is pronounced instead of the base text. In such cases, something like the following CSS2 fragment may be used:

@media aural {
  ruby[class~="pronunciation"] rb { speak: none }
}

Figure 3.7: CSS2 style fragment to suppress aural rendering of the ruby base

The above style sheet will suppress aural rendering of the ruby base when the rb element is a descendant element of the ruby element with the class "pronunciation". See [CSS2] for more details. Also note that somebody listening to an aural rendering may be interested in accessing the skipped base text to check the characters used.

Not all ruby texts represent pronunciations. Authors should distinguish ruby texts used for different purposes by using the class attribute. This is demonstrated above by using class="pronunciation" for ruby used to indicate pronunciation.

Ruby used as a pronunciation guide may not result in the correct pronunciation even in cases where the script used for indicating the pronunciation at first glance seems perfectly phonetic. For example, Bopomofo is associated independently for each base character; context-dependent sound or tone changes are not reflected. Similarly, in Japanese, spelling irregularities can occur, such as using "は" (ha) for the topic suffix pronounced "わ" (wa). For such cases, authors may want to supply two variants, distinguished by the value of the class attribute, or may rely on the aural rendering system being able to handle such cases correctly.

3.6 Alternatives to the rp element

If the author is not concerned about fallbacks for user agents that neither know about ruby markup nor support CSS2 [CSS2] or XSL [XSL] style sheets, then the rp elements are not needed.

Nevertheless, it is possible to parenthesize ruby text as a fallback if for example the device resolution is not appropriate for traditional ruby rendering. Using [CSS2], the parentheses can be generated using the 'content' property ([CSS2], section 12.2) with the :before and :after pseudo-elements ([CSS2], section 12.1), as for example in the following style fragment:

rt:before { content: "(" }
rt:after { content: ")" }

Figure 3.8: CSS2 style fragment to generate parentheses around an rt element

In the above example, parentheses will be automatically generated around the rt element. It is assumed that the above style rules are used together with style rules that position the ruby text inline. Generation of parentheses is straightforward with XSLT [XSLT].


Appendices

A.  Ruby module for XHTML

This appendix is informative.

The following is a link to the Ruby DTD module that is part of XHTML 1.1 [XHTML11].

B. Notes on design decisions

This appendix is informative. This appendix contains some notes on design decisions, based on questions and comments received during the Last Call review.

There were proposals to change e.g. <rbc><rb>...</rbc> to <rb><rbc>...</rb> (and similar for rt/rtc). This looks in some way more natural. However, in XML, the content of an element is either mixed content (both character data and elements, without sequence or occurence restrictions) or element content (only elements, with restrictions). This means that it is impossible to say that <rb> contains either only <rbc> elements or only character data and inline elements.

There were various proposals for removing the rp element from the minimal content model. They were considered, but rejected for the following reasons:

It was suggested to change the names of the elements, in particular to change <ruby> to <gloss>. However, while ruby markup is indeed in some way similar to the markup that would be needed for glosses, it is not designed for that purpose.

C.  Notes on backwards compatibility

This appendix is informative.

For historical reason, some authoring tools might generate ruby markup without the start and end tags of the rb element, like:

<ruby>
  A
  <rp>(</rp><rt>aaa</rt><rp>)</rp>
</ruby>

rather than the following:

<ruby>
  <rb>A</rb>
  <rp>(</rp><rt>aaa</rt><rp>)</rp>
</ruby>

The former markup is not conforming to this specification, but user agents that care about compatibility with documents generated by such authoring tools may treat the former markup as if it were written like the latter.

C.  Glossary

This appendix is informative.

Bopomofo
37 characters and 4 tone marks used as phonetics in Chinese, especially standard Mandarin.
Complex ruby markup
In this specification: Ruby markup that allows to associate two ruby texts with a single ruby base and allows to define finegrained associations between parts of the ruby texts and the ruby base.
Group ruby
In Japanese typography: Ruby text associated with more than one base character.
Hiragana
Subset of the Japanese writing system consisting of phonetic characters to represent Japanese words.
Kana
Syllabic subset of the Japanese system of writing that can be used exclusively for writing foreign words or in combination with kanji.
Kanji
Subset of the Japanese writing system that utilizes ideographic characters borrowed or adapted from Chinese writing.
Monoruby
In Japanese typography: Ruby associated with a single base character.
Ruby base
Run of text that has a ruby text associated with it.
Ruby text
Run of text that appears in the immediate vicinity of another run of text (called "ruby base") and serves as an annotation or a pronunciation guide associated with the base.
Simple ruby markup
In this specification: Ruby markup that associates a single ruby text with a single ruby base, optionally providing some delimiters such as parentheses for fallback.

D.  Changes from previous public Working Draft

This appendix is informative. It lists the changes since the previous public draft, http://www.w3.org/TR/1999/WD-ruby-19991217.

The only change in the actual markup defined was to change the content model for simple ruby from (rb, rp?, rt, rp?) to (rb, (rt | (rp, rt, rp))) to allow two or zero rp elements, but not a single one.

The whole spec has been rewritten substantially, while keeping to the previous version. The main editorial changes are:

Acknowledgements

This section is informative.

The model presented in this specification was originally inspired by the work done by Martin Dürst [DUR97].

Takao Suzuki (鈴木 孝雄) and Chris Wilson have contributed to previous drafts as editors.

This specification would not have been possible without the help from the members of the W3C I18N WG, in particular Mark Davis and Hideki Hiura (樋浦 秀樹), and the members of the W3C I18N IG.

Additional contributors include Murray Altheim, Laurie Anna Edlund, Arye Gittelma, Koji Ishii, Rick Jelliffe, Eric LeVine, Chris Lilley, Charles McCathieNevile, Shigeki Moro (師 茂樹), Chris Pratley, Nobuo Saito (斎藤 信男), Rahul Sonnad, Chris Thrasher, and the members of WG 2 (Typesetting) of the Electronic Document Processing System Standardization Investigation and Research Committee of the Japanese Standards Association, in particular Yasue Nomura (野村 保恵), Kohji Shibano (芝野 耕司), and Masafumi Yabe (家辺 勝文).

Valuable Last Call comments were received from: The HTML WG, the CSS WG, the XSL WG, the WAI P&F WG, WG 2 (Typesetting) of the Electronic Document Processing System Standardization Investigation and Research Committee of the Japanese Standards Association, Steven Pemberton, Trevor Hill, Susan Lesch, and Frank Yung-Fong Tang.

References

This section is informative.

[CSS2]
"Cascading Style Sheets, level 2 (CSS2) Specification", W3C Recommendation
B. Bos, H. W. Lie, C. Lilley and I. Jacobs, eds., 12 May 1998
Available at: http://www.w3.org/TR/1998/REC-CSS2-19980512
The latest version is available at: http://www.w3.org/TR/REC-CSS2
[CSS3-RUBY]
"CSS3 module: Ruby", W3C Working Draft
M. Suignard, ed., 16 February 2001
Available at: http://www.w3.org/TR/2001/WD-css3-ruby-20010216/
The latest version is available at: http://www.w3.org/TR/css3-ruby
[DUR97]
"Ruby in the Hypertext Markup Language", Internet Draft
Martin Dürst, 28 February 1997, expired
Available at: http://www.w3.org/International/draft-duerst-ruby-01
[HTML4]
"HTML 4.01 Specification", W3C Recommendation
D. Raggett, A. Le Hors, I. Jacobs, eds., 24 December 1999
Available at: http://www.w3.org/TR/1999/REC-html401-19991224
The latest version is available at: http://www.w3.org/TR/html4
[JIS]
"Line composition rules for Japanese documents"
JIS X 4051-1995, Japanese Standards Association, 1995 (in Japanese)
[XHTML11]
"XHTML 1.1 - Module-based XHTML", W3C Working Draft
M. Altheim, S. McCarron, Eds., 5 January 2000
Available at: http://www.w3.org/TR/2000/WD-xhtml11-20000105
The latest version is available at: http://www.w3.org/TR/xhtml11
[XHTMLMOD]
"Modularization of XHTML", W3C Candidate Recommendation
M. Altheim et. al., eds., 20 October 2000
Available at: http://www.w3.org/TR/2000/CR-xhtml-modularization-20001020
The latest version is available at: http://www.w3.org/TR/xhtml-modularization
[XML]
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Recommendation
T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, eds., 6 October 2000
Available at: http://www.w3.org/TR/2000/REC-xml-20001006
The latest version is available at: http://www.w3.org/TR/REC-xml
[XMLSchema]
"XML Schema Part 1: Structures", W3C Candidate Recommendation
H. S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, eds., 24 October 2000
Available at: http://www.w3.org/TR/2000/CR-xmlschema-1-20001024
The latest version is available at: http://www.w3.org/TR/xmlschema-1
See also "XML Schema Part 2: Datatypes", available at: http://www.w3.org/TR/xmlschema-2
[XSL]
"Extensible Style Language (XSL)", W3C Candidate Recommendation
S. Adler et. al., eds., 21 November 2000
Available at: http://www.w3.org/TR/2000/CR-xsl-20001121
The latest version is available at: http://www.w3.org/TR/xsl
[XSLT]
"XSL Transformations (XSLT) Version 1.0", W3C Recommenation
J. Clark, ed., 16 November 1999
Available at: http://www.w3.org/TR/1999/REC-xslt-19991116
The latest version is available at: http://www.w3.org/TR/xslt