Решено Изменение шрифта (1.6.2)

Drak0n4ik

Старожил
Баллы
103
Как изменить шрифты?

Я хочу чтобы локализованная версия выглядела так же, как и английская.
Оригинал выглядит так:
sdVWlwz.png


Выбор локализации изменяет шрифт на такой
g6SKhQT.png


Подмена ascii ни к чему хорошему не приводит. С другой стороны, при выборе языка кириллические символы подгружаются с файла unicode_page_04.png и unicode_page_00.png (латинница, кириллица + символы). Масшабирование файлов дает плохой результат.

Вопрос: как изменить шрифт? Или у кого-нибудь есть перерисованные файлы? Или как это вообще делается?
 
Как изменить шрифты?

Я хочу чтобы локализованная версия выглядела так же, как и английская.
Оригинал выглядит так:
sdVWlwz.png


Встроенный шрифт выглядит так:
g6SKhQT.png


Подмена ascii ни к чему хорошему не приводит. С другой стороны, при выборе языка кириллические символы подгружаются с файла unicode_page_04.png и unicode_page_00.png (латинница, кириллица + символы). Масшабирование файлов дает плохой результат.

Вопрос: как изменить шрифт? Или у кого-нибудь есть перерисованные файлы? Или как это вообще делается?

Сейчас попробую, сам давно с такой проблемой сталкивался.
Все настройки хранятся в файле glyph_sizes.bin. Но для того, что-бы правильно его настроить нужно немного разбираться в настройке бинарного кода.
Открывать его через HEX.
Выглядит эта настройка, у меня, примерно так:
pDh7mQb.png
 
Фраза «разбираться в бинарном коде» некорректна. Все в компьютере представляется бинарным кодом. Но я тебя понял.

Вот что я нашел. Каждый байт представляет пределы одного символа. Первые четыре бита (старшие) задают левую грань, последние четыре (младшие) — правую. Рендер шрифта не учитывает расстояние между символами, так что его лучше сразу задавать в шрифте.
Взято отсюда: http://www.minecraftforum.net/topic/1883141-custom-unicode-fonts-not-supported-in-resource-packs/

Так что буду пробовать.
 
Фраза «разбираться в бинарном коде» некорректна. Все в компьютере представляется бинарным кодом. Но я тебя понял.

Вот что я нашел. Каждый байт представляет пределы одного символа. Первые четыре бита (старшие) задают левую грань, последние четыре (младшие) — правую. Рендер шрифта не учитывает расстояние между символами, так что его лучше сразу задавать в шрифте.
Взято отсюда: http://www.minecraftforum.net/topic/1883141-custom-unicode-fonts-not-supported-in-resource-packs/

Так что буду пробовать.

Вообщем, если что-то выйдет, сможешь научить? А то я в этом почти ничего не понимаю.
 
Если получится, расскажу. А пока пусть тема висит открытой.
Не все так просто с глифами. Подменить на грубый в коей мере удалось… В чем еще проблема, надо думать.
Если глифы задают только участок по каких пикселях резать изображение, то параметры центрирования где-то в другом месте. Или же я что-то слишком сильно испортил.
Латиницу пока не трогал.
kfXGYhO.png
cajjoj9.png
 
Если получится, расскажу. А пока пусть тема висит открытой.
Не все так просто с глифами. Подменить на грубый в коей мере удалось… В чем еще проблема, надо думать.
Если глифы задают только участок по каких пикселях резать изображение, то параметры центрирования где-то в другом месте. Или же я что-то слишком сильно испортил.
Латиницу пока не трогал.
kfXGYhO.png
cajjoj9.png

Да да да. Сейчас порою в истории, там была ссылка на такой форум. У них была та же проблема.
http://ttyh.ru/post/62382 нашел!
Но есть маленькая проблема. Все самые важные ссылки - на сайт, который вырубился навсегда.
Удачи! Если все выйдет - сообщишь.
 
