Войти
ПроектыФорумУтилиты

[v 1.1] UBFG - Генератор растровых шрифтов

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 332 33 Следующая »
#0
19:52, 18 сен. 2011

UBFG (Ultimate Bitmap Font Generator) — генератор растровых шрифтов


ВНИМАНИЕ! Ссылки на загрузку, документация по формату здесь: http://github.com/scriptum/UBFG

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

Растровые шрифты очень часто применяются в OpenGL: это самый быстрый способ выводить текст на видеокарте. Однако, создать качественный OpenGL шрифт очень непросто. Данная программа сочетает в себе все возможности, необходимые для создания растровых шрифтов, пригодных для использования в OpenGL и не только.

+ Ключевые преимущества генератора
Изображение
+ Примеры созданных шрифтов

Несколько советов по упаковке шрифтов:

  •  разные операционные системы имеют свой алгоритм рендеринга шрифтов. Не удивляйтесь, если галочка smooth не работает, а созданная в Win текстура не влезет в нужный размер по Mac. Настройки ОС в плане шрифта могут повлиять на результат, поэтому не рекомендуется использовать субпиксельное сглаживание.
  •  ВАЖНО! При экспорте обязательно указывайте правильную кодировку. Кодировка UNICODE универсальна и используется по умолчанию. Обратите внимание, что операционные системы Linux по умолчанию сохраняют в UTF-8, а Windows норовит подсунуть что-нибудь вроде latin или roman (причём каждая Windows ведёт себя уникально). Ошибка с кодировкой при экспорте может обернуться непредсказуемыми багами. Учитывайте также то, что азиатские, арабские и другие редкие символы рекомендуется экспортировать только в UNICODE или UTF-8.
  •  если шрифт не планируется масштабировать, лучше оставьте border = 0, так как на немасштабируемых шрифтах артефакты незаметны (при достаточно точном наложении текстуры и попадании букв в пиксельную сетку). Для больших шрифтов, которые могут менять масштаб, бордюр в 1 пиксель оставлять обязательно с двух сторон буквы. Я обычно делаю две текстуры: в первую загоняю масштабируемый шрифт, во вторую текстуру упаковываю все немасштабируемые.
  •  если у вас один шрифт на текстуре, то наиболее эффективен метод Maxrects, Heuristic: Top Left, Sort by Height.
  •  Если у вас очень много шрифтов на одной текстуре, то имеет смысл попробовать Maxrects, Heuristic: Best Long Side, Sort by Height или Maxrects, Heuristic: Best Short Side, Sort by Width
  •  иногда то, что не влезло в 512*256, влезет в 256*512
  •  разделите шрифты которые будут масштабироваться в игре (большие) и которые не будут (маленькие: консоль, мелкий текст и пр.) на разные текстуры. Это позволит не использовать бордюр для не масштабируемых текстур и сэкономить много места.
  • + Скриншоты

    Проект на гитхабе:
    http://github.com/scriptum/UBFG

    Ежедневная сборка


    - Исходный код
    - Linux x86_64 Qt 4.8

    Загрузить UBFG 1.1


    В версиях, собранных здесь, был исправлен bearing шрифта, что отличает их от тех версий, что под тегом 1.1 в гит.
    - Исходный код (без исправления bearing)
    - Linux x86_64, контрольная сумма 34342e353b340afd7a283bed89bce4a6
    - Linux x86, контрольная сумма 44dbc6b562a679d31a63b1d6a3ddfdcd
    - Mac OS
    - Windows, вирусов нет
    + Подробное описание возможностей

    #1
    20:18, 18 сен. 2011

    RPG
    > - возможность оставления зазора 1 пх между буквами
    а произвольный зазор нельзя задать?

    #2
    20:21, 18 сен. 2011

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

    Вот так выглядят шрифты в реальной жизни: http://love2d.org/forums/viewtopic.php?p=32425#p32425

    #3
    20:22, 18 сен. 2011

    > - открытые сырцы
    RPG, классная фича. Только было бы хорошо, если бы она реально была )) Ты бы залил куда-нибудь на гугло-код сорцы, что ли, если они в самом деле открытые..

    #4
    20:23, 18 сен. 2011

    Я интересуюсь и у меня винда. Заодно попробую запустить первую прогу на Qt, что это за зверь такой... Хотя странно слышать об открытых исходниках, если на них нет ни одной ссылки :)

    #5
    20:24, 18 сен. 2011

    > Ты бы залил куда-нибудь на гугло-код сорцы, что ли, если они в самом деле открытые..
    Залью на гитхаб. Просто когда делал, не до этого было (проге скоро год)

    #6
    20:44, 18 сен. 2011

    Версия для винды:
    не актуально

    И несмотря на, то что прога собрана статически, некоторых либ может не хватать (только скажите каких).

    Сборка может отличаться от сриншота так как собирал фиг знает когда.

    #7
    20:51, 18 сен. 2011

    1. Название BFG доставляет :)
    2. Не хватает libgcc_s_dw2-1.dll :(

    #8
    21:57, 18 сен. 2011

    > Название BFG доставляет :)
    Название должно быть символичным:)
    > Не хватает libgcc_s_dw2-1.dll :(
    Выкладываю. На вирусы чекайте на всякий случай, у меня иммунитет - линус, так что не особо заботился об антивире.
    https://github.com/downloads/scriptum/UBFG/libgcc_s_dw2-1.dll

    Обещанные сырцы и небольшое руководство:
    https://github.com/scriptum/UBFG

    Кстати на этом же аккаунте гитхаба есть реализация алгоритма рендеринга этих шрифтов.

    #9
    22:19, 18 сен. 2011

    RPG
    Выглядит интересно. Завтра рассмотрю подробнее.

    #10
    22:19, 18 сен. 2011

    С dll-кой запустилось, сгенерилось. Только не хватает доков по формату файла font.fnt, а в остальном блеск.

    #11
    23:18, 18 сен. 2011

    Немного неудобная система по добавлению шрифтов. Может сделать не PlainText, а ListBox(или как там в qt)? Добавлять/удалять проще будет.
    При сборке было несколько warning'ов про unused, uninitialized переменные.
    А так - ништяк. Думаю, многим будет полезно.

    #12
    23:25, 18 сен. 2011

    Я сначала сделал лист боксом, но что-то не понравилось... Может быть то что неудобно быстро в лист боксе поправить размер шрифта.
    А ещё когда надо сделать десяток начертаний одного шрифта проще накопипастить и менять только цифры.

    #13
    23:42, 18 сен. 2011

    Кстати забыл сказать, что на основе этого алгоритма планируется выпуск упаковщика спрайтов. Суть та же: есть куча мелких спрайтов, которые долго грузятся, упаковываем их все в одну мегатекстуру с объединением и с обрезкой пустого пространства. Но ввиду нехватки на это времени даже не начинал.

    Такой упаковщик уже существует, но достаточно кривой для линукса и снова не лишён фатального недостатка...

    #14
    23:57, 18 сен. 2011

    Какая лицензия?

    Страницы: 1 2 332 33 Следующая »
    ПроектыФорумУтилиты