阿拉伯字体渲染经验介绍及其技术债

2026-06-13 1 阅读 bookofjoe
2026 年 6 月 10 日 ¶ ※ ※ ※ 交互式介绍渲染阿拉伯语排版的绝佳体验及其技术债务 这篇文章在 Lobsters 中进行了讨论 曾几何时,一张前端票落在了我的队列中,但该队列不属于我的,但团队中唯一的其他阿拉伯语读者正在休假。事情大致如下:当设计团队明确指定了合理的文本时,面向客户的仪表板上的一段混合内容的阿拉伯散文呈现出左边缘参差不齐的情况(阿拉伯语中,碎布落在左侧,因为线条从右侧边缘开始;票证上写着“参差不齐的右侧”)。随附的是来自三个浏览器的三个屏幕截图,以及产品经理的礼貌说明,我指出同一块的拉丁文版本看起来“很好”。同样的六个月,我关闭了针对同一产品的另外三张票证,每张票证都作为唯一的错误提交给其归档者。客户的名字以未连接的字母形式出现在打印的协议上,就像 1962 年标志画家的布局方式一样,因为收据服务器上的 PDF 库早于其语言运行时中成形引擎的存在。对于客户服务团队可以在数据库中看到的帐户,搜索索引返回空,因为 2017 年的导入使用 1991 年的化石 Unicode 代码点而不是 1995 年的常规代码点编码了 12000 个名称,并且该索引非常合理地将这两种编码视为不同的字符串,因此,那张左褴褛的票是四个中最小的一个,但是,它位于同一个冰山顶部并指向同一件事。这是分歧,现场转载。我使用了随机文本,原来的间距更大,我懒得挑选单词来最大化拉格和间距。制作,任何浏览器请注意,请注意以下事项。应用票证要求的修复程序,按照设计批准的模型进行修复๑เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเแกแ้้แแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแแก সেরেরেরেরের ক্কেকেকেকেকেেকেকেেরেরা请注意以下内容。右边是商定的设计:两边的页边距齐平,每行都通过拉长单词内部的笔画来填充,而不是它们之间的空格。它在你的浏览器中呈现只是因为我手动放置了每个伸长率,我将在下面详细说明这一点。左边是生产的船。勾选该框以应用 CSS 提供的一个工具,text-align: justify (对于这些演示,该网站发布了有史以来第一个网络字体:Amiri,自托管,一个人无薪夜晚的 150 KB,在 OFL 下重新分发。我想澄清的是,这就是向您展示操作系统无法完成的事情的一部分。我认为这是一个令人愉快的 150 KB。)看起来确实不错。我花了大约半个小时的时间,我遍历了渲染的 DOM,我设置了 text-align: justify 在字体系列和方向声明的许多不同组合中,在练习结束时我写了一个回复,或多或少诚实地解释说,问题不是我们样式表中的错误,而是网络上阿拉伯语排版的状态。得到答复并关闭票证花了半个小时左右。其背后的原因花了五百年才堆积起来,其中涉及一位被两次残害的维齐尔、一本消失了四个世纪的《古兰经》、一位有截止日期的贝鲁特新闻记者,以及一位为了好玩而自学字体工程的埃及医生(或者我对他的想象)。经历这些,最终成为那份工作中最愉快的几周,我也想在这里经历一下。抄写员解决了什么历史值得记录,因为阿拉伯字体工程小世界之外的大多数人都不知道它,而且它很精彩。古典阿拉伯印刷术,我指的是伊斯坦布尔和布拉克的早期印刷商一生所追求的手稿传统,它在不拉伸单词之间空格的情况下证明一行文本的合理性。拉伸空间是拉丁语的惯例,而在阿拉伯语中,它们产生的效果在抄写员看来简直是丑陋的。相反,抄写员使用所谓的 taṭwīl 或现代技术词汇中的 kashida 沿着基线延伸字母形式:可以延长某些字母对之间的连接笔画,有时甚至是很夸张,以将一条线延伸到边缘。十七世纪纳斯赫的一页版式精美,每一行的两边边缘都是齐平的,其结果是密集、规则的编织,任何花时间阅读过优秀古兰经手稿的人都会一眼认出。图 1. 十四世纪的《古兰经》对开本,现藏于大都会艺术博物馆。沿着左边缘看下去:每一行都齐平,没有一个字空间被