Ruby标签不识别多音字,需人工判断并手动指定拼音;最小合法结构为ruby+rt+成对rp;混排文本须切块处理,汉字块内人工校正多音字;注意Safari、Chrome、IE等兼容性问题。

ruby 标签本身不识别多音字,必须人工判断并手动指定拼音——没有自动方案,这是起点,也是终点。
多音字标注不是技术问题,是语义判断问题
浏览器和 ruby 只负责把给定的拼音“摆”在汉字上方,它不管“重”该读 chóng 还是 zhòng。决定权完全在你手上:
• “重庆”的“重”读 chóng,因为它是地名专用读音
• “重要”的“重”读 zhòng,因为此处表“分量大”
• “重复”的“重”读 chóng,因为此处表“再、又”
工具(如 pypinyin)默认返回高频读音,但高频 ≠ 正确。一旦上下文改变,就必须覆盖。
从零写第一个合规多音字 ruby 结构
最小合法结构必须包含三部分:ruby、rt、成对的 rp:
• 错误写法:<ruby>重</ruby><rt>zhòng</rt>(rt 在外,不渲染)
• 错误写法:<ruby>重庆<rt>chóng qìng</rt></ruby>(多字共用一个 rt,语义错位)
• 正确写法:<ruby>重<rp>( </rp><rt>chóng</rt><rp> )</rp></ruby><ruby>庆<rp>( </rp><rt>qìng</rt><rp> )</rp></ruby>
注意:rp 内容必须是括号类符号(如 (、)、〔、〕),且成对出现;现代浏览器会隐藏 rp,旧浏览器则显示为“重(chóng)”,确保降级可用。
混排文本中安全插入多音字注音
真实文本永远不是纯汉字,比如:“第3章:‘长’度单位(含‘行’列转换)”。这里要避开数字、标点、引号、英文字母:
• 用正则切块:re.findall(r'[\u4e00-\u9fff]+|[^\u4e00-\u9fff]+', text)
• 汉字块走 pypinyin.lazy_pinyin(..., errors='ignore')(别用 errors='strict',否则遇到 emoji 或组合字符直接报错)
• 非汉字块原样拼入,不调用拼音函数
• 多音字需在汉字块内部人工替换,例如将 ['zhang', 'du'] 改为 ['cháng', 'dù'],再逐字套 ruby
漏掉这一步,就等于把“长”一律标成 zhǎng,而“长度”实际读 cháng dù。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
容易被忽略的兼容性硬伤
即使结构完全正确,仍可能在部分环境失效:
• Safari 移动端强制 ruby-position: over,不支持 under,别试图用 CSS 强改位置
• 若父容器设了 line-height: 1,Chrome 和 Firefox 的 rt 可能被顶部裁切,必须显式加 line-height: 1.2 到 rt 上
• IE 完全不支持 ruby,连 rp fallback 都无效,只能靠 JS 检测后降级为“重chóng”之类模拟方案
• 所有浏览器对带声调 Unicode 字符(如 ā)的字体渲染不一致,建议统一用数字标调(a1)或预加载支持声调的字体
立即学习“前端免费学习笔记(深入)”;


















