Те, кто заглядывали в тред "Рандомный скрин вашего проекта" и видели последнее моё видео, должны догадаться, почему я создал новую тему. Короче говоря, дело такое: если titles.txt сохранён в кодировке ANSI, то VGUI прекрасно понимает кириллицу, и gHUD.m_TextMessage.BufferedLocaliseTextString прекрасно выполняет свою работу для VGUI. Но в этом случае gHUD.DrawHudString не рисует вообще никакого текста, адаптированного с помощью BufferedLocaliseTextString.
Дальше - интереснее. Если titles.txt сохранён в кодировке UTF-8, то VGUI рисует кракозябры вместо кириллицы, зато gHUD.DrawHudString прекрасно пишет кириллицей.
Вопрос: это движковый парсер титров виноват, или BufferedLocaliseTextString? Если решение не будет найдено, я забью на локализацию и сделаю все тексты на английском. Однако, хотелось бы, чтобы в будущем энтузиасты-собиратели Redux-ов могли перевести текст на доступные языки, которые пишутся не только латиницей.
DrawHudString в свежих голдсорсах на самом деле проходит через vgui2, у которого полная поддержка Unicode. Но в свою очередь он не знает о других кодировках.
В ANSI кириллицы нет, скорее всего речь идёт о CP1251, с которым работает vgui1, но выше упомянутый vgui2 просто не понимает.
Решением было бы перекодировать налету из CP1251 в UTF-8 где это необходимо. Или наоборот, как больше нравится.
Добавлено 12-05-2021 в 22:23:
У этого решения конечно есть обратная сторона -- оригинальный Ксаш и старые голдсорсы. Они Unicode не принимают вообще.
Результата 0. Ну то есть не совсем. С вызовами Con_UtfProcessChar кириллицы нету, а без вызовов кракозябры. Пробовал выставлять g_codepage 1251, 1252, 0 - результат одинаковый. Пока до меня не дошло, в чём проблема.
А русскую локализацию в titles.txt никак на лиц. версии не сделать, я так понимаю? Вот сам столкнулся с подобной проблемой.
__________________
To start the match, Let's draw the sketch, Then add some magic from your heart!
Take gold and blue, Take silver too and put a sparkle in your art!
I love that dress, I love It, YES!!! I love the way It makes me feel.
I love the shoes, I love to choose, It was a dream and now It's real!
XF-Alien в лицензионной версии даже нет парсера resource/modname_english.txt в клиентке оригинальной халфы. Какая вообще локализация? Вальва сделала это только для сраной каэсочки, точнее, для VGUI2, который в этой каэсочке используется.
Я сейчас попробую найти соответствие символов разных кодировок, и попытаюсь вручную подменять номера. Может быть получится.
Добавлено 13-05-2021 в 19:12:
Проблема решена с помощью этой таблицы. Сохраняем titles.txt в ANSI (cp1251) и приводим функции, что я выкладывал выше, к такому виду:
C++ Source Code:
1
int pfnDrawCharacter(int x, int y, int ch, int r, int g, int b)
Также, нужны хорошие русифицированные шрифты для VGUI за авторством Vit_amiN'а. Теперь кириллица есть как во VGUI, так и в CHud::DrawHudString. Способ подходит для стим-халфы, и возможно, свенкоопа.
Добавлено 13-05-2021 в 19:32:
Цитата:
XF-Alien писал: А русскую локализацию в titles.txt никак на лиц. версии не сделать, я так понимаю?
Нужно иметь отдельную копию titles.txt под каждую локализацию. Благо, стим-версия умеет в папки modname_язык.