motofan logo
2 страниц V  1 2 >        
> 

6 шрифтов!, Подробный мануал по их созданию

Dimka
сообщение 23.7.2007, 23:43 Закрепленное сообщение!


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255

Рейтинг: 1029



Методика

Смысл методики заключается в том, что все языки разбиты на 6 групп (вообще 7, но одна не задействована): LATIN (все основные языки); ARABIC; HEBREW; CHINESE; CYRILLIC (не используется и не возможно задействовать); THAI; VIETNAMESE. И для каждой группы определен свой шрифт в лэнге. Например, для группы LATIN определен шрифт под номером $01 в лэнге. В группу LATIN входят ВСЕ языки кроме языков $2D $08 $04 $05 $0B $0C. Вот получается, что можно добавить в лэнг языки из других групп, в эти языки загрузить русские строки и назначить на эти языки дополнительные шрифты, которые конечно нужно добавить в лэнг. В кодовой группе CG15, т.е. DRM находится таблица, в которой находятся указатели на шрифты для каждой группы языков. Получается, необходимо создать специальный лэнг с дополнительными шрифтами, отредактировать DRM и создать патч для переназначения языков группам. Теперь обо всем по порядку.

Создание лэнга

На данном этапе необходимо создать лэнг, в котором будут 6 шрифтов и 6 русских языков, только с разными ID. Редактирование будет происходить естественно через мою программу Moto Lang Editor v2.2 от 7.07.07 и немного через HEX редактор.

Для начала выберем языки, которые будем использовать для замены на русские. Выбрать надо 5 языков, они должны быть редкие и есть еще один нюанс, который я объясню в конце. Я советую брать языки: $0011 – CROATIAN; $0012 – CZECH; $0017 – GREEK; $0018 – HUNGARIAN; $0028 – TURKISH. Лучше выписать языки на листочке, чтоб потом было проще.

Теперь необходимо выбрать 5 не используемых шрифтов в лэнге, которые будут заменены на необходимые нам. Первый – это естественно будет шрифт $02, т.к. это дубль основного шрифта, который не используется. Только с ним связан один нюанс. Это не просто дубль шрифта, а он даже ссылается на основной шрифт $01 и моя программа не дает изменить данный шрифт. Но я специально переделал программу и добавил возможность редактирования данного шрифта, поэтому обязательно необходимо скачать последнюю версию программы 2.2. Для того, чтобы при сохранении в лэнге шрифт $02 сохранился – в этой версии необходимо поставить галочку Separate 1 & 2 font:
Изображение

Далее выбор остальных 4 шрифтов зависит от конкретных лэнгов, в разных не используются разные шрифты. Еще, если в лэнге меньше 16 шрифтов, то можно добавлять свои, в программе для этого есть соответствующая функция (т.е. можно добавлять свои, пока номер шрифта не превысит $0F):
Изображение

Например, во всех лэнгах можно заменять шрифт $06 – этот шрифт служит для подписей софт клавиш, но на моделях с экраном 176*220 он не используется, а на моделях с меньшим экраном, если заменять на шрифт высотой 15 пикселей, т.к. мелкий, то все будет нормально. Еще, во всех лэнгах можно заменять шрифты $0B – это тайские символы и $0C – он вроде вообще нигде не используется. Последний шрифт уж выбирайте сами, например, для прошивок R365 я добавлял 2 шрифта, а на R373 еще $08, т.к. на данной платформе он не используется.

Подробно процесс редактирования шрифта описывать не буду, т.к. это можно прочесть в темах Moto Lang Editor v2.2 от 7.07.07 и Создание Шрифтов . Скажу только, что для замены шрифтов, номер которых больше $02 необходимо иметь шрифты в отдельном файле формата MFF. Чтобы потом, выбрав шрифт – заменить его, нажав в программе Load Font в меню Font. Для того, чтобы получить шрифт в формате MFF надо редактировать два основных шрифта $01 и $02, а потом сохранять их в файл через функцию Save Font в том же меню Font программы Moto Lang Editor v2.2 от 7.07.07 . Это делается для того, чтобы шрифты, которые мы будем сами добавлять, имели тот же набор символов, что и основной шрифт.

