Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Генератор шрифтов для Doom 3 bfg edition.
   Список разделов - Doom 3 - Генератор шрифтов для Doom 3 bfg edition.Ответить
АвторСообщение
Y-Dr. Now
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 38 points
1252

Doom Rate: 1.93

Posts quality: +247
Ссылка на пост №1 Отправлено: 28.08.25 18:30:35
Создал свой генератор шрифтов для этой версии игры.


Т.к. для Doom 3 (2004) есть пара разных программ, а для Doom 3 bfg не было ничего.
Т.к. я недавно обновил свой русификатор для этой игры, там я создал и новые шрифты. И именно для улучшения своего русификатора изначально создавался этот генератор шрифтов.

Саму эту программу я сделал ещё пару месяцев назад, но выкладываю только сейчас, потому что я выпустил обновление своего русификатора только сейчас. И теперь все желающие могут себе тоже создать красивые шрифты для своих локализаций игры на любые языки. Ну или для модов.

СКАЧАТЬ МОЖНО ЗДЕСЬ
https://disk.yandex.ru/d/5AjTuWQ1RE6zVg
и здесь
https://drive.google.com/file/d/1pMTQPfMYO6IXxD8JjBrarw8YnLI4e28q/view



Как пользоваться программой

- распакуйте архив с программой в любое место.
- положите свои шрифты .ttf или .otf в папку с программой.
- запустите D3BFG_FontTools.exe
- нажмите на кнопку Сгенерировать шрифты
- забирайте готовые шрифты в папке newfonts\название_шрифта
- упакуйте их в .resources файлы.
- откройте .lang файл с текстом и замените в этих строках название шрифтов на название своего нового шрифта:
"#font_" "Chainlink_Semi-Bold"
"#font_an" "Arial_Narrow"
"#font_arial" "Arial_Narrow"
"#font_bank" "BankGothic_Md_BT"
"#font_micro" "MicrogrammaDBolExt"

Если вы хотите отредактировать значения метрик в созданном dat-файле - запустите редактор метрик.


О шрифтах в Doom 3 bfg edition

1) Шрифты в этой игре - это файл 48.dat и картинка с названием 48#__0400.bimage, упакованные в файлы _common.resources и _ordered.resources
2) dat файл одного шрифта трижды дублируется. 2 раза в _common.resources и один раз в _ordered.resources
3) Внутри файлов .resources есть папки: root\generated\images\newfonts и root\newfonts. В root\generated\images\newfonts находяся папки с картинками для каждого шрифта.



в root\newfonts лежат dat файлы. При этом папка с названием шрифта в root\newfonts дублируется. Одна из них записана как название шрифта, другая, тоже самое но в нижнем регистре. Пример: Шрифт называется Arial_Narrow. Соответственно картинка для него будет лежать в папке root\generated\images\newfonts\arial_narrow, а dat файл будет в папках root\newfonts\Arial_Narrow и root\newfonts\arial_narrow внутри _common.resources и в папке root\newfonts\Arial_Narrow внутри _ordered.resources



4) Если вы хотите своим новым сгенерированным шрифтом заменить любой имеющийся в игре, то вам надо удалить из папок заменяемого шрифта (внутри _common.resources и _ordered.resources) dat-файл в трёх местах и bimage картинку в одном. После чего вместо них загрузить сгенерированную картинку и поместить один и тот же сгенерированный dat-файл в три места.

Но можно ничего не удалять и просто создать папку для вашего нового шрифта рядом с папками существующих шрифтов внутри .resources файлов и положить туда .bimage и dat файлы. Потом просто в base\strings\english.lang в строках
"#font_" "Chainlink_Semi-Bold"
"#font_an" "Arial_Narrow"
"#font_arial" "Arial_Narrow"
"#font_bank" "BankGothic_Md_BT"
"#font_micro" "MicrogrammaDBolExt"

прописать название папки вашего нового шрифта. Например загрузили в generated\images\newfonts\Tahoma и в newfonts\Tahoma сгенерированные этой программой файлы для шрифта Tahoma, затем в lang файле замените
"#font_" "Chainlink_Semi-Bold"
на
"#font_" "Tahoma"
после чего всё должно заработать.


