iddevnet/quake4/Adding_Fonts_to_use_in_Quake_4_GUIs.html
Daniel Gibson 5b001fc079 README: Add links to Q4 articles with missing images
fix download links in Adding_Fonts_to_use_in_Quake_4_GUIs
2021-04-11 18:46:51 +02:00

257 lines
16 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>Adding Fonts to use in Quake 4 GUIs - Quake 4 SDK Documentation</title>
<script type="text/javascript" src="wiki/common/js/common.js"></script>
<script type="text/javascript">
<!--// common functions
// We keep here the state of the search box
searchIsDisabled = false;
function searchChange(e) {
// Update search buttons status according to search box content.
// Ignore empty or whitespace search term.
var value = e.value.replace(/\s+/, '');
if (value == '' || searchIsDisabled) {
searchSetDisabled(true);
} else {
searchSetDisabled(false);
}
}
function searchSetDisabled(flag) {
// Enable or disable search
document.getElementById('fullsearch').disabled = flag;
document.getElementById('titlesearch').disabled = flag;
}
function searchFocus(e) {
// Update search input content on focus
if (e.value == 'Search') {
e.value = '';
e.className = '';
searchIsDisabled = false;
}
}
function searchBlur(e) {
// Update search input content on blur
if (e.value == '') {
e.value = 'Search';
e.className = 'disabled';
searchIsDisabled = true;
}
}
function actionsMenuInit(title) {
// Initialize action menu
for (i = 0; i < document.forms.length; i++) {
var form = document.forms[i];
if (form.className == 'actionsmenu') {
// Check if this form needs update
var div = form.getElementsByTagName('div')[0];
var label = div.getElementsByTagName('label')[0];
if (label) {
// This is the first time: remove label and do buton.
div.removeChild(label);
var dobutton = div.getElementsByTagName('input')[0];
div.removeChild(dobutton);
// and add menu title
var select = div.getElementsByTagName('select')[0];
var item = document.createElement('option');
item.appendChild(document.createTextNode(title));
item.value = 'show';
select.insertBefore(item, select.options[0]);
select.selectedIndex = 0;
}
}
}
}
//-->
</script>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="wiki/modern/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="wiki/modern/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="wiki/modern/css/projection.css">
<!-- css only for MSIE browsers -->
<!--[if IE]>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/msie.css">
<![endif]-->
<link rel="Start" href="./Quake4SDK.html">
<link rel="Alternate" title="Wiki Markup" href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=raw">
<link rel="Alternate" media="print" title="Print View" href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=print">
<link rel="Search" href="./FindPage.html">
<link rel="Index" href="./TitleIndex.html">
<link rel="Glossary" href="./WordIndex.html">
<link rel="Help" href="./HelpOnFormatting.html">
</head>
<body lang="en" dir="ltr">
<div id="header">
<div id="logo"><a href="./Quake4SDK.html"><img src="wiki/common/moinmoin.png" alt="MoinMoin Logo"></a></div>
<form id="searchform" method="get" action="">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<label for="searchinput">Search:</label>
<input id="searchinput" type="text" name="value" value="" size="20"
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
<input id="titlesearch" name="titlesearch" type="submit"
value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
value="Text" alt="Search Full Text">
</div>
</form>
<script type="text/javascript">
<!--// Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
</script>
<ul id="username"><li><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=login" id="login">Login</a></li></ul>
<div id="locationline">
<ul id="pagelocation">
<li><a class="backlink" title="Click to do a full-text search for this title" href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=fullsearch&amp;value=linkto%3A%22Adding+Fonts+to+use+in+Quake+4+GUIs%22&amp;context=180">Adding Fonts to use in Quake 4 GUIs</a></li>
</ul>
</div>
<ul id="navibar">
<li class="wikilink"><a href="./GettingStarted.html">GettingStarted</a></li><li class="wikilink"><a href="./ScriptFile.html">ScriptFile</a></li><li class="wikilink"><a href="./MakeAMod.html">MakeAMod</a></li><li class="wikilink"><a href="./LevelEditor.html">LevelEditor</a></li><li class="wikilink"><a href="./FXEditor.html">FXEditor</a></li><li class="wikilink"><a href="./GUIEditor.html">GUIEditor</a></li><li class="wikilink"><a href="./Sounds.html">Sounds</a></li><li class="wikilink"><a href="./Animations.html">Animations</a></li><li class="wikilink"><a href="./ArtReference.html">ArtReference</a></li><li class="wikilink"><a href="./DownloadableContent.html">DownloadableContent</a></li><li class="wikilink"><a href="./RecentChanges.html">RecentChanges</a></li><li class="wikilink"><a href="./FindPage.html">FindPage</a></li><li class="wikilink"><a href="./HelpContents.html">HelpContents</a></li><li class="current"><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs.html">Adding Font...uake 4 GUIs</a></li>
</ul>
<div id="pageline"><hr style="display:none;"></div>
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=info">Info</a></li><li><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
</div>
<div id="page" lang="en" dir="ltr">
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-2"></span>
<h3 id="head-1e72f0b89776bcb319254de7664b13914ebcb2ba">&gt;Download q4font.exe font program</h3>
<span class="anchor" id="line-3"></span><span class="anchor" id="line-4"></span><p class="line867"><a class="attachment" href="./q4font.zip" title="attachment:q4font.zip">q4font.zip</a> <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-7"></span>Quake 4 uses a specific font program to generate the <a href="./Font_Information.html">font files needed by the GUIs</a>. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line874">To generate fonts: <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><ul><li>Place q4font.exe in a folder alongside of any *.ttf files you wish to import. <span class="anchor" id="line-12"></span></li><li><p class="line862">From the Start menu, hit Run, type <strong>cmd</strong> and hit ok to start a DOS command prompt. <span class="anchor" id="line-13"></span></li><li><p class="line862">Change to the directory that q4font.exe is in. <a class="http" href="http://en.wikipedia.org/wiki/List_of_DOS_commands">Help on DOS commands</a> <span class="anchor" id="line-14"></span></li><li>Enter commands to export your font: <span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span></li></ul><p class="line867">
<h4 id="head-366943dfdbe2acb1428dca98e5c428f24d1669ef">Format:</h4>
<span class="anchor" id="line-17"></span><p class="line867"><span class="anchor" id="line-18"></span><pre>q4font &lt;fontname excluding '.ttf'&gt; -symbol -pointsize &lt;value&gt; -width &lt;value&gt; -height &lt;value&gt;
<span class="anchor" id="line-19"></span></pre><span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line867">
<h4 id="head-43ac7cbc410639cc6b577c45e8d52e8a306e9586">Example 1: Standard 12 point font export</h4>
<span class="anchor" id="line-22"></span><p class="line867"><span class="anchor" id="line-23"></span><pre>q4font chain -symbol -pointsize 12 -width 256 -height 128
<span class="anchor" id="line-24"></span></pre><span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><p class="line867">
<h4 id="head-46fa56adcbcd656380e00ac2204eab1db48b5051">Example 2: Exports a different *.tga and *.fontdat filename from the source *.ttf name</h4>
<span class="anchor" id="line-27"></span><p class="line867"><span class="anchor" id="line-28"></span><pre>q4font lowpixel_thin -symbol -pointsize 24 -width 256 -height 128 -out lowpixel
<span class="anchor" id="line-29"></span></pre><span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span><p class="line874">The *.tga and *.fontdat files are saved in a /fonts/ folder inside of the folder where you q4font.exe is located. <span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span><p class="line862">The Q4 Font tool uses a <strong>Symbol</strong> codepage for fonts, which is different than a standard Windows font codepage of <strong>MS Latin</strong> or <strong>Windows ANSI</strong>. This means that you cannot take *.ttf files used in Windows programs and use them without modification. Altering a font requires font editing software such as <strong>Font Lab</strong> or <strong>Macromedia Fontographer</strong>. Using a standard *.ttf in q4font will result in <strong>blank font *.tga's</strong>. <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><p class="line862">When changing a font from <strong>Windows ANSI</strong> to <strong>Symbol</strong>, it is important to remember to add blank characters with 0 character width. This means do not copy and paste the space character, create a new character with 0 side bearings. In the images below, these blank characters are illustrated as white squares in the Symbol image. Note the ANSI image has grey squares for completely missing characters instead. <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line862">Included below are two different examples of fonts, one in <strong>Symbol</strong> and the other in <strong>Windows ANSI</strong> for comparison. <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><ul><li><p class="line862">Windows ANSI: <a class="attachment" href="./marine_ANSI.zip" title="attachment:marine_ANSI.zip">marine_ANSI.zip</a> <span class="anchor" id="line-42"></span></li><li><p class="line862">Symbol: <a class="attachment" href="./marine_symbol.zip" title="attachment:marine_symbol.zip">marine_symbol.zip</a> <span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span></li></ul><p class="line867">
<h4 id="head-518ae4464f664a3ca325aa9c301bed2e90e6015d">Typical ANSI codepage: Image from Font Lab</h4>
<span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span><p class="line867"><img class="attachment" src="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=AttachFile&amp;do=get&amp;target=guied_ansi.jpg" title="attachment:guied_ansi.jpg" /> <span class="anchor" id="line-47"></span><span class="anchor" id="line-48"></span><p class="line867">
<h4 id="head-bab1479909dff0bf5780aa5f44e3d7b34c5fde22">Altered Symbol codepage: Image from Font Lab</h4>
<span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><p class="line867"><img class="attachment" src="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=AttachFile&amp;do=get&amp;target=guied_symbol.jpg" title="attachment:guied_symbol.jpg" /> <span class="anchor" id="line-51"></span><span class="anchor" id="line-52"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-53"></span>The list of fonts is populated when the <a href="./GUIEditor.html">GUIEditor</a> is started, so if you add a font you must restart the <a href="./GUIEditor.html">GUIEditor</a>. Add fonts to the following folder within Quake4: <span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><p class="line867"><span class="anchor" id="line-56"></span><pre>../q4base/fonts/
<span class="anchor" id="line-57"></span></pre><span class="anchor" id="line-58"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Adding Fonts to use in Quake 4 GUIs (last edited 2006-04-27 21:26:21 by <span title="MattVainio @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./MattVainio.html" title="MattVainio @ 67.129.250.254[67.129.250.254]">MattVainio</a></span>)</p>
<div id="pagebottom"></div>
</div>
<div id="footer">
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=info">Info</a></li><li><a href="./Adding_Fonts_to_use_in_Quake_4_GUIs?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
<ul id="credits">
<li><a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a></li><li><a href="http://www.python.org/">Python Powered</a></li><li><a href="http://validator.w3.org/check?uri=referer">Valid HTML 4.01</a></li>
</ul>
</div>
</body>
</html>