Como pareço ter me impressionado ao pensar que o Windows está "fazendo o certo", acho que devo postar uma resposta para justificar minha posição.
O fato é que o texto que você tem está dizendo ao sistema operacional para renderizar uma quantidade insana de caracteres combinados. O problema que um sistema operacional realmente os processa enquanto outro não ocorre devido a vários problemas. Uma dessas questões é a profundidade com que os programadores foram quando escreveram o código para renderizá-las, e outra seria devido à falta de programação dos programadores para implementá-los adequadamente, se houver.
Basicamente, tudo se resume à idéia de que os idiomas escritos são coisas fluidas e que muitos caracteres em certos idiomas têm vários sinais diacríticos diferentes que são aplicados para modificar a pronúncia dos caracteres. Como lidamos com todos esses sinais diacríticos, atribuímos a cada letra com um diacrítico um novo caractere (o que resultaria em muitos caracteres novos e quase idênticos) ou criamos um conjunto de caracteres especificamente para diacríticos e reduzimos nossa alfabeto geral?
O Unicode nos dá o escopo para fazer as duas coisas, mas, ao fazê-lo, os programadores que precisam renderizar esses diacríticos precisam lidar com o fato de que existem alguns caracteres que realmente têm vários diacríticos, um acima e outro abaixo, e então o programador para fazer a pergunta de quando eles param. Eles poderiam limitá-lo a dois e satisfazer a maioria das pessoas, mas ignoram aqueles que querem ou precisam de três diacríticos para escrever formalmente em seu próprio idioma.
A Microsoft, com ou sem razão, decidiu deixar o usuário decidir quantas notas extras uma pessoa deseja usar. Esse caminho exige um bom programador e uma racionalização difícil a seguir. Eu os apoio totalmente ao permitir isso e ao fato de que eles fazem isso bem .
Por outro lado, se esses personagens estavam faltando, eu gostaria de saber por que eles estavam desaparecidos. Foi uma x
decisão "deixamos isso cair no chão após os sinais diacríticos" ou porque os programadores estão com preguiça de fazê-lo corretamente e potencialmente me expondo a algum estouro de buffer com código oculto nos sinais diacríticos que estão sendo distribuídos para serem executados por o sistema?
A questão simples aqui é que, ao renderizar esses caracteres, posso ver que o sistema está fazendo exatamente o que é solicitado a fazer, em vez de fazer o que acha certo ou, pior ainda, fazer algo potencialmente prejudicial .