PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Русификация игр и софта для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=190)
-   -   Системный шрифт PSP (https://www.pspx.ru/forum/showthread.php?t=102816)

riku.kh3 15.05.2014 11:24

Вложений: 1
Цитата:

Сообщение от ErikPshat (Сообщение 1087003)
В общем твой шрифт довольно кароший, вот однобайтная кодировка японская Shift-JIS, на которую конвертятся узкие шрифты A1-DF, которые на той странице вычислили. Думаю с ней можно что-то придумать полезного...

Так смысла нет никакого A1-DF редактировать вообще. :scratch_one-s_head: Игра же их глифы не ипользует а сразу перенаправляет в шрифте на нужные символы. То есть на месте $C0 (タ) можно что угодно нарисовать, выводить на экран он все-равно вместо него будет $82BD (た). К особенностям шрифта это отношения не имеет, это специфично для конкретно этой игры.

Цитата:

Сообщение от ErikPshat (Сообщение 1087003)
Можешь портировать обратно и выложить готовый скриптпак?... файл во вложении.
Там только одна строчка в UTF-8, которая крашит на скринах выше. Если ты откроешь в UTF-8, то сможешь прочитать её, если откроешь в Shift-JIS, то она превратится в японскую абракадабру, зато остальные строчки читабельны.

В том то и дело, что функция экспортирования текста в таком виде практической пользы не несет никакой. Так как назад его из такого файла не импортировать. Я вручную конечно перенес эту строку в виде такого же нечитаемого мусора. На экране вот что:

http://i024.radikal.ru/1405/90/58d7150576c9.png

Максимум что можно сделать, это в дампе памяти убедиться что эта каша и есть та же utf8.

ErikPshat 15.05.2014 11:43

Вложений: 1
Цитата:

Сообщение от riku.kh3 (Сообщение 1087007)
Так смысла нет никакого A1-DF редактировать вообще.

В смысле? Вот же на предыдущей странице, в этом посте я дампил память https://www.pspx.ru/forum/showpost.ph...&postcount=163
Там в памяти видно в хексе какие символы выводит на экран PSP. Как раз она выводит символы из этого диапазона.
Тут ситуация наоборот, конвертер пишет в текстовике $82BD, а PSP вместо него выводит символ $C0.
Мы будем писать $82BD, а на экране видеть русскую "А" например. Тем более это будет экономить память однобайтными символами.


Цитата:

Сообщение от riku.kh3 (Сообщение 1087007)
В том то и дело, что функция экспортирования текста в таком виде практической пользы не несет никакой. Так как назад его из такого файла не импортировать. Я вручную конечно перенес эту строку в виде такого же нечитаемого мусора. На экране вот что:

Эмм, я немного попутал. В шрифте Shift-JIS нету UTF-8, поэтому на экране видим не то.
В шрифте Shift-JIS русский алфавит в UTF-16BE - это символы 0401-0451, я тебе не то скормил :) вот сделал правильно, потести плиз.
Русский алфавит должен вывестись 100%, если конвертер его не запортит.
А UTF-8 = D081-D18F

Эмм, в смысле, как не импортировать? Он что не принимает файл назад? Вручную мусор копи-пасте скорее всего результата недаст, это же всего лишь видимый мусор, а не код символов.
Ты же как-то символ пробела менял на что угодно, например 8140 или 814B. Как ты это делал?
Нужно короче в ту строку забить вот такой набор символов:
Код:

04100411041204130414041504010416041704180419041A041B041C041D041E041F0420042104220423042404250426042704280429042A042B042C042D042E042F
04300431043204330434043504510436043704380439043A043B043C043D043E043F0440044104420443044404450446044704480449044A044B044C044D044E044F


ErikPshat 15.05.2014 12:30

Цитата:

Сообщение от riku.kh3 (Сообщение 1086990)
tpunix-pgftool

Кстати ещё, хорошо что ты мне напомнил.
Сдампил unicode_list.txt из оригинального jpn0.pgf из прошивки )) там charmap table: 9778 символов. И игра ведь по-умолчанию использует этот набор символов.
И сдампил твой jpn0.pgf, у него charmap table: 16688 символов :xDD: вот поэтому он весит больше 2 мегов.
Применил к твоему 8-мегабайтному шрифту unicode_list.txt от оригинала - получился jpn0.pgf 1.3Mb