Шрифты готовы, теперь необходимо добавить языки, которые будут использованы для назначения на них этих языков. Только добавлять их будем не через программу Moto Lang Editor v2.2 от 7.07.07 , а вручную в HEX редакторе, при чем физически добавлять их даже не будем, а просто в заголовке будем делать ссылку на русский язык. Лучше всего после того, как шрифты сделаны, в лэнге еще удалить все не нужные языки и оставить только русский и естественно английский. К слову, английский язык вообще нельзя удалять, потому что в нем есть информация, которая используется во всех других языках и он является базовым. Удалить языки можно на вкладке Strings кнопкой Delete Language:
Изображение

После удаления языков лэнг необходимо сохранить в программе и открыть его через любой удобный для вас HEX редактор, я использую WinHEX.

Начиная со смещения $000018 идет описание языков, по 48 байт на язык. Например, вот описание английского языка:
Изображение

Первый байт – это номер языка. Вообще размер этой таблицы 12 DWord'ов. Кроме первого байта – это адреса, указатели на определенные таблицы. Еще, кроме первого байта, нас будет интересовать 5-й DWord – это указатель на iTAP таблицу. Значит, теперь задача заключается в том, чтобы следующие 12 DWord'ов за английским языком, которые начинаются с байта $23 (русский язык) скопировать дальше еще 5 раз, при чем 5-й DWord у них убрать, чтоб в этих других языках не было iTAP. Должно получиться следующее:
Изображение

Но сейчас мы получили 6 русских языков, что нам совершенно не нужно, поэтому теперь необходимо сменить ID 5 языков на ID, которые мы выбрали раннее. Т.е. Необходимо первые байты в описании языков заменить на $11 $12 $17 $18 $28. И еще, кроме этого теперь необходимо в заголовке сменить количество языков в лэнге. Если вы до этого удалил все языки кроме английского и русского, как я посоветовал, то теперь у нас будет 2 + 5 = 7 языков в лэнге. Количество языков в лэнге хранится по смещению $000014, т.е. этот байт надо заменить на $07. В итоге должно получиться следующее:
Изображение

Все, лэнг полностью готов, сохраните его.

Редактирование DRM

Сначала необходимо найти таблицу в DRM, которую будем редактировать. В заголовке DRM по смещению $000070 или $00006С находится указатель на эту таблицу. Найти ее не сложно, потому что она имеет характерный вид:
Изображение

На скрине выделенный текст – это вся таблица, а рамкой выделен ее кусок, который мы будем редактировать. Размер этой таблицы – 16*7=112 байт, т.е. на скрине одна строка – это одна запись в таблице. Каждая запись – это описание одной группы языков. Как видно их семь, но 5-я строка – это та самая группа CYRILLIC, которая не задействована в прошивке, поэтому, получается, сделать только 6 шрифтов, а не 7. Редактировать будем 1-е 4 байта в каждом описании. 2 байта – это описание основного шрифта, а следующие 2 байта – это описание шрифта для софт клавиш. При чем каждый байт разделен на 2 части, первые 4 бита это размер, что трогать мы не будем и другие 4 бита – это указатель на номер шрифта в лэнг, его мы и будем менять на те, что сделали в лэнге. Т.е. необходимо у каждой записи в первых 4 байтах заменить вторую часть байта на указатели новых шрифтов. При чем первую часть байта не трогать, если она совпадает с первой часть в первой записи, а если не совпадает, то изменить на нее, но это бывает редко, обычно ее вообще не надо трогать. В итоге должно получиться примерно следующее:
Изображение

Следует еще сделать небольшую оговорку. На моделях с экраном шириной 128 пикселей лучше использовать шрифты высотой 15 пикселей или не менять указатели на шрифты к подписям софт клавиш, чтоб не было глюков.

Создание патча

В прошивке есть код, в котором распределяется какой язык – относится к какой группе. Мы будем менять это распределение, т.е. будем заменять своими, выбранными языками, чтобы отнести их к другим группам.

