dlangui/fonts.html

372 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<link href='https://fonts.googleapis.com/css?family=Chivo:900' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>DlangUI - cross platform GUI library for D programming language - dlangui.graphics.fonts</title>
</head>
<body>
<div id="container">
<div class="inner">
<header>
<h1>DlangUI</h1>
<h2>Cross Platform GUI for D programming language</h2>
</header>
<section id="downloads" class="clearfix">
<a href="index.html" id="home" class="button"><span>Home</span></a>
<a href="api.html" id="home" class="button"><span>API Docs</span></a>
<a href="screenshots.html" id="home" class="button"><span>Screenshots</span></a>
<a href="https://github.com/buggins/dlangui/zipball/master" id="download-zip" class="button"><span>Download .zip</span></a>
<!--a href="https://github.com/buggins/dlangui/tarball/master" id="download-tar-gz" class="button"><span>Download .tar.gz</span></a-->
<a href="https://github.com/buggins/dlangui" id="view-on-github" class="button"><span>View on GitHub</span></a>
</section>
<hr>
<section id="main_content">
<h1>dlangui.graphics.fonts</h1>
<!-- Generated by Ddoc from src\dlangui\graphics\fonts.d -->
This module contains base <u>fonts</u> access interface and common implementation.
<br><br>
Font - base class for <u>fonts</u>.
<br><br>
FontManager - base class for font managers - provides access to available <u>fonts</u>.
<br><br>
<br><br>
Actual implementation is:
<br><br>
dlangui.graphics.ftfonts - FreeType based font manager.
<br><br>
dlangui.platforms.windows.w32fonts - Win32 API based font manager.
<br><br>
<br><br>
To enable OpenGL support, build with version(USE_OPENGL);
<br><br>
<b>See Also:</b><br>
dlangui.graphics.drawbuf, DrawBuf, drawbuf, drawbuf.html
<br><br>
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>fonts</u>;
<font color=green>// find suitable font of size 25, normal, preferrable Arial, or, if not available, any SansSerif font
</font>FontRef font = FontManager.instance.getFont(25, FontWeight.Normal, <font color=blue>false</font>, FontFamily.SansSerif, <font color=red>"Arial"</font>);
dstring sampleText = <font color=red>"Sample text to draw"d</font>;
<font color=green>// measure text string width and height (one line)
</font>Point sz = font.textSize(sampleText);
<font color=green>// draw red text at center of DrawBuf buf
</font>font.drawText(buf, buf.width / 2 - sz.x/2, buf.height / 2 - sz.y / 2, sampleText, 0xFF0000);
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="FontFamily"></a>enum <u>FontFamily</u>: ubyte;
</big></dt>
<dd>font families enum<br><br>
<dl><dt><big><a name="FontFamily.Unspecified"></a><u>Unspecified</u></big></dt>
<dd>Unknown / not set / does not matter<br><br>
</dd>
<dt><big><a name="FontFamily.SansSerif"></a><u>SansSerif</u></big></dt>
<dd>Sans Serif font, e.g. Arial<br><br>
</dd>
<dt><big><a name="FontFamily.Serif"></a><u>Serif</u></big></dt>
<dd><u>Serif</u> font, e.g. Times New Roman<br><br>
</dd>
<dt><big><a name="FontFamily.Fantasy"></a><u>Fantasy</u></big></dt>
<dd><u>Fantasy</u> font<br><br>
</dd>
<dt><big><a name="FontFamily.Cursive"></a><u>Cursive</u></big></dt>
<dd><u>Cursive</u> font<br><br>
</dd>
<dt><big><a name="FontFamily.MonoSpace"></a><u>MonoSpace</u></big></dt>
<dd>Monospace font (fixed pitch font), e.g. Courier New<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FontWeight"></a>enum <u>FontWeight</u>: int;
</big></dt>
<dd>font weight constants (0..1000)<br><br>
<dl><dt><big><a name="FontWeight.Normal"></a><u>Normal</u></big></dt>
<dd>normal font weight<br><br>
</dd>
<dt><big><a name="FontWeight.Bold"></a><u>Bold</u></big></dt>
<dd>bold font<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="MAX_WIDTH_UNSPECIFIED"></a>immutable int <u>MAX_WIDTH_UNSPECIFIED</u>;
</big></dt>
<dd>constant for measureText maxWidth paramenter - to tell that all characters of text string should be measured.<br><br>
</dd>
<dt><big><a name="Font"></a>abstract class <u>Font</u>: <u>dlangui.core.types.RefCountedObject</u>;
</big></dt>
<dd>Instance of font with specific size, weight, face, etc.
<br><br>
Allows to measure text string and draw it on DrawBuf
<br><br>
Use FontManager.instance.getFont() to retrieve font instance.<br><br>
<dl><dt><big><a name="Font.size"></a>abstract @property int <u>size</u>();
</big></dt>
<dd>returns font <u>size</u> (as requested from font engine)<br><br>
</dd>
<dt><big><a name="Font.height"></a>abstract @property int <u>height</u>();
</big></dt>
<dd>returns actual font <u>height</u> including interline space<br><br>
</dd>
<dt><big><a name="Font.weight"></a>abstract @property int <u>weight</u>();
</big></dt>
<dd>returns font <u>weight</u><br><br>
</dd>
<dt><big><a name="Font.baseline"></a>abstract @property int <u>baseline</u>();
</big></dt>
<dd>returns <u>baseline</u> offset<br><br>
</dd>
<dt><big><a name="Font.italic"></a>abstract @property bool <u>italic</u>();
</big></dt>
<dd>returns <b>true</b> if font is <u>italic</u><br><br>
</dd>
<dt><big><a name="Font.face"></a>abstract @property string <u>face</u>();
</big></dt>
<dd>returns font <u>face</u> name<br><br>
</dd>
<dt><big><a name="Font.family"></a>abstract @property FontFamily <u>family</u>();
</big></dt>
<dd>returns font <u>family</u><br><br>
</dd>
<dt><big><a name="Font.isNull"></a>abstract @property bool <u>isNull</u>();
</big></dt>
<dd>returns <b>true</b> if font object is not yet initialized / loaded<br><br>
</dd>
<dt><big><a name="Font.isFixed"></a>@property bool <u>isFixed</u>();
</big></dt>
<dd>returns <b>true</b> if font has fixed pitch (all characters have equal width)<br><br>
</dd>
<dt><big><a name="Font.spaceWidth"></a>@property int <u>spaceWidth</u>();
</big></dt>
<dd>returns <b>true</b> if font is fixed<br><br>
</dd>
<dt><big><a name="Font.charWidth"></a>int <u>charWidth</u>(dchar <i>ch</i>);
</big></dt>
<dd>returns character width<br><br>
</dd>
<dt><big><a name="Font.measureText"></a>int <u>measureText</u>(const dchar[] <i>text</i>, ref int[] <i>widths</i>, int <i>maxWidth</i> = MAX_WIDTH_UNSPECIFIED, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Measure <i>text</i> string, return accumulated <i>widths</i>[] (distance to end of n-th character), returns number of measured chars.
<br><br>
Supports Tab character processing and processing of menu item labels like '&File'.
<br><br>
<b>Params:</b><br>
<table><tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to measure</td></tr>
<tr><td>int[] <i>widths</i></td>
<td>output buffer to put measured <i>widths</i> (<i>widths</i>[i] will be set to cumulative <i>widths</i> <i>text</i>[0..i])</td></tr>
<tr><td>int <i>maxWidth</i></td>
<td>maximum width to measure - measure is stopping if max width is reached (pass MAX_WIDTH_UNSPECIFIED to measure all characters)</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>TextFlag bit set - to control underline, hotkey label processing, etc...</td></tr>
</table><br>
<b>Returns:</b><br>
number of characters measured (may be less than <i>text</i>.length if <i>maxWidth</i> is reached)<br><br>
</dd>
<dt><big><a name="Font.textSize"></a>Point <u>textSize</u>(const dchar[] <i>text</i>, int <i>maxWidth</i> = MAX_WIDTH_UNSPECIFIED, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Measure <i>text</i> string as single line, returns width and height
<br><br>
<b>Params:</b><br>
<table><tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to measure</td></tr>
<tr><td>int <i>maxWidth</i></td>
<td>maximum width - measure is stopping if max width is reached</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>TextFlag bit set - to control underline, hotkey label processing, etc...</td></tr>
</table><br>
</dd>
<dt><big><a name="Font.drawText"></a>void <u>drawText</u>(DrawBuf <i>buf</i>, int <i>x</i>, int <i>y</i>, const dchar[] <i>text</i>, uint <i>color</i>, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Draw <i>text</i> string to buffer.
<br><br>
<b>Params:</b><br>
<table><tr><td>DrawBuf <i>buf</i></td>
<td>graphics buffer to draw <i>text</i> to</td></tr>
<tr><td>int <i>x</i></td>
<td><i>x</i> coordinate to draw first character at</td></tr>
<tr><td>int <i>y</i></td>
<td><i>y</i> coordinate to draw first character at</td></tr>
<tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to draw</td></tr>
<tr><td>uint <i>color</i></td>
<td><i>color</i> for drawing of glyphs</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>set of TextFlag bit fields</td></tr>
</table><br>
</dd>
<dt><big><a name="Font.getCharGlyph"></a>abstract Glyph* <u>getCharGlyph</u>(dchar <i>ch</i>, bool <i>withImage</i> = true);
</big></dt>
<dd>get character glyph information<br><br>
</dd>
<dt><big><a name="Font.checkpoint"></a>abstract void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="Font.cleanup"></a>abstract void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FontList"></a>struct <u>FontList</u>;
</big></dt>
<dd>font instance collection - utility class, for font manager implementations<br><br>
</dd>
<dt><big><a name="FontManager"></a>abstract class <u>FontManager</u>;
</big></dt>
<dd>Access points to fonts.<br><br>
<dl><dt><big><a name="FontManager.instance"></a>static @property void <u>instance</u>(FontManager <i>manager</i>);
</big></dt>
<dd>sets new font <i>manager</i> singleton <u>instance</u><br><br>
</dd>
<dt><big><a name="FontManager.instance"></a>static @property FontManager <u>instance</u>();
</big></dt>
<dd>returns font manager singleton <u>instance</u><br><br>
</dd>
<dt><big><a name="FontManager.getFont"></a>abstract ref FontRef <u>getFont</u>(int <i>size</i>, int <i>weight</i>, bool <i>italic</i>, FontFamily <i>family</i>, string <i>face</i>);
</big></dt>
<dd>get font instance best matched specified parameters<br><br>
</dd>
<dt><big><a name="FontManager.checkpoint"></a>abstract void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries -- for cleanup of unused fonts<br><br>
</dd>
<dt><big><a name="FontManager.cleanup"></a>abstract void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="GlyphCache"></a>struct <u>GlyphCache</u>;
</big></dt>
<dd>Glyph image cache
<br><br>
Recently used glyphs are marked with glyph.lastUsage = 1
<br><br>
checkpoint() call clears usage marks
<br><br>
cleanup() removes all items not accessed since last checkpoint()<br><br>
<dl><dt><big><a name="GlyphCache.find"></a>Glyph* <u>find</u>(dchar <i>ch</i>);
</big></dt>
<dd>try to <u>find</u> glyph for character in cache, returns <b>null</b> if not found<br><br>
</dd>
<dt><big><a name="GlyphCache.put"></a>Glyph* <u>put</u>(dchar <i>ch</i>, Glyph* <i>glyph</i>);
</big></dt>
<dd><u>put</u> character <i>glyph</i> to cache<br><br>
</dd>
<dt><big><a name="GlyphCache.cleanup"></a>void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
<dt><big><a name="GlyphCache.checkpoint"></a>void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="GlyphCache.clear"></a>void <u>clear</u>();
</big></dt>
<dd>removes all entries (when built with USE_OPENGL version, notify OpenGL cache about removed glyphs)<br><br>
</dd>
</dl>
</dd>
</dl>
</section>
<footer>
Dlangui is maintained by <a href="https://github.com/buggins">buggins</a><br>
This page was generated by <a href="http://pages.github.com">GitHub Pages</a>. Tactile theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.
</footer>
</div>
</div>
</body>
</html>