Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > Модули для BlitzMax

Ответ
 
Опции темы
Старый 14.02.2012, 09:58   #1
Черный крыс
 
Сообщений: n/a
Быстрый полиширинный шрифт

Доброго.

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

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

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 ! =)
Вложения
Тип файла: rar imagefont.mod.rar (129.6 Кб, 719 просмотров)
 
Ответить с цитированием
Эти 11 пользователя(ей) сказали Спасибо за это полезное сообщение:
ABTOMAT (14.02.2012), Arles (16.02.2012), Dzirt (15.02.2012), HolyDel (15.02.2012), Hurrit (14.02.2012), mauNgerS (16.02.2012), mihailkirillov (18.02.2012), Nex (14.02.2012), Randomize (14.02.2012), SBJoker (14.02.2012), Данил (15.02.2012)
Старый 14.02.2012, 22:54   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Быстрый полиширинный шрифт

В целом очень понравилось, но не считаешь ли, что теги внутри текста лишние?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Online)
 
Ответить с цитированием
Старый 15.02.2012, 16:53   #3
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: Быстрый полиширинный шрифт

зато самому не нужно реализовать, спасибо!
(Offline)
 
Ответить с цитированием
Старый 15.02.2012, 23:15   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Быстрый полиширинный шрифт

стресс тест бы какой нибудь?
с родным текстом и твоим!
откомпилированным.
(Offline)
 
Ответить с цитированием
Старый 17.02.2012, 22:01   #5
Черный крыс
 
Сообщений: n/a
Ответ: Быстрый полиширинный шрифт

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

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

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

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

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com