![渲染马拉雅拉姆语字形的差异](https://linux22.com/image/203237/%E6%B8%B2%E6%9F%93%E9%A9%AC%E6%8B%89%E9%9B%85%E6%8B%89%E5%A7%86%E8%AF%AD%E5%AD%97%E5%BD%A2%E7%9A%84%E5%B7%AE%E5%BC%82.png)
这是正确的渲染prominence
马拉雅拉姆语单词。പ്രാധാന്യം
。
这就是它的渲染方式:
架构Linux
基本操作系统
软呢帽 Kinoite
安卓 - WhatsApp
Windows - 记事本
这可能不是什么新鲜事,但这种差异有点令人恼火。如何在 Arch Linux 上修复它?
答案1
您已经在标签中指出了这一点:文本的渲染主要取决于您使用的字体以及字体渲染引擎如何使用该字体。 (您的外壳,即显示 nano 的外壳,在技术上必然仍然与您的浏览器看起来不同,因为它需要使用固定宽度渲染。这是原则上的。)
不同的字体渲染引擎有不同的处理方式,例如连字;对我来说这看起来像
所以我认为:
- 使用相同的字体,某些引擎会按照您想要的方式呈现这些组合字母,而其他引擎则不会。同样,固定宽度引擎别无选择——在逻辑层面上,“这是两个组合起来看起来非常不同的字符”的想法与“我可以正确地分别显示这两个字符”不兼容。这些字母分别是ന和യ。 Na 和 ya 是两个字母,virama (candrakkala) 组合实际上抑制了固有的元音。现在,如果我强迫你把它们分开写,那么你的处境就有点糟糕了——നയ与ന്യ根本不是一回事,但Ya的绘制取决于之前的符号“·+Virama符号”。
那是确切地我们在源代码编辑/显示的所有内容中看到的内容。
这是一个好的解决方案吗?不知道,看起来不像;至少你的外壳渲染很糟糕。但是:我不是语言学家/语言印刷学家。天哪,我什至都不懂婆罗米文的语言! - 对于做错了的网站,他们可能会提供自己的、损坏的字体,或者他们可能故意正常化Unicode 由独立的字符组成,然后删除组合标记。这通常是作为一种安全措施或互操作性措施来完成的。对于 Whatsapp Web 和 github,我会尝试找出在哪里将其报告为错误。
答案2
使用乐(以前称为 Perl_6)
~$ raku -e '.say for "പ്രാധാന്യം".comb.map(*.uniname);'
MALAYALAM LETTER PA
MALAYALAM LETTER RA
MALAYALAM LETTER DHA
MALAYALAM LETTER NA
MALAYALAM LETTER YA
您需要一个工具来开始查看各个字形。 Raku 可能会有所帮助,因为它支持开箱即用的 Unicode。
~$ raku -e '.say for "പ്രാധാന്യം".comb.map(*.uninames.raku);'
("MALAYALAM LETTER PA", "MALAYALAM SIGN VIRAMA").Seq
("MALAYALAM LETTER RA", "MALAYALAM VOWEL SIGN AA").Seq
("MALAYALAM LETTER DHA", "MALAYALAM VOWEL SIGN AA").Seq
("MALAYALAM LETTER NA", "MALAYALAM SIGN VIRAMA").Seq
尝试“往返”角色:
~$ raku -e '.put for "പ്രാധാന്യം".comb.map(*.uninames)>>.uniparse;'
പ ്
ര ാ
ധ ാ
ന ്
യ ം
您检查过的不同程序可能有不同的标准化方案。请参阅下面的链接了解概述。