返回

文章详情

阿拉伯排版体验及其技术债务的介绍

Hacker News2026年6月13日 12:40

在Lobsters上讨论过此帖子。曾几何时,一个前端工单落到了我的队列中,那并不完全是我的责任,因为团队中唯一的阿拉伯语使用者正在休假。事情大致如下;在面向客户的仪表板上,一块混合内容的阿拉伯文散文呈现出一个凹凸不平的左边缘(阿拉伯文中的凹凸左边缘是因行从右侧开始设置;工单上写着“凹凸右边缘”),而设计团队明确指定了对齐文本。附加了三张来自三种浏览器的截图,以及产品经理的礼貌备注,他指出同一内容的拉丁字母版本看起来“不错”。在同六个月中,我关闭了针对同一产品的另外三个工单,每一个都会向其报告者呈现为唯一的错误。客户的名字在打印协议上呈现为字母未连接的样子,就像1962年的招牌画家布局的那样,因为收据服务器上的PDF库在其语言运行时中预先存在的排版引擎之前。一个搜索索引返回空值,尽管客户服务团队在数据库中可以看到这些账户,因为2017年的导入使用了1991年的古老Unicode代码点为12000个名字编码,而不是1995年的常规代码,因此索引很合理地将这两种编码视为不同的字符串。因此,那个凹凸左边缘的工单是四个中最小的,然而,它位于同一冰山之上,并指向同一事物。以下是实时重现的分歧。我使用了随机文本,原始文本间隔更大,我太懒了,不想挑选字词来最大化不平整和间距。<br><br> 生产环境,任何浏览器:<br> الخط هندسة روحانية ظهرت بآلة جسمانية, وهو لسان اليد ورسول العقل، وسفير الضمير ووحي الفكر، وسلاح المعرفة وأنس الإخوان عند الفرقة. <br> 应用工单要求的修复:<br> الخـــــط هندســـــة روحانيـــــة ظهــــرت بآلــــة جسمانيــــة، وهــــو لســـان اليــــد ورســـــول العقـــــل، وسفيــــر الضميــــر ووحـــــي الفكـــــر، وســـــلاح المعــــرفة وأنـــــس الإخـــــوان عنــــد الفــــرقــــة。<br> 在右侧,已商定的设计:两个边距齐平,每一行通过延长字词内部的笔画填满,而不是它们之间的空隙。它在你的浏览器中呈现,只有因为我手动设置了每一个延伸,这是我将在下面详细说明的一个坦白。在左侧,生产环境交付的内容。勾选框以应用CSS提供的单一工具,text-align: justify(对于这些演示,此网站发布了其有史以来的第一个网络字体:Amiri,自托管,一百五十千字节的一个人的未付夜晚,依据OFL重新分发。为了展示你计算机系统无法独立完成的事情,我想清楚地表明,这是论据的一部分。我认为这是令人愉悦的一百五十千字节)。它确实看起来不错。我花了大约半个小时处理它,我漫步在渲染的DOM中,我以如此多种字体系列和方向声明的不同组合设置了text-align: justify,最终在这个练习中,我写了一封回复,比较诚实地解释说,问题并不是我们样式表中的错误,而是网络上阿拉伯排版的现状。回复花了大约半小时,关闭工单也花了半小时。其背后的原因花了五百年才积累起来,它们涉及到被双重残害的大臣、消失了四个世纪的古兰经、一位有截止日期的贝鲁特报人以及一位出于乐趣自学字体工程的埃及医生(或者说我对他的想象)。经过这一过程,最终成为我在那份工作中最开心的几周,我也想在这里进行总结。抄写员解决了什么呢?这段历史值得记录,因为大多数阿拉伯字体工程之外的小圈子的人并不知道它,而且它很美妙。经典阿拉伯排版,我指的是早期伊斯坦布尔和Bulaq印刷商所追求的手稿传统,能够在完全不拉伸字词之间的间距的情况下对齐一行文本。拉伸间距是拉丁文习惯,在阿拉伯文中,它会产生抄写员会觉得简单丑陋的效果。相反,抄写员沿着基线扩展字形,使用称为taṭwīl的技术,或在现代技术词汇中称为kashida:某些字母对之间的连接笔划可以被延长,有时慷慨地延长,以便将一行推送到边缘。设定良好的17世纪的Naskh页面在两个边缘都齐平,每一行都是这样,结果是密集且规则的织布,任何花时间接触过良好手稿古兰经的人都能一眼识别。图1:一页14世纪古兰经手稿,现藏于大都会艺术博物馆。眼睛向下扫视左侧边缘:每一行都齐平,而没有一个字词间距被拉伸以实现这一点。对齐存在于字词内部。(公共领域,通过维基媒体共享。)而这并不是不合理的。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