Вы не совсем честно оцениваете работу через mbstring. Следующая реализация на mbstring дает примерно такой же результат по времени что и реализация через iconv.
Это значит что номера в диапазонах 8-800-000-xxxx — 8-800-099-xxxx и 8-800-800-xxxx — 8-800-999-xxxx закреплены за Казахстаном.
А про 8-800 написано в статье Список негеографических телефонных кодов России.
Для лигатур в OpenType шрифтах можно задать символы подстановки через feature liga, так что в теории это возможно, но на практике не всегда работает т.к. эти вещи не всеми подерживаются.
Ну дело в том что я сперва проверил, а потом спросил :)
Например это можно сделать в Far'е. Я так делаю когда невозможно удалить файл (например он запущен и процесс невозможно прибить) — переименовываю его, а потом удаляю после перезагрузки.
У меня жена как-то поймала винлок: мышь за пределы его окна нельзя было вывести, клавиатура работала, но не уверен что по Ctrl+Esc можно было открыть меню Пуск. Но по Alt+tab можно было переключаться между приложениями. Меня спасло то что был запущен Far, а там tasklist + tskill.
А аналогичный вашему варианту mbstring код на iconv у меня выполняется в 10 раз дольше.
А про 8-800 написано в статье Список негеографических телефонных кодов России.
как ни банально
Например это можно сделать в Far'е. Я так делаю когда невозможно удалить файл (например он запущен и процесс невозможно прибить) — переименовываю его, а потом удаляю после перезагрузки.