diff options
author | David Thompson <dthompson2@worcester.edu> | 2018-03-10 20:32:18 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2018-03-10 20:32:32 -0500 |
commit | af2872325ed461252303ec8b7987058b664843f1 (patch) | |
tree | cb710d0a186a2617ab86b98a5bdb9acd4cbe6934 /manuals/chickadee/Fonts.html | |
parent | 89a3558fb9b094b9a92055e98ad655e9bb799eba (diff) |
Update Chickadee manual.
Diffstat (limited to 'manuals/chickadee/Fonts.html')
-rw-r--r-- | manuals/chickadee/Fonts.html | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/manuals/chickadee/Fonts.html b/manuals/chickadee/Fonts.html new file mode 100644 index 0000000..198bddb --- /dev/null +++ b/manuals/chickadee/Fonts.html @@ -0,0 +1,197 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 2017 David Thompson davet@gnu.org + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled "GNU +Free Documentation License". + +A copy of the license is also available from the Free Software +Foundation Web site at http://www.gnu.org/licenses/fdl.html. + + +The document was typeset with +http://www.texinfo.org/ (GNU Texinfo). + --> +<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ --> +<head> +<title>The Chickadee Game Toolkit: Fonts</title> + +<meta name="description" content="The Chickadee Game Toolkit: Fonts"> +<meta name="keywords" content="The Chickadee Game Toolkit: Fonts"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Index.html#Index" rel="index" title="Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Graphics.html#Graphics" rel="up" title="Graphics"> +<link href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" rel="next" title="Blending and Depth Testing"> +<link href="Lines-and-Shapes.html#Lines-and-Shapes" rel="prev" title="Lines and Shapes"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smalllisp {margin-left: 3.2em} +kbd {font-style: oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nolinebreak {white-space: nowrap} +span.roman {font-family: initial; font-weight: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} +ul.no-bullet {list-style: none} +@media (min-width: 1140px) { + body { + margin-left: 14rem; + margin-right: 4rem; + max-width: 52rem; + } +} + +@media (min-width: 800px) and (max-width: 1140px) { + body { + margin-left: 6rem; + margin-right: 4rem; + max-width: 52rem; + } +} + +@media (max-width: 800px) { + body { + margin: 1rem; + } +} + +--> +</style> +<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css"> + + +</head> + +<body lang="en"> +<a name="Fonts"></a> +<div class="header"> +<p> +Next: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="n" rel="next">Blending and Depth Testing</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Fonts-1"></a> +<h4 class="subsection">2.4.5 Fonts</h4> + +<p>Unlike the traditional TrueType font format that many are accustomed +to, Chickadee loads and renders bitmap fonts in the +<a href="http://www.angelcode.com/products/bmfont/doc/file_format.html">Angel Code format</a>. But why use this seemingly obscure format? It’s +easy to find TTFs but not easy to find FNTs (the canonical file +extension used for Angel Code fonts) and bitmap fonts don’t scale +well. The reason is efficiency. +</p> +<p>If all of the glyphs of a font are pre-rendered and packed into an +image file then it becomes possible to use a texture atlas +(see <a href="Textures.html#Textures">Textures</a>) and a sprite batch (see <a href="Sprites.html#Sprites">Sprites</a>) when +rendering, which is a more efficient way to render fonts than using, +say, <a href="https://www.libsdl.org/projects/SDL_ttf/">SDL_ttf</a> or other +solutions that involve using the FreeType library directly. +</p> +<p>Now what about scaling? In libraries that use TTF fonts, one must +choose the size that the glyphs will be rasterized at up front. To +use <code>n</code> sizes of the same font, one must load <code>n</code> variants +of that font. If the size of the text is dynamic, some kind of +texture scaling algorithm must be used and the text will inevitably +look blurry. At first glance, using bitmap fonts seem to have an even +worse issue. Instead of just loading the same font <code>n</code> times at +different sizes, one would need to generate <code>n</code> image files for +each font size needed. This is where the “signed distance field” +rendering technique comes in. Introduced by +<a href="http://www.valvesoftware.com/.../2007/SIGGRAPH2007_AlphaTestedMagnification.pdf">Valve</a> in 2007, signed distance field fonts can be efficiently stored +in a bitmap and be rendered at arbitrary scale factors with good +results. Chickadee can render both traditional bitmap fonts and +signed distance field fonts. <em>Signed distance field font +rendering is not yet available, so be patient.</em> +</p> +<p>While Chickadee does not yet offer a tool for converting TTF fonts +into FNT fonts, tools such as +<a href="https://github.com/libgdx/libgdx/wiki/Hiero">Hiero</a> may be used +in the meantime. +</p> +<p>The following procedures can be found in the <code>(chickadee render +font)</code> module. +</p> +<dl> +<dt><a name="index-load_002dfont"></a>Scheme Procedure: <strong>load-font</strong> <em><var>file</var></em></dt> +<dd><p>Load the Angel Code formatted XML document in <var>file</var> and return a +new font object. +</p></dd></dl> + +<dl> +<dt><a name="index-font_003f"></a>Scheme Procedure: <strong>font?</strong> <em><var>obj</var></em></dt> +<dd><p>Return <code>#t</code> if <var>obj</var> is a font object. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dface"></a>Scheme Procedure: <strong>font-face</strong> <em><var>font</var></em></dt> +<dd><p>Return the name of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dline_002dheight"></a>Scheme Procedure: <strong>font-line-height</strong> <em><var>font</var></em></dt> +<dd><p>Return the line height of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dline_002dheight-1"></a>Scheme Procedure: <strong>font-line-height</strong> <em><var>font</var></em></dt> +<dd><p>Return the line height of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dbold_003f"></a>Scheme Procedure: <strong>font-bold?</strong> <em><var>font</var></em></dt> +<dd><p>Return <code>#t</code> if <var>font</var> is a bold font. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002ditalic_003f"></a>Scheme Procedure: <strong>font-italic?</strong> <em><var>font</var></em></dt> +<dd><p>Return <code>#t</code> if <var>font</var> is an italicized font. +</p></dd></dl> + +<dl> +<dt><a name="index-draw_002dtext"></a>Scheme Procedure: <strong>draw-text</strong> <em><var>font</var> <var>text</var> <var>position</var></em></dt> +<dd><p>[#:scale] [#:rotation] [#:blend-mode] +</p> +<p>Draw the string <var>text</var> with the first character starting at +<var>position</var> using <var>font</var>. +</p> +<div class="example"> +<pre class="example">(draw-text font "Hello, world!" (vec2 128.0 128.0)) +</pre></div> + +<p>Refer to <code>draw-sprite</code> (see <a href="Sprites.html#Sprites">Sprites</a>) for information about +the other arguments. +</p></dd></dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="n" rel="next">Blending and Depth Testing</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |