MSI Lab - Форум по русификации
Основные форумы => RusMe - РусМи! => Тема начата: миха04 от 20 Июня 2013, 12:09:47
-
Хочу локализовать игру Chirurgie-Simulator, но шрифты имеют формат .png + описание .imageset. Пробовал делать шрифт в BitFonter3, но результат нулевой, описание шрифта сильно отличается от игрового. Выложил сюда http://yadi.sk/d/_uvDTiWu6-p3y (http://yadi.sk/d/_uvDTiWu6-p3y) в архиве два файла игры, соответствующие шрифту Arial20. Может быть кто-то надоумит меня, как побороть эту проблему?
-
миха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. Но опять же какие назначать имена для символов загадка.
-
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" />
-
Могу ошибаться, но по моему Char_32 это код символа. 32 это пробел. В Arial есть кирилица, но вот есть ли она в этом рисунке? Открой на компе Программы>Стандартные>Служебные>Таблица символов. Посмотри, посравнивай...
XPos="185" YPos="128" это я думаю координаты от верхнего угла экрана. Думаю что в игре принудительно выставляется разрешение экрана 1024х768 - NativeHorzRes="1024" NativeVertRes="768"
Но это все чисто теоретически.
-
mishem, шрифт в игре латинский. Используется от Arial16 до Arial28. Мне кажется, простая перерисовка тут не поможет. На скрине Arial20.
-
Могу ошибаться, но по моему Char_32 это код символа. 32 это пробел.
Char_32 это действительно код символа, но на этом месте в изображении находится точка а не пробел, если посмотреть остальные строки то символы не привязаны к кодам которые используются в шрифтах, т.е. с таблицей символов ничего общего нет.
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" />
с этим стало еще запутанее (((
-
Почитайте здесь. (http://ru.wikipedia.org/wiki/X_Pixmap) Опять же не уверен что это то что надо. Просто занят сейчас. Наскоком заглядываю что бы отвлечься на пару минут.
HorzAdvance это похоже переменная указывает смещение. Но смещение куда и относительно чего?
Char_32 это действительно код символа
Похоже на то. Может быть они (разработчики) для себя составили свое обозначение символов. Не обязательно что это должна быть общепринятая кодировка.
Вот еще (http://www.wylek.ru/forum/3-549-1) можно почитать.
Char_32 это действительно код символа, но на этом месте в изображении находится точка а не пробел, если посмотреть остальные строки то символы не привязаны к кодам которые используются в шрифтах, т.е. с таблицей символов ничего общего нет.
Ну вот открыл я сейчас в фотошопе рисунок. По этим координатам ничего не находится. А соответствено вполне возможно что там пробел. Смотрю следующий символ 33. Это восклицательный знак. Свожу направляющие по координатам и там действительно !. Смотрю 35 символ, это решетка #. Тоже совпадает по координатам. Так что все таки это коды ASCII символов .
Получается нужно просто добавить кирилицу и указать координаты.
Ну не совсем просто.
На попробуй. (http://rghost.ru/46898602) Добавил кирилицу. Там файл еще текстовый с координатами каждой буквы. Попробуй поменять координаты, посмотрим что получится. Если что то получится.
С размером шрифта не понятно, да и с названием тоже. Подбирал приблизительно. Получилось шрифт Arial Narrow а размер 14 а не 20. Если что то получится, думаю сможем подогнать как надо.
-
mishem, спасибо за файлы, но не работает. Вообще в игре восемь шрифтов и на каждый задействовано три файла, например для Arial 20 используется Arial20.imageset, Arial20.png и Arial20.font. Если есть желание поковырятся, то игру можно скачать тут http://yadi.sk/d/3cWVJsO061Nay (http://yadi.sk/d/3cWVJsO061Nay) . Мне хотелось бы, на примере одного шрифта, понять сам принцип замены.
-
Хочу локализовать игру 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)
По аналогии создайте остальные шрифты и смело переводите игру на русский язык.
Желаю удачи.
-
Если есть желание поковырятся
В том то и дело что особого желания нет. Занят другими делами. Если с наскока получится понять, хорошо. Нет, то извини.
Вся игра мне не нужна. Скинь файлы к самому крупному шрифту и не белому. А еще лучше все. Что б понятнее было.
Посмотрю что к чему между делом. Лучше конечно инфу в интернете искать, а не изобретать велосипед.
Пока писал ответ, решение уже выложили.
Вам только вручную в текстовом редакторе придется создавать файлы
В настройках программы Bitmap Font Generator Options>Export options установи Font descriptor XML. Textures соответственно png. После того как создашь шрифт будет файл с расширением *.fnt. Скорми его вот этой программе (http://rghost.ru/46907449) (написал по быстрому что б в ручную не исправлять) и на выходе получишь то что нужно. Что в другие файлы нужно писать не знаю , не видел.
-
Большое спасибо всем за помощь. Особая благодарность leserg73. На днях попробую с другими шрифтами. Ещё раз спасибо и тема закрывается.
-
Так, между прочим... Забавная игрушка
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)
-
Пришлось опять вернуться к теме шрифтов. На этот раз проблема с кракозябрами. Часть текста игры находится в ж-к строках ChirurgieSim.exe. и непонятно, куда происходит обращение за шрифтом. То ли в самом exe прописана кодовая страница, то ли ещё где? Скрин прикрепить не могу, не загружается на страницу. Вот ссылка на файл ChirurgieSim.exe http://yadi.sk/d/Sz1gmYLY6FEXe (http://yadi.sk/d/Sz1gmYLY6FEXe) ,переведена строка окна выхода из игры. Шрифты названий инструментов( файлы .layout) берутся из .png файлов и тут всё нормально. А вот например Patient(Пациент), имея шрифт точно такого же вида, но находящийся в ж-к строках .exe, выглядит кракозябрами.
-
В Radialix можно менять кодировку (я подозреваю что именно в ней происходит вся ваша работа).
(http://i5.pixs.ru/thumbs/9/1/1/2706png_6649856_8313911.jpg) (http://pixs.ru/showimage/2706png_6649856_8313911.png)
Кликните по этому полю, будет окно.
Попробуйте сразу поменять на utf-8. Если не пойдет, то тогда методом тыка наверно.
-
mishem, смена кодировки не помогает. Мне кажется, что где-то в коде программы зашито обозначение кодовой страницы. Скрин окна выхода из игры.
-
Такое впечатление что эта программа не поддерживает юникод, и отображает любые символы в кодировке 1252.
Вот здесь (http://blackstar.clanbb.ru/viewtopic.php?id=858) интересная тема. Прочтение ее вряд ли чем поможет, если только для ознакомительных целей ...
-
Программа обращается к графическим шрифтам, их я заменил, и при этом она выбирает только латиницу, игнорируя русские буквы. Я подозреваю, что где-то в екзешнике прописана кодовая страница 1252 или 1250. Часть строк берётся из файлов .layout и они переводятся нормально, засада только с теми, что в ChirurgieSim.exe.
-
Программа обращается к графическим шрифтам...
Все верно. Поэтому можно сделать совмещенную карту шрифтов: верхнюю половину таблицы ASCII (символы 128-255) в кодовой странице 1252 заменить на кириллицу. Для этого в программе "Bitmap Font Generator", кроме юникодной карты символов нужно сделать OEM карту с теми же самыми параметрами.
[a href="http://savepic.org/3858622.htm" target="_blank"]
-
leserg73, что бы я делал без вашей помощи. Похоже придётся переделывать почти все шрифты.
И вот ещё вопрос, как сделать описание к совмещённому шрифту? Я, честно говоря не в курсе, как в графическом редакторе высчитывать расположение символов.
-
как в графическом редакторе высчитывать расположение символов.
Не нужно ничего высчитывать!
Похоже придётся переделывать почти все шрифты.
Все можно сделать намного проще, без переделки графических файлов с картами символов (умная мысля приходит опосля ). Достаточно скопировать описание символов кирилицы и заменить ими описание символов латиницы для верхней половины таблицы ASCII. Посмотрите на таблицы символов с кириллицей (windows-1251) и латиницей (windows-1252):
[a href="http://savepic.org/3833982.htm" target="_blank"]
-
leserg73, большое спасибо за объяснение. Буду пробовать. Я, собственно говоря, пошёл простейшим путём - для кракозябр делал в OEM, а для остальных (которые перестали отображаться после установки нового шрифта) изменял имя на другой размер. Не лучший метод конечно, но умнее в голову ничего не пришло.
-
Тему можно пока закрыть.