W3docs

HTML тег <ruby>

Тег <ruby> задаёт фонетические подсказки в японских и восточноазиатских языках. Описание тега, атрибуты и примеры использования.

HTML тег <ruby> определяет аннотацию руби — небольшой фрагмент текста, отображаемый рядом (обычно над) базовым текстом для указания его произношения или значения. Аннотации руби широко распространены в восточноазиатской типографике: например, они показывают фонетическое чтение китайского или японского иероглифа, чтобы читатель, незнакомый с иероглифом, мог его произнести.

Тег <ruby> является одним из элементов HTML5.

Как совместно работают <ruby>, <rt> и <rp>

Аннотация руби создаётся из небольшой группы элементов, действующих как единое целое:

  • <ruby> — контейнер. Базовый текст (аннотируемые символы) располагается непосредственно внутри него.
  • <rt> (ruby text) содержит аннотацию — чтение или примечание, отображаемое над базовым текстом.
  • <rp> (ruby parenthesis) — необязательный резервный элемент. Современные браузеры скрывают его содержимое, а браузеры без поддержки руби отображают его, заключая аннотацию в скобки, чтобы страница оставалась читаемой.

Полная аннотация выглядит так:

<ruby>base<rp>(</rp><rt>reading</rt><rp>)</rp></ruby>

В поддерживающем браузере reading отображается над base. В браузере без поддержки руби используется встроенная форма base(reading) — именно поэтому скобки <rp> важны: без них аннотация слилась бы с базовым текстом в виде basereading.

Примечание: В более старых примерах базовый текст может быть обёрнут элементом <rb> (ruby base). <rb> устарел — в современном HTML базовый текст размещается непосредственно внутри <ruby> без дополнительной обёртки. Не используйте его в новой разметке.

Синтаксис

Тег <ruby> используется парами. Базовый текст и его аннотации <rt>/<rp> записываются между открывающим (<ruby>) и закрывающим (</ruby>) тегами.

Пример: японская фуригана

В японском языке фуригана — это небольшие символы хираганы, печатаемые над кандзи, чтобы показать, как читается этот кандзи. Элемент <ruby> является стандартным способом разметки фуриганы в вебе. В данном примере кандзи 明日 (означающий «завтра») аннотируется своим чтением Ashita:

HTML тег <ruby>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <ruby>
      明日 <rp>(</rp><rt>Ashita</rt><rp>)</rp>
    </ruby>
  </body>
</html>

Результат

пример тега ruby

Аннотирование каждого символа отдельно

Внутри одного элемента <ruby> можно разместить несколько пар «базовый символ / <rt>». Каждый базовый символ аннотируется своим чтением, а аннотации выравниваются над соответствующими символами:

<ruby>
  漢 <rt>kan</rt>
  字 <rt>ji</rt>
</ruby>

Это удобно, когда многосимвольное слово читается по-разному для каждого символа. Та же структура подходит для китайского пиньиня (произношение латинскими буквами, например 北京 как Běi / jīng) и для бопомофо / чжуинь, где фонетические символы размещаются рядом с базовыми символами.

Оформление руби с помощью CSS

Тег <ruby> поддерживает Глобальные атрибуты и Атрибуты событий. Он не имеет специфических атрибутов — внешний вид управляется через CSS.

Цвет базового текста и текста аннотации можно задавать независимо, используя селекторы ruby и rt:

ruby {
  color: blue;
}
rt {
  color: red;
}

Для разметки руби существуют два специальных CSS-свойства:

  • ruby-position управляет положением аннотации относительно базового текста. Распространённые значения: over (над базовым текстом — значение по умолчанию для большинства письменностей), under (под ним; иногда используется для бопомофо или чтобы сохранить равномерную высоту строки) и alternate.
  • ruby-align управляет распределением аннотации и базового текста, когда они различаются по длине, например start, center или space-between.
ruby {
  ruby-position: under;
  ruby-align: center;
}

Поддержка браузерами: Элементы <ruby>, <rt> и <rp> хорошо поддерживаются во всех современных браузерах. Свойство ruby-position также широко поддерживается, тогда как ruby-align имеет более ограниченную поддержку — проверяйте его работу перед использованием и сохраняйте запасной элемент <rp>, чтобы смысл текста сохранялся даже там, где оформление руби реализовано не полностью.

Практика

Практика
Какова цель HTML тега <ruby>?
Какова цель HTML тега <ruby>?
Was this page helpful?