MSI Lab - Форум по русификации

Основные форумы => RusMe - РусМи! => Тема начата: миха04 от 20 Июня 2013, 12:09:47

Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 20 Июня 2013, 12:09:47
Хочу локализовать игру Chirurgie-Simulator, но шрифты имеют формат .png + описание .imageset. Пробовал делать шрифт в BitFonter3, но результат нулевой, описание шрифта сильно отличается от игрового. Выложил сюда http://yadi.sk/d/_uvDTiWu6-p3y (http://yadi.sk/d/_uvDTiWu6-p3y) в архиве два файла игры, соответствующие шрифту Arial20. Может быть кто-то надоумит меня, как побороть эту проблему?
Название: Требуется помощь (кракозябры)
Отправлено: NedMaker от 20 Июня 2013, 14:31:11
миха04

Каждая строчка в Arial20.imageset это символы из Arial20.png

XPos="185" YPos="128" - координаты символа от верхнего левого угла изображения в пикселях
Width="1" Height="1" - соответственно ширина и высота символа от этих координат
XOffset="0" YOffset="15" - сдвиг центровки относительно очка символа
Image Name="Char_32" - а вот это самое сложное! Имя символа, но где оно назначается? Посмотрев полученные результаты из Arial20.png привязки к юникоду я не обнаружил.
Для перевода необходимо дорисовать кириллицу в Arial20.png и прописать дополнительные строки для каждого символа в Arial20.imageset. Но опять же какие назначать имена для символов загадка.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 20 Июня 2013, 14:36:33
NedMaker, имеется ещё одна папка Fonts, где расположен файл Arial20.font. Вот начало текста:

<?xml version="1.0" ?>
<Font Name="Arial20" Filename="Arial20.imageset" Type="Pixmap" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="false">
 <Mapping Codepoint="32" Image="Char_32" HorzAdvance="5" />
 <Mapping Codepoint="33" Image="Char_33" HorzAdvance="5" />
 <Mapping Codepoint="34" Image="Char_34" HorzAdvance="6" />
 <Mapping Codepoint="35" Image="Char_35" HorzAdvance="9" />
 <Mapping Codepoint="36" Image="Char_36" HorzAdvance="9" />
 <Mapping Codepoint="37" Image="Char_37" HorzAdvance="15" />
 <Mapping Codepoint="38" Image="Char_38" HorzAdvance="11" />
 <Mapping Codepoint="39" Image="Char_39" HorzAdvance="3" />
Название: Требуется помощь (кракозябры)
Отправлено: mishem от 20 Июня 2013, 15:15:53
Могу ошибаться, но по моему Char_32 это код символа. 32 это пробел. В Arial есть кирилица, но вот есть ли она в этом рисунке? Открой на компе Программы>Стандартные>Служебные>Таблица символов. Посмотри, посравнивай...

XPos="185" YPos="128" это я думаю координаты от верхнего угла экрана. Думаю что в игре принудительно выставляется разрешение экрана 1024х768 - NativeHorzRes="1024" NativeVertRes="768"

Но это все чисто теоретически.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 20 Июня 2013, 15:52:19
mishem, шрифт в игре латинский. Используется от Arial16 до Arial28. Мне кажется, простая перерисовка тут не поможет. На скрине Arial20.
Название: Требуется помощь (кракозябры)
Отправлено: NedMaker от 20 Июня 2013, 16:38:56
Цитата: mishem
Могу ошибаться, но по моему Char_32 это код символа. 32 это пробел.
Char_32 это действительно код символа, но на этом месте в изображении находится точка а не пробел, если посмотреть остальные строки то символы не привязаны к кодам которые используются в шрифтах, т.е. с таблицей символов ничего общего нет.

Цитата: миха04
NedMaker, имеется ещё одна папка Fonts, где расположен файл Arial20.font. Вот начало текста:

<?xml version="1.0" ?>
<Font Name="Arial20" Filename="Arial20.imageset" Type="Pixmap" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="false">
 <Mapping Codepoint="32" Image="Char_32" HorzAdvance="5" />
 <Mapping Codepoint="33" Image="Char_33" HorzAdvance="5" />
 <Mapping Codepoint="34" Image="Char_34" HorzAdvance="6" />
 <Mapping Codepoint="35" Image="Char_35" HorzAdvance="9" />
 <Mapping Codepoint="36" Image="Char_36" HorzAdvance="9" />
 <Mapping Codepoint="37" Image="Char_37" HorzAdvance="15" />
 <Mapping Codepoint="38" Image="Char_38" HorzAdvance="11" />
 <Mapping Codepoint="39" Image="Char_39" HorzAdvance="3" />