Вот паттерна для поиска данного кода: 2802D003282CD001282D
И вот для старых моделей с 16 метровыми флэшками: 28026809D003282CD001282D
В этой паттерне $02 меняем на ID первого, выбранного нами языка, т.е. на $12; затем ищем дальше по коду первое появление байта $08, по идее оно будет через 16 байт и меняем на $18; затем ищем байт $04 через 8 байт и меняем его на $28; затем байт $0B через 12 байт меняем на $11; и байт $0C через 8 байт меняем на $17. Например, для R373…49R я получил следующий патч:
Код
[Patch_Info]
Firmware=R373_G_0E.30.49R
Description=Патч для реализации 6 шрифтов.
Author=Dimka
[Patch_Code]
5EA65D: 12
5EA66D: 18
5EA675: 28
5EA681: 11
5EA689: 17

В прошивке – это выглядит следующим образом:
Изображение

Весь код выделен, а байты, которые редактировались, помечены красным цветом. Подробно описывать процесс создания самого патча я тоже не буду, т.к., если вы взялись за это дело, то явно это умеете. wink.gif

Завершающий этап – имена шрифтов

Теперь, если прошить сделанные лэнг и DRM и применить патч, то все должно работать. Но в списке языков будут сплошные Русский, Русский и т.д. Поэтому необходим завершающий штрих, а именно названия языков. Делать это необходимо через пользовательский языковой пакет, т.е. через DNP.PRF во всем известной программе Language_Editor от Random. Номер строки, в которой хранится название языка - $0525, поэтому содержимое DNP.PRF должно выглядеть, например, следующим образом:
Изображение

Еще стоит отметить небольшой нюанс. Со всеми языками, кроме реально русского языка будет небольшая недоработка, в справочнике не будет работать поиск по первой букве, т.к. TAP раскладки, которые хранятся в CG1 будут не правильные. Для исправления этого глюка по моей просьбе и с моей поддержкой GandjaFuzz сделал патч. А Мачо написал небольшой мануальчик по конвертации данного патча на другие платформы (мануал в прикрепленном архиве). Этот патч будет работать только, если точно следовать мануалу, т.е. брать те же языки, что я предложил и т.д.

З.Ы. Хочу обратить внимание, чтоб данный материал абсолютно уникален, выкладывается впервые и данная методика разработана полностью мной. Поэтому выкладывание на других форумах и ресурсах только при указании на первоисточник, и с указанием моего Ника! cool.gif

Сообщение отредактировал Dimka - 15.10.2007, 11:45
Прикрепленный файл 6_fonts_manual.rar   ( 34.27 килобайт ) Кол-во скачиваний: 818
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KOLYAN
сообщение 24.7.2007, 4:48


X Squad
*****

Группа: Пользователи
Сообщений: 431
Регистрация: 29.6.2005
Из: Сасово
Пользователь №: 45 054
Модель телефона: L7, E8, ZN5, I7500

Рейтинг: 273.5



Dimka, ты великолепен! Все просто и понятно расписанно, сегодня займусь, а пока 5 балловsmile.gif

Сделал сейчас все это дело на л7-классно! Если Dimka позволит, выпущу в обновление Moto Symbian.
Dimka, можно это будет использовать в монстрах? Спасибо еще раз!!!
Извиняюсь за оффтоп...

Сообщение отредактировал KOLYAN - 24.7.2007, 12:04
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Semenigor
сообщение 24.7.2007, 5:02


Вільний мешканець вільного міста
******

Группа: Легенды MotoFan.Ru
Сообщений: 730
Регистрация: 10.9.2004
Из: Львів, Україна
Пользователь №: 12 241
Модель телефона: ATRIX 4G, DEFY+
Прошивка: Hennessy VSOP


Настроение:
Отсутствует



Рейтинг: 959



Молодец!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
vic66
сообщение 24.7.2007, 17:45


MotoCreator
****

Группа: Пользователи
Сообщений: 156
Регистрация: 15.10.2004
Из: братка-беларус
Пользователь №: 16 837
Модель телефона: MotoX+MotoX 2gn+Z Play
Прошивка: R373...49R
Победитель конкурса 2008

Рейтинг: 388.5