riku.kh3 15.05.2014 12:39

Вложений: 1
Цитата:

Сообщение от ErikPshat (Сообщение 1087010)
В смысле? Вот же на предыдущей странице, в этом посте я дампил память https://www.pspx.ru/forum/showpost.ph...&postcount=163
Там в памяти видно в хексе какие символы выводит на экран PSP. Как раз она выводит символы из этого диапазона.
Тут ситуация наоборот, конвертер пишет в текстовике $82BD, а PSP вместо него выводит символ $C0.
Мы будем писать $82BD, а на экране видеть русскую "А" например. Тем более это будет экономить память однобайтными символами.

Нет, в точности все до наоборот. Я понимаю что в памяти там $C0 символ, так и должно быть. Но на экран выводится именно $82BD вместо него. В этом и есть смысл - экономия места в памяти для набора наиболее используемых символов. И если $82BD написать, на экран тоже он же - $82BD будет выводиться. Не знаю как еще мне это доказать.. разве что забить одну фразу единственными символами $C0, и в шрифте править глифы у $82BD.

Цитата:

Сообщение от ErikPshat (Сообщение 1087010)
Эмм, в смысле, как не импортировать? Он что не принимает файл назад? Вручную мусор копи-пасте скорее всего результата недаст, это же всего лишь видимый мусор, а не код символов.

Нет такой функции в проге.

Цитата:

Сообщение от ErikPshat (Сообщение 1087010)
Ты же как-то символ пробела менял на что угодно, например 8140 или 814B. Как ты это делал?

shiftjis самостоятельная, независимая от других, кодировка. 814B как и те русские буквы входят в её диапазон по стандарту. Я просто вбиваю нужный мне 814B символ и он отображается как и положено по shiftjis стандарту, т.к. windows у меня в японском окружении и shiftjis для него дефолтная кодировка для отображения. utf16 и прочие винда в расчет даже не берет, т.к. еще раз говорю, shiftjis полноценная и независимая от utf16 и прочих (то что символы там не пересекаются - абсолютно ни о чем не говорит).

В любом случае, вручную опять эту фразу попробовал перенести, выглядит так:

http://i056.radikal.ru/1405/92/7af703798362.png

Нормально она перенеслась или нет думаю можно в дампе памяти посмотреть.

riku.kh3 15.05.2014 13:12

ErikPshat, до меня сейчас дошло, что ты наверное думал что раз:
$C0 --> $82BD

То и в обратную сторону должно быть:
$82BD --> $C0

Но нет, конвертирование это только в одну сторону работает и будет выводиться:
$82BD --> $82BD

Думаю, вообще можно из шрифта этот A6-EF диапазон удалить полностью и ничего не будет, т.к. игра ни при каких обстоятельствах на экран не может выводить его выводить.

ErikPshat 15.05.2014 13:20

riku.kh3, блин ты чо в японии живёшь ))) что у тебя за дефолтный виндус весь в shiftjis ))) и нифига она не полноценная, т.к. в основном состоит из японско-китайского алфавита.

В общем ты наверное прав, т.к. в shiftjis, например твоём TTF я вижу только одну русскую раскладку и она находится именно в UTF-16BE, ну ты и сам видел в шрифте коды русских символов. Это так же можно проверить, написав в текстовом редакторе русский алфавит, сохранить его в кодировке UTF-16BE и увидеть в хексе тот же самый код.
А т.к. ты из неё сделал jpn0.pgf, то эта раскладка там и осталась на своём месте.
Поэтому получается, что PSP выводит на экран русский текст из этой кодировки UTF-16BE, потому что в шрифте больше нет других русских букв :) это получается ты пишешь и видишь на экране одно, а также русские символы я вижу в дампе в пределах 8458 и т.п., а PSP выводит на экран шрифт из кодировки UTF-16BE.

Хотя на компе в текстовом редакторе, при переключении в кодировку shiftjis, почему-то я вижу читабельный текст на русском с теми же кодами 8458 и т.п. Видимо на компе лежит шрифт какой-то расширенный. Либо я ваще ничего не понимаю. Ну вот смотрю всякие шрифты и вижу в 8458 847E 8485 только японские иероглифы, а в текстовом редакторе при переключении в shiftjis вижу всё на русском.