Да да да. Сейчас порою в истории, там была ссылка на такой форум. У них была та же проблема.
http://ttyh.ru/post/62382 нашел!
Но есть маленькая проблема. Все самые важные ссылки - на сайт, который вырубился навсегда.
Удачи! Если все выйдет - сообщишь.


*Удивленный возглас возле монитора*
ДА ТЫ ЧТО, ЭТО РАБОТАЕТ!!!
Вот прям форум выручил! Спасибо за ссылку! Одно спасибо форуму за уже нарисованные буковки, второе — за подсказку в которую сторону копать.

В чем фишка: метод почему-то странно возвращал ширину буквы. Теперь, если буква в ширину имеет 10 пикселей, то это значит, что буква в ширину имеет 10 пикселей, а не 15 (хрен его знает почему так делалось в оригинальном методе, там был один заплет).

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

Примечание: украинские буквы тоже прорисованы и тоже работают.
VXfjBu9.png

3q1UjAD.png
 

Вложения

Осталось понять, как приклеивать HD шрифты 🙂
 
Переписывать методы, которые отвечают за прорисовку шрифтов (avf.class, он же FontRenderer.java).

А если для 1.5.2? Там скорее всего будет другой файл .class, главный вопрос - какой?
Просто когда я подключил, у меня получилось, но все сдвинуто.

А, и еще. Там он все равно не пишет на табличках по русски.
 
А если для 1.5.2? Там скорее всего будет другой файл .class, главный вопрос - какой?
Просто когда я подключил, у меня получилось, но все сдвинуто.

А, и еще. Там он все равно не пишет на табличках по русски.

Можешь попробовать тот же файл. Существует вероятность, что это именно он. Тебе нужен FontRenderer.java. Возможно, найдешь как он в 1.5.2 называется.

Чтобы на табличках можно было писать, в клиент и буккит (в 1.6.2 точно) надо залить файл font.txt. Тут ты указываешь все допустимые символы, которыми ты разрешаешь писать на табличках. Соответственно, добавляешь все кириллические большие и маленькие буквы.
 
Можешь попробовать тот же файл. Существует вероятность, что это именно он. Тебе нужен FontRenderer.java. Возможно, найдешь как он в 1.5.2 называется.

Чтобы на табличках можно было писать, в клиент и буккит (в 1.6.2 точно) надо залить файл font.txt. Тут ты указываешь все допустимые символы, которыми ты разрешаешь писать на табличках. Соответственно, добавляешь все кириллические большие и маленькие буквы.

Извини за нубство, но все таки. Я в java не очень. 1.6.2 у меня со всеми файлами работает, а 1.5.2 нет. И я немного не догоняю, что надо менять в том .java файле.
 
Извини за нубство, но все таки. Я в java - полный 0. 1.6.2 у меня со всеми файлами работает, а 1.5.2 нет.

В 1.5.2 совершенно другая структура файлов.
Первая часть, чтобы заработало: переименовать unicode_page_XX.png на glyph_XX.png и подменить их и glyph_sizes.bin.
Вторая часть: avf.class не кидать. Вместо этого найти декомпилированный FontRenderer.java, скомпилировать его и подсунуть в джарку. META-INF удалить.
 
В 1.5.2 совершенно другая структура файлов.
Первая часть, чтобы заработало: переименовать unicode_page_XX.png на glyph_XX.png и подменить их и glyph_sizes.bin.
Вторая часть: avf.class не кидать. Вместо этого найти декомпилированный FontRenderer.java, скомпилировать его и подсунуть в джарку. META-INF удалить.

Это я все сделал, но вот с пунктом про avf.class и FontRenderrer.java не очень понял.
Это я все сделал, но вот с пунктом про avf.class и FontRenderrer.java не очень понял.

Внимание!!! Данный способ не работает вместе с OptifineHD!
 
Назад
Верх