Unicode претендует на описание текста в том числе на русском языке
Unicode претендует на
представление текста.
если я начну в документации к русскоязычному текстовому редактору массово пользоваться термином графема вместо термина буква или символ - меня лишат премии или уволят
Тут нужно понять, на кого рассчитан редактор и документация. На практике в каком-нибудь WYSIWYG редакторе скорее всего нужно сразу ко всему что попало в редактор NFD применять.
Во что превратится код быстрых алгоритмов поиска подстрок, заточенных под символы фиксированной длины, для unicode текста я заранее в ужасе, как бы они не стали медленнее последовательного просмотра, или вообще нерабочими.
Тут надо принять волевое решение, считать ли вхождения без combining mark вхождениями. Если считать - то перед обработкой срубить всё странное. Если не считать - то проверять, что справа от найденного вхождения нет ничего, что должно было бы быть во вхождении.
букв (знаков, символов, для нас это всё синонимы)
Тем не менее, если кто-то говорит о unicode и хочет, чтобы его поняли - ему ИМХО лучше пользоваться стандартной терминологией.
Кажется, такой алгоритм не должен сломаться ни если строка кодируется в какой-то из UTF16, ни в UTF-8 (UTF-32 и подавно, но по понятным причинам она почти не используется).
Только если нас устраивает, что в строке
U+0061 U+0301 U+0062 находится
a, находится
b, причем визуально на соседних позициях, а вот
ab уже не находится.
Капитализация тоже доставляет
Она еще и за пределы ASCII выводит - в турецком
U+0049 (I) в нижнем регистре -
U+0131 (ı).