И ещё, я же каждый раз дамплю в памяти тексты, а они ведь складываются в EBOOT.BIN (ELF) :) т.е. этот забитый вначале нулями эльф складывается в нормальный файл в памяти, об этом отвечу в другой теме как раз по теме :)

Цитата:

Сообщение от riku.kh3 (Сообщение 1087013)
Думаю, вообще можно из шрифта этот A6-EF диапазон удалить полностью и ничего не будет, т.к. игра ни при каких обстоятельствах на экран не может выводить его выводить.

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

Цитата:

Сообщение от riku.kh3 (Сообщение 1087013)
$C0 --> $82BD

Нет, я думал наоборот. Ведь наоборот $82BD конвертится в $C0.
Если в памяти я вижу $C0, то думаю, что я вижу именно то, что этот код обозначает. Хотя фиг его знает.
Я пытаюсь переместить шрифт в японскую область, чтобы не было крашей при сохранении. Ведь на японских символах крахов не происходит.

riku.kh3 15.05.2014 13:23

Цитата:

Сообщение от ErikPshat (Сообщение 1087015)
Поэтому получается, что PSP выводит на экран русский текст из этой кодировки UTF-16BE, потому что в шрифте больше нет других русских букв :) это получается ты пишешь и видишь на экране одно, а также русские символы я вижу в дампе в пределах 8458 и т.п., а PSP выводит на экран шрифт из кодировки UTF-16BE.

Я вот и думаю, что может libfont или какой другой модуль переводит shiftjis в UTF16 (или что другое в юникоде) прежде чем обращаться к PGF файлу с шрифтом. Т.к. помоему все-таки в PGF, как и в TTF, никаких shiftjis кодов у символов нет, только UTF16 (или юникод там, хз). Это как раз может объяснить крэши при использовании в тексте русских букв в shifjis.

ErikPshat 15.05.2014 13:44

riku.kh3, я думаю, что коды символов из TTF переезжают в PGF один в один, потому что когда я добавлял шрифт однобайтный в TTF и компилировал в ltn0.pgf, то появлялся русский алфавит именно в той кодировке 1251, а до этого там была абракадабра.

А shiftjis по сути чисто японская кодировка, чтобы поместить туда кучу японских символов, которых там больше сотни или фиг знает сколько дофига имеется. В русском языке-то всего 33 коровы )) Для этого и создавался шрифт shiftjis. Ну и естесственно они туда добавили и другие национальные шрифты, и для большей совместимости они их оставили на тех же позициях, как в других кодировках, например UTF-16 для русского или UTF-7 для чисто английского, состоящего из первых 127 байт (0х7F).

Я же тебе говорю, что ты слишком всё усложняешь. Ты почему-то считаешь, что Shift-JIS - это какой-то особый внеземной shiftjis закодированный алгоритм, как я смотрю на твои изречения по этому поводу :D
Ну добавь туда русский алфавит в win-1251 область или в UTF-8 область - это будет тот же самый shiftjis, только "расширенный".

А LIBFONT тут явно вмешивается и видимо корректирует по-своему. Вот почему-то странно, ведь в shiftjis кодах 8458 847E 8485 я вижу японские или китайские символы, но он не их отображает, а перенаправляет на 0410 и т.п. в UTF-16 русскую.

Цитата:

Сообщение от riku.kh3 (Сообщение 1087017)
Это как раз может объяснить крэши при использовании в тексте русских букв в shifjis.

Ну так вот, чтобы не было крешей, нужно переносить алфавит в используемую японскую область. Тем более с пробелом проблему решили.
В шрифте это сделать не сложно. Только вот как писать текст, ведь его дофига?
Можно конечно поставить перед собой таблицу смещений, какой русской букве соответствует японский символ и писать японскими символами, а потом на экране видеть русский текст. Но с такими объёмами нужно конвертер иметь и он есть, только его нужно скомпилировать.

riku.kh3 15.05.2014 13:55

Цитата:

