火次果
火次果

暂无菜单项

首页/文章/技术文章/web前端/HTML5/
打开 MD 链接

ruby 标签与字体:注音排版的兼容处理

发布于 17小时前
2

ruby 标签不依赖特定字体就能形成注音结构,显示是否稳定却由字体决定。同一段标记换一套字体系,注音可能从对齐变成错位甚至塌陷,问题多数出在 rt 这一层。

开启的电脑显示器显示文本内容,用于说明注音排版的字体差异
注音错位通常来自 rt 继承的字体系与字号

四类字体的表现

字体类型 注音表现 处理建议
系统中文字体(PingFang SC、Noto Sans CJK、Microsoft YaHei) 宽度与基线稳定 直接使用
西文字体(Arial、Helvetica) rb 与 rt 基线不一致,注音偏移 显式指定中文字体族
等宽字体 字符宽度失配,注音容易塌陷 注音区域不用等宽字体
自托管子集字体 缺 CJK 字形时注音缺失 补全字形或回退系统字体

rt 层的加固写法

ruby rt {
  font-family: "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;
  font-size: 12px;
  line-height: 1;
}

ruby {
  ruby-align: center;
  ruby-position: over;
}

rt 的字号写成固定像素值,避免继承父级的 em 单位在不同层级标题里放大幅度不一。竖排场景改用 ruby-position 的 under 或 inter-character 取值,并与 writing-mode 一同目检。

结构与兜底

<ruby>
  汉字
  <rp>(</rp><rt>hanzi</rt><rp>)</rp>
</ruby>

rp 面向不认识 ruby 的老浏览器,用括号把注音包起来。结构缺失比样式偏差更影响可读性,这一层不要省。

验收清单

  • 至少三套字体系下目检一次注音位置;
  • 长词发生断行时注音跟随不脱节;
  • 禁用 JavaScript 后结构不散;
  • 打印样式保留注音,不被打印 CSS 抹掉;
  • 字号写死在 rt 上,不使用继承值。

常见问题(FAQ)

ruby 标签需要专属字体吗?
不需要。ruby 结构是标记层面的,任何字体都能形成注音。差异在于字体对东亚字符宽度与上标区域的支持,影响的是显示是否对齐。
注音在英文浏览器里错位是什么原因?
父级字体被解析为西文字体,缺乏 CJK 字形度量。显式给 rt 声明中文字体族,并把字号写成固定像素值即可收敛。
rt 的字号用 em 可以吗?
可以但容易失控。不同层级标题继承后放大倍数不同,同一份注音在正文和标题里大小不一致,改用固定像素值更好控制。
rp 标签有必要保留吗?
有必要。不支持 ruby 的浏览器会把 rt 内容直接连排,rp 提供的括号能让文本保持可读,属于零成本的兜底。
竖排文本里的注音怎么放?
使用 ruby-position 调整放置方向,竖排用 under 或 inter-character,并配合 writing-mode 一同目检。
支持作者
如果这篇内容对你有帮助,可以请作者喝杯咖啡
0 点赞
0 收藏
分享
0 讨论
反馈
0 / 600
细中粗
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
创作
社区
购物
会员
近期热门

暂无数据

火次果
火次果
首页
资迅中心
小店
AI导航
社区
所有的成功,都源自一个勇敢的开始
不辜负每一个勇敢的开始
关于FAQ协议
火次果 © 2026