Кстати, при изменении файлов _common.resources и _ordered.resources оригинальная игра будет жаловаться на несовпадение контрольных сумм, т.е. файлов .crc. Решается это просто - надо запустить игру и в консоли написать команду
GenerateResourceCrcs

после чего будут созданы новые контрольные суммы. Если же игра перестанет запускаться и вы не сможете из-за этого написать что-то в консоли, то можно попробовать добавить эту консольную команду как параметр в ярлыке для exe-файла. Либо просто скачайте порт RbDoom3bfg или порт Doom bfa. Эти порты не проверяют контрольные суммы. Поэтому можно через них сгенерировать контрольные суммы командой GenerateResourceCrcs, а потом использовать созданные новые .crc файлы (_common.crc и _ordered.crc) в оригинальном Doom 3 bfg edition.


5) У шрифтов в Doom 3 bfg edition есть какие-то скрытые особенности, из-за чего нельзя так просто взять данные из otf и ttf шрифтов и использовать их в dat-файле как метрики для символов. Данные от некоторых шрифтов подходят игре, а данные от некоторых нет. Чтобы это компенсировать, моя программа проверяет значения max top и max height у каждого шрифта и сравнивает их со значением параметра ascender. На основании этого вносит доп. поправку, благодаря которой шрифты в 90% случаев выглядят правильно в игре. Без этой поправки расстояние между двумя строками может быть слишком большим или слишком маленьким, из-за чего текст на кнопках мог отображаться не по центру, а слишком высоко или слишком низко. Однако все шрифты разные и придумать универсальную правку для любого шрифта у меня не получилось. Поэтому некоторым шрифтам нужна небольшая ручная корректировка параметра ascender. Моя программа содержит редактор метрик, который позволяет редактировать все метрики шрифтов, в том числе ascender, что поможет вам легко подправить уже созданный dat-файл, если это понадобится.

Как быстро проверить нужна ли корректировка параметра ascender:

Для основного меню в игре используется шрифт Sarasori_Rg. Сделайте резервную копию файлов _common.resources и _ordered.resources
После чего откройте _common.resources, найдите там папки root\generated\images\newfonts\sarasori_rg, root\newfonts\Sarasori_Rg и root\newfonts\sarasori_rg.
Удалите из них bimage картинку и dat файлы. Затем загрузите вместо них картинку и dat файл, сгенерированный моей программой. Запустите игру и нажмите на кнопку Quit в меню.
Смотрите на кнопки. Если текст находится по центру кнопок и расстояние между строками "Exit game" и строкой "Are you sure you want to exit Doom 3" нормальное, значит дополнительные правки не нужны. Если же текст находится выше центра кнопок, откройте редактор метрик,



выберите сгенерированный dat файл и увеличьте в нём значение ascender.
Сохраните изменения и снова загрузите dat-файл вместо прошлой версии в файл _common.resources. Если текст окажется ниже центра кнопок, то значение ascender надо слегка уменьшить. После того, как вы подберёте подходящее значение ascender, можете восстановить файлы _common.resources и _ordered.resources из резервной копии и заменить своим новым шрифтом с уже идеальными значениями ascender тот шрифт в игре, который хотите. При полноценной замене шрифта надо менять dat файл и внутри _common.resources и внутри _ordered.resources. Обязательно.
Для теста на предмет того, нужно ли вносить поправки, можно менять dat файлы только в _common.resources и только для шрифта Sarasori_Rg. На остальных шрифтах тестировать не удобно, т.к. для этого придётся заходить дальше, чем в просто в меню игры и придётся заменять dat-файл и в _ordered.resources, т.к. игра читает dat файлы шрифтов и из _common.resources и из _ordered.resources, для всех шрифтов, кроме шрифта из меню игры. Поэтому этот шрифт идеально подходит для быстрого тестирования.