Сообщение от ErikPshat (Сообщение 1087019)
Ну так вот, чтобы не было крешей, нужно переносить алфавит в используемую японскую область. Тем более с пробелом проблему решили.
В шрифте это сделать не сложно. Только вот как писать текст, ведь его дофига?
Можно конечно поставить перед собой таблицу смещений, какой русской букве соответствует японский символ и писать японскими символами, а потом на экране видеть русский текст. Но с такими объёмами нужно конвертер иметь и он есть, только его нужно скомпилировать.

Так сначала попробуй проблему 'фиксированной' ширины каждой такой перерисованной буквы решить. Иначе и смотрится уродливо, и текста вмещается как кот наплакал.

И, да, если A6-EF из шрифта полностью вычистить на игру это никак не влияет.

ErikPshat 15.05.2014 14:19

Цитата:

Сообщение от riku.kh3 (Сообщение 1087020)
Так сначала попробуй проблему 'фиксированной' ширины каждой такой перерисованной буквы решить. Иначе и смотрится уродливо, и текста вмещается как кот наплакал.

Да нет там фиксированной ширины. Всё зависит, как ты сам её выставишь в TTF. Вернее достаточно просто копи-пасте сделать русских глифов в японскую раскладку, которую игра использует для вывода японских символов. Все значения ширины так же переедут и там не надо будет что-то вручную перерисовывать.

Ты действительно считаешь, что ширина КОДА японского символа зависит от его кода, а не от символа?
Не сравнивай широкий пробел 8140, который никак нельзя было сделать уже - это системный код и он вообще отсутствует в shiftjis шрифтах, и поэтому не имеет глифов.

Вообщем нужно просто взять и перенести алфавит. А вот как писать? Ну я могу написать через хекс кодами предложение японскими символами, где будут стоять русские. Только как написать 1000 таких предложений?

riku.kh3 15.05.2014 14:31

Цитата:

Сообщение от ErikPshat (Сообщение 1087022)
Ты действительно считаешь, что ширина КОДА японского символа зависит от его кода, а не от символа?
Не сравнивай широкий пробел 8140, который никак нельзя было сделать уже - это системный код и он вообще отсутствует в shiftjis шрифтах, и поэтому не имеет глифов.

Я считаю, что в PGF есть таблица ширины/высоты в пикселях для каждого символа. Я прыгал вокруг TTF очень долго пытаясь ширину хоть одного символа уменьшить... После конвертирования в PGF получаешь по ширине совсем не то, что в TTF было. Что хочешь там перенаправляй-перерисовывай, значения в TTF меняй.. Символ по ширине не изменится ни на пиксель. Ты увидишь на экране свой глиф нарисованный/перенаправленный нетронутый, каким бы мелким его не сделал, и хренову кучу пустого интервала до следующего символа.

ErikPshat 16.05.2014 07:34

riku.kh3, слушай, может нам совсем избавиться от shiftjis и писать в любой другой кодировке и перейти на обычный ltn0.pgf, переименовывая его.
Может есть какие-нибудь другие европейские игры, где используется обычный однобайтный шрифт и присутствует нормальный libfont.prx?

riku.kh3 16.05.2014 11:10

ErikPshat, да наврятли там какая-то разница между libfont из разных игр есть, в эмуляторе он вообще не используется потому что. Да и из однобайтного диапазона там A1-DF физически не получится использовать, т.к. движок самой игры перенаправляет с них.. а использование латиницы 41-7A приводит к тем же крэшам при сейве.

ErikPshat 19.05.2014 15:26

riku.kh3, ну в общем, т.к. у меня RLPAKTOOL не запускается, чтобы разглядывать ресурсы, то дальше я пока бессилен.
Думаю ты уже и сам справишься.

Я тут ломанул одну прогу и теперь занимаюсь её нормальной русификацией. Нужно довести дело до конца...

riku.kh3 19.05.2014 15:38

ErikPshat, да затык полный, какое там сам справишься)) Давно твержу что не перенести русские буквы в другую область - размер не изменить никак. Квадратами 17x19 пикселей он отображает каждый символ и все тут))

http://s005.radikal.ru/i210/1405/31/4a6747330814.png

