CANON·RTL 是一份面向从右到左(RTL)书写语言的界面设计规范,用于阿拉伯语、希伯来语、波斯语、乌尔都语等语言的布局支持。其核心观点是:RTL 不是“全部翻转”,而是阅读方向的调整。
用途:在设计与实现 RTL 布局时确定文本流、布局流向和方向性图标的处理方式。
主要能力与做法: 在 <html> 上设置 lang 与 dir,例如 <html lang="ar" dir="rtl">,即可翻转整个文档流,浏览器会处理大部分文本以及 flexbox/grid。 使用 CSS 逻辑属性替代物理属性,例如 margin-inline-start 取代 margin-left、padding-inline-end 取代 padding-right、text-align: start 取代 left、inset-inline-start 取代 left、border-inline-start 取代 border-left。 处理双向文本时用 <bdi> 隔离嵌入文本,例如 <p>مرحباً بك في <bdi>CANON</bdi> للتصميم</p>,不要手动依赖 Unicode 控制字符。
需要镜像的内容:文本对齐与流向、flex/grid 方向、导航顺序、面包屑、方向性图标(前进/后退箭头、chevron)、进度条与滑块与时间线方向、带缩进的列表、表单标签相对输入框的位置。 不应镜像的内容:媒体播放控件、电话号码字段(始终 LTR)、时钟、Logo 与品牌标记、勾选/加减/关闭 X、上下箭头、图片与照片、含数学坐标轴的图表、路径中的斜杠方向。
数字方面:部分阿拉伯语地区使用阿拉伯-印度数字(٠١٢٣٤٥٦٧٨٩),西阿拉伯数字在 UI 中也可接受且更常见,需按地区惯例确认;电话、日期、货币按地区格式而非方向处理。
测试建议:至少测试阿拉伯语、希伯来语和英语基线,检查文本与导航是否自然从右到左、返回箭头是否指向右、前进是否指向左、侧边栏是否在右侧、表单标签是否对齐、绝对定位元素是否重叠。
限制与反模式:翻转图片会导致图中文字反向;使用物理 CSS 属性会破坏 RTL 布局;对整体容器使用 transform: scaleX(-1) 属于取巧且会破坏文本渲染;硬编码 left: 20px 在 RTL 中会落到错误一侧;面包屑分隔符不翻转会造成阅读方向混乱;用拉丁文本测试无法暴露连写脚本问题。审查清单包括 dir、lang、逻辑属性、方向性图标、<bdi>、电话输入显式 dir="ltr"、真实 RTL 内容测试和无物理左右属性。更多细节暂未提供。