Технические вопросы руссификации
Решил создать тему, в которую все, кто ковыряет движок, могли бы писать свои наработки.
Так, например, есть проблема, связанная с невлезанием строк в отведённое им на экране место, причём заранее угадать это из-за разной ширины символов невозможно. Так, если посчитать, то букв «Ж» туда влезает всего-то около сотни, но это же не повод все фрагменты разбивать на короткие фразы, верно?
Первое, что приходит в голову – попытаться уменьшить размер шрифта.
Итак, что я пробовал:
Шаг 1.
Вроде как маны говорят, что за это отвечает свойство 'size' в параметре 'styleoverrides' в файле 'ui-strings.rpy'.
Попробовал скормить такое:
displayDict['en'].styleoverrides = {'font':mainfont, 'language':'western', 'size':-2, 'line_spacing':0}
Но получил ошибку 'SDL_ttf render failed'. Народ активно пытается её побороть, но, как я понял, всё сводится к косяку некой библиотеки.
Увы.
Шаг 2.
Шрифт. Так и не нашёл, где прописывается дефолтный шрифт (и его размеры), зато нам вполне под силу использовать какой-то свой. Для этого создаём в папке со скриптами 'game' подпапку 'fonts', куда и кладём файл со шрифтом. После этого указываем его в 'ui-strings.rpy' как-то так:
Но мои эксперименты со шрифтами ни к какому сколь-нибудь интересному результату не привели :(
Шаг 3.
А это что за нахер там такой – 'line_spacing'? А это – весьма любопытный нахер. Расстояние это межстрочное. Вот с ним поиграться стоит. И на текущий момент именно это свойство я и предложил бы использовать. Вместо нуля принимает как положительные, так и отрицательные значения. Положительные увеличивают отступ, отрицательные уменьшают. Значение в пикселях.
Так, при значении '-4' мы выгадываем ещё одну строчку, тем самым увеличивая кол-во влезающих 'Ж' примерно до 140, что весьма неплохо. Впрочем, при значении '-3' влезает столько же, только нижняя строка практически касается нижней рамки. Зато интервал всё же больше, а в большинстве фрагментов до 4-й строки всё равно дело не дойдёт, так что я – ЗА значение '-3'.
К слову, если мерить буквами 'о', то их влезает 280 штук, букв 'п' влезет аж 320 штук, а 'а' – тоже 320. Если померить 'Жопа'-ми, то это замечательное слово (именно с большой буквы, с пробелами между словами!) влезает 48 раз, что составляет 240 символов. Такая вот увлекательная у нас арифметика выходит :))))))
Но! Но обращаю внимание, что параметр 'styleoverrides' – глобальный, т.е. во всей игре эти отступы уменьшатся, поэтому злоупотреблять особо не стоит.
Ссылка по теме: http://www.renpy.org/wiki/renpy/doc/reference/List_of_Properties
PS Ссылка на файл шрифта с поддержкой жирности playtime_cyr2.ttf: http://vayurik.ru/ks/playtime_cyr2.ttf
Так, например, есть проблема, связанная с невлезанием строк в отведённое им на экране место, причём заранее угадать это из-за разной ширины символов невозможно. Так, если посчитать, то букв «Ж» туда влезает всего-то около сотни, но это же не повод все фрагменты разбивать на короткие фразы, верно?
Первое, что приходит в голову – попытаться уменьшить размер шрифта.
Итак, что я пробовал:
Шаг 1.
Вроде как маны говорят, что за это отвечает свойство 'size' в параметре 'styleoverrides' в файле 'ui-strings.rpy'.
Попробовал скормить такое:
displayDict['en'].styleoverrides = {'font':mainfont, 'language':'western', 'size':-2, 'line_spacing':0}
Но получил ошибку 'SDL_ttf render failed'. Народ активно пытается её побороть, но, как я понял, всё сводится к косяку некой библиотеки.
Увы.
Шаг 2.
Шрифт. Так и не нашёл, где прописывается дефолтный шрифт (и его размеры), зато нам вполне под силу использовать какой-то свой. Для этого создаём в папке со скриптами 'game' подпапку 'fonts', куда и кладём файл со шрифтом. После этого указываем его в 'ui-strings.rpy' как-то так:
rufont = 'fonts/DejaVuSansCondensed.ttf'
displayDict['en'].styleoverrides = {'font':rufont, 'language':'western', 'line_spacing':0}
displayDict['en'].sayfont = rufont
Но мои эксперименты со шрифтами ни к какому сколь-нибудь интересному результату не привели :(
Шаг 3.
А это что за нахер там такой – 'line_spacing'? А это – весьма любопытный нахер. Расстояние это межстрочное. Вот с ним поиграться стоит. И на текущий момент именно это свойство я и предложил бы использовать. Вместо нуля принимает как положительные, так и отрицательные значения. Положительные увеличивают отступ, отрицательные уменьшают. Значение в пикселях.
displayDict['en'].styleoverrides = {'font':mainfont, 'language':'western', 'line_spacing':-3}
Так, при значении '-4' мы выгадываем ещё одну строчку, тем самым увеличивая кол-во влезающих 'Ж' примерно до 140, что весьма неплохо. Впрочем, при значении '-3' влезает столько же, только нижняя строка практически касается нижней рамки. Зато интервал всё же больше, а в большинстве фрагментов до 4-й строки всё равно дело не дойдёт, так что я – ЗА значение '-3'.
К слову, если мерить буквами 'о', то их влезает 280 штук, букв 'п' влезет аж 320 штук, а 'а' – тоже 320. Если померить 'Жопа'-ми, то это замечательное слово (именно с большой буквы, с пробелами между словами!) влезает 48 раз, что составляет 240 символов. Такая вот увлекательная у нас арифметика выходит :))))))
Но! Но обращаю внимание, что параметр 'styleoverrides' – глобальный, т.е. во всей игре эти отступы уменьшатся, поэтому злоупотреблять особо не стоит.
Ссылка по теме: http://www.renpy.org/wiki/renpy/doc/reference/List_of_Properties
PS Ссылка на файл шрифта с поддержкой жирности playtime_cyr2.ttf: http://vayurik.ru/ks/playtime_cyr2.ttf
Комментарии
Блог перевода
Рубрики:Перевод
- Перевод:
- текст с английского на русский
- Создан:
- 23 мая 2013, владелец: 6_aman
- Скачали:
- 44 чел.
- Права доступа:
-
войти все видеть чужие версии все скачивать результат никто оценивать перевод группа комментировать перевод группа переводить группа читать блог все комментировать блог все писать в блог группа анонсировать модераторы редактировать оригинал никто редактировать описание никто управлять группой никто Участие в группе по приглашению от создателя - Готово:
-
90.06% КП = 1.0

