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 xdecisã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 .