E2.18.4predictable rich-text downgrade设计

复杂格式在纯文本场景下需要可预测的降级方式

别名: 富文本转纯文本 · markdown fallback · 标题变成星星

概念解释

同一段话会离开富文本,走进短信、日志、搜索索引、不支持 HTML 的终端。标题、列表、链接、表格在那一头必须变成某种纯文本,否则要么标签裸奔,要么结构蒸发。可预测的降级(predictable rich-text downgrade)要求每一种结构都有事先说清的纯文本形状:标题前面加谁、链接是「文字 + 网址」还是只留文字、表格怎么摊平。它管的是出富文本之后长什么样,不是编辑时内容和样式是否纠缠,也不是贴进来脏不脏。

机制

降级是一次有损映射。没有约定时,每个出口自己猜:有的把 <h2> 变成 ##,有的变成全大写,有的直接丢掉。作者在编辑器里看见的层次,到了邮件纯文本部分对不上,回复的人会误解结构。链接若只剩锚文字,网址丢失;只剩网址,可读性丢失。列表若变成一段逗号分隔,条目边界消失。可预测性让作者在写作时就能预见到「这条会变成什么」,并避免依赖降级后不存在的手段(颜色、底纹)。

边界

出口仍是完整 HTML/PDF 时,不必降级,硬转纯文本才是损失。用户主动「复制为纯文本」是同一映射,应与自动出口共用一张表,避免两条规则。双向编辑(纯文本里改了再开富文本)若不能无损回来,降级就应被标成单向,不要假装往返。代码块、公式没有诚实的纯文本等价物,应显式变成「见原文」或占位,而不是乱码。

怎么落地

  • 为标题、列表、链接、强调、表格各写一条降级规则,并在「纯文本预览」里给作者看。
  • 让通知、日志、搜索摘要共用这张规则,不要每个管道自己剥标签。
  • 对没有诚实等价物的结构,用明确占位,而不是静默删除。
  • 验证:写一篇含标题、列表、链接的短文,分别看短信、纯文本邮件、日志里的样子。三次形状不一致,或作者看到的层次对不上出口,降级就还不可预测。再改一处纯文本,看富文本是否被悄悄损坏。

延伸

  • 同组E2.18.1 富文本模糊了内容与样式的边界,用户常混淆两者 · E2.18.2 工具栏功能过多会超出多数用户实际使用的范围 · E2.18.3 粘贴外部内容时的样式残留是常见的脏数据来源
  • 相邻E2.02 多行文本域 · E6.04 全局状态提示
  • 站内检索predictable rich-text downgrade · plain-text fallback · lossy mapping

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.18.4