То, что при -3 буквы касаются нижней рамки, я думаю, ничего страшного.
Про «злоупотреблять особо не стоит» не понял. Либо меняем, либо нет, так ведь?
скрытые комментарии (12 шт.)
Это я к тому, что вдруг кто-нить предложит какое-то ацкое значение, типа '-10' :D
Тогда туда точно всё влезет, ещё и останется, но только смотреться это будет... И в меню в том числе.
Главное, чтобы строки друг на друга не налезали. И чтобы глаза не ломались при чтении. А так, я не против и такого варианта. Как не против и переноса текста на другую строку. Единственный вопрос у меня вызывают блоки типа n/n/n, в которых реально много текста, сверху донизу. Что вот там будет...
Там со значением -3 должно быть всё в порядке, так как мы изначально стремились не превышать лимит знаков, но в крайнем случае (а это можно будет определить только при тестировании) можно кол-во n-ок уменьшить, так как n/ -обозначает пропущенную строку, если мне не изменяет память.
Нет, всё не так, ребята.
«n» – это «заметка», она выводится совершенно иначе и проблемы невлезания текста в блок нет, т.к. там, если мне память не изменяет, всё же уже года два прошло, как я в KS играл, этот блок – во весь экран.
А я сейчас проверю, чё :)
Да, так и есть:

Я имею в виду, когда там будет настоящий текст, который в большинстве случае на русский переведён с использованием большего числа символов
Есть не просто междустрочное расстояние в этих блоках, но оно ещё и разное между самими предложениями. Где-то больше, где-то меньше.
Ну, т.к. тут тоже работает уменьшение отступа между строками, то не думаю, что будут проблемы. А если и будут, то все мы сможем их отловить только по результатам тестирования, думаю.
Вот это, кстати, то самое 'line_spacing':-3
Ну, в принципе, нормально всё. Я только не видел, как будет выглядеть строчная буква «д» или «у» над какой-нибудь заглавной, той же «Д», например, или над строчной «б».
О! Ты прав! Сейчас потещу, чтобы одна над другой – сцпятся или нет хвостами?
Всё прилично:

Близко, конечно, но вроде вполне приемлемо. А, всё равно будем бета-тест делать (ну, быстренько), тогда и будем уже говорить, насколько удобно час-другой читать текст.
Так, не зря я весь день сегодня
ебалсятрахался в попытках извлечь каким-то ректальным образом шрифт с поддержкой жирности в кириллице. Уж и так, и эдак, нету шрифта! Уж и софтом специфическим в «песочнице» игру запускал, и из PDF-мануала 1-го акта пытался шрифт извлечь... Даже w8m в личку на Хоняках написал, но он пока так и не ответил.Решение (точнее, направление, куда двигаться) нашёл, как ни странно, всё там же – у Хоняк: http://honyaku-subs.ru/forums/viewtopic.php?f=20&t=144#p1726
Если точнее, делаем следующее:
1. Файл с именем script.rpy создаём в папке game, в него кладём то, что приведено по ссылке выше в решении Б.
2. Переименовываем расширение оригинальному ui_labels.rpyc в папке game, например, в ui_labels.rpyc_. Копируем в эту же папку полученный одним из двух способов (лень искать, в блоге была тема про извлечение исходников скриптов) файл ui_labels.rpy. Находим в нём блок, начинающийся с «label start:» и удаляем его.
Всё. Теперь после запуска игры жмакаем «Начать», ждём, пока опять не появится меню, и закрываем игру. В появившейся папке «extracted» находим много интересного :)
Пока остановился на значении 'line_spacing':-1
При таких настройках влезает 4 строки, примерно 280 символов. Столько же влезает и при значении 0, но тогда нижняя строчка липнет к нижней рамке.
То ли шрифт кириллический в принципе меньше (тогда-то я ковырялся с нативным шрифтом), то ли просто землица попросела... В общем, пока пусть будет -1, а потом, по итогам тестирования примем окончательное решение.
Кстати, можно же и рамку увеличить, есичё :)
скрытые комментарии (6 шт.)
Ь +
Не, простым увеличением размера плашки проблему не решить – если текст не влезает, то плашка всё равно поднимается вверх. Т.е. это надо код ковырять, а ну его нах. Будем упихивать невпихуемое, коли таковое встретится.
У меня вообще проблемно получилось менюшку вставить:




Причём при уменьшении параметра высоты знаков, межстрочные интервалы сохраняются прежними :(
Это с моими скриптами, которые я вчера выложил? :(
Или это ты уже у себя там наковырял? :)
Я у себя, с месяц назад ещё делал...