с этим стало еще запутанее (((
Название: Требуется помощь (кракозябры)
Отправлено: mishem от 20 Июня 2013, 20:28:28
Почитайте здесь. (http://ru.wikipedia.org/wiki/X_Pixmap) Опять же не уверен что это то что надо. Просто занят сейчас. Наскоком заглядываю что бы отвлечься на пару минут.


HorzAdvance это похоже переменная указывает смещение. Но смещение куда и относительно чего?
Цитировать
Char_32 это действительно код символа
Похоже на то. Может быть они (разработчики)  для себя составили свое обозначение символов. Не обязательно что это должна быть общепринятая кодировка.

Вот еще (http://www.wylek.ru/forum/3-549-1) можно почитать.

Цитата: NedMaker
Char_32 это действительно код символа, но на этом месте в изображении находится точка а не пробел, если посмотреть остальные строки то символы не привязаны к кодам которые используются в шрифтах, т.е. с таблицей символов ничего общего нет.
Ну вот открыл я сейчас в фотошопе рисунок. По этим координатам ничего не находится. А соответствено вполне возможно что там пробел.  Смотрю следующий символ 33. Это восклицательный знак. Свожу направляющие по координатам и там действительно !.  Смотрю 35 символ, это решетка #. Тоже совпадает по координатам. Так что все таки это коды ASCII символов .

Получается нужно просто добавить кирилицу и указать координаты.

Ну не совсем просто.

На попробуй. (http://rghost.ru/46898602) Добавил кирилицу. Там файл еще текстовый с координатами каждой буквы. Попробуй поменять координаты, посмотрим что получится. Если что то получится.
С размером шрифта не понятно, да и с названием тоже. Подбирал приблизительно. Получилось шрифт Arial Narrow а размер 14 а не 20.  Если что то получится, думаю сможем подогнать как надо.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 20 Июня 2013, 23:49:47
mishem, спасибо за файлы, но не работает. Вообще в игре восемь шрифтов и на каждый задействовано три файла, например для Arial 20 используется  Arial20.imageset, Arial20.png и Arial20.font. Если есть желание поковырятся, то игру можно скачать тут http://yadi.sk/d/3cWVJsO061Nay (http://yadi.sk/d/3cWVJsO061Nay) . Мне хотелось бы, на примере одного шрифта, понять сам принцип замены.
Название: Требуется помощь (кракозябры)
Отправлено: leserg73 от 21 Июня 2013, 03:57:46
Цитата: миха04
Хочу локализовать игру Chirurgie-Simulator, но шрифты имеют формат .png + описание .imageset.... Может быть кто-то надоумит меня, как побороть эту проблему?
Карты шрифтов можно создать при помощи программы Bitmap Font Generator (http://www.angelcode.com/products/bmfont/). Вам только вручную в текстовом редакторе придется создавать файлы *.font и *.imageset соответствующего формата. Но это не трудно, т.к. все необходимые параметры данная утилита генерит (коды символов, координаты, смещения и прочие параметры).

Например, программа создает описание карты шрифтов в следующем формате:
char id=32   x=451   y=153   width=3     height=1     xoffset=-1    yoffset=18    xadvance=5     page=0  chnl=15
char id=33   x=410   y=131   width=3     height=12    xoffset=1     yoffset=3     xadvance=5     page=0  chnl=15
char id=34   x=362   y=154   width=6     height=4     xoffset=0     yoffset=3     xadvance=6     page=0  chnl=15
В игре применяется такой формат (файлы *.imageset):
  
  
  
Я думаю, что здесь несложно разобраться где, какой параметр. Обратите внимание, что параметр  "xadvance=..." прописывается в других файлах - *.font. И ему соответствует параметр - "HorzAdvance=...". Параметры "page=..." и "chnl=" нигде не используются.

Например, я сделал шрифт Arial20: скачать (http://rghost.ru/46906909). Перевел названия кнопок (файл MainMenu.layout) в главном меню игрушки.
Вот результат:
(http://savepic.org/3674691m.png) (http://savepic.org/3674691.htm)

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

Желаю удачи.

Название: Требуется помощь (кракозябры)
Отправлено: mishem от 21 Июня 2013, 06:18:05
Цитировать
Если есть желание поковырятся
В том то и дело что особого желания нет. Занят другими делами. Если с наскока получится понять, хорошо. Нет, то извини.
Вся игра мне не нужна. Скинь файлы к самому крупному шрифту и не белому.  А еще лучше все. Что б понятнее было.
Посмотрю что к чему между делом. Лучше конечно инфу в интернете искать, а не изобретать велосипед.

Пока писал ответ, решение уже выложили.

Цитировать
Вам только вручную в текстовом редакторе придется создавать файлы
В настройках программы  Bitmap Font Generator Options>Export options установи  Font descriptor XML. Textures соответственно png. После того как создашь шрифт будет файл с расширением *.fnt. Скорми его вот этой программе (http://rghost.ru/46907449) (написал по быстрому что б в ручную не исправлять) и на выходе получишь то что нужно. Что в другие файлы нужно писать не знаю , не видел.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 21 Июня 2013, 21:16:24
Большое спасибо всем за помощь. Особая благодарность leserg73. На днях попробую с другими шрифтами. Ещё раз спасибо и тема закрывается.
Название: Требуется помощь (кракозябры)
Отправлено: VIPer от 22 Июня 2013, 17:17:46
Так, между прочим... Забавная игрушка  

http://image.jeuxvideo.com/images/pc/c/h/c...3596787-011.jpg (http://image.jeuxvideo.com/images/pc/c/h/chirurgie-simulator-pc-1353596787-011.jpg)
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 27 Июня 2013, 15:56:28
Пришлось опять вернуться к теме шрифтов. На этот раз проблема с кракозябрами. Часть текста игры находится в ж-к строках ChirurgieSim.exe. и непонятно, куда происходит обращение за шрифтом. То ли в самом exe прописана кодовая страница, то ли ещё где? Скрин прикрепить не могу, не загружается на страницу. Вот ссылка на файл ChirurgieSim.exe http://yadi.sk/d/Sz1gmYLY6FEXe (http://yadi.sk/d/Sz1gmYLY6FEXe) ,переведена строка окна выхода из игры. Шрифты названий инструментов( файлы .layout) берутся из .png файлов и тут всё нормально. А вот например Patient(Пациент), имея шрифт точно такого же вида, но находящийся в ж-к строках .exe, выглядит кракозябрами.
Название: Требуется помощь (кракозябры)
Отправлено: mishem от 27 Июня 2013, 18:12:13
В Radialix можно менять кодировку (я подозреваю что именно в ней происходит вся ваша работа).

(http://i5.pixs.ru/thumbs/9/1/1/2706png_6649856_8313911.jpg) (http://pixs.ru/showimage/2706png_6649856_8313911.png)

Кликните по этому полю, будет окно.
Попробуйте сразу поменять на utf-8. Если не пойдет, то тогда методом тыка наверно.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 27 Июня 2013, 19:02:52
mishem, смена кодировки не помогает. Мне кажется, что где-то в коде программы зашито обозначение кодовой страницы. Скрин окна выхода из игры.
Название: Требуется помощь (кракозябры)
Отправлено: mishem от 27 Июня 2013, 21:28:07
Такое впечатление что эта программа не поддерживает юникод, и отображает любые символы в кодировке 1252.
Вот здесь (http://blackstar.clanbb.ru/viewtopic.php?id=858) интересная тема. Прочтение ее вряд ли чем поможет, если только для ознакомительных целей ...
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 27 Июня 2013, 23:00:09
Программа обращается к графическим шрифтам, их я заменил, и при этом она выбирает только латиницу, игнорируя русские буквы. Я подозреваю, что где-то в екзешнике прописана кодовая страница 1252 или 1250. Часть строк берётся из файлов .layout и они переводятся нормально, засада только с теми, что в ChirurgieSim.exe.
Название: Требуется помощь (кракозябры)
Отправлено: leserg73 от 28 Июня 2013, 04:30:28
Цитата: миха04
Программа обращается к графическим шрифтам...
Все верно. Поэтому можно сделать совмещенную карту шрифтов: верхнюю половину таблицы ASCII (символы 128-255) в кодовой странице 1252 заменить на кириллицу. Для этого в программе "Bitmap Font Generator", кроме юникодной карты символов нужно сделать OEM карту с теми же самыми параметрами.

[a href="http://savepic.org/3858622.htm" target="_blank"]
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 28 Июня 2013, 10:19:42
leserg73, что бы я делал без вашей помощи. Похоже придётся переделывать почти все шрифты.

И вот ещё вопрос, как сделать описание к совмещённому шрифту? Я, честно говоря не в курсе, как в графическом редакторе высчитывать расположение символов.
Название: Требуется помощь (кракозябры)
Отправлено: leserg73 от 29 Июня 2013, 02:48:21
Цитировать
как в графическом редакторе высчитывать расположение символов.
Не нужно ничего высчитывать!
Цитировать
Похоже придётся переделывать почти все шрифты.
Все можно сделать намного проще, без переделки графических файлов с картами символов (умная мысля приходит опосля  ). Достаточно скопировать описание символов кирилицы и заменить ими описание символов латиницы для верхней половины таблицы ASCII. Посмотрите на таблицы символов с кириллицей (windows-1251) и латиницей (windows-1252):

[a href="http://savepic.org/3833982.htm" target="_blank"]
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 29 Июня 2013, 21:25:34
leserg73, большое спасибо за объяснение. Буду пробовать. Я, собственно говоря, пошёл простейшим путём - для кракозябр делал в OEM, а для остальных (которые перестали отображаться после установки нового шрифта) изменял имя на другой размер. Не лучший метод конечно, но умнее в голову ничего не пришло.
Название: Требуется помощь (кракозябры)
Отправлено: миха04 от 28 Июля 2013, 21:19:24
Тему можно пока закрыть.