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)

ErikPshat 13.05.2014 19:00

Вложений: 2
riku.kh3, нет, Shift-JIS шрифт очень большой. Он содержит символы английские, русские, греческие, японские катана и фиг поймёшь что там у них. И все национальные символы имеют свой уникальный код, как задумано в Shift-JIS. Некоторые коды совпадают с UTF-8, но это так же зависит от разработчика шрифта. Разработчик мог бы добавить поддержку UTF-8, как и однобайтный 1251 русский. Английский-то по-любому почти всегда идёт первым в однобайтной области. И разработчик шрифта может сам переставлять шрифты туда, куда ему это выгодно, например, если в игре не используется русский алфавит, то он может туда забить китайские символы, либо просто использовать эти коды в качестве управляющих символов.

Почему мы видим крякозяблики вместо нормального текста?
Потому что в той кодировке, в которой мы сохраняем текст, вместо необходимых букв находятся сторонние символы, например элементарно досовские символы всяких кирпичиков и уголков, либо китайских или японских иероглифов. Либо вообще там нет ничего, пустое место или совсем нет матрицы шрифтов.

Взять однобайтный win1251 на PSP...
Win-1251 начинается с 0xC0 по 0xFF. Вот скрин, где коды символов можно увидеть слева и сверху, как в шахматах.
  • "А" - 0xC0 или 0x00С0
  • "Б" - 0xC1 или 0x00С1
  • "В" - 0xC2 или 0x00С2
  • "я" - 0xFF или 0x00FF
Спереди парные нули не учитываются.


Ранее на том самом месте, где русский алфавит, были как раз досовские символы.

А вот так мы видим пронумерованные символы в шрифте TTF. Нумерация символов так же идёт по стандарту. В данном случае виден русский алфавит в кодировке UTF-8 = 0x0401 (буква Ё) до 0451 (маленькая ё - её здесь нет).

(картинка кликабельна, читаем там внимательно мой пост по установке)


Листаем тот же шрифт к самому низу и видим там ещё один алфавит Windows-1251 = 0x00C0 (буква А) до 0x00FF (маленькая я). Это уже я сам копирнул алфавит в эту область. Поэтому теперь получается, что этот шрифт поддерживает писанину в UTF-8 и Windows-1251:


То есть, можно в текстовом редакторе написать текст и сохранить его в UTF-8 и он будет отображать русскую писанину, как положено. Так же, можно сохранить текст через текстовой редактор в Windows-1251 и так же, этот текст будет прекрасно выводится, как положено.

Но если посмотреть на текстовые файлы, одного содержания, но в разных кодировках через хекс-редактор, то мы увидим коды символов отличающиеся. В данном случае UTF-8 будет иметь 2-байтные символы на букву, например буква "А" = 0410, то в кодировке 1251 мы увидим код символа "А" = С0 одним байтом.
И один и тот же шрифт будет прекрасно отображать обе кодировки.

riku.kh3 13.05.2014 20:16

Ну так в итоге и получается, что если разработчик игры не стал заморачиваться и добавлять поддержку кучи кодировок (а из двухбайтных тут помимо shiftjis, есть еще и jis, и euc, и utf-16), а только стандартную область shiftjis - то тут и облом. :scratch_one-s_head:

Я имею в виду, тот факт что shiftjis не противоречит другим двухбайтовым кодировкам, не делает ее частью юникода или utf-16. Это отдельный принятый самостоятельный от юникода стандарт.

Я даже не знаю как это и проверить вообще.. имеющееся тулза у меня только с shiftjis-текстом работает.

ErikPshat 13.05.2014 20:21

Вложений: 3
Тэкс, снял дамп памяти оригинального японского диалога.


В дампе всё лишнее удалил, оставил только в 1-ой строке чисто диалог, во 2-ой строке указание на шрифт. Получился такой вот текстовик:

Вложение 10038

И коды символов в хексе:

Вложение 10039