Ну слава Богу - дождались наконец! smile.gif
С первого раза ничего толком не понял - мне легче наверное 6 новых шрифтов нарисовать.
Буду дожидаться готового решения если у самого не получится - а потом заделаю эсклюзивный наборчик шрифтов smile.gif
Пять баллов за эту разработку - это ничто. Вообще не знаю чем оценить Димкин вклад в развитие Моторол - их вида и удобства пользования.
Димка! Конкурс - это формальность!
Ты - лучший по определению!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Motohobiman
сообщение 24.7.2007, 17:51


Мотофан
*******

Группа: Почётные мотофаны
Сообщений: 1 749
Регистрация: 3.5.2006
Из: Ukraina
Пользователь №: 81 710
Модель телефона: Е1,E2,U9,L6,W510.
Прошивка: Слава Украине!


Настроение:
Вечный мотодроллер;)



Рейтинг: 908



Однозначно лучший в своей области!Браво во истину!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dimka
сообщение 24.7.2007, 20:32


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255

Рейтинг: 1029



Цитата(vic66 @ Вчера, 21:45)

Пять баллов за эту разработку - это ничто. Вообще не знаю чем оценить Димкин вклад в развитие Моторол - их вида и удобства пользования.
Димка! Конкурс - это формальность!
Ты - лучший по определению!
*


Цитата(Motohobiman @ Вчера, 21:51)

Однозначно лучший в своей области!Браво во истину!
*


Спасибо! Очень приятно, правда! smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Мачо
сообщение 25.7.2007, 14:28


Ветеран
*****

Группа: Легенды MotoFan.Ru
Сообщений: 456
Регистрация: 26.7.2004
Из: Киров
Пользователь №: 8 569
Модель телефона: Е398 (умер), E6
Прошивка: Dream A Reality 2.0
Финалист Конкурса 2010

Рейтинг: 1410



Инструкция.
Делаем патч. Поиск в справочнике при 6 шрифтах.

Автор патча: GangaFuzz Автор мануала и методики потра: Мачо

Весь мануал в прикреплённом файле
Прикрепленный файл Manual_serch_6font.zip   ( 34.71 килобайт ) Кол-во скачиваний: 818
.

ПС. Димка молодец, однозначно 5 баллов.
Прикрепленный файл Manual_serch_6font.zip   ( 34.71 килобайт ) Кол-во скачиваний: 818
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KOLYAN
сообщение 26.7.2007, 10:16


X Squad
*****

Группа: Пользователи
Сообщений: 431
Регистрация: 29.6.2005
Из: Сасово
Пользователь №: 45 054
Модель телефона: L7, E8, ZN5, I7500

Рейтинг: 273.5



Вот, по мануалу Мачо сделал патч поиска при 6 шрифтов, респект ему!:)
Может кому надо, патч для ACR_RB, возможно подайдет и для ACR.
Прикрепленный файл _____________________6________.rar   ( 402 байт ) Кол-во скачиваний: 284
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dimka
сообщение 26.7.2007, 20:34


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255

Рейтинг: 1029



Цитата(KOLYAN @ 24.7.2007, 8:48)

Dimka, можно это будет использовать в монстрах?
*


Конечно можно! Я же для этого и писал мануал. Только не забывай упоминать об этом. wink.gif

Цитата(Rnb and Rap 26 Rus @ Вчера, 0:38)

aвтор, почему после всей процедуры дрм не разогнать?
*


Все прекрасно можно! Что-то не так делаешь, сам сто раз разгонял после этого, да и не может быть там ни в чем проблем!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dimka
сообщение 27.7.2007, 9:25


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255

Рейтинг: 1029



Цитата(ph0enix.29 @ Сегодня, 11:55)

можно сделать iTap во всех шрифтах?
*


Хм, а зачем? Тогда просто будет в Установках ввода 5 разных записей с одним и тем же русским иТАПом. Или ндо тогда физически добавлять языки с разными иТАПами, а не копировать через HEX один и тот же, как я предложил в мануале. Просто вообще не вижу смысла.

З.Ы. Ндам, кто-то даже поставил 1 балл, хоть бы отписался, сказал, что не понравилось... sad.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
6 шрифтов!, Подробный мануал по их созданию · Шрифты и языковые пакеты · Forum
 

2 страниц V  1 2 >
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 15.5.2024, 11:31

Форум живёт: