Поскольку я, кажется, немного удивился, подумав, что Windows "делает все правильно", я чувствую, что должен опубликовать ответ, чтобы оправдать свою позицию.
В том-то и дело, что у вас есть текст, который говорит операционной системе рендерить безумное количество комбинируемых символов. Проблема в том, что одна операционная система фактически отображает их, а другая - нет, связана с рядом проблем. Одна из этих проблем заключается в том, насколько тщательными были программисты, когда они писали код для их визуализации, а другая - из-за того, что программисты слишком ленивы, чтобы реализовать их должным образом, если вообще вообще.
По сути, все сводится к идее, что письменные языки являются текучими вещами, и что многие символы в определенных языках имеют несколько различных диакритических знаков, которые применяются для изменения произношения символов. Как мы справляемся со всеми этими диакритическими знаками, даем ли мы каждой букве с диакритическим знаком новый символ (что приведет к одному черту из множества новых и почти идентичных символов), или мы создаем набор символов специально для диакритических знаков и сокращаем наш общий алфавит?
Unicode дает нам возможность сделать и то и другое, но при этом программистам, которые должны отображать эти диакритические знаки, приходится иметь дело с тем фактом, что есть некоторые символы, которые на самом деле имеют несколько диакритических знаков, один выше и один ниже, а затем программист имеет задать вопрос только когда они останавливаются. Они могли бы ограничить его до двух и удовлетворить большинство людей, но игнорировать тех, кто хочет или нуждается в трех диакритических знаках, чтобы формально писать на своем родном языке.
Правильно или неправильно Microsoft решила позволить пользователю решать, сколько дополнительных отметок человек хочет использовать. Этот путь требует довольно хорошего программиста и некоторой жесткой рационализации. Я полностью поддерживаю их как в разрешении этого, так и в том, что они делают это хорошо.
С другой стороны, если бы эти персонажи отсутствовали, я бы хотел знать, почему они отсутствовали. Было ли это решение «мы бросаем это на пол после x
диакритических знаков», или это было из-за того, что программисты слишком ленивы, чтобы делать это должным образом и потенциально подвергали меня некоторому переполнению буфера с кодом, скрытым в диакритических знаках, который был передан для выполнения по системе?
Простая проблема заключается в том, что, фактически отображая эти символы, я вижу, что система делает именно то, что ей говорят, а не делает то, что считает правильным, или, что еще хуже, делает что-то потенциально опасное.