Важная деталь - значения параметра Ascender у одного и того же шрифта могут подходить для меню игры и не подходить для интерфейса кпк. Т.к. вы можете подобрать для шрифта определённый ascender шрифт будет идеально выглядеть в главном меню, однако для некоторых шрифтов эти значения могут не подходить, если вы захотите заменить одним и тем же шрифтом и шрифт в меню и шрифт в кпк. Пример - я заменил шрифт Sarasori и шрифт BankGothic_Md_BT на свой. Выставил своему шрифту Ascender 40 для замены шрифта Sarasori и в меню он выглядит отлично. Если же мой шрифт с ascender 40 использовать в таком виде вместо BankGothic_Md_BT, то текст выглядит так, будто он слишком низко, относительно строк интерфейса к кпк, в результате для замены BankGothic_Md_BT я вместо 40 выставил 35 и шрифт в меню стал выглядеть правильно. Это говорит о том, что универсальный генератор шрифтов создать нельзя. Разные интерфейсы в разных местах игры создавались под конкретный заранее известный шрифт с определёнными метриками. Поэтому каждый созданный шрифт придётся немного подстраивать под тот интерфейс, в котором он будет использоваться. Но эта подстройка заключается исклюительно в подборе значения ascender. Всё остальное генератор делает за вас. Так что тут нет ничего сложного.

О наборе символов в шрифтах:
Изначально программа записывает в dat-файл и рисует на картинке: символы базовой латиницы, расширенной латиницы, цифры и некоторые спец. символы а также символы базовой кириллицы. Если вам нужны дополнительные символы - откройте файл custom_charset.txt и добавьте туда всё что вам нужно. Затем поставьте в программе галочку, чтобы этот файл использовался. Затем нажмите на кнопку генерации шрифтов.



О картинках:
В папке с каждым сгенерированным шрифтом вы найдёте не только картинку 48#__0400.bimage, но и картинку 48.tga.
48.tga не нужна для Doom 3 bfg edition и её никуда не нужно загружать. Она создаётся исключительно как предварительный просмотр содержимого bimage. Она на 100% идентична по содержимому. С ней удобнее сразу видеть что у вас получилось. Хотя её можно использовать в порте RbDoom3BFG, который поддерживает прямое чтение tga-картинок, как изначальный Doom 3 (2004).



Кстати, просмотреть сгенерированный .bimage файл можно через мою же программу - D3bfg bimage viewer
https://www.doomworld.com/forum/topic/154493-bimage-viewer-for-doom-3-bfg-edition/

О редакторе метрик:
Изначально он создавался для отладки, чтобы я мог проверить настолько правильно генератор создаёт dat-файлы и в каких значениях метрик возникают искажения.
Поэтому он показывает также и значения параметров S и T, которые являются абсолютными координатами букв на картинке. Я специально запретил их редактирование, т.к. изменение этих значений приведёт к тому, что буквы перестанут отображаться правильно. Однако само отображение этих значений я оставил, потому что оно сохраняется в dat файле и используется игрой. Глупо было бы называть свою программу полноценным инструментом для работы с dat-файлами шрифтов и при этом не показывать в программе всё, что есть в dat-файле.
Значения других параметров, кроме ascender и descender, редактировать для шрифтов не требуется. Игре подходят стандартные значения, записанные в otf и ttf-файлы. Однако я сохранил возможность их редактирования по желанию. Хотя я тестировал свою программу на трёх десятках разных шрифтов и нигде никаких проблем не возникало, но проверял я лишь символы базовой латиницы и базовой кириллицы. А в программе есть возможность добавить любые другие символы. Я не знаю как они будут работать. Поэтому в теории возможность редактирования метрик каждого отдельного символа может кому-то пригодится.

Texconv.exe
Эта программа используется при создании .bimage. Поэтому она обязательно должна быть в папке с Doom3BFGFontTools.
Если вы её случайно удалили, скачайте вручную отсюда
https://github.com/microsoft/DirectXTex/releases
Последняя версия этой программы требует windows 10. Если скачать более старую версию программы, то она будет запускаться и на windows 7.

BFG Resource File Manager
Для упаковки шрифтов в файлы *.resources используйте программу
https://github.com/MadDeCoDeR/BFG-Resource-File-Manager

Прочая информация:
Скрытый текст:

Для работы программы требуется Windows 10 и выше. Для запуска на windows 7 установите vxkex.

На создание и отладку этой программы ушло примерно 3 месяца. У первой публичной версии номер 1.55 потому, что у меня есть ещё 54 версии этой программы разных стадий готовности и с разным функционалом. Версия 1.0 вообще была консольной программой без графического интерфейса, создававшей файл 48.tga и файл 48.dat.
Примерно к версии 1.2 я добавил графический интерфейс и перевод на 2 языка. Примерно к версии 1.3 появился редактор метрик и возможность создания .bimage.
В последующих версиях добавилась функция сравнения двух dat-файлов, затем шла отладка и добавление мелких незаметных исправлений интерфейса. В версии 1.55 добавилась функция автоматического внесения поправок в dat-файлы. В версии 1.0 было около 120-140 строк кода. Текущая версия 1.55 занимает 1793 строки кода. В процессе разработки программы я также внёс изменения в исходники BFG Resource File Manager и теперь у меня есть версия BFG Resource File Manager, которая тоже умеет читать данные и файлов 48.dat

И да, я знаю про существование программы создания шрифтов idFont в составе Rage tool kit.
idFont НЕ создаёт bimage картинку.
А созданная им tga картинка хранит данные в альфа-канале. А для игры Doom 3 bfg edition данные должны быть в зелёном канале.
idFont НЕ позволяет добавить на текстуру конкретный набор символов. Хотя и поддерживает создание простых dat-файлов с поддержкой латиницы и второго языка на выбор. Но набор символов там крайне ограничен, а документации со списком всех команд нет. Кроме того, idFont тоже вносит поправку в значение ascender у шрифтов. Но созданные им dat файлы также нуждаются в дополнительных поправках и далеко не всегда подходят для Doom 3 bfg. Dat-файлы, которые создаёт моя программа и dat-файлы, которые создаёт idFont идентичны по формату данных. Поэтому функция "редактор метрик" в моей программе может редактировать и dat-файлы, созданные idFont'ом. А функция сравнения позволяет сравнить dat-файл, сгенерированный idFont'ом и моей программой. Вы конечно увидите кучу отличий в значениях для большинства символов, но это никак не мешает работе шрифтов. Это просто особенности того, как рисуется картинка с символами и как рассчитываются координаты. По большей части функция сравнения нужна разве что для того, чтобы посмотреть какие символы включены в dat-файлы у idFont и какие символы включены в шрифт, сгенерирвоанный моей программой.
Моя программа всегда добавляет к базовой латинице расширенную латиницу и кириллицу. Это сделано для того, чтобы все ваши новые шрифты, которые вы возможно будете использовать в своих модах, подходили для разных языков и чтобы моды с новыми шрифтами можно было бы потом просто перевести, заменив текст в english.lang без правки прочих файлов.


О файлах old_12.dat, old_24.dat, old_48.dat:
- хотя они и находятся в игровых архивах, в реальности движок игры их не использует. Я пробовал заменить файл 48.dat у десятков разных шрифтов, оставляя на месте файлы old_12.dat, old_24.dat, old_48.dat от стандартных шрифтов. Абсолютно никакого влияния этих старых файлов на шрифты из файла 48.dat не обнаружено.

Файлы old_12.dat, old_24.dat, old_48.dat вообще можно удалить и игра продолжит работать. Судя по исходным кодам игры, движок использует 48.dat и автоматически масштабирует его под другие размеры. Без всяких проблем.
Поэтому D3BFG Font Tools создаёт лишь файл 48.dat и не создаёт файлы old_**.dat

p.s. изначально в программе был только русский и английский язык, но перед публичным релизом я добавил перевод на немецкий, испанский и польский, созданный нейросетями. Выбраны именно эти языки, т.к. по словам тех же нейроесетей, среди сообщества фанатов Doom больше всего модов делают носители этих языков. Остальным хватит и английского :pc:



Убедиться что генератор шрифтов отлично работает можно скачав мой русификатор для Doom 3 bfg edition отсюда
http://i.iddqd.ru/viewtopic.php?p=147135#147135

Все 4 шрифта с кириллицей, используемые в этом русификаторе сгенерированы именно этим моим генератором шрифтов.

Рейтинг сообщения: +3, отметил(и): MAZter[iddqd], xray696, Артём
1 1 1
Страница 1 из 1Перейти наверх
   Список разделов - Doom 3 - Генератор шрифтов для Doom 3 bfg edition.