Что получается, какие символы использует PSP при выводе японского алфавита?...
  1. 「 - A2 = A2
  2. 部 - 9594 = 9594
  3. 活 - 8A88 = 8A88
  4. ニ - C6 = 82C9
  5. モ - D3 = 82E0
  6. 入 - 93FC = 93FC
  7. ラ - D7 = 82E7
  8. ず - 82B8 = 82B8
  9. 無 - 96B3 = 96B3
  10. 駄 - 91CA = 91CA
  11. ニ - C6 = 82C9
  12. 鍛 - 9262 = 9262
  13. エ - B4 = 82A6
  14. 上 - 8FE3 = 8FE3
  15. げ - 82B0 = 82B0
  16. ラ - D7 = 82E7
  17. レ - DA = 82EA
  18. タ - C0 = 82BD
  19. 筋 - 8BD8 = 8BD8
  20. 肉 - 93F7 = 93F7
  21. ヲ - A6 = 82F0
  22. コ - BA = 82B1
  23. コ - BA = 82B1
  24. ぞ - 82BC = 82BC
  25. ト - C4 = 82C6
  26. ば - 82CE = 82CE
  27. カ - B6 = 82A9
  28. リ - D8 = 82E8
  29. ニ - C6 = 82C9
  30. 見 - 8CA9 = 8CA9
  31. セ - BE = 82B9
  32. ツ - C2 = 82C2
  33. ケ - B9 = 82AF
  34. テ - C3 = 82C4
  35. ヤ - D4 = 82E2
  36. が - 82AA = 82AA
  37. ル - D9 = 82E9
  38. … - 81(63) = 81(63) [прим. 63 служебный перед завершением?]
  39. 」 - A3 = A3
39 символов - 55 байтов.

ErikPshat 13.05.2014 20:30

Цитата:

Сообщение от riku.kh3 (Сообщение 1086939)
у так в итоге и получается, что если разработчик игры не стал заморачиваться и добавлять поддержку кучи кодировок (а из двухбайтных тут помимо shiftjis, есть еще и jis, и euc, и utf-16), а только стандартную область shiftjis - то тут и облом.

Нет, ты не правильно понял. Разработчик шрифта - ты сам. В оригинале да, шрифт неизвестно кто и как сделал, вернее известно - это Sony подсунула его в папку flash0:/FONT/JPN0.PGF :D

Но в данном случае ты сам можешь перекидывать символы куда угодно и создать свой кастомный шрифт. Ты сам можешь сделать поддержку всех тысячи кодировок в мире и скомпилировать свой JPN0.PGF.

Чем больше ты сделаешь TTF - тем больше будет размер PGF. Если твой TTF будет весить 2 Мб, то и PGF так же потяжелеет. Если ты вырежешь из шрифта TTF неиспользуемые символы, все греческие, японские и китайские, то и PGF твой будет весить копейки.
Это ты сам можешь проверить.

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

P.S. Кстати, в Real Life Engine PAK editor я заметил, что можно делать переназначение шрифтов, делать сдвиг смещения.

riku.kh3 13.05.2014 20:32

ErikPshat, я думаю у тебя сейчас вообще голова кругом пойдет. :D Часть текста записывается однобайтной ascii кодировкой (A1-DD) и движок игры 'конвертирует' эти символы на лету в двухбайтные:

Код:

ア=あ
イ=い
ウ=う
エ=え
オ=お
カ=か
キ=き
ク=く
ケ=け
コ=こ
サ=さ
シ=し
ス=す
セ=せ
ソ=そ
タ=た
チ=ち
ツ=つ
テ=て
ト=と
ナ=な
ニ=に
ヌ=ぬ
ネ=ね
ノ=の
ハ=は
ヒ=ひ
フ=ふ
ヘ=へ
ホ=ほ
マ=ま
ミ=み
ム=む
メ=め
モ=も
ヤ=や
ユ=ゆ
ヨ=よ
ラ=ら
リ=り
ル=る
レ=れ
ロ=ろ
ワ=わ
ヲ=を
ン=ん
ァ=ぁ
ィ=ぃ
ゥ=ぅ
ェ=ぇ
ォ=ぉ
ャ=ゃ
ュ=ゅ
ョ=ょ
ッ=っ


