Тег rtc в HTML: что это, почему устарел и чем заменить

Тег <rtc> (от английского ruby text container, «контейнер текста руби») должен был собирать вторую, смысловую аннотацию в ruby: например, перевод слова рядом с произношением из rt. Его пишут внутри ruby после основы. Тег парный, но закрывающий </rtc> можно опустить: браузер закроет его сам перед rb, rt, следующим rtc или концом ruby.

В справочнике MDN тег отмечен как устаревший, а в стандарте HTML rtc и rb названы полностью устаревшими. Кроме того, в некоторых браузерах rtc рисуется не как аннотация, а как обычный текст в строке справа от слова. Новые страницы с rtc писать не нужно.

HTML
<ruby>
  漢字
  <rt>kanji</rt>
  <rtc>Chinese characters</rtc>
</ruby>

Тег rtc в HTML: что это и для чего создавали

У слова с аннотацией бывает два вида пояснений: как читать (произношение) и что значит (перевод или толкование). Первое записывает rt, а второе должен был собирать rtc. Скобки для браузеров, которые не знают ruby, добавляет rp.

Внутри rtc допустим обычный текст или несколько rt. Родитель только ruby. Атрибутов у тега нет, кроме глобальных, в DOM это обычный HTMLElement. В старых черновиках рядом с ним был ещё rbc, контейнер для основ, но в браузерах он не распознаётся.

HTML
<ruby>
  馬<rt>mǎ</rt>
  <rtc lang="en">Horse</rtc>
</ruby>

Как записывать rtc: закрывающий тег можно опустить

Закрывающий тег </rtc> необязателен. Когда после контейнера идёт rb, rt, другой rtc или закрывается сам ruby, браузер завершает контейнер без подсказки. В DOM обе записи дают одинаковый результат: у ruby два дочерних тега rtc.

HTML
<ruby>
  漢字
  <rtc>Chinese
  <rtc>English
</ruby>

Если записать rtc вне ruby, браузер тег сохраняет как строчный. Если записать rt внутри rtc, в некоторых браузерах она теряет роль аннотации: её display становится inline.

Пример: как браузер разбирает rtc

Результат

Кнопки меняют запись. Под ней показаны дочерние теги и display читаются из страницы после каждого нажатия.

Как рисуется rtc: рядом с основой, а не над ней

По замыслу rtc должен стать второй строкой аннотаций: над основой или под ней, смотря на значение ruby-position. В некоторых браузерах этого не происходит. Для rtc там действует display: inline, и его текст идёт в обычной строке сразу после основы. Слово становится шире на ширину этого текста, а rt остаётся над основой, как и раньше.

В таких браузерах свойство ruby-position: under, записанное на rtc, ничего не меняет. Если в записи нет rt, а есть только rtc, результат тот же: текст идёт справа от основы. Вторая rt рядом с первой тоже не получает своей основы, она просто занимает место справа.

CSS
rtc { ruby-position: under; }

Пример: где рисуется rtc

Результат

Кнопки меняют запись. Вердикт считается по положению rtc относительно основы 漢字.

Рассчитывать на вторую строку аннотаций нельзя.

Какие браузеры понимают rtc

Версии взяты из базы совместимости MDN: в ней тег отмечен как устаревший. База говорит лишь о том, с какой версии браузер знает тег, а не о том, что он рисует вторую строку аннотаций.

Пример: таблица версий

БраузерС какой версииЗаметка
Chrome47тег разбирается, но второй строки аннотаций нет: текст идёт в строке справа от основы
Edge79тот же результат на том же движке
Firefox33тег известен браузеру
Safari8тег известен браузеру

Чем заменить rtc

Стандарт HTML предлагает вложенные ruby: внутренняя ruby даёт первую аннотацию, внешняя добавляет вторую. Обе аннотации рисуются над основой одна над другой, поэтому такая запись работает там, где rtc нет.

HTML
<ruby>
  <ruby>漢字<rt>kanji</rt></ruby>
  <rt>Chinese characters</rt>
</ruby>

Пример: вложенные ruby вместо rtc

Результат

Кнопки сравнивают вложенные ruby, одну ruby и запись с rtc. Положение аннотаций считается относительно основы.

Если вторая аннотация нужна как подсказка, а не как часть слова, проще вынести её в атрибут title у ruby или записать обычным текстом рядом. Для старых браузеров, которые не знают ruby, добавляйте rp со скобками.

Частые ошибки с тегом rtc

Почти все ошибки с rtc от ожидания, что rtc нарисует вторую строку аннотаций.

ОшибкаЧто получитсяКак исправить
rtc для перевода под словомВ некоторых браузерах текст идёт в строке справа от основы, а не под нейВложенные ruby или обычный текст рядом
ruby-position: under на rtcВ некоторых браузерах ничего не меняетсяНе рассчитывать на положение второй строки
rt внутри rtcВ некоторых браузерах rt становится обычным строчным текстомВложенный ruby с собственной rt
rtc вне rubyОбычный строчный тег, аннотации нетОбернуть в ruby или убрать
rbc как контейнер основБраузер не знает такого тегаОснова прямо внутри ruby
rtc в новых страницахВалидатор HTML показывает ошибку: тег устарелОснова и rt внутри ruby, вторая аннотация во вложенном ruby
Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×