С TTF играться бесполезно, и с PGF, судя по всему - тоже. Да и вообще вся эта затея с переносом букв мутная. Расходимся, в общем, с чувством выполненного долга. :D Тут работа для того, кто сможет отдебажить крэши и их причину устранить (сомневаюсь, что тут такие найдутся).

ErikPshat 19.05.2014 20:45

А я думал ты уже всё решил и справился :)

Ну так что мы имеем...
Пробел заменили на японский символ - креши продолжаются.
Но символы русские зато видим в хорошем читабельном виде.

https://www.pspx.ru/forum/attachment....chmentid=10053

Вывод - креши происходят из-за текстовых символов, значит пробел здесь не при чём.



Вот такие символы генерит RLPAKTOOL при написании текста:

https://www.pspx.ru/forum/attachment....chmentid=10029

https://www.pspx.ru/forum/attachment....chmentid=10031

Значит нужно уходить от этих кодов символов. Какие-то из них по-видимому используются в служебном диапазоне игры.
В японском диапазоне они широкие. Но ведь есть ещё и другие узкие диапазоны, даже например в греческом языке.

riku.kh3 19.05.2014 20:58

Цитата:

Сообщение от ErikPshat (Сообщение 1087107)
Вывод - креши происходят из-за текстовых символов, значит пробел здесь не при чём.

Из-за одного только пробела тоже иногда крэши происходят... но не суть важно.

Цитата:

Сообщение от ErikPshat (Сообщение 1087107)
В японском диапазоне они широкие. Но ведь есть ещё и другие узкие диапазоны, даже например в греческом языке.

Да нет там почти ничего узкого, давно все пересмотрел. 2-3 символа узких нашлись от силы. А нам надо на два регистра русского алфавита - 66 таких символов.

ErikPshat 19.05.2014 21:53

Цитата:

Сообщение от riku.kh3 (Сообщение 1086871)
Пробела как раз таки и не получается, символ и занимаемое им место пропадут. И даже если получится это реализовать, бонусам перестанет работать перенос слов (с shiftjis пробелом он работает) и в сохранениях будут крокозябры. То есть идеальным решением все-таки было бы уменьшить существующий shiftjis пробел вдвое.

Ну вот здесь и ещё много-много раз ты говорил насчёт пробела, что всё туфта и ничего не получается. Однако проблема решилась элементарно, с того момента, когда начали тестировать и ты сам это дело решил.

То же самое со шрифтами. Ты хоть сам пробовал перемещать шрифты в однобайтовый диапазон A1-FF? Или это опять только на словах, твои теоретические домыслы?

riku.kh3 19.05.2014 22:14

Цитата:

Сообщение от ErikPshat (Сообщение 1087109)
Ну вот здесь и ещё много-много раз ты говорил насчёт пробела, что всё туфта и ничего не получается. Однако проблема решилась элементарно, с того момента, когда начали тестировать и ты сам это дело решил.

Что решилось то? :scratch_one-s_head: Один из тех немногих символов нашел, что покороче, стер и сделал вместо пробела - вот и всё.

Цитата:

Сообщение от ErikPshat (Сообщение 1087109)
То же самое со шрифтами. Ты хоть сам пробовал перемещать шрифты в однобайтовый диапазон A1-FF? Или это опять только на словах, твои теоретические домыслы?

Пробовал, писал же, не используются они вообще игрой. Перенаправляются! Так сложно ア от あ отличить? Видел же сам что в дампе и что на экран выводится.

ErikPshat 19.05.2014 22:39

Цитата:

Сообщение от riku.kh3 (Сообщение 1087110)
Что решилось то?

Ну так решилось же. Теперь 100-пудово из-за него креш не идёт. Перенос работает, правда иногда полслова переносится или даже одна буква ))) но это совсем редко.

Понятно, видел и проверил, забил весь шрифт русским алфавитом, буквы стали меньше, а их ширина осталась прежней.
Ладно, закончу свой релиз, осталась половина. И снова пожалуй займусь, ещё в запасе есть IDA PRO. Рассчитываю найти ширину букв. Ну и есть другие варианты, ведь европейские игры не страдают такой фигнёй, а в чём разница? в либфонте? в PGF?


Текущее время: 06:58. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.