
Ruby is not proven by a reading that looks correct in the editor. The finished XHTML must retain the intended base text and reading. In the worked manuscript, Tokyo received the reading “とうきょう” and hydrangea received “あじさい.” Both became ruby structures in the exported chapter.
Select one exact base word
In a sentence such as “東京へ向かう,” select only 東京. Including the following particle would make the ruby range too long. If the word appears more than once, use its sentence context to choose the intended occurrence.
The manuscript representation became |東京《とうきょう》. The second example became |紫陽花《あじさい》. Read the base and reading together before moving on.
Include a negative control
The sample sentence contains 京都, 東京, and 紫陽花. Ruby is added only to Tokyo and hydrangea; 京都 deliberately remains plain text. This negative control exposes a rule that applies ruby too broadly.
Inspect the exported chapter
The generated XHTML contained <ruby>東京<rt>とうきょう</rt></ruby> and <ruby>紫陽花<rt>あじさい</rt></ruby>. The source punctuation did not leak into the page, and the negative-control word stayed outside ruby.
EPUB 3 commonly represents the reading with ruby and rt. Some valid structures do not add an explicit rb element, so absence of rb alone is not failure. Judge whether the correct base characters and rt reading share the same ruby element.
Correct at the manuscript
When changing the reading of hydrangea, avoid selecting the Tokyo ruby. After rebuilding, inspect the changed rt, the unchanged Tokyo reading, and the plain control word. Do not patch generated XHTML; the next export would erase that correction.
If ruby is missing, check source delimiters and base range, confirm the chapter was included, and then find ruby and rt in the generated page. Reader applications may position ruby differently, so a store or device preview remains a presentation check.
Read the result as language, not only markup
Correct elements can still contain the wrong pronunciation. Read each base word and annotation aloud and compare names and places with the manuscript’s reference sheet. Search repeated names to confirm that first-use and later-use policy is consistent. Keep this editorial reading separate from the structural check so that technically intact but linguistically wrong ruby does not pass.
When a long proper noun produces crowded annotation, test a meaningful phrase boundary rather than splitting every character. Rebuild and compare the base range in the generated XHTML. This preserves the author’s intended reading unit and keeps adjacent annotations from becoming an unreadable row.
This guide is limited to ruby structure. Vertical combinations and page direction are separate topics. Completion means the intended base word, reading, and generated XHTML agree while an explicitly excluded word remains plain.