ErikPshat 13.05.2014 20:49

riku.kh3, а если поточнее разложить по байтам? (скриншот хекса навиду)

Цитата:

Сообщение от riku.kh3 (Сообщение 1086944)
и движок игры 'конвертирует' эти символы на лету в двухбайтные:

Не совсем так. То, что движок игры конвертирует, мы как раз наглядно видим в хексе из дампа памяти.

riku.kh3 13.05.2014 20:50

Это:
Код:

「部活ニモ入ラず無駄ニ鍛エ上げラレタ筋肉ヲここぞトばカリニ見セツケテヤがル…」
「 = A2
部 = 9594
ニ = C6
モ = D3
入 = 93FC
ラ = D7
ず = 82B8
無 = 96B3
駄 = 91CA
ニ = C6


Движок игры превращает и выводит на экран в это:
Код:

「部活にも入らず無駄に鍛え上げられた筋肉をここぞとばかりに見せつけてやがる…」
Это, по-сути, ненужная рутина, цель которой уменьшить размер каждой фразы в байтах. Я над ней особо не задумывался. Хотя может именно из-за нее и происходят крэши. :scratch_one-s_head:

ErikPshat 13.05.2014 20:54

Цитата:

Сообщение от riku.kh3 (Сообщение 1086947)
Хотя может именно из-за нее и происходят крэши.

Вот это я и хочу выяснить...

Кстати, текст из конвертера можно сохранять в текстовые файлы Shift-JIS и потом проверить в хексе?
У меня просто конвертер не запускается, там что-то с 4-ой версией фреймворка у меня не так.

riku.kh3 13.05.2014 21:04

Вложений: 1
Если ты про RLPAKTOOL, то там уже встроена эта рутина по конвертированию необходимых ascii символов в то, что на psp фактически выводится на экран. Тут экспортировал текст в shiftjis, правда там мусора много.

ErikPshat 13.05.2014 21:46

riku.kh3, вообщем вывел я все коды символов. Догнал, что текстовой редактор показывает количество байт на символ. По этой функции и определил все коды в хексе.

В твоём текстовике нашёл ту же фразу и сосчитал так же все коды букв. Дописал их в тот же пост: https://www.pspx.ru/forum/showpost.ph...&postcount=163
Кроче, видно что во что конвертируется.

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

riku.kh3 13.05.2014 22:08

ErikPshat, да все так. Суть всей этой кутерьмы в том, что часть наиболее часто используемых символов слоговой азбуки в игровом скрипте заменили на однобайтовые, причем реализовано это на движке игры (в ps2 и ps3 версии этой игры все так же, и сам шрифт там другой) и они выводятся на экран в другом виде. Это помогает сэкономить несколько байт на каждой фразе (там кстати физический лимит поинтера 255 байт на каждую фразу). Если проводить аналогию на привычных вещах, то автоконвертер транслита на русский.. что-то в подобном духе.

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

По сути, можно взять и нарисовать русские буковки на другое безопасное место shiftjis'а вместо ненужных символов.. но, опять же, все сводится к ковырянию PGF формата в попытаках найти таблицу длины и ширины каждого символа в пикселях.

ErikPshat 13.05.2014 22:42

riku.kh3, я думаю, что можно перевод сохранить в Win-1251 и шрифт использовать обычный свой или переименовать ltn0.pgf в jpn0.pgf. И должно всё выводится.

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

Скорее всего присутствует баг в самом конвертере. Ведь программный код и текст находятся в одном файле. Если делать перевод и пытаться сохранить текст вместе с программным кодом в какой-либо кодировке, то конечно программный код тоже перекодируется в другую кодировку. Поэтому можно только конвертировать текстовую секцию, но программный код трогать нельзя.



А я чую, что там в тексте как раз присутствуют программные коды, например видел скобки {}, доллары $, буквы S, прямо посреди текста.
Дело в том, что даже если ты видишь на экране те же символы, то даже при перекодировке из shiftjis в тот же самый shiftjis, ты будешь на экране видеть всё те же символы. А на самом деле, в хексе, ты увидишь уже вместо программного кода уже другие цифры, хотя в текстовике для твоих глаз будут отображаться всё те же скобки {}, доллары $, буквы S.
Так что нужно проконтролировать этот момент.

