Unicode中阿拉伯字母的结构

问题描述 投票:0回答:1

我在Wikipedia上获得了两个不同的阿拉伯字母“版本”。 first example似乎是3个子组成部分:

"ـمـ".split('').map(x => x.codePointAt(0).toString(16))
[ '640', '645', '640' ]

this page上找到此“ m”字母给了我:

ﻤ
fee4

代码点640和645是“阿拉伯语转轮” ـ和“阿拉伯语字母记忆” م。有没有搞错?这是如何运作的?到目前为止,我在Unicode阿拉伯语的信息中都看不到这些字形是如何“组成”的。为什么由这些部分组成?所有字形的结构都有模式吗? (第一个Wikipedia页面上的所有字形都是相似的,但是第二个字形是一个代码点)。在哪里可以找到有关如何有效解析阿拉伯语(或与此有关的任何其他语言)字符的信息?

string unicode encoding internationalization arabic
1个回答
0
投票

阿拉伯语是具有草书连接的脚本;字母的形状会根据它们出现在单词的开头,中间还是最后而变化。有时您可能想要单独显示这些上下文形式,例如,以简单地显示它们的外观。

推荐的解决方法是使用特殊的连接字符来连接字母。其中之一是杂草丛生(也称为kashida),本质上是一条短线段,两端带有“胶水”。因此,如果您在字母م的两边都用tatweel字符包围,则文本呈现器会自动选择其中间形式,就像它出现在单词中间一样(ـمـ)。 م的基本字符代码不会更改,只会更改其可见的字形。

但是,由于历史原因,Unicode还包含大量的阿拉伯语表示形式。它们表示相同的上下文字母形状,但作为单独的字符代码,不会随周围环境而变化;将م的“隔离的”表示形式放在两个小辫之间不会影响其外观,例如:ـﻡـ

不建议使用这些演示文稿形式来实际编写阿拉伯文。它们的存在完全是为了与旧的旧版编码兼容,并且不需要正确排版阿拉伯文本。我想,维基百科只是将它们用于演示目的,并炫耀它们的存在。如果遇到表示形式,通常可以对字符串应用Unicode规范化(NFKD或NFKC)以获取基础基本字母。有关更多信息,请参见Unicode FAQ on presentation forms

© www.soinside.com 2019 - 2024. All rights reserved.