← 返回信息流
AI 资讯Hacker News·4 天前

Deciphering Basmala

AI 深度解读

解读 Basmala:阿拉伯排版中的技术债务与美学妥协

背景

上周,一篇题为《交互式介绍阿拉伯排版的绝佳体验及其技术债务》(An interactive introduction to the terrific experience of rendering Arabic typography and its technical debt)的文章在网络上广泛流传。作者 Saleh 在文中承诺,将通过回顾一个工单的处理过程,揭示阿拉伯文字渲染背后长达五百年的技术积累与历史纠葛。

这篇文章不仅涉及技术细节,还穿插了历史轶事:从一位两次遭致残的宰相,到失踪四个世纪的《古兰经》,再到一位赶截稿日期的贝鲁特报人,以及一位出于娱乐自学字体工程的埃及医生。对于 Saleh 而言,梳理这些历史脉络是他工作中最为愉快的几周经历。

本文作者 Mark Dominus(陶敏修)在推荐阅读 Saleh 原文的同时,也撰写了这篇解读。需要声明的是,Mark Dominus 并不懂阿拉伯语,甚至尚未掌握所有字母。他尽力确保细节准确,但难免存在拼写错误或事实陈述偏差,并为此提前致歉。

核心内容

阿拉伯连字的技术困境

阿拉伯文字是连续书写的(cursive),字母之间的连接方式至关重要。与现代拉丁字母仅有少量连字(ligatures)且忽略它们几乎不可察觉不同,阿拉伯语中的连字缺失会导致文本看起来完全错误且难以接受。

早期的字体引擎无法正确渲染阿拉伯连字,导致屏幕上的阿拉伯文本看起来像分离的拉丁字母。例如,意为“你好,世界,这是阿拉伯文本”的句子:

  • 正确渲染:مرحبا بالعالم، هذا نص عربي
  • 早期错误渲染:مرحبا بالعالم، هذا نص عربي

在错误渲染中,原本优雅对称的字符簇 لعا 被破坏成 لعا。首字母 mīm(م)本应与后续字母连接,但在错误渲染中却保留了仅当字母单独出现或位于词尾时才有的“悬挂尾巴”。这种糟糕的渲染效果虽然勉强可容忍,但显然远非完美。

“Basmala”的特殊地位与 Unicode 解决方案

对于伊斯兰教中极其重要的短语——Basmala(بِسْمِ ٱللهِ ٱلرَّحْمَٰنِ ٱلرَّحِيْمِ),即“奉至仁至慈的真主之名”,上述糟糕的渲染是绝对不可接受的。

该短语出现在《古兰经》114章中的113章开头(第9章除外),拥有数百年的书法传统,要求以最完美的形式呈现。将其渲染成一堆杂乱的字母被视为一种亵渎。类比而言,这就像《出埃及记》第20章中,上帝在颁布十诫前,若以杂乱无章的字母形式介绍自己,将是不可想象的。

为了解决这一难题,Unicode 标准中引入了一个特殊的代码点:U+FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM。作为一个单一代码点,Basmala 可以被分配一个单一的字形(glyph),设计师可以针对这个单一字形进行精心绘制,从而避免其看起来像垃圾文本。

Basmala 的字形结构解析

尽管 Basmala 在 Unicode 中是一个字符,但其内部结构复杂。Mark Dominus 对其进行了拆解分析:

  1. 词汇构成

    • Bismi (بسم):意为“在...之名”,是缩写。
    • Allah (اللّٰه):意为“真主”。
    • al-raḥman (الرحمن):意为“至仁的”。
    • al-raḥim (الرحيم):意为“至慈的”。

    注:当定冠词 "al-" 出现在以 /r/ 音开头的单词前时,其 /l/ 音会被同化,发音变为 /ar-/。这类似于英语中 "in-" 前缀接 "relevant" 变为 "irrelevant" 的现象。

  2. 字形细节与争议

    • Allah:位于顶部,通常被着色为绿色(据说是穆罕默德最喜欢的颜色)。其上方的 W 形标记和垂直笔画是变音符号(Shaddah 和元音标记)。
    • Bismi:位于下方,由三个辅音字母组成(/b/ + /s/ + /m/),元音通常省略。
    • Kashida:在 "Allah" 下方有一条水平线,称为 Kashida,仅用于布局(类似于空格),不发音。
    • Mīm 的尾巴:词尾的 mīm (م) 有一条长尾巴。在 Basmala 的字形设计中,设计师决定将这条尾巴连接到 al-raḥman 末尾的 nūn (ن) 上。同样的 mīm 及其尾巴也出现在 al-raḥim 的末尾,而在 al-raḥman 中间时则没有尾巴。
    • 字体设计师的批评:知名字体设计师 Khaled Hosny(Amiri 字体设计者)指出,Android 上的 Basmala 字形设计非常糟糕。批评点包括“字母之间奇怪的融合”以及 mīmnūn 的不当连接,同时也反对将 "Allah" 插入到 "bismi" 中间。
  3. 其他字母特征

    • Al- 前缀:意为“the”,广泛存在于阿拉伯语及源自阿拉伯语的英语词汇中(如 alcohol, algebra, algorithm, alchemy),但不包括 "alligator"(源自西班牙语)。
    • Rā' (ر):发出 /r/ 音,写作向左下方悬挂的钩状。在 Basmala 中,蓝色 rā' 的钩子与紫色 ḥā' 的上部相连。
    • Ḥā' (ح):在单词中间时会失去其华丽的尾巴。它是 al-raḥmanal-raḥim 中共有的常见字母。
    • Yā' (ي)al-raḥimmīm 之前的第五个字母。单独书写时为 ي,在词中则表现为带有两个点的向上尖刺。

阿拉伯语发音与书写之美

Mark Dominus 提到,阿拉伯语书写非常优美,但学习难度在于其发音与英语差异巨大。例如,阿拉伯语中有三个类似英语 /h/ 的音,分别对应软、粗和中间程度。Ḥā' (ح) 属于中间那个音。此外,阿拉伯语还包含喉塞音(glottal stop),这在英语中很少见,但在夏威夷语 "Hawai'i" 的撇号中可以找到类似发音。

关键要点

  • 连字的重要性:阿拉伯语是连续书写脚本,字母间的连字(ligatures)对文本的可读性和美学至关重要,早期字体引擎因无法正确渲染连字而导致文本显示错误。
  • Basmala 的特殊性:作为《古兰经》中频繁出现且极具宗教神圣性的短语,其渲染质量不能容忍任何技术瑕疵。
  • Unicode 的单一代码点方案:为了解决渲染难题,Unicode 定义了 U+FDFD 代码点,将整句 Basmala 作为一个单一字符处理,允许设计师绘制完美的单一字形,而非依赖动态连接。
  • 字形设计的争议:尽管有标准代码点,不同平台(如 Firefox 与 Android)对同一字符的字形渲染差异巨大。知名字体设计师批评某些移动端实现存在“奇怪的字母融合”和布局错误。
  • 历史与技术债务:阿拉伯排版的复杂性源于数百年的历史演变、宗教传统以及早期计算机标准制定的滞后,形成了巨大的“技术债务”。

意义与影响

这篇文章不仅是一篇关于字体

查看原文 →blog.plover.com