Можете сами придумать алгоритм. Или могу предложить: поиск длинны строки в отображаемых юнитах, функция для обработки символа как возможно мультибайтового идет колбеком в один из регистров, в другой регистр поступает ссылка на строку, код колбека можно реализовать, например как UTF8, но в основном коде учесть, что принцип построения многострочных символов может быть иным и обрабатывается строго в коде колбека, длину в отображаемых символах можно вернуть в любой удобный регистр. Можно то же самое под UTF16. А вообще может вам интереснее что то свое.