Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Leserg, так ты реверсил экзешник? Смотрел что там перед шрифтами есть? Или мне уже не нужно вмешиваться? Примерное решение такой беды написано в моем опусе Борьба с крякозябликами. Часть вторая
Поставил бряк (на картинке видно) и запустил программу. В пошаговом режиме(при заходе в функцию) вижу из дампа памяти считывается идентификатор языка 409h (1033 - английский) и кодовая страница 4Е4h (1252). Исправил в памяти на 419 (1049 - русский) и 4Е3h (1251):
Поставил бряк (на картинке видно) и запустил программу. В пошаговом режиме(при заходе в функцию) вижу из дампа памяти считывается идентификатор языка 409h (1033 - английский) и кодовая страница 4Е4h (1252). Исправил в памяти на 419 (1049 - русский) и 4Е3h (1251):
Поставил бряк (на картинке видно) и запустил программу. В пошаговом режиме(при заходе в функцию) вижу из дампа памяти считывается идентификатор языка 409h (1033 - английский) и кодовая страница 4Е4h (1252). Исправил в памяти на 419 (1049 - русский) и 4Е3h (1251):
Продолжил выполнение. Кракозяблики как были, так и остались. Что делать дальше - не знаю. Еще раз повторю программа комплексная - куча DLL-ок и тем оформлений, где натыканы эти шрифты. Где и как это все увязано, мне разобраться сложно.
Основная проблема в том, что программа использует кодовую страницу 1252. Это частично решается правкой реестра (добавления параметров типа "Arial,0"="Arial,204" - то есть замена набора символов ANSI_CHARSET на RUSSIAN_CHARSET для каждого конкретного шрифта, который используется программой).
Цитата: Nexus
Примерное решение такой беды напимано в моем опусе
Да нет, тут все намного сложнее. Хотя я могу и ошибаться.
Основная проблема в том, что программа использует кодовую страницу 1252.
Если проблема решается так, то ее легко решить. Видимо где-то перед вызовом определенного шрифта или API функции CreateFont стоит константа 0, что означает как ANSI_CHARSET. Ну а если кряки не убираются даже через реестр, то тут уж придется попотеть. Это как раз был бы очень худой случай. teodorrrro когда-то уже давал одну музыкальную программу, где и встречался такой случай. Но если teodorrrro не хочет править экзешник, то тогда какой смысл трясти эту тему дальше?
Значит не здесь проблема. Еще там много API функций CreateFontIndirectA - 52 шт. Буквально недавно в одной программе мне пришлось их патчить из-за ANSI_CHARSET. Но в этой программе я ума не приложу, как к ним подступиться.
Да и много их очень. Каждую патчить запариться можно.
Цитата: Nexus
Но если teodorrrro не хочет править экзешник, то тогда какой смысл трясти эту тему дальше?
teodorrrro поднял этот вопрос потому, что кроме самой программе в ней еще куча-мала плагинов, которые он перевел. И вот во многих из них кириллица не отображается даже при замене кодовых страниц, как в реестре, так и в системных файлах. Такая байда была с продукцией Magix по обработке видео. Но когда разработчики добавили поддержку русского, то все стало нормально. В программах же по обработке аудио такой подержки пока нет, вот и получается траходром. Чтобы заставить программу отобразить кириллицу, надо на уши всю систему поставить.
Я пока отложил программу в сторону. Может позже гляну еще раз, если осенит какая-нибудь идея.
Еще там много API функций CreateFontIndirectA - 52 шт. Буквально недавно в одной программе мне пришлось их патчить из-за ANSI_CHARSET.
О, а такое мне еще не встречалось, что именно эта функция тоже отвечает за шрифты. Значит будем расширять кругозор Я только недавно встретился с CreateFontA , когда мучил 3D Via Tools и случайно наткнулся на нее.
Цитата: Leserg
Но в этой программе я ума не приложу, как к ним подступиться.
Поставь на них бряк и посмотри на нижнее поле стека - там должна быть длинющая строка с параметрами и среди них будет CharSet, он должен быть всегда 1.
Цитата: Leserg
Я пока отложил программу в сторону. Может позже гляну еще раз, если осенит какая-нибудь идея.
Ладно, завтра качну архив, пободаюсь и я с ним, самому аж интересно что там Я только недавно встретился с CreateFontA , когда мучил 3D Via Tools и случайно наткнулся на нее.
Цитата: Leserg
Но в этой программе я ума не приложу, как к ним подступиться.
Поставь на них бряк и посмотри на нижнее поле стека - там должна быть длинющая строка с параметрами и среди них будет CharSet, он должен быть всегда 1.
Цитата: Leserg
Я пока отложил программу в сторону. Может позже гляну еще раз, если осенит какая-нибудь идея.
Ладно, завтра качну архив, пободаюсь и я с ним, самому аж интересно что там Я только недавно встретился с CreateFontA , когда мучил 3D Via Tools и случайно наткнулся на нее.
Цитата: Leserg
Но в этой программе я ума не приложу, как к ним подступиться.
Поставь на них бряк и посмотри на нижнее поле стека - там должна быть длинющая строка с параметрами и среди них будет CharSet, он должен быть всегда 1.
Цитата: Leserg
Я пока отложил программу в сторону. Может позже гляну еще раз, если осенит какая-нибудь идея.
Ладно, завтра качну архив, пободаюсь и я с ним, самому аж интересно что там
Такая байда была с продукцией Magix по обработке видео. Но когда разработчики добавили поддержку русского, то все стало нормально. В программах же по обработке аудио такой подержки пока нет
может стоит автору написать? набрал в гугле Magix Corpid, так там эту проблему чуть ли не с нового века решить пытаются
Возможно всё! На невозможное просто требуется больше времени. Мудрец из Шангри Ла