Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "[Архив] Помощь", создана пользователем Drak0n4ik, 24 сен 2013.

  1. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

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

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

    Выбор локализации изменяет шрифт на такой
    [​IMG]

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

    Вопрос: как изменить шрифт? Или у кого-нибудь есть перерисованные файлы? Или как это вообще делается?
     
    syllik и I-Am-Black-Overlord нравится это.
  2. Хостинг MineCraft
    <
  3. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    Сейчас попробую, сам давно с такой проблемой сталкивался.
    Все настройки хранятся в файле glyph_sizes.bin. Но для того, что-бы правильно его настроить нужно немного разбираться в настройке бинарного кода.
    Открывать его через HEX.
    Выглядит эта настройка, у меня, примерно так:[​IMG]
     
  4. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

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

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

    Так что буду пробовать.
     
    slavik123123123 нравится это.
  5. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    Вообщем, если что-то выйдет, сможешь научить? А то я в этом почти ничего не понимаю.
     
  6. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

    Баллы:
    103
    Если получится, расскажу. А пока пусть тема висит открытой.[DOUBLEPOST=1380053752,1380045005][/DOUBLEPOST]Не все так просто с глифами. Подменить на грубый в коей мере удалось… В чем еще проблема, надо думать.
    Если глифы задают только участок по каких пикселях резать изображение, то параметры центрирования где-то в другом месте. Или же я что-то слишком сильно испортил.
    Латиницу пока не трогал.
    [​IMG][​IMG]
     
  7. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    Да да да. Сейчас порою в истории, там была ссылка на такой форум. У них была та же проблема.[DOUBLEPOST=1380054802][/DOUBLEPOST]http://ttyh.ru/post/62382 нашел!
    Но есть маленькая проблема. Все самые важные ссылки - на сайт, который вырубился навсегда.
    Удачи! Если все выйдет - сообщишь.
     
    Drak0n4ik нравится это.
  8. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

    Баллы:
    103

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

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

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

    Примечание: украинские буквы тоже прорисованы и тоже работают.
    [​IMG]
    [​IMG]
     

    Вложения:

    InterWall и Dereku нравится это.
  9. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Осталось понять, как приклеивать HD шрифты :)
     
  10. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

    Баллы:
    103
    Переписывать методы, которые отвечают за прорисовку шрифтов (avf.class, он же FontRenderer.java).
     
    zuma2 нравится это.
  11. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Да лучше бы БЕЗ изменения клиента. Так то исправить легко.
     
  12. InterWall

    InterWall Старожил Пользователь

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

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

    Drak0n4ik Старожил

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

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

    InterWall Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    Извини за нубство, но все таки. Я в java не очень. 1.6.2 у меня со всеми файлами работает, а 1.5.2 нет. И я немного не догоняю, что надо менять в том .java файле.
     
  15. Автор темы
    Drak0n4ik

    Drak0n4ik Старожил

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

    InterWall Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    Это я все сделал, но вот с пунктом про avf.class и FontRenderrer.java не очень понял.[DOUBLEPOST=1380362320,1380119965][/DOUBLEPOST]
    Внимание!!! Данный способ не работает вместе с OptifineHD!
     

Поделиться этой страницей