Unity logo illustration, Unity Game engine Logo Video game, Corelle Brands, angle, text, c png
500x500px
50.76KB
black laptop computer illustration, Computer programming Web development Computer Software Programming language Theme, coder, electronics, gadget, internet png
8000x5320px
216.39KB
Computer Icons Editing Font Awesome graphics editor, advertising, angle, text, logo png
800x600px
12. 91KB
assorted-application lot, Local area network Computer network Icon, WIFI, blue, text, service png
1614x1403px
95. 36KB
Internationalization and localization Language localisation Translation Service, others, innovation, business, language Interpretation png
550x479px
211.51KB
Translation Foreign language Language interpretation Transcreation, language, english, text, logo png
600x600px
20.89KB
Lint Sublime Text Source code Computer program Python, Github, computer Program, computer Programming, brand png
1696x1182px
431.56KB
Adobe Creative Cloud Adobe Systems Adobe shop Elements Adobe Lightroom, Logo Adobe, text, rectangle, adobe png
620x620px
112.38KB
Unity Software Developer Video game developer Game engine, unity games, angle, 3D Computer Graphics, text png
500x500px
11. 24KB
Web banner graphy, Red ribbon, text, stock Photography, red Ribbon png
6451x1404px
902.37KB
Paper Laptop Epson Logo Projector, logo, blue, electronics, text png
2000x451px
50.81KB
top secret, blue brand font, Top Secret, blue, bitmap, brand png
512x512px
291.44KB
BMFont — AngelCode.com
Эта программа позволит вам создавать растровые шрифты из шрифтов TrueType. Приложение
генерирует как файлы изображений, так и описания персонажей, которые могут быть прочитаны игрой для удобства
отрисовка шрифтов.
Программа является бесплатной и с открытым исходным кодом, но пожертвование приветствуется.
Если у вас нет средства просмотра изображений, способного читать файлы TGA, PNG или DDS, я
порекомендуйте PUPP, еще один бесплатный продукт от AngelCode.
Загрузки
Загрузить 32-битный и 64-битный исполняемый файл для v1.14a (1.28MB, 08.04.2021)
Особенности
Поддержка полного набора символов Unicode 13.0, а также 8-битных наборов символов OEM
Оптимальное использование пространства текстуры, т. е. как можно меньше неиспользуемой области
Поддержка пар кернинга
Простой в использовании формат файла, либо обычный текстовый файл, либо файлы xml. Двоичный формат доступен для тех, кто предпочитает
Вывод 8-битной или 32-битной текстуры (файлы TGA, PNG и DDS)
Опция для упаковки 4 слоев изображений шрифтов в 1 32-битную текстуру. Требуется специальный шейдер для рендеринга, но он экономит много памяти.
Сглаживание, как за счет собственного сглаживания шрифтов Windows, так и за счет суперсэмплирования
Настраиваемые отступы и интервалы между символами
Выбор символов из текстового файла, поддерживает файлы в кодировке UTF8 и UTF16
Создание растрового шрифта из командной строки
Импорт цветных изображений в виде символов, поддерживает: bmp, jpg, tga, dds, png
Дополнительный контур символов шрифта
Дополнительная упаковка символов с контуром в 1 канал. Требуется специальный шейдер для распаковки во время рендеринга, но экономит много памяти
Использование шрифтов TrueType непосредственно из файла без их предварительной установки
Размер шрифта автоподбора для целевого размера текстуры
Документация
Руководство прилагается к инструменту, но для тех, кто хочет с ним ознакомиться
без предварительной установки инструмента, он также доступен здесь. В инструкции описаны оба
как использовать инструмент и формат файла сгенерированных файлов.
Электронная документация
Исходный код
Исходный код доступен под широко известной лицензией zlib. SVN-репозиторий
размещен на SourceForge.net
Получите код, указав в клиенте svn адрес: http://svn.code.sf.net/p/bmfont/code/trunk.
Если вам нужна поддержка по коду, посетите форумы.
Наблюдение за предупреждением о вирусе
Известно, что антивирус Avira выдает предупреждение о вирусе при сканировании bmfont.exe или установщика. Это ложное
положительные, генерируемые их эвристическими функциями, которые пытаются предсказать и поймать неизвестные вирусы. я уже сообщил
это ложное срабатывание в Avira несколько раз и каждый раз они распознают его как ложное срабатывание, однако по какой-то причине
проблема возвращается через несколько месяцев (предположительно, когда они обновляют эвристические функции).
Если кто-нибудь знает, что мне нужно изменить в коде, чтобы предотвратить это ложное предупреждение, я бы очень хотел знать.
Учебники и ресурсы
Вот несколько ссылок на другие ресурсы, содержащие информацию или инструменты, полезные для тех, кто интересуется растровыми шрифтами.
Растровые шрифты Андреаса Йнссона
Растровые шрифты Чада Вернона
Краткое руководство: растровые шрифты переменной ширины от Promit
Реализация BMFont OpenGL от legolas558
Модуль bmfont BlitzMax Майка Виринга
XML-сериализатор C# для загрузки шрифтов от DeadlyDan
C# XML BMFont reader Антуан Гильбо
Преобразователь исходного кода BMFont в C, Ларс Оле Понтоппидан
Обсуждение законности растровых шрифтов
Инструмент для преобразования растровых шрифтов в поля расстояния
Еще один инструмент для преобразования растровых шрифтов в поля расстояния
PlayOnLinux — может использоваться для запуска BMFont в Linux
GlyphCombiner — инструмент Mac OS X от Binary Blobs для объединения нескольких растровых шрифтов в один атлас.
Ниже приведены некоторые другие инструменты, которые также генерируют выходные данные в том же формате, который я придумал для BMFont и который широко используется.
в отрасли сегодня.
Littera — бесплатное веб-приложение
Glyph Designer — платное приложение для Mac
ShoeBox — бесплатный инструмент, написанный с помощью Adobe Air
Hiero — инструмент с открытым исходным кодом, написанный на Java
Изменения
1.14a — 08.04.2021
Исправлена ошибка, из-за которой недопустимый символьный глиф не помещался при использовании автоподбора.
В пакет включены как 64-битные, так и 32-битные сборки.
1.14 — 2021/01/05
Исправлена ошибка с большими шрифтами, когда API Windows неправильно сообщал об отрицательной ширине для глифов.
Улучшена обработка условий нехватки памяти.
Исправлен сбой, который мог произойти при экспорте символов Юникода выше 0x10000 с парами кернинга.
Исправлен сбой, когда аргумент командной строки -c был относительным путем, а конфигурация включала файл шрифта или файлы изображений.
Исправлен сбой при сохранении файла конфигурации с добавленным файлом шрифта из того же каталога.
Исправлена высота ячейки при использовании фиксированной высоты и суперсэмплинга.
Исправлена совместимость с Windows XP.
Исправлены проблемы с масштабированием и обрезкой при использовании масштаба высоты при рендеринге из контура.
Исправлено зависание приложения при создании очень больших шрифтов.
Исходный код теперь доступен по лицензии zlib.
Преобразованное приложение для компиляции для Windows с Unicode для лучшей поддержки имен файлов и шрифтов с международными символами.
Библиотека libpng обновлена до версии 1.6.19.
Zlib обновлен до версии 1.2.8.
libjpeg обновлен до версии 9a.
libsquish обновлен до версии 1. 13.
Исправлена проблема с экспортом глифов для некоторых международных языков.
Добавлена поддержка Unicode 13.0.
Теперь доступна 64-битная сборка для поддержки огромных растровых шрифтов, для создания которых требуется более 2 ГБ памяти.
Глиф по умолчанию для недопустимых символов теперь правильно растрируется, если он также не отображается из контура.
В строке состояния теперь отображается идентификатор глифа для символов.
Исправлены поврежденные глифы при рендеринге очень больших шрифтов (1000+ пикселей) из контура глифов.
Добавлена функция автоподбора, которая автоматически определяет максимальный размер шрифта, соответствующий заданному размеру текстуры.
Исправлен сбой при запуске, если шрифт по умолчанию не имеет символов Unicode в диапазоне 0-255.
Добавлена поддержка путей к файлам с символами Unicode.
Улучшена поддержка пар кернинга в шрифтах True Type, которые хранятся в виде диапазонов.
1.13 — 2012/08/12
Добавлена возможность экспорта шрифтов с фиксированной высотой ячеек для облегчения постобработки.
Улучшена поддержка экспорта пар кернинга для истинных типов, использующих таблицу GPOS вместо таблицы KERN.
Пары кернинга больше не экспортируются для идентификаторов символов, которые были заменены импортированными значками.
Улучшена упаковка глифов при наличии больших непропорциональных изображений.
Окончательная текстура больше не имеет рамок вокруг глифов, когда канал инвертирован или установлен на единицу.
Исправлено отсечение субпикселей в глифах с суперсэмплингом.
Реализована альтернативная растеризация глифа на основе контура истинного типа.
При растеризации из контура истинного типа не обрезаются глифы, которые выходят за пределы высоты ячейки.
Разрешить отключение подсказок при растеризации из контура истинного типа.
Повторно добавлен параметр для рендеринга с помощью ClearType с собственным механизмом шрифтов Windows.
Исправлена ошибка, из-за которой сохраненный формат XML иногда не закрывал тег ‘kernings’, если не было пар кернинга.
Исправлена ошибка с дублированием пар кернинга в выводе шрифта, отличного от Unicode.
Исправлена проблема, из-за которой двойной щелчок в диалоговом окне файла иногда приводил к изменению выбранных символов под мышью.
Включено кодирование длин серий для вывода TGA.
Добавлена возможность принудительно установить xoffset и yoffset на 0, а xadvance — на ширину.
Теперь приложение можно открыть напрямую с помощью файла конфигурации из проводника.
При загрузке файла bmfc символы теперь выбираются соответствующим образом.
В диалоговом окне шрифтов больше не отображаются повернутые шрифты, т. е. шрифты с префиксом @.
Добавлена поддержка работы со шрифтом из файла, теперь его не нужно предварительно устанавливать.
Импортированные изображения теперь сохраняются с относительным путем в файле конфигурации.
Исправлено отсечение, которое могло произойти на левом и правом краях при создании шрифта в курсивном режиме.
Пары кернинга теперь можно опускать, если они не используются в шрифте TrueType.
Теперь диалоги сохранения и загрузки конфигурации будут открываться там, где был загружен или сохранен последний файл конфигурации.
1.12 — 2009/08/02
Добавлены предустановки в параметры экспорта, чтобы помочь выбрать правильные значения для каналов текстуры.
Исправлена ошибка при создании шрифта из командной строки, когда файлы подкачки в дескрипторе шрифта имели неправильное имя.
Добавлена возможность инвертировать отдельные каналы текстур для расширения возможностей экспорта.
Добавлен инструмент командной строки, который будет ждать завершения генерации перед выходом.
Исправлено yoffset при масштабировании высоты шрифта.
Исправлена ошибка выбора символов из файла для не-юникода с символами выше ASCII 127.
Количество цифр для идентификатора страницы в файлах текстур теперь адаптировано к количеству сгенерированных страниц.
Добавлена поддержка настройки xoffset, yoffset и продвижения для импортированных значков.
1.11b — 08.03.2009
Исправлена ошибка выбора символов из файла с файлами в кодировке UTF16.
Исправлена ошибка в процедуре упаковки, из-за которой в редких случаях символы могли перекрываться.
Исправлен выбор диапазонов юникода по клику на галочку в списке.
1.11а — 2008/12/06
Исправлено смещение субпикселей высоты глифа, вызванное суперсэмплингом.
Исправлена ошибка в GDI, из-за которой возвращаемая высота глифа была меньше фактического растрового изображения глифа.
1.11 — 2008/10/11
Исправлено зависание, которое могло произойти при выборе символов из файла.
Исправлена обрезка некоторых шрифтов True Type.
Исправлен параметр «Выбрать все символы» в режиме ASCII.
Добавлена опция «Вывод недопустимого глифа».
Удален параметр «Отключить недоступные символы».
Исправлена проблема, из-за которой символы, не определенные в стандарте Unicode, могли быть выбраны при выборе символов из файла.
Индикатор теперь отображается в сетке символов, куда импортируются изображения.
Исправлена ошибка, из-за которой главное окно перемещалось за другими окнами при закрытии диспетчера изображений.
Исправлена ошибка, из-за которой отмена диалогового окна с изображением значка продолжала действовать.
Теперь можно выбирать размер шрифта по высоте символов, а не по высоте строки.
1.10b — 2008/06/15
Исправлен индикатор канала в дескрипторе шрифта для цветных значков.
Исправлена обрезка символов в мелких шрифтах.
Исправлена ошибка с черными 8-битными текстурами при установленном флажке для пакетных символов.
1.10a — 08.06.2008
Исправлена документация в отношении значения размера блока в двоичном формате файла.
Исправлена ошибка с «Выбором символов из файла», из-за которой некоторые символы могли быть пропущены между блоками чтения по 1 КБ.
Исправлена проблема с округлением при суперсэмплинге, из-за которой экспортируемая высота строки была на единицу меньше высоты наибольшего символа.
Удалена внешняя зависимость от Microsoft DLL.
libpng обновлен до версии 1.2.29.
1.10 — 2008/05/11
Выбор символов из файла теперь поддерживает как UTF-8, так и UTF-16 с автоматическим определением с помощью метки порядка следования байтов.
Исправлена ошибка, из-за которой подмножества Unicode не отображались, когда не был выбран параметр «Отключить неопределенные символы».
В строке состояния отображается идентификатор персонажа, находящегося под курсором мыши.
Добавлена опция «очистить все».
Размер окна предварительного просмотра теперь автоматически изменяется в соответствии с текстурой при масштабировании.
Добавлена поддержка символов Юникода выше 0xFFFF.
Добавлена поддержка создания текстур со сжатием DXT1, DXT3 и DXT5.
Разделить диалоговое окно настроек шрифта на два диалоговых окна, одно для графики шрифта и одно для параметров экспорта.
Содержимое каждого канала текстуры теперь можно настраивать.
Формат файла обновлен для поддержки новой функции.
1.9c — 2007/11/16
Исправлены обратные значения интервалов в диалоговом окне настроек шрифта.
Генерация шрифта теперь может быть прервана, пока символы добавляются к текстуре.
Значительно улучшена скорость генерации текстур.
1.9б — 28.10.2007
Исправлено заполнение
Улучшенная документация
1. 9а — 2007/09/16
Разрешение использования Unicode для всех шрифтов, даже для шрифтов с одной кодовой страницей
Исправлены сообщения о состоянии при создании шрифтов.
Добавлена поддержка сохранения файлов текстур PNG
Приложение теперь запоминает конфигурацию с момента последнего выполнения
Улучшено использование для выбора символов в режиме Unicode
Добавлена возможность выбора всех символов из текстового файла
Пары кернинга с количеством 0 больше не выводятся
Файл дескриптора шрифта XML теперь группирует страницы, символы и пары кернинга
Конфигурацию шрифта можно сохранить на диск, а затем перезагрузить
Добавлена поддержка генерации шрифтов через командную строку с использованием сохраненной конфигурации.
Добавлена поддержка сохранения файлов текстур DDS (без сжатия)
1.7а — 2006/09/12
Исправлено создание не-юникодных шрифтов
1.7 — 08.09.2006
Добавлен стандартный заголовок xml
Добавлена поддержка кодировок Юникода.
Добавлена возможность упаковывать монохромные символы в каждый из 4-х каналов 32-битной текстуры.
Добавлен тег с именами файлов текстур в файл дескриптора шрифта
Генерация текстур теперь выполняется в фоновом потоке
1.6 — 2006/02/18
Теперь можно выбирать между XML и текстом для формата файла дескриптора шрифта.
Фиксированные размеры кернинга с суперсэмплингом
1.5 — 01.10.2005
Реализовано растяжение, чтобы шрифты теперь можно было масштабировать неравномерно (работает только на Win2K и выше).
1. 4а — 26.08.2005
Теперь также поддерживаются шрифты, отличные от TrueType, такие как Script и System.
Небольшое исправление рендеринга при использовании отступов.
1.4 — 2005/07/17
В окне предварительного просмотра теперь отображается номер страницы в заголовке.
Символы без определенного глифа теперь могут автоматически удаляться (работает только в Win2K или более поздних версиях).
Пары кернинга теперь также сохраняются.
Добавлена поддержка выбираемой кодировки, например. арабский и еврейский шрифты.
1.3 — 08.05.2005
Добавлена поддержка курсивных шрифтов.
Приложение больше не падает при визуализации без выбранных символов.
1.2 — 09.03.2005
Теперь пользователь может выбрать создание растрового шрифта со сглаживанием шрифта или без него.
Сглаживание шрифтов теперь выполняется без ClearType, поэтому артефакты больше не генерируются в выходной текстуре.
Добавлен значок программы.
1.1 — 05.03.2005
Пользователь теперь может выбирать сохранение в 32-битном и 8-битном TGA.
Интервал между символами теперь можно установить вручную.
Исправлена ошибка, из-за которой некоторые шрифты не отображались в списке шрифтов.
1.0a — 27.11.2004
Исправлена проблема со значениями, которые не корректировались для компенсации уровня сглаживания.
1.0 — 2004/02/14
Первая общедоступная версия.
Особая благодарность
4A Games
КодМастерс
Идолы
Кроум Студиос
Непослушный пес
Пирамида Инк.
Присоска
Триниджи
WizarBox
Некоторые вещи, которые будут реализованы в будущих версиях:
Улучшенная генерация шрифтов
Поддержка тени.
Поддержка размытия.
Цветные глифы.
Повышение удобства использования.
Добавить команду справки, которая открывает руководство, установленное вместе с приложением
Добавить всплывающие подсказки для диалогов и элементов управления
Выбор символов из файла может поддерживать интерфейс перетаскивания.
Импорт изображений поверх символов также может поддерживать интерфейс перетаскивания.
Добавить вывод файла журнала для отсутствующих глифов при сканировании текстовых файлов на наличие используемых символов.
Разрешить выбор шрифта в диалоговом окне общего шрифта Windows
Добавить предварительный просмотр шрифта
Разрешить пользователю писать текст и видеть результат. Должна быть возможность кодировать специальные символы, поскольку значки обычно импортируются поверх невидимых глифов.
Улучшение импорта значков
Разрешить импорт изображений в градациях серого в один канал, а не в полный 32-битный.
Предупреждать, если импортированный значок больше выходной текстуры.
Контекстное меню в окне персонажа для прямого импорта определенного персонажа.
Добавить поддержку плагинов для выходных форматов.
Разрешить подключаемым модулям форматировать как дескриптор шрифта, так и файлы изображений.
Поля расстояния со знаком для улучшения качества масштабирования растровых шрифтов. Вот инструмент, который преобразует вывод BMFont в шрифты поля расстояния.
опция для экспорта с предварительно умноженной альфой
Поддержка нескольких шрифтов и разных размеров шрифтов в одном выводе.
Как создать растровый шрифт с помощью FreeType | Кристиан Белер
Простое решение C++ для создания текстур растровых шрифтов для OpenGL, DirectX или Vulkan
Растровый шрифт, созданный с помощью генератора растровых шрифтов из этого руководства, изображение автора.
Растровые шрифты — это распространенный способ отображения текста в компьютерных графических API, таких как OpenGL, DirectX или Vulkan. Растровый шрифт — это большая текстура со всеми символами ASCII (или более). Затем текст можно визуализировать, создав четырехугольник для каждой буквы с примененным к нему правильным разделом текстуры растрового шрифта.
Есть много способов получить растровые шрифты. Во-первых, просто загрузите его из Интернета (просто погуглите растровую текстуру шрифта , и вы найдете его). Однако, если вы ищете определенный шрифт определенного размера, вы, вероятно, не сможете его найти.
Второй вариант — использование генератора растровых шрифтов. Существуют автономные и онлайн-инструменты, которые могут создавать текстуры растровых шрифтов из любого файла шрифта любого размера. Это определенное улучшение по сравнению с простой загрузкой случайных растровых шрифтов.
Однако, когда дело доходит до создания растровых шрифтов, есть еще лучшее решение: вы можете создавать их прямо в своей программе из любого файла шрифта с библиотекой FreeType.
Давайте посмотрим, как мы можем создать текстуру растрового шрифта с помощью FreeType. Первый шаг — загрузить библиотеку FreeType и добавить/связать ее с вашим проектом. Затем мы можем написать код для автоматической генерации растровых шрифтов.
Мы хотим создать простую функцию, которая может генерировать растровый шрифт из файла шрифта и сохранять его как изображение, поэтому определение нашего класса очень простое. Он принимает только имя файла и размер желаемого шрифта и имена файлов для результатов в качестве параметров.
Init FreeType
При реализации функции мы должны инициализировать библиотеку FreeType, а затем использовать ее для загрузки шрифта и установки размера шрифта, для чего требуется всего несколько функций FreeType.
Теперь мы можем выделить немного памяти для нашего растрового изображения. Поскольку имеется 128 символов ASCII (хотя первые 32 не печатаются), нам нужно изображение со 128 тайлами и разделить его на 8 строк по 16 столбцов в каждой. Мы также добавляем 2 пикселя заполнения к нашему размеру шрифта, чтобы не было размытия текстуры, когда результирующая текстура плохо масштабируется.
Метрики символов
Далее мы должны включить некоторые расчеты метрик шрифта, чтобы узнать, где находится базовая линия нашего шрифта. Некоторые символы, такие как 90 665 g 90 666 или 90 665 y 90 666, идут ниже базовой линии, поэтому, если мы просто нарисуем символы внизу каждой плитки, они перетекут в плитку ниже.
Для этого мы перебираем все печатные символы и загружаем каждое изображение глифа, чтобы получить доступ к метрикам глифа. Вычитая общую высоту символа из величины, на которую он поднимается над базовой линией (bearingY), мы можем узнать, насколько он опускается ниже базовой линии. Затем мы находим его максимум и сдвигаем все символы вверх на это значение при создании нашего изображения.
Метрики глифов в FreeType, изображение с сайта freetype.org.
Отрисовка персонажей
На данный момент мы готовы отрисовывать наших персонажей на растровое изображение. Мы просматриваем каждый символ, загружаем глиф, а затем используем функцию FT_Render_Glyph , чтобы позволить FreeType выяснить, как преобразовать векторные глифы в растровое изображение со сглаживанием. Затем нам нужно немного математики, чтобы правильно выровнять символ, прежде чем копировать растровое изображение одного символа из FreeType в наше большое растровое изображение в правильной позиции.
Теперь со сложными вещами покончено, осталось только сохранить растровое изображение в файл. Вот код для этого или просто посмотрите полный код в конце руководства.
Еще одно изображение растрового шрифта с другим шрифтом, созданным с помощью генератора растровых шрифтов из этого руководства, изображение автора.
Использовать генератор растровых шрифтов очень просто. Просто дайте ему файл шрифта и размер, который вы хотите, и имена файлов для ваших выходных данных (в Windows вы можете найти фактические файлы шрифтов ваших установленных шрифтов в C:/Windows/Шрифты/ ).
Если вы внимательно посмотрели код, то могли заметить, что мы также сохраняем ширину каждого символа и сохраняем ее в файл. Если вы используете моноширинный шрифт (то есть шрифт, в котором все символы имеют одинаковую ширину), вы можете игнорировать ширину символов. Однако в большинстве шрифтов используются символы разной ширины, поскольку такие символы, как i и m , обычно имеют совершенно разную ширину. При использовании такого шрифта для рендеринга текста нам нужно знать ширину каждого символа, чтобы перейти к следующему символу на правильное значение. Поэтому мы также храним ширину символов в файле и используем эту информацию в дополнение к растровому изображению при рендеринге текста.
В этом уроке мы сохраняем изображение в виде растрового изображения, потому что растровые изображения можно легко сохранить без каких-либо внешних библиотек. Однако наш буфер также включает альфа-канал, поэтому мы можем сохранить изображение в формате png, чтобы сохранить значения прозрачности. На самом деле нам вообще не нужно сохранять изображение. Мы также можем напрямую создать текстуру из буфера и сразу же использовать ее для рендеринга текста.
Создание растровых шрифтов непосредственно из файлов шрифтов с помощью FreeType — это простой и удобный способ обработки растровых шрифтов для рендеринга текста в компьютерной графике, и я использую систему, очень похожую на эту, в моем игровом движке OpenGL.