我似乎因为认为Windows在“做对了”而大受打击,所以我觉得应该发布答案以证明自己的立场是正确的。
事实是,您所拥有的文本正在告诉操作系统渲染大量的组合字符。一个操作系统实际上呈现它们而另一个操作系统没有呈现的问题是由于许多问题所致。其中一个问题是程序员在编写代码以呈现它们时有多彻底,另一个是由于程序员太懒惰以至于无法正确实现它们。
基本上,可以归结为书面语言是易变的事物,某些语言中的许多字符具有多种不同的变音符号,这些变音符号被用来修改字符的发音。我们如何处理所有这些变音符号,我们如何给每个变音符号一个字母一个新字符(这将导致大量新近相同的字符),或者我们创建一组专门用于变音符号的字符并减少我们的变音符号?整体字母?
Unicode使我们可以同时进行这两种操作,但是这样做的话,不得不渲染这些变音符号的程序员必须处理这样一个事实:有些字符实际上确实具有多个变音符号,一个在上面,一个在下面,然后程序员拥有问他们什么时候停止的问题。他们可以将其限制为两个,并满足大多数人的需求,但忽略那些想要或需要三个变音符号以便以自己的语言正式写作的人。
微软,无论对与错,都决定让用户决定一个人想要使用多少个额外标记。这条路需要一个相当好的程序员和一些艰难的合理化才能通过。我完全支持他们都让这个和他们做的其实很好。
另一方面,如果这些字符丢失了,我想知道为什么它们会丢失。是“我们在x
变音符号之后就把它丢在地板上”的决定,还是由于程序员太懒惰而无法正确执行它,并可能使我暴露于变音符中隐藏的代码的某些缓冲区溢出,而这些代码被散发给执行者。系统?
这里的一个简单问题是,通过实际渲染这些字符,我可以看到系统正在完全按照要求执行操作,而不是执行它认为正确的操作,或者更糟的是执行可能有害的操作。