A Ruby is part of an annotation pair - a piece of
text ("Ruby Text") that is associated with another piece of text known as
a "Ruby Base". A common need for such a structure arises in some asian
writing systems where a ruby association is used to present helper readings
for uncommonly used writing characters.
With a character set as complex as Chinese or Japanese, some characters are used
rarely and are thus not as easily recognizable by younger children or possibly
many adults. In Japanese writing, for example, the phonetic Hiragana alphabet
is used to pair phonetic 'helper' readings (called Furigana or Yomigana in
Japanese) with the Chinese character counterpart.
A Ruby text will usually be rendered next to the Base text such that the
association between each Base text and Ruby text is clear (often directly
above the Base text.) Ruby text is usually also rendered in a smaller font
than the Base text to help visually clarify which part is which in the
The Ruby Base Container (RBC element) is part of the Complex Ruby markup,
where as many as two Ruby text annotations (RTC elements) can be bound to
a single piece of Base text. The RBC element serves as a container for
Ruby Base (RB) elements, and only one may occur in a given RUBY element.
Each RB element in the RBC container will be paired with its corresponding
RT element in each RTC element. Multiple RT elements may be associated with
a single RB element if the RBSPAN attribute is used in an RT element. If
the RBSPAN attribute is specified, the number of RT elements used is decreased
by one for every RB element that it encompasses.
Complex rubies can have multiple Base elements, and multiple Ruby Text
components. In a Complex Ruby, all of the Base elements (RB)
are enclosed in an RBC element (RBC: Ruby Base Container.) For the Ruby
Text elements (RT), these are enclosed in an
RTC element (RTC: Ruby Text Container.) A Complex
Ruby can have one or two RTC elements which allows for two text associations
to be given for any given Base text. Default rendering might render the first
RTC group ABOVE the Base text, with the second RTC group possibly
rendered BELOW the Base text... but, this rendering is definitely
not guaranteed - allowances for alternate writing directions (eg: vertical
rather than horizontal) and other criteria can complicate rendering, and
CSS properties have already been proposed specifically for Ruby markup in
future CSS versions to control these details.
The content of the Ruby Base Container (RBC) is, of course, RB elements.
Similarly, the content of any Ruby Text Containers (RTC) are RT elements.
With Complex Rubies, RT elements have an additional attribute RBSPAN which
acts like COLSPAN does for TD and TH elements in tables - it allows a
piece of Ruby Text content to be associated with multiple RB base elements.