从软件设计与i18n视角探究Unicode形似字母不同码点的原因
Unicode中拉丁字母与西里尔字母同形不同码点的设计疑问
即便在当前页面搜索p或P,也无法找到р或Р。
为何Unicode要为拉丁字母a/A与西里尔字母а/А分配不同的码点?从软件设计和国际化(i18n)的视角来看,这样的设计有何意义?
我的疑问源于以下几点:
- a/A是同一拉丁字母的大小写形式,被用于多种语言:
- 意大利语中发音为/a/;
- 英语中根据所在单词不同,发音为/a/、/æ/或/e/(可能还有其他变体);
- 法语中……;
- 西里尔字母а/А与拉丁字母a/A外观完全一致,却被分配了不同的码点。
拉丁字母a/A与西里尔字母а/А外观相同,发音也并非完全不同,为何不使用相同的码点(对应大小写各一个)?
我能想到的唯一原因是它们分属不同字母体系,同一字母体系的字符最好按顺序排列,例如在C++中,assert(u'a' + 1 == u'b')成立,而assert(u'а' + 1 == u'б')也成立。
这是否是该设计的唯一真实原因?即让各字母体系的码点连续排列?
内容的提问来源于stack exchange,提问作者Enlico
相关产品推荐
相关产品推荐