Цитата:

Сообщение от ErikPshat (Сообщение 1086955)
По сути, можно взять и нарисовать русские буковки на другое безопасное место shiftjis'а вместо ненужных символов.. но, опять же, все сводится к ковырянию PGF формата в попытаках найти таблицу длины и ширины каждого символа в пикселях.

Нет, длина и ширина находятся как раз в самом шрифте. Можно просто копирнуть весь русский алфавит вместо японского, который используется в игре по номерам 82A8 (Ё) по 82FF - этого диапазона хватит выше крыши для кириллицы. А я видел, что японский алфавит вообще уходит за пределы 9600.

И вообще можно удалить все остальные шрифты, тогда твой PGF будет весить всего 128 байт )))
А сейчас я смотрю твой шрифт, так он весит почти мегабайт, зачем столько всего в нём.

Цитата:

Сообщение от riku.kh3 (Сообщение 1086949)
RLPAKTOOL

В исходниках видел файл kanaconv.txt, так вот там и прописывается перенаправление шрифтов.

riku.kh3 13.05.2014 22:51

ErikPshat, RLPAKTOOL очень продуманно устроен. Этот нюанс с конвертированием японских ascii символов, во-первых, там внедрен исключительно только для отображения: чтобы было удобно читать когда переводишь (то есть в одну сторону), и, во-вторых, только для определенных символов, а не на все подряд. То есть он никак не может тут вредить.

Или может ты посмотрел исходники и увидел там код конвертирования в shiftjis? Он там нужен был автору только для конвертирования своего английского текста.. да, он затрагивает сервисные комманды в тексте и может создавать проблемы... НО! эта фича полностью отключается одной галочкой, и я ей попросту никогда не пользовался. Я просто сразу ввожу нужный мне текст в shiftjis без помощи каких-либо конвертеров.

То есть проблема крэшей все-равно так и не раскрыта.

riku.kh3 добавил 13.05.2014 в 22:51
Цитата:

Сообщение от ErikPshat (Сообщение 1086957)
Нет, длина и ширина находятся как раз в самом шрифте. Можно просто копирнуть весь русский алфавит вместо японского, который используется в игре по номерам 82A8 (Ё) по 82FF - этого диапазона хватит выше крыши для кириллицы. А я видел, что японский алфавит вообще уходит за пределы 9600.

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

ErikPshat 13.05.2014 23:10

Цитата:

Сообщение от riku.kh3 (Сообщение 1086958)
Просто попробуй. Возьми тот скрин выше что ты выкладывал, и попробуй перерисовать хоть один символ так, чтобы он занимал меньше по ширине.

Я просто буквы скопирую вместе с их родными данными в позицию 82А8.
Обрати внимание на скрин выше, там на скрине видно окошечко под названием Gliph Properties и в этом окошечке задаются все параметры шрифта. Так же, у шрифта не может быть строго закреплённой ширины и высоты, там указывается от и до. Всё аналогично, как в любом другом шрифте, пусть это shift-jis, пусть utf-8, от названия суть не меняется.

Другое дело, как ты будешь портировать буквы в тексте, менять их код? В программе для этого есть какие-то кнопочки?
Хорошо, если в проге можно только видеть текст наглядно, но на самом деле, чтобы буквы имели другой, необходимый тебе код.
Никак не пойму, почему прога у меня на XP SP3 не запускается.

riku.kh3 13.05.2014 23:23

Цитата:

Сообщение от ErikPshat (Сообщение 1086960)
Я просто буквы скопирую вместе с их родными данными в позицию 82А8.
Обрати внимание на скрин выше, там на скрине видно окошечко под названием Gliph Properties и в этом окошечке задаются все параметры шрифта. Так же, у шрифта не может быть строго закреплённой ширины и высоты, там указывается от и до. Всё аналогично, как в любом другом шрифте, пусть это shift-jis, пусть utf-8, от названия суть не меняется.

