forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Модули для BlitzMax (http://forum.boolean.name/forumdisplay.php?f=105)
-   -   Быстрый полиширинный шрифт (http://forum.boolean.name/showthread.php?t=16325)

Черный крыс 14.02.2012 09:58

Быстрый полиширинный шрифт
 
Вложений: 1
Доброго.

Итак продолжаю невеселый трактат о недостатках и недоработках оффициального БМакса. Сегодня речь пойдет про шрифт.

Оффициальный шрифт - вещь очень неудобная, вот его недостатки :

1) Процесс загрузки шрифта идет напрямую через либу написанной на С (тоесть в обход БМаксовского TStream). Вроде бы какая разница ? ан нет - теперь такие шрифты не загрузиш из ОЗУ, в ПАК-архив его закинуть конечно можно, но прежде чем загрузить такой шрифт, придется его извлечь на уровне файловой системы, что не очень удобно.

2) Шрифт является моноширинным, тоесть все буквы имеют одинаковую ширину, в природе же это не так.

А теперь про достоинства :

2) Формат true type - векторный. Можно на этапе загрузки задать любой размер - качество будет оптимальным.

А теперь про мой шрифт.

1) Его можно загрузить из ОЗУ
2) Буквы имеют разную ширину
3) Он растровый, поэтому размер шрифта формируется на этапе создания картинки
4) При отрисовке не происходит переключения текстур. Скорость отрисовки моего шрифта ~2x раз быстрее, и чем больше обьем рисуемого текста тем больше будет разница в производительности.

Плюс ко всему в него встроены следующие тэги :

Код:

[bold]жирный текст[\bold]
[alpha, 0.5]полупрозрачный текст[\alpha]
[color, 255, 0, 0]красный текст[\color]
[blend, LIGHTBLEND]светящийся текст[\blend]
[uline, space, offset]подчеркнутый текст[\uline]
[mline, space, offset]зачеркнутый текст[\mline]

Кроме того :

+ Текст полностью трансформируемый
+ Модуль имеет функции для форматированной отрисовки текста
+ Можно менять модель отрисовки жирного текста
+ Тэги могуть располагаться в любой вложенности
+ ВСЕ С ОТКРЫТЫМ ИСХОДНЫМ ТЕКСТОМ

Создание файла шрифта :

В папочке "Tools" имеется исходник "fnt2png.bmx" - этот пример показывает как можно текстовый файл с описанием шрифта сконвертировать в графический файл шрифта. Конкретно этот пример конвертит файл .fnt сгенерированный редактором шрифтов HGE. Делается это так : Генерируем шрифт утилитой, которая идет с поставкой HGE -> кладем сгенерированные файлы .fnt и .png в папку где лежит файл fnt2png.exe -> На данном этапе можно редактировать в фотошопе картинку шрифта -> И на екзешник перетаскиваем файл .fnt, после чего сгенерируется файл шрифта "имя_шрифта_fnt.png".

По аналогии можно написать конвертер и из других "шрифтовых" утилит.

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

PS
Модуль полностью задокументирован и имеет полный набор примером -> Rebuid Documentation ! =)

Randomize 14.02.2012 22:54

Ответ: Быстрый полиширинный шрифт
 
В целом очень понравилось, но не считаешь ли, что теги внутри текста лишние?

Данил 15.02.2012 16:53

Ответ: Быстрый полиширинный шрифт
 
зато самому не нужно реализовать, спасибо!

HolyDel 15.02.2012 23:15

Ответ: Быстрый полиширинный шрифт
 
стресс тест бы какой нибудь?
с родным текстом и твоим!
откомпилированным.

Черный крыс 17.02.2012 22:01

Ответ: Быстрый полиширинный шрифт
 
Цитата:

но не считаешь ли, что теги внутри текста лишние?
повторюсь : все с открытыми исходниками. Если тэги не нужны то закоментируй все вызовы метода Parse() или же сделай этот метод пустым.

или же, возможно, ты считаешь что парсинг отнимает много времени? Если в рисуемом тексте нет тэгов - то метод Parse() не вызовится ни разу.

Цитата:

зато самому не нужно реализовать, спасибо!
Этот модуль как раз и задумавался мною, чтобы покончить со всеми недостатками и недоработками текста Блиц-макса.

Цитата:

стресс тест бы какой нибудь?
с родным текстом и твоим!
откомпилированным.
Он есть в папке Test. У меня инет - не ахти какой... может кто выложит?

ЗЫ
Сейчас этот модуль переписывается полностью, шрифты станут в виде обьектов с более простым и удобным интерфейсом. релиз очень скоро. ;)


Часовой пояс GMT +4, время: 02:24.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot