Firefox 开发者版 38 中的 Ruby 支持

长期以来,东亚用户,尤其是日本用户一直要求浏览器支持 Ruby 功能。

以前,由于 Firefox 缺乏原生 Ruby 支持,用户不得不安装像 HTML Ruby 这样的插件才能使用 Ruby 功能。然而,在 Firefox 开发者版 38 中,CSS Ruby 已经默认启用,这同时也带来了对 HTML5 ruby 标签的支持。

介绍

什么是 Ruby?简而言之,Ruby 是一些额外的文本,通常较小,附着在主文本上,用于指示相应字符的发音或含义。这种注释在日语出版物中广泛使用。它在中国儿童读物、教育出版物和字典中也很常见。

Ruby Annotation

基本用法

基本上,Ruby 支持由四个主要标签组成:<ruby><rb><rt><rp><ruby> 是包裹整个 Ruby 结构的标签,<rb> 用于标记正常行中的文本,<rt> 用于注释,<rp> 是一个默认情况下隐藏的标签。使用这四个标签,上面的结果可以从以下代码实现


  とある科学超電磁砲
  とあるかがくレールガン

由于 <rb><rt> 可以自动闭合,因此我们无需手动添加代码来关闭这些标签。

如图像所示,重复的部分以及 <rp> 会自动隐藏。但是,为什么要添加默认情况下隐藏的内容呢?

答案是:从语义上讲,它更自然,并且有助于转换为内联形式,这是更多软件接受的更通用的形式。例如,这允许页面在没有 Ruby 支持的浏览器上产生不错的效果。它还允许用户代理在您想要复制带有 Ruby 的文本时生成格式良好的纯文本(虽然此功能尚未在 Firefox 上实现)。

此外,额外的内容使您可以在不更改文档的情况下提供注释的内联样式。您只需要在样式表中添加一条规则即可

ruby, rb, rt, rp {
  display: inline;
  font-size: inherit;
}

实际上,如果您没有这些需求,只需要 <ruby><rt> 就足够了。对于最简单的用例,例如单个汉字,您可以使用以下代码

Saki

高级支持

除了 Ruby 的基本用法之外,Firefox 现在还支持更高级的用例。

默认情况下,如果注释的宽度与基文本不匹配,则较短的文本将像上面示例所示那样对齐。但是,这种行为可以通过 ruby-align 属性进行控制。除了默认值(space-around)之外,它还可以使内容对齐到两侧(space-between)、居中(center)或对齐到起始侧(start)。

通过 <rtc> 标签支持多级注释,它是 <rt> 的容器。每个 <rtc> 代表一个注释级别,但如果您省略 <rtc>,浏览器将进行一些清理,将连续的 <rt> 包裹在一个匿名 <rtc> 中,形成一个级别。

例如,我们可以将上面的示例扩展到


  とある科学超電磁砲
  とあるかがくレールガン
  ToaruKagakunoRērugan

如果您不将任何 <rt> 放入 <rtc> 中,此注释将成为跨越整个基部的跨度


  とある科学超電磁砲
  とあるかがくレールガン
  A Certain Scientific Railgun

您可以使用 ruby-position 将给定级别的注释放置在您想要的侧边。对于上面的示例,如果您想将第二级放在主行下方,可以将 ruby-position: under; 应用于 <rtc> 标签。目前,只支持 under 和默认值 over

(注意:CSS 工作组正在考虑更改 ruby-position 的默认值,以便注释默认情况下变为双侧。此更改可能会在 Firefox 的未来版本中发生。)

最后,一个将上面介绍的所有内容结合在一起的 Ruby 高级示例

Advanced Example for Ruby

rtc:lang(en) {
  ruby-position: under;
  ruby-align: center;
  font-size: 75%;
}

  とある科学超電磁砲
  とあるかがくレールガン
  A Certain Scientific Railgun

您对实现有任何问题、评论或反馈吗?请随时在此处或通过 bugzilla 分享您的想法或问题。

关于 Xidorn Quan

Xidorn Quan 的更多文章...


6 条评论

  1. Chris

    很喜欢 Mikoto 的引用。

    2015 年 3 月 5 日 下午 8:17

  2. Horo

    Level 5 浏览器

    2015 年 3 月 8 日 下午 9:41

    1. Hexcles

      哈哈!真可惜我们还没有 CSS Level 4。拥有支持这种 Level 5 超级能力的 CSS Level 5 浏览器会很棒。

      2015 年 3 月 19 日 下午 5:25

  3. Ruben Schade

    尽管(可预测的西方)反对者在这里链接,但这确实是件大事。我也很喜欢 Railgun 的引用 :3

    2015 年 3 月 31 日 下午 5:40

  4. Vannak Eng

    如果只在 Firefox 中支持,那么用户在其他浏览器中查看它会遇到麻烦。

    2015 年 4 月 1 日 上午 4:39

    1. Xidorn Quan

      目前,其他浏览器只支持 <ruby><rt><rp>。在常见情况下,这三个标签在大多数现代 Web 浏览器中可以互操作。我们希望其他浏览器也能实现其他功能。但在那之前,对于作者来说,最好只使用可互操作的标签。

      2015 年 4 月 1 日 上午 4:48

本文的评论已关闭。