Для TTF - все именно так, все работает и у меня это получалось, конечно же. В TTF свободно играться шириной буковок не проблема. После конвертирования в PGF - происходит совершенно другая история.


Цитата:

Сообщение от ErikPshat (Сообщение 1086960)
Другое дело, как ты будешь портировать буквы в тексте, менять их код? В программе для этого есть какие-то кнопочки?
Хорошо, если в проге можно только видеть текст наглядно, но на самом деле, чтобы буквы имели другой, необходимый тебе код.

Там в коде есть функция похожая по конвертированию английских ascii буковок, только если подправить в исходниках эту функцию под себя.

Приложил модифицированный скрипт, там только самая первая фраза заменена на ту, что в 100% вызывает крэш. Если есть желание сдампить память и поизучать что же с ней не так - пожалуйста.

ErikPshat 13.05.2014 23:24

Кстати, дай мне нормальный шрифт TTF, который ты собираешься использовать. А то тот, что у тебя в архиве, какой-то по-моему кривой. Или его использовать?

И это, есть возможность вытащить расжатый скриптпак?

riku.kh3 13.05.2014 23:38

Цитата:

Сообщение от ErikPshat (Сообщение 1086962)
Кстати, дай мне нормальный шрифт TTF, который ты собираешься использовать. А то тот, что у тебя в архиве, какой-то по-моему кривой. Или его использовать?

Да нету у меня нормального, там во всех русские буковки такие небрежные. Только если из русского шрифта перетащить.

Цитата:

Сообщение от ErikPshat (Сообщение 1086962)
И это, есть возможность вытащить расжатый скриптпак?

Нет.

ErikPshat 14.05.2014 00:36

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

Ага, насчёт ширины букв в TTF я соврал. Их же конвертер регулирует TTF2PGF. И кстати, когда я конвертировал свой шрифт обычный Times New Roman, то на PSP в диалогах он выглядел маленьким, наклонным и узким. Скрин на предыдущих страницах, правда без русского и японского алфавита.

Цитата:

Сообщение от riku.kh3 (Сообщение 1086961)
Приложил модифицированный скрипт, там только самая первая фраза заменена на ту, что в 100% вызывает крэш. Если есть желание сдампить память и поизучать что же с ней не так - пожалуйста.

Ну нифига себе только одна фраза :D
Да там всё заменено и повырезано (Replased, Inserted and Deleted) начиная сразу с 4-го программного байта...
Скрин
Сравнение с оригиналом

http://i61.fastpic.ru/big/2014/0514/...080e0d3646.png
Ты хотя бы одну букву измени, чтобы не было смещения символов и сохрани, тогда можно будет и сравнивать )))

riku.kh3 14.05.2014 00:48

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

Сообщение от ErikPshat (Сообщение 1086968)
Ну нифига себе только одна фраза :D
Да там всё заменено и повырезано (Replased, Inserted and Deleted) начиная сразу с 4-го программного байта...

Так да, перепаковывает тулза весь скрипт, поинтеры переставляет и т.п.
Одну букву так просто не изменить, т.к. там некий хитрый binary invert применяется к тексту.

Более наглядный пример для сравнения сделал. Здесь два скрипта: в обоих изменена только первая фраза, один скрипт крэшится на сейве, другой нет. Длина в байтах у фраз одинаковая.

ErikPshat 14.05.2014 01:50

Цитата:

Сообщение от riku.kh3 (Сообщение 1086961)
Приложил модифицированный скрипт, там только самая первая фраза заменена на ту, что в 100% вызывает крэш.

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

Кстати крэша при сохранении не заметил.
Щас потестю эти 2 дампа...

ErikPshat 14.05.2014 02:13

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

Сообщение от riku.kh3 (Сообщение 1086969)
Более наглядный пример для сравнения сделал. Здесь два скрипта: в обоих изменена только первая фраза, один скрипт крэшится на сейве, другой нет. Длина в байтах у фраз одинаковая.

