<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Loading fonts</title>
		<link>http://www.allegro.cc/forums/view/588157</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 21 Oct 2006 23:19:31 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>when you want to load a font in Allegro where does he look for the file? <br />And what&#39;s the difference between registering and loading a font?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Sylvarant)</author>
		<pubDate>Sat, 21 Oct 2006 21:23:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
when you want to load a font in Allegro where does he look for the file?
</p></div></div><p>Wherever you tell it to look.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And what&#39;s the difference between registering and loading a font?
</p></div></div><p>
What do you mean by registering a font?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 21 Oct 2006 21:33:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know about registering fonts or anything, but here&#39;s something we&#39;ve used in a few games that seems to work:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>font6x6<span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">int</span> fontHeight <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">int</span> fontWidth <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> numLetters <span class="k3">=</span> <span class="n">91</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">static</span> <span class="k1">unsigned</span> <span class="k1">char</span> font6<span class="k2">[</span>numLetters <span class="k3">*</span> <span class="k2">(</span>fontHeight <span class="k3">*</span> fontWidth<span class="k2">)</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>   <span class="c">/* Space */</span></td></tr><tr><td class="number">10</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">11</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">12</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">13</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">14</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">15</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>   <span class="c">/* Exclamation Point */</span></td></tr><tr><td class="number">18</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">19</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">20</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">21</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">22</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">23</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>   <span class="c">/* Quotation Mark */</span></td></tr><tr><td class="number">26</td><td>      <span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">27</td><td>      <span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">28</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">29</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">30</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">31</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>      ...</td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>   <span class="c">/* Uppercase A */</span></td></tr><tr><td class="number">36</td><td>      <span class="n">0</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">37</td><td>      <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">38</td><td>      <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">39</td><td>      <span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">40</td><td>      <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">41</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">42</td><td>   <span class="c">/* Uppercase B */</span></td></tr><tr><td class="number">43</td><td>      <span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">44</td><td>      <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">45</td><td>      <span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">46</td><td>      <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span>,</td></tr><tr><td class="number">47</td><td>      <span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">48</td><td>      <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,</td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>      ...</td></tr><tr><td class="number">51</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td><span class="k1">void</span> getfont<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">55</td><td><span class="k2">{</span></td></tr><tr><td class="number">56</td><td>   <span class="k1">int</span> currentLetter<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>   <span class="k1">int</span> letterWidth<span class="k2">;</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td>   <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span>ptr <span class="k3">=</span> font6<span class="k2">;</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>   <span class="c">/* Set the color of this font to medium-gray */</span></td></tr><tr><td class="number">62</td><td>   <span class="k1">int</span> color_gray<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="n">0</span>, <span class="n">9</span>, <span class="n">15</span> <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td>   <span class="k1">for</span> <span class="k2">(</span>currentLetter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> currentLetter <span class="k3">&lt;</span> <span class="k2">(</span>numLetters <span class="k3">*</span> fontHeight<span class="k2">)</span><span class="k2">;</span> currentLetter<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">65</td><td>      <span class="k1">for</span> <span class="k2">(</span>letterWidth <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> letterWidth <span class="k3">&lt;</span> fontWidth<span class="k2">;</span> letterWidth<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">66</td><td>         <a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>font6x6, letterWidth, currentLetter, color_gray<span class="k2">[</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k3">*</span>ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Here, the actual font that you&#39;ll use is the bitmap <b>font6x6</b>.  Then you would simply use a function like this to actually write the letters onto the screen somewhere:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>target, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>source, <span class="k1">int</span> x, <span class="k1">int</span> y, string text<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>   <span class="k1">int</span> currentLetter<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>   <span class="k1">int</span> temp<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>   </td></tr><tr><td class="number">6</td><td>   <span class="k1">for</span> <span class="k2">(</span>currentLetter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> currentLetter <span class="k3">&lt;</span> text.length<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> currentLetter<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>      temp <span class="k3">=</span> text<span class="k2">[</span>currentLetter<span class="k2">]</span> <span class="k3">-</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>      <span class="k1">if</span> <span class="k2">(</span>temp <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>         temp <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">if</span> <span class="k2">(</span>temp <span class="k3">&gt;</span> numLetters<span class="k2">)</span></td></tr><tr><td class="number">12</td><td>         temp <span class="k3">=</span> numLetters<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>source, target, <span class="n">0</span>, temp <span class="k3">*</span> <span class="n">6</span>, currentLetter <span class="k3">*</span> <span class="n">6</span> <span class="k3">+</span> x, y,</td></tr><tr><td class="number">14</td><td>                  source-&gt;width, source-&gt;height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

You call this with a simple <span class="source-code">writeFont<span class="k2">(</span>double_buffer, font6x6, x, y, some_string<span class="k2">)</span><span class="k2">;</span></span></p><p>It&#39;s ugly, I know, but this is ONE way of creating your own custom font.  You could take the same data, store it into a DAT file and save a lot more space, but this is just one example.</p><p>-TeamTerradactyl
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Sat, 21 Oct 2006 21:50:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>&quot;What do you mean by registering a font?&quot; <br />register font file type :  <br />void register_font_file_type(const char *ext, FONT *(*load)(const char<br />*filename, RGB *pal, void *param));</p><p>Another question were can I find fonts of the correct type?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Sylvarant)</author>
		<pubDate>Sat, 21 Oct 2006 21:51:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Here, the actual font that you&#39;ll use is the bitmap font6x6. Then you would simply use a function like this to actually write the letters onto the screen somewhere:
</p></div></div><p>
Bloody hell. Next time, check <a href="http://alleg.sourceforge.net/onlinedocs/en/alleg017.html#grab_font_from_bitmap">the manual</a> before you try to reinvent the wheel.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And what&#39;s the difference between registering and loading a font?
</p></div></div><p>
What the manual says it is:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
FONT *load_font(const char *filename, RGB *pal, void *param);</p><p>Loads a font from a file.
</p></div></div><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
void register_font_file_type(const char *ext, FONT *(*load)(const char *filename, RGB *pal, void *param));</p><p>Informs the load_font() functions of a new file type, providing a routine to read fonts in this format.
</p></div></div><p>

After registering the FONT type, you can use Allegro&#39;s normal load_font() function to load it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 21 Oct 2006 23:19:31 +0000</pubDate>
	</item>
</rss>
