Показать сообщение отдельно
Старый 17.12.2014, 05:46   #11
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Смесь: Неочевидное + Оптимизация

Понял суть, спасибо.
Хардкодить не наш метод, ибо 76 комбинаций, начиная от : ) и заканчивая :troll:
Всё же эти посимвольные проверки окажутся медленнее чем поиск подстроки всей текстовой комбинации смайла (инфа почти 100%).

Волшебный String.indexOf ()

Давным-давно жил-был битмапный шрифт. И было у него несколько проверок на диапазоны символов, которые позволяли ему рисоваться правильно, в соответствие с задумкой Вызывателя функций.

Что за проверки? Зачем?

Символы в картинках поделены на блоки - русские маленькие, рус большие, английские маленькие, большие, числа, символы-закорючки.

Для них и были проверки некие в цикле по тексту.
char c text.charAt (k);
if (
>= '0' && <= '9') {
    
block DIGITS;
    
offset k;

И так для всех диапазонов (русские, англ, закорючки).

Однако! Это оказалось медленнее, чем
offset ALL_FONT_CHARS.indexOf (text.charAt (k)); 
ALL_FONT_CHARS содержит все доступные для отрисовки символы шрифта.

Соответственно, при загрузке шрифта требуется дополнительный массив, в котором будут соответсвия индексов и блоков-картинок, что совсем не накладно.

Кстати, буквы ёЁ стоят особняком от остальных русских букв в таблице символов, что совсем нектати.

Последний раз редактировалось Жека, 17.12.2014 в 07:58.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (17.12.2014)