Ну сдампил оба теста, так же самая история, различий в конце файлов многовато, копаться тяжко.
Размеры всех 4-ёх дампов одинаковы.
Если открыть файлы в текстовом редакторе в кодировке shift-jis, то строка текста читабельна и находится почти в самом конце файлов.
Прикладываю тесты всех 4 дампов, включая японский оригинал.

riku.kh3 14.05.2014 02:33

Цитата:

Сообщение от ErikPshat (Сообщение 1086970)
Кстати крэша при сохранении не заметил.

У меня оба эмулятора стабильно крэшатся на этой фразе про мышцы, один из них вот что даже в логе выдает:

http://s006.radikal.ru/i213/1405/d1/d12ab4f35bb5.png
:scratch_one-s_head:

ErikPshat 14.05.2014 02:38

riku.kh3, ну так это может так только на эмуляторе. У меня оба эмуля вообще крашатся при попытке запуска любой игры )))
На PSP-1004 у меня не крашатся. Я правда может не так сохраняю, по японски там непонимать.

На этой первой фразе нажимаю :triangle: потом спускаюсь на 2-ой пункт и нажимаю :circle:, там отображается слот сейва и сохраняю на :circle:.
Потом на карте памяти появляются в сейвдата 2 папки секьюре и систем.

riku.kh3 14.05.2014 02:45

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

Сообщение от ErikPshat (Сообщение 1086973)
На этой первой фразе нажимаю :triangle: потом спускаюсь на 2-ой пункт и нажимаю :circle:, там отображается слот сейва и сохраняю на :circle:.
Потом на карте памяти появляются в сейвдата 2 папки секьюре и систем.

Да, все правильно. Тут, когда крэшится, дело до появления окошка со слотом не доходит даже.

Автор порта англофикации просто жаловался на крэши.. и он с реальной PSP точно работал. Говорил что несколько раз с нуля пришлось проект переделывать и вообще от ascii отказаться и особенно 0x20 пробелов. Я был все-таки уверен что мои крэши на эмуляторе это то же самое. :scratch_one-s_head:Приложил текст с обычными 0x20 пробелами.

ErikPshat 14.05.2014 04:24

Вложений: 2
riku.kh3, вот сейчас да, на этом скрине при сохранении игра потемнела и потом PSP выключилась. Но перед этим я сохранялся разок с таким же пробелом.

Собсно нормально сохранялось раз 5 в диалогах с коротким пробелом.
Заметил, что крашится на длинных диалогах, где заняты все 3 строчки.


P.S. В шрифтах Shift-JIS не удаётся поместить алфавит в 1-байтную кодировку C0-FF. Там жёстко закреплены 2 символа на буквах Ч и ч - символы "Умножить" и "Разделить". Ну алфавит-то перенёсся, за исключением 2-ух букв.

UPDATE Хотя не, 2 символа удалось заменить, так что всё хоккей с однобайтом, ну мало ли, может пригодится.

Попробуй этот шрифт, взял отсюда: http://monafont.sourceforge.net/
Только не пойму, в игре японские символы пропали, хотя они вроде есть ))) но главное проверить пробел Shift-JIS.

Замени пробелы 8140 на 82B0, там я туда перенёс пробел.


riku.kh3 14.05.2014 11:24

Вложений: 1
ErikPshat, заменил пробелы на 82B0 (げ), закинул шрифт, выглядит так:

http://s019.radikal.ru/i624/1405/5e/900381ec188f.png

Прикрепил два скрипта с замененными пробелами, один тот с 82B0 (げ). Другой с 814B (゜) - он по ширине как обычный пробел.

ErikPshat 14.05.2014 23:46

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

Сообщение от riku.kh3 (Сообщение 1086983)
один тот с 82B0 (げ)

Хмм, странно, я просто скопировал знак пробела 0х20 вместо буквы 0х82B0. По-видимому в нём есть какая-то инфа, что вместо буквы пробел всё-таки опознаётся и добавляется ещё один пробел автоматом.
Сдампил память - там вместо пробела только код 0x82B0, как и полагалось, но дополнительного пробела нет.

Цитата:

Сообщение от riku.kh3 (Сообщение 1086983)
Другой с 814B (゜) - он по ширине как обычный пробел

