summaryrefslogtreecommitdiff
path: root/Master/xemtex/doc/ghostscript/Xfonts.htm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/xemtex/doc/ghostscript/Xfonts.htm')
-rw-r--r--Master/xemtex/doc/ghostscript/Xfonts.htm265
1 files changed, 265 insertions, 0 deletions
diff --git a/Master/xemtex/doc/ghostscript/Xfonts.htm b/Master/xemtex/doc/ghostscript/Xfonts.htm
new file mode 100644
index 00000000000..d86653143ab
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/Xfonts.htm
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Ghostscript's external font and text interface</title>
+<!-- $Id: Xfonts.htm,v 1.13.2.11.2.5 2003/05/17 14:39:00 giles Exp $ -->
+<!-- Originally: xfonts.txt -->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>Ghostscript's external font and text interface</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#Types">Types</a>
+<li><a href="#Implementation_procedures">Implementation procedures</a>
+<li><a href="#Font_level_procedures">Font-level procedures</a>
+<ul>
+<li><a href="#lookup_font"><b><tt>lookup_font</tt></b></a>
+<li><a href="#char_xglyph"><b><tt>char_xglyph</tt></b></a>
+<li><a href="#char_metrics"><b><tt>char_metrics</tt></b></a>
+<li><a href="#render_char"><b><tt>render_char</tt></b></a>
+<li><a href="#release"><b><tt>release</tt></b></a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<!-- [2.0 begin contents] ================================================== -->
+
+<h2><a name="Introduction"></a>Introduction</h2>
+
+<p>
+Ghostscript can use the character rasterizer provided by the underlying
+operating system and window system; specifically, Adobe Type Manager (ATM)
+or a TrueType rasterizer under MS Windows, or the facilities provided by X
+Windows. This ability augments, but does not replace, Ghostscript's own
+Type 1 rasterizer: Ghostscript may still use its own rasterizer for very
+large characters, characters that are clipped or transformed in unusual
+ways, and for output to devices other than the screen.
+
+<p>
+Ghostscript connects to these platform facilities through a driver-like
+interface called the xfont (external font) interface. Current xfont
+implementations are associated directly with device drivers; in a future
+release, Ghostscript may separate them, so that (for example) it will be
+possible to use the platform rasterizer when writing to a file.
+
+<p>
+Please note that from this point, this file is likely to be useful only
+to a small number of Ghostscript porters and implementors.
+
+<hr>
+
+<h2><a name="Types"></a>Types</h2>
+
+<table cellpadding=0 cellspacing=0>
+<tr> <th valign=bottom align=left>Type
+ <td>&nbsp;&nbsp;
+ <th valign=bottom align=left>Declared /<br>defined in
+ <td>&nbsp;
+ <th valign=bottom align=left>Represents
+<tr> <td colspan=5><hr>
+<tr> <td valign=top><b><tt>gs_char</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character code that appears in a string. Currently
+ it is always a single byte, but composite fonts or Unicode may
+ require it to be wider in the future.
+<tr> <td valign=top><b><tt>gs_glyph</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character name like "period" or "epsilon". From
+ the xfont implementation's point of view, it is just a handle;
+ when necessary, Ghostscript provides a
+ <b><tt>gs_proc_glyph_name_t</tt></b> procedure to
+ convert it to a string name.
+<tr> <td valign=top><b><tt>gs_proc_glyph_name_t</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsccode.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A procedure that maps a <b><tt>gs_glyph</tt></b> to
+ its string name; see the <b><tt>char_xglyph</tt></b> procedure.
+<tr> <td valign=top><b><tt>gx_xglyph</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>A character or glyph code that can be used with a
+ specific platform font. Normally it will be a character code
+ that the implementation of <b><tt>render_char</tt></b> will
+ turn into a 1-character string and give to the platform's
+ "display string" operation.
+<tr> <td valign=top><b><tt>gx_xfont_procs</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>, <b><tt>gxxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>The xfont analogue of
+ <b><tt>gx_device_procs</tt></b>, the type of the
+ procedure record that defines an xfont implementation.
+<tr> <td valign=top><b><tt>gx_xfont</tt></b>
+ <td>&nbsp;
+ <td valign=top><b><tt>gsxfont.h</tt></b>, <b><tt>gxxfont.h</tt></b>
+ <td>&nbsp;
+ <td valign=top>The gxfont analogue of <b><tt>gx_device</tt></b>,
+ the type of the basic structure for an xfont.
+<tr> <td valign=top>(<b><tt>encoding_index</tt></b>)
+ <td>&nbsp;
+ <td>&nbsp;
+ <td>&nbsp;
+ <td valign=top>Not really a type, although it probably should be:
+ an <b><tt>int</tt></b> used to indicate the
+ <b><tt>Encoding</tt></b> used by a font. Defined values are
+ <dl compact>
+ <dt>0<dd><b><tt>StandardEncoding</tt></b>
+ <dt>1<dd><b><tt>ISOLatin1Encoding</tt></b>
+ <dt>2<dd><b><tt>SymbolEncoding</tt></b>
+ <dt>3<dd><b><tt>DingbatsEncoding</tt></b>
+ <dt>-1<dd>Other encoding
+ </dl>
+</table>
+
+<hr>
+
+<h2><a name="Implementation_procedures"></a>Implementation
+procedures</h2>
+
+<p>
+All the procedures that return <b><tt>int</tt></b> results return 0 on
+success, or an appropriate negative error code for error conditions; these
+error codes are defined in <b><tt>gserrors.h</tt></b>. The relevant ones
+are the same as for <a href="Drivers.htm">drivers</a>, and as with drivers,
+if an implementation procedure returns an error, it should use the
+<b><tt>return_error</tt></b> macro -- defined in <b><tt>gx.h</tt></b>,
+which is automatically included by <b><tt>gdevprn.h</tt></b> but not by
+<b><tt>gserrors.h</tt></b> -- rather than a simple <b><tt>return</tt></b>
+statement, for instance
+
+<blockquote>
+<b><tt>return_error(gs_error_VMerror);</tt></b>
+</blockquote>
+
+<h2><a name="Font_level_procedures"></a>Font-level procedures</h2>
+
+<h3><a name="lookup_font"></a><b><tt>lookup_font</tt></b></h3>
+
+<dl>
+<dt><b><tt>gx_xfont *(*lookup_font)(P7(gx_device&nbsp;*dev,
+const&nbsp;byte&nbsp;*fname, uint&nbsp;len, int&nbsp;encoding_index,
+const&nbsp;gs_uid&nbsp;*puid, const&nbsp;gs_matrix&nbsp;*pmat,
+const&nbsp;gs_memory_procs&nbsp;*mprocs))</tt></b>
+<dd>Look up a font name, <b><tt>UniqueID</tt></b>, and matrix, and return
+an xfont, or <b><tt>NULL</tt></b> if no suitable xfont exists. Use
+<b><tt>mprocs</tt></b> to allocate the xfont and any subsidiary data
+structures. The matrix is the <b><tt>FontMatrix</tt></b> concatenated with
+the CTM, so (roughly speaking) the font size in pixels is
+<b><tt>pmat&nbsp;-&gt;&nbsp;yy</tt></b>&nbsp;&times;&nbsp;1000 for a normal
+Type 1 font.
+
+<p>
+Note that this is the only implementation procedure that does not take an
+xfont * as its first argument. In fact, callers of
+<b><tt>lookup_font</tt></b> must use the <b><tt>get_xfont_device</tt></b>
+driver procedure to get the correct device to pass as the first argument to
+<b><tt>lookup_font</tt></b>.
+</dl>
+
+<h3><a name="char_xglyph"></a><b><tt>char_xglyph</tt></b></h3>
+
+<dl>
+<dt><b><tt>gx_xglyph (*char_xglyph)(P5(gx_xfont&nbsp;*xf, gs_char&nbsp;chr,
+int&nbsp;encoding_index, gs_glyph&nbsp;glyph,
+gs_proc_glyph_name_t&nbsp;glyph_name))</tt></b>
+<dd>Convert a character name to an xglyph code. In the case of
+<b><tt>glyphshow</tt></b>, <b><tt>chr</tt></b> may be
+<b><tt>gs_no_char</tt></b>; for an ordinary <b><tt>show</tt></b> operation,
+if the character code is invalid, <b><tt>glyph</tt></b> may be
+<b><tt>gs_no_glyph</tt></b>.
+</dl>
+
+<h3><a name="char_metrics"></a><b><tt>char_metrics</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*char_metrics)(P5(gx_xfont&nbsp;*xf, gx_xglyph&nbsp;xg,
+int&nbsp;wmode, gs_int_point&nbsp;*pwidth,
+gs_int_rect&nbsp;*pbbox))</tt></b>
+<dd>Get the metrics for a character. If the metrics are unavailable,
+return 1.
+</dl>
+
+<h3><a name="render_char"></a><b><tt>render_char</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*render_char)(P7(gx_xfont&nbsp;*xf, gx_xglyph&nbsp;xg,
+gx_device&nbsp;*target, int&nbsp;x, int&nbsp;y, gx_color_index&nbsp;color,
+int&nbsp;required))</tt></b>
+<dd>Render a character. <em>(x,y)</em> corresponds to the character
+origin. The target may be any Ghostscript device. A good implementation
+will check whether the target can handle this type of xfont directly (for
+instance by checking the target name), and if so, will render the character
+directly; otherwise, it will do what has to be done in the general case,
+namely, get a bitmap for the character and use the target's
+<b><tt>copy_mono</tt></b> operation. If <b><tt>required</tt></b> is false,
+the procedure should return an error if the rendering operation would be
+expensive, since in this case Ghostscript has already cached the bitmap and
+metrics from a previous call with <b><tt>required</tt></b>=true. If the
+operation cannot be done, return 1.
+</dl>
+
+<h3><a name="release"></a><b><tt>release</tt></b></h3>
+
+<dl>
+<dt><b><tt>int (*release)(P2(gx_xfont&nbsp;*xf,
+const&nbsp;gs_memory_procs&nbsp;*mprocs))</tt></b>
+<dd>Release any external resources associated with an xfont. If
+<b><tt>mprocs</tt></b> is not <b><tt>NULL</tt></b>, also free any storage
+allocated by <b><tt>lookup_font</tt></b> (including the xfont itself).
+</dl>
+
+<!-- [2.0 end contents] ==================================================== -->
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises. All
+rights reserved.</small>
+
+<p>
+This software is provided AS-IS with no warranty, either express or
+implied.
+
+This software is distributed under license and may not be copied,
+modified or distributed except as expressly authorized under the terms
+of the license contained in the file LICENSE in this distribution.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>