S> причем тут C# и его способ представления символов? Чем он мешает работе редактора?
Редактор редактирует модель текста. Бывает два типа:
— текстовые редакторы
— текстовые процессоры
В текстовых редакторах модель текста попроще. Текст состоит из строк, строки состоят из символов.
В текстовых процессорах модель посложнее. Есть "Стили", они применяются к фрагментам текста. Есть структура текста (заголовки, абзацы).
Если рассматривать Grapheme Clusters — то это глубоко внутренняя проблема кодировки Unicode.
Простой текстовый редактор работает с одной Grapheme Cluster как с одним знакоместом (прямоугольником),
поэтому можно вообще посчитать, сколько каких Grapheme Cluster-ов в файле в штуках
и перекодировать всё во внутреннюю кодировку с одинаковой битностью, с которой потом и работать.
А для того, чтобы не писать отдельный код для 8, 16, 32 битов на символ — использовать классы-шаблоны и типизировать их типами-структурами такого размера.