Автор Тема: Требуется помощь (кракозябры)  (Прочитано 26079 раз)

Оффлайн миха04

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

Оффлайн NedMaker

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1130
  • The Vigilant Observer
    • nrgizer.msilab.net
Требуется помощь (кракозябры)
« Ответ #1 : 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

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #2 : 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

  • Пользователь
  • **
  • Сообщений: 84
    • http://
Требуется помощь (кракозябры)
« Ответ #3 : 20 Июня 2013, 15:15:53 »
Могу ошибаться, но по моему Char_32 это код символа. 32 это пробел. В Arial есть кирилица, но вот есть ли она в этом рисунке? Открой на компе Программы>Стандартные>Служебные>Таблица символов. Посмотри, посравнивай...

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

Но это все чисто теоретически.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #4 : 20 Июня 2013, 15:52:19 »
mishem, шрифт в игре латинский. Используется от Arial16 до Arial28. Мне кажется, простая перерисовка тут не поможет. На скрине Arial20.
« Последнее редактирование: 20 Июня 2013, 15:54:48 от миха04 »

Оффлайн NedMaker

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1130
  • The Vigilant Observer
    • nrgizer.msilab.net
Требуется помощь (кракозябры)
« Ответ #5 : 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

  • Пользователь
  • **
  • Сообщений: 84
    • http://
Требуется помощь (кракозябры)
« Ответ #6 : 20 Июня 2013, 20:28:28 »
Почитайте здесь. Опять же не уверен что это то что надо. Просто занят сейчас. Наскоком заглядываю что бы отвлечься на пару минут.


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

Вот еще можно почитать.

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

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

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

На попробуй. Добавил кирилицу. Там файл еще текстовый с координатами каждой буквы. Попробуй поменять координаты, посмотрим что получится. Если что то получится.
С размером шрифта не понятно, да и с названием тоже. Подбирал приблизительно. Получилось шрифт Arial Narrow а размер 14 а не 20.  Если что то получится, думаю сможем подогнать как надо.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #7 : 20 Июня 2013, 23:49:47 »
mishem, спасибо за файлы, но не работает. Вообще в игре восемь шрифтов и на каждый задействовано три файла, например для Arial 20 используется  Arial20.imageset, Arial20.png и Arial20.font. Если есть желание поковырятся, то игру можно скачать тут http://yadi.sk/d/3cWVJsO061Nay . Мне хотелось бы, на примере одного шрифта, понять сам принцип замены.

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Требуется помощь (кракозябры)
« Ответ #8 : 21 Июня 2013, 03:57:46 »
Цитата: миха04
Хочу локализовать игру Chirurgie-Simulator, но шрифты имеют формат .png + описание .imageset.... Может быть кто-то надоумит меня, как побороть эту проблему?
Карты шрифтов можно создать при помощи программы Bitmap Font Generator. Вам только вручную в текстовом редакторе придется создавать файлы *.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: скачать. Перевел названия кнопок (файл MainMenu.layout) в главном меню игрушки.
Вот результат:


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

Желаю удачи.


Оффлайн mishem

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

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

Цитировать
Вам только вручную в текстовом редакторе придется создавать файлы
В настройках программы  Bitmap Font Generator Options>Export options установи  Font descriptor XML. Textures соответственно png. После того как создашь шрифт будет файл с расширением *.fnt. Скорми его вот этой программе (написал по быстрому что б в ручную не исправлять) и на выходе получишь то что нужно. Что в другие файлы нужно писать не знаю , не видел.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #10 : 21 Июня 2013, 21:16:24 »
Большое спасибо всем за помощь. Особая благодарность leserg73. На днях попробую с другими шрифтами. Ещё раз спасибо и тема закрывается.

Оффлайн VIPer

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1063
Требуется помощь (кракозябры)
« Ответ #11 : 22 Июня 2013, 17:17:46 »
Так, между прочим... Забавная игрушка  

http://image.jeuxvideo.com/images/pc/c/h/c...3596787-011.jpg

СССР

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #12 : 27 Июня 2013, 15:56:28 »
Пришлось опять вернуться к теме шрифтов. На этот раз проблема с кракозябрами. Часть текста игры находится в ж-к строках ChirurgieSim.exe. и непонятно, куда происходит обращение за шрифтом. То ли в самом exe прописана кодовая страница, то ли ещё где? Скрин прикрепить не могу, не загружается на страницу. Вот ссылка на файл ChirurgieSim.exe http://yadi.sk/d/Sz1gmYLY6FEXe ,переведена строка окна выхода из игры. Шрифты названий инструментов( файлы .layout) берутся из .png файлов и тут всё нормально. А вот например Patient(Пациент), имея шрифт точно такого же вида, но находящийся в ж-к строках .exe, выглядит кракозябрами.
« Последнее редактирование: 27 Июня 2013, 17:15:43 от миха04 »

Оффлайн mishem

  • Пользователь
  • **
  • Сообщений: 84
    • http://
Требуется помощь (кракозябры)
« Ответ #13 : 27 Июня 2013, 18:12:13 »
В Radialix можно менять кодировку (я подозреваю что именно в ней происходит вся ваша работа).



Кликните по этому полю, будет окно.
Попробуйте сразу поменять на utf-8. Если не пойдет, то тогда методом тыка наверно.
« Последнее редактирование: 27 Июня 2013, 18:13:20 от mishem »

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Требуется помощь (кракозябры)
« Ответ #14 : 27 Июня 2013, 19:02:52 »
mishem, смена кодировки не помогает. Мне кажется, что где-то в коде программы зашито обозначение кодовой страницы. Скрин окна выхода из игры.