Ну вот твой код не определяется, как пробел, буквы идут с прочерком вместо иероглифа. Я думаю, это всего-лишь из-за того, что в скомпилированном шрифте jpn0.pgf почему-то японские символы куда-то пропадают, поэтому вместо них отображается всякая ерунда.

http://i61.fastpic.ru/big/2014/0514/...62410be756.png

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


riku.kh3 15.05.2014 00:17

Вложений: 1
ErikPshat, попробуй с этим шрифтом. Я там в 814B (゜) потер глифы.

ErikPshat 15.05.2014 00:58

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

Сообщение от riku.kh3 (Сообщение 1086988)
ErikPshat, попробуй с этим шрифтом. Я там в 814B (゜) потер глифы.

Ну замечательно, пробел короткий и прекрасно смотрится! Как и предполагал, нужно не копировать пробел, а просто затереть глиф. Так и хотел поступить, но решил протестить для начала тупо копирование.


Кстати, отлично скомпилировался у тебя PGF, японские символы не пропали, отображаются в системных сообщениях. У меня после компиляции почему-то они пропадали и были одни прочерки.
Чем компилировал?

При сохранении на этом скрине игра повисла. Так что тут проблема не из-за пробела 814B. Я склонен предполагать, что это из-за длины текста, ведь на японском в таком тексте количество символов меньше наверное.

riku.kh3 15.05.2014 01:23

Вложений: 1
ErikPshat, tpunix-pgftool.rar из твоей темы. Обычной командой 'ttf_pgf font.ttf jpn.pgf' он у меня таким и создается.

Я заменил каждую русскую букву в этой фразе (ascii кавычки, зяпятые и точки оставил), размер в байтах такой же, и вместо пробела все тот же $814B.

http://s019.radikal.ru/i625/1405/59/3d49edd67703.png

Игра у меня после замены сохраняется нормально без крэша. :scratch_one-s_head:

ErikPshat 15.05.2014 01:37

riku.kh3, может переместить глифы русского алфавита в японскую кодировку и попросить в конвертере сделать автоподстановку отображаемых символов?

riku.kh3 15.05.2014 01:43

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

То есть, опять же говорю, надо разбираться в PGF.. где там эти значения длины/ширины для каждого символа хранятся. :scratch_one-s_head:

ErikPshat 15.05.2014 01:49

riku.kh3, попробуй вытащить распакованный скриптпак. Он не может висеть просто в воздухе. В обычном виде он запакован и нельзя его редактировать или просматривать текст в текстовом редакторе.
Понаблюдай в папке TEMP, он должен туда распаковываться.

riku.kh3 15.05.2014 02:01

Вложений: 1
ErikPshat, сам он никуда не распаковывается, все в оперативке держит. Да и не запакован он по-сути, байты текста инвертированы каким-то образом (в проге галочкой Enable invert binary в читаемый вид превращается). Там есть опция извлечь все по отдельности, но по той же самой причине выше, не думаю что там есть на что смотреть.

ErikPshat 15.05.2014 02:27

riku.kh3, и как угадать, в каком файле тот диалог?

riku.kh3 15.05.2014 02:42

ErikPshat, May 13 по логике S051300.script. По оффсету 22EA эта фраза начинается (если без имени говорящего, то 22FD).

ErikPshat 15.05.2014 02:56

riku.kh3, и это ты называешь в распакованном виде ))) Ну ваще, он же не читается не в текстовике, никак )))

Каким образом можно отредактировать в текстовом редакторе диалог, чтобы сохранить его в другой кодировке или хотя бы похексить коды символов?

riku.kh3 15.05.2014 03:11

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

Сообщение от ErikPshat (Сообщение 1086997)
riku.kh3, и это ты называешь в распакованном виде ))) Ну ваще, он же не читается не в текстовике, никак )))

Каким образом можно отредактировать в текстовом редакторе диалог, чтобы сохранить его в другой кодировке или хотя бы похексить коды символов?

Никак. Я же говорю что там не на что смотреть. RLPAKTOOL то чего не работает вообще? Обновлений фреймворка ему не хватает?

А, понял чего надо. Текст экспортированный типа того что я ранее выкладывал? Хз конечно тоже на что там смотреть, но вот:

ErikPshat 15.05.2014 03:33

Вложений: 1
riku.kh3, ну ты до этого давал файлик с чистым текстом, он же наверное прогой как-то извлекается, а значит наверное можно его обратно накатить. RLPAKTOOL никак не запускается. Фреймворк 4-ый установил всё-таки вчера с горем пополам, там в систребованиях его требуют. Но никак.

Просто комп я сюда привёз не мой. Я одному знакомому собрал новый крутой комп, а этот он хотел отремонтировать, а потом отдал мне, он полуживой P4 селерон одноядерный 2004-го где-то года выпуска. Памяти 2 по 512 стоит, но этого мало, чтобы открыть больше 3-ёх вкладок в браузере. И если что ему не нравится, так вываливается в синий экран, там память что-то глючит. Короче я с ним замучался, открывает папки по полчаса. Нажимаю "Мой компьютер" и иду заваривать кофе.

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

  1. 「 - A2 = A2
  2. 」 - A3 = A3
  3. ヲ - A6 = 82F0
  4. エ - B4 = 82A6
  5. カ - B6 = 82A9
  6. ケ - B9 = 82AF
  7. コ - BA = 82B1
  8. セ - BE = 82B9
  9. タ - C0 = 82BD
  10. ツ - C2 = 82C2
  11. テ - C3 = 82C4
  12. ト - C4 = 82C6
  13. ニ - C6 = 82C9
  14. モ - D3 = 82E0
  15. ヤ - D4 = 82E2
  16. ラ - D7 = 82E7
  17. リ - D8 = 82E8
  18. ル - D9 = 82E9
  19. レ - DA = 82EA
Это таблица символов с предыдущей страницы. Остальные символы можно восстановить логически или подампив память.
Причём там кириллический диапазон попадает Windows-1251 = C0-FF
  • 1-ый столбик - визуально отображаемые символы из дампа памяти.
  • 2-ой столбик - то, во что конвертирует PSP в памяти.
  • 3-ий столбик - то, что записано было в скриптпаке.

ErikPshat 15.05.2014 10:37

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

Я заметил, что в шрифте есть кодировка UTF-8 русская и она должна по идее отобразиться.

Цитата:

Сообщение от riku.kh3 (Сообщение 1086990)
tpunix-pgftool.rar из твоей темы. Обычной командой 'ttf_pgf font.ttf jpn.pgf' он у меня таким и создается.

Хмм, странно, а мне он показался сначала каким-то узконастраиваемым. Я как раз пользовался 2-ым тулзом из той же темы, т.к. я его сам собирал и в батнике весь хелп по командам прописал, там можно выставлять и ширину и высоту и очень гибко настраивать. Правда она делает вроде только ltn0.pgf, поэтому у меня символы Shift-JIS туда по-видимому не добавлялись.

А кстати, ты умеешь пользоваться tpunix-pgftool? :)
Там можно в PGF добавлять только те символы, которые тебе нужны, т.е. можно чисто отсекать все ascii символы, чтобы облегчить вес файла.

FAQ tpunix-pgftool
  1. Сначала создаёшь из TTF полный файл jpn0.pgf обычной командой: ttf_pgf font.ttf jpn0.pgf

  2. Затем дампишь из него список символов следующей прилагающейся тулзой: dump_pgf -c jpn0.pgf > unicode_list.txt

    То есть, командой -c ты из файла jpn0.pgf дампишь в текстовик unicode_list.txt список всех символов в 2-байтном виде.
    Там первые 2 нуля не считаются в однобайтовой кодировке, удаляешь ненужные строки символов и подсовываешь нужный список для изготовления из TTF только нужного тебе PGF.

  3. А нужный компактный PGF из TTF получаешь следующей командой: ttf_pgf *.ttf jpn0.pgf unicode_list.txt

    То есть, помимо стандартной команды, подсовываешь ему отредактированный список символов, которые необходимо включить в сборку.


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

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