Форум Anivisual закрыт. Вы не можете создавать новые темы или писать ответы. Форум будет работать в режиме архива.
Пользователи · Поиск по форуму · · · Регистрация

  • Страница 1 из 1
  • 1
Форум о визуальных новеллах » Для всех » Визуальные новеллы » Технический вопрос по замене шрифта в визуальной новелле
Технический вопрос по замене шрифта в визуальной новелле

Couguar

#1
Добрый день.
Я готовлюсь к переводу визуальной новеллы Itsuka, Todoku, Ano Sora ni.
Вопросы извлечения данных игры и поиска средств для модификации текста уже решены. Однако при замене японского текста на кириллицу та отображается с огромным расстоянием между символами и такого размера (рис №1), что более длинные строчки просто невозможно уместить в экран.


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

Игра работает на движке Ethornell BGI ver 1.66 (build 428.6)
Прилагаю скриншот со всеми файлами в папке игры:


Содержимое всех арк-архивов удалось распаковать. Назначение и способ работы с обоими файлами "BGI" - нет.
Внутри архивов sysprg и system лежат ._bp скрипты, которые удалось разобрать на части найденными в интернете дизассемблерами(2 разных результата одного из файлов ниже). Но мне непонятно что в них можно менять и каким образом.




Прошу совета знающих людей в каком месте искать указания на шрифт и (по возможности) каким образом его менять.

P.S. Надеюсь я разместил тему там где надо :)

Добавлено (07.03.2021, 08:39)
---------------------------------------------
Небольшой апдейт топику:

Шрифт удалось сменить через HEX редактирование .exe файла игры. 
Однако двойные промежутки между кириллическим текстом не исчезли (с латиницей всё в порядке). Как менять размер шрифта по-прежнему неясно.
Буду продолжать поиск этих параметров.

Прикрепления: 8988663.png (10.1 Kb) · 3041415.png (43.5 Kb) · 7143819.png (90.7 Kb) · 8553761.png (81.5 Kb)

Tester

#2
Цитата Couguar ()
Как менять размер шрифта по-прежнему неясно.
Могу подсказать весьма костыльный, но действенный вариант.

Можно использовать костыльный моноширинный шрифт, основанный на японском, причём такой, что в нём каждый кириллический символ, что в Shift-JIS полноширинен, поставлен в соответствие некоторому символу половинной каны и/или латиницы. Потом, конечно, придётся преобразовывать все кириллические символы в соответствующие костыльные символы, но то закодить элементарно.

И да, в .exe прописать новый шрифт (иногда шрифт в Ethornell лежит либо в архивах, либо открыто, но иногда, видно, просто строится по указанной модели).
Сообщение отредактировал Tester - Воскресенье, 07/Мар/2021, 09:37
Тестировать, тестировать и ещё раз тестировать.

Couguar

#3
Цитата Tester ()
Можно использовать костыльный моноширинный шрифт, основанный на японском, причём такой, что в нём каждый кириллический символ, что в Shift-JIS полноширинен, поставлен в соответствие некоторому символу половинной каны и/или латиницы. Потом, конечно, придётся преобразовывать все кириллические символы в соответствующие костыльные символы, но то закодить элементарно.
Большое спасибо за совет, но всё же прошу уточнить, как именно это делается.

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

Tester

#4
Цитата Couguar ()
Скорее всего, я что-то не так понимаю.
Что ж, ряд движков не поддерживает полиширинные шрифты (т.е. с произвольной шириной каждого символа), посему по ширине символов задаются по-своему. В частности, Ethornell (по крайне мере в версии той игры, ибо встречались иные случаи, когда забирались Юникодовые строки из файла-патча, но не будет о таком) берёт строки на Shift-JIS и задаёт полуширинным одну ширину, а полноширинный -- иную.
Таким образом, в вашем случае менять границы кириллических символов особого смысла нет.
А ежели вы попробуете уменьшить ширину при отрисовке моноширинника, при сим используя кириллицу, то у вас будут обрезаться куски букв (хотя против сего и можно принять меры, проще использовать костыли).

Есть ряд способов сделать поддержку и полиширинных в такого рода движках, но дело то, так скажем, не самое лёгкое и быстрое (доводилось такое делать, пусть и немного с другим движком), в свою очередь костылями можно обеспечить относительно корректную отрисоку при относительно невысоких затратах сил.

Цитата Couguar ()
Большое спасибо за совет, но всё же прошу уточнить, как именно это делается.

1. Берётся некоторый моноширинный шрифт, причём достаточно узкий (допустим, Ubunta Mono или как-то так).
2. Берётся японский MS Gothic.
3. Берутся кириллические символы и копируются в ячейки, где расположена половинная кана или латиница. Соответствия записываются!
4. Пишется программа, которая меняет кириллические символы на символы после преобразования.
5. С помощью шестнацатеричного редактора подменяется шрифт (строго говоря в движках далеко не всегда так).

Далее уже заполняете скрипты кириллицей, копируете, потом преобразовываете один из.

Ещё в таком случае желательно написать скрипт установки шрифта без необходимости перезагрузки для Windows. Рядовым пользователям вельми поможет.

Кроме того, при необходимости могу вам подобрать какой-нибудь из своих костыльных шрифтов (довелось мне их немало сделать) вместе с программой преобразования.
Сообщение отредактировал Tester - Воскресенье, 07/Мар/2021, 18:27
Тестировать, тестировать и ещё раз тестировать.

Couguar

#5
Цитата Tester ()
Кроме того, при необходимости могу вам подобрать какой-нибудь из своих костыльных шрифтов (довелось мне их немало сделать) вместе с программой преобразования.
Был бы очень благодарен , потому что сам я в программировании, к сожалению мало что понимаю. Всё что удалось сделать выше мне помогли поиск и советы от других людей :)

Tester

#6
Что ж, можете попробовать вот сие. (Ежели сей не подойдёт -- пишите, у меня их около десяти).
(Данный костыльный шрифт есть классический костыльный шрифт, основанный на половинной кане. С ним должны работать как символы латиницы, так и кириллицы).

Программа требует Питона 3.
Программа разработана специально для удобства работы (там ещё куча режимов, но на них не обращайте внимания). Работать с ней можете следующим образом...
1. Копируйте исходную строку скрипта (можете много строк, не важно, хоть весь файл копируйте). (С помощью Ctrl+C или с помощью Ctrl+A и потом Ctrl+C).
2. Запускайте программу.
3. Содержимое буфера обмена будет преобразовано. Преобразованный текст заменит в буфере обмена исходный. Теперь можете с помощью Ctrl+V получить изменённый текст.
Сообщение отредактировал Tester - Воскресенье, 07/Мар/2021, 19:49
Тестировать, тестировать и ещё раз тестировать.

Couguar

#7
Огромное спасибо!

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

На этом можно считать мой вопрос решённым.
Форум о визуальных новеллах » Для всех » Визуальные новеллы » Технический вопрос по замене шрифта в визуальной новелле
  • Страница 1 из 1
  • 1
Поиск: