Всем доброго времени суток, люди на форуме часто задавали вопрос как в (G)ZDoom добавить кириллицу, т.е. русский шрифт\буквы, ответ на такой вопрос не маленький т.к. я лично знаю минимум 3 способа добавления русского шрифта, знаю не все, но должно хватить. Собственно с этого и начнется маленькое руководство..
Способ 1: Добавление шрифта формата .FON2, про другие форматы не знаю.
Полный список поддерживающих форматов можно посмотреть тут.Качаем шрифт в формате .ttf(делаем свой если умеем) устанавливаем его на свой ПК(По другому я не делал), после качаем программу
rusdoomfontgen (автор Nill) (где ее найти на форуме не знаю, потерли может, много полезного улетело) читаем manual.. Т.е вы берёте шрифт ttf формата с русскими символами, в интернете таких полно и конвертируете программой rusdoomfontgen в формат FON2, после этот шрифт копируете в корень PK3\PK7 архива (где такой шрифт должен быть в Wad архиве, не помню)
Вы уже можете пользоваться этим шрифтом например в ACS:
SetFont("имя вашего шрифта");
HudMessage(s:"напишет сообщение вашим новым русским шрифтом"..);
Для того что бы заменить стандартные шрифты, если вы хотите русский язык в меню, настройках и т.д.
Вам достаточно дать имя вашему шрифту CONFONT или SMALLFNT или BIGFONT..
CONFONT это шрифт который используется для вывода сообщений в консоли, открывается кнопкой "~" и еще он используется в некоторых настройках (G)ZDoom. ConFont содержит в себе SmallFont и BigFont, т.е. можно писать как большими так и маленькими буквами.
SMALLFNT сокращение SmallFont (т.к. шрифты не должны содержать в имени больше 8 символов.)Он используется практически везде кроме консоли.
BIGFONT используется в меню, имена уровней и еще где-то..
Шрифты в GZDoom (тут можно почитать больше, про IndexFont и т.д.)
У такого способа есть некоторые недостатки, он не всегда отображается так как хочется, может в настройках съезжать не много вниз.., но для простого вывода сообщения в функциях HUDMessage, Print годится
Способ 2: Composite font т.е. каждая буква\символ нарисована на отдельной картинке.
Этот способ для меня лучший, да он нудный если надо и англ. и русс. буквы, рисовать долго, потом давать имя, но напишу о его плюсах
Такой шрифт может быть каким угодно т.к. это картинка рисуй что хочешь, особых знаний не надо, вы можете сделать каждую букву градиентом к примеру.. от черного плавно переходит в зеленый цвет..
Размер каждой буквы картинки может быть хоть 128х128, только такие картинки надо сделать как HIRES.
Теперь о том как такой шрифт добавить, начну с замены стандартного SmallFnt в PK3\PK7 архиве:
Создаем папку Graphics, в ней еще одну папку с именем SMALLFNT, в неё копируем свои картинки букв с именем
С "STCFN192" по "STCFN223" это русские большие буквы.
С "STCFN224" по "STCFN255" маленькие русские буквы.
То есть каждую картинку буквы надо именовать "STCFN192" = А, "STCFN193" = Б, "STCFN193" = В, и т.д.
Размер картинок букв.. ориентируйтесь лучше на стандартный шрифт, который в iWad Doom2..
Если вам нужен качественный шрифт, например каждая картинка буквы будет размером 128х128, это дело надо "захайрезить" Что это значит.. В Graphics/SMALFNT копируем не свой качественный шрифт, а картинки пустышки или же картинки стандартного Doom шрифта SmallFont(красные буквы в iwad doom1-doom2 если кто не понял), тогда размер каждой буквы будет равен размеру картинке пустышке, т.е.:
Картинка вашей большой буквы А = 128х128, а картинка пустышки для этой буквы = 7х7, (G)Zdoom покажет вашу букву А размером 7х7, при этом качество не потеряется.
Свой качественный шрифт вы должны копировать в папку HIRES/Font имена качественного шрифта и имена картинок пустышек должны быть одинаковы т.е. Большая буква "А" размером 128х128 именуется "STCFN192" и буква пустышка которая в папке Graphics/SMALFNT должна иметь имя "STCFN192", надеюсь понятно объяснил..
Если вам не надо заменять стандартный шрифт, а просто добавить свой, делаем это с помощью lump
FONTDEFS, там можно почитать как им пользоваться(я не переводчик, перевести не могу =( ).
Способ 3: Замена англ. букв стандартного шрифта, бесполезный способ т.к. 1 и 2 лучше..
Но не много объясню, в iwad Doom есть картинки англ. букв, вы меняете например английскую букву b на русскую б
и по такой системе меняем все буквы на русские. Получится так
а=а
b=б
v=в
g=г
d=д
e=е
....
Заменив так буквы пишем в PrintBold(s:"gde beda?")
(G)Zdoom напишет такое сообщение как "где беда?".
Надеюсь принцип понятен? Такой способ перевода еще используют при переводе различных старых консольных ромов(игр) или там где других языков быть не должно..
Вообще там есть не большая схемка как удобнее заменить буквы, что бы вы могли писать транслитом, а текст выводился нормальными русскими буквами, но я ее уже забыл, если погуглить уверен что-то найдется.
Еще может быть полезной программа
http://iddqd.ru/utils#ZDoom Font Generator для создания своего шрифта.