Minor fixes.
This commit is contained in:
parent
a6c747d2b5
commit
f42e6595e6
153
docs/ft2faq.html
153
docs/ft2faq.html
|
@ -104,19 +104,19 @@
|
|||
<ul><p>
|
||||
<li>
|
||||
<a href="#other-color">How can I set the color of text rendered
|
||||
by FreeType ?</a>
|
||||
by FreeType?</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#other-depth">Can I use FreeType to draw text on a pixmap
|
||||
with arbitrary depth ?</a>
|
||||
with arbitrary depth?</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#other-size">I set the pixel size to 8x8, but the resulting
|
||||
glyphs are larger than that. Why ?</a>
|
||||
<a href="#other-size">I set the pixel size to 8x8, but the
|
||||
resulting glyphs are larger than that. Why?</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#other-bbox">How can I compute the bounding box of a text
|
||||
string without loading its glyphs ?</a>
|
||||
string without loading its glyphs?</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#other-antialias">Which anti-aliasing algorithm is
|
||||
|
@ -567,112 +567,111 @@
|
|||
|
||||
<a name="other-depth">
|
||||
<h3>
|
||||
IV.1 Can I use FreeType to draw text on a pixmap with arbitratry depth ?
|
||||
IV.1 Can I use FreeType to draw text on a pixmap with arbitratry depth?
|
||||
</h3>
|
||||
|
||||
<p>No directly, as FreeType is a font library, not a general purpose
|
||||
graphics library or text rendering service. However, note that the
|
||||
<p>Not directly, as FreeType is a font library, not a general purpose
|
||||
graphics library or text rendering service. However, note that the
|
||||
anti-aliased renderer allows you to convert a vectorial glyph outline
|
||||
into a list of "spans" (i.e. horizontal pixel segments with same coverage)
|
||||
that can be rendered through user-provided callbacks.</p>
|
||||
into a list of "spans" (i.e. horizontal pixel segments with same
|
||||
coverage) that can be rendered through user-provided callbacks.</p>
|
||||
|
||||
<p>By providing the appropriate span callback, you can render anti-aliased
|
||||
text to any kind of surface. You can also use any color or fill
|
||||
pattern/image if you want to. This process is called
|
||||
<em>direct rendering</em>. For more information, please read the
|
||||
documentation contained in the following files:</p>
|
||||
<p>By providing the appropriate span callback, you can render
|
||||
anti-aliased text to any kind of surface. You can also use any color or
|
||||
fill pattern/image if you want to. This process is called <em>direct
|
||||
rendering</em>. For more information, please read the documentation
|
||||
contained in the following files:</p>
|
||||
|
||||
<ul>
|
||||
<li><p>
|
||||
<b><tt><freetype/ftimage.h></tt></b> contains the definition
|
||||
of the <tt>FT_Raster_Params</tt> type used with direct rendering.
|
||||
</p></li>
|
||||
|
||||
<li><p>
|
||||
<b><tt><freetype/ftoutln.h></tt></b> contains the definition
|
||||
of the <tt>FT_Outline_Render</tt> function that can be used to
|
||||
convert vectorial outlines to span lists.
|
||||
</p></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<p><tt><freetype/ftimage.h></tt> contains the definition of
|
||||
the <tt>FT_Raster_Params</tt> type used with direct rendering.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><tt><freetype/ftoutln.h></tt> contains the definition of
|
||||
the <tt>FT_Outline_Render()</tt> function that can be used to
|
||||
convert vectorial outlines to span lists.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Here's some code that uses them:</p>
|
||||
<font color="blue"><pre>
|
||||
<p>Here's some code that uses them:</p>
|
||||
|
||||
<font color="blue"><pre>
|
||||
FT_Raster_Params params;
|
||||
FT_Outline outline;
|
||||
|
||||
|
||||
... load vectorial glyph in "outline" ...
|
||||
|
||||
params.flags = ft_raster_flag_aa | ft_raster_flag_direct;
|
||||
params.gray_spans = (FT_Raster_Span_Func)your_own_span_function_here;
|
||||
params.user = your_own_data_pointer;
|
||||
|
||||
error = FT_Outline_Render( library, &outline, &params );</pre>
|
||||
</font>
|
||||
|
||||
FT_Raster_Params params;
|
||||
FT_Outline outline;
|
||||
|
||||
.. load vectorial glyph in "outline"
|
||||
|
||||
params.flags = ft_raster_flag_aa | ft_raster_flag_direct;
|
||||
params.gray_spans = (FT_Raster_Span_Func)your_own_span_function_here;
|
||||
params.user = your_own_data_pointer;
|
||||
|
||||
error = FT_Outline_Render( library, &outline, &params );
|
||||
</pre></font>
|
||||
|
||||
<p>Note that direct rendering is <em>not</em> available with monochrome
|
||||
output, as the current renderer uses a two-pass algorithm to generate
|
||||
glyphs with correct drop-out control.</p>
|
||||
<p>Note that direct rendering is <em>not</em> available with monochrome
|
||||
output, as the current renderer uses a two-pass algorithm to generate
|
||||
glyphs with correct drop-out control.</p>
|
||||
|
||||
<hr>
|
||||
<a name="other-color">
|
||||
<h3>
|
||||
IV.2 How can I set the color of text rendered by FreeType ?
|
||||
IV.2 How can I set the color of text rendered by FreeType?
|
||||
</h3>
|
||||
|
||||
|
||||
<p>Basically, you can't do that, because FreeType is simply a font
|
||||
library. In general, you'll need to use your favorite graphics library
|
||||
to draw the FreeType glyphs with the appropriate color.</p>
|
||||
library. In general, you will need to use your favorite graphics
|
||||
library to draw the FreeType glyphs with the appropriate color.</p>
|
||||
|
||||
<p>Note that for anti-aliased glyphs, you can "set the color" by using
|
||||
<em>direct rendering</em> as described in <a href="#other-depth">this
|
||||
answer</a></p>
|
||||
|
||||
answer</a>.</p>
|
||||
|
||||
<hr>
|
||||
<a name="other-size">
|
||||
<h3>
|
||||
IV.3 I set the pixel size to 8x8, but the resulting glyphs are larger
|
||||
(or smaller) than that. Why ??
|
||||
(or smaller) than that. Why?
|
||||
</h3>
|
||||
|
||||
<p>A lot of people have a hard time understanding this topic, because
|
||||
they think of glyphs as fixed-width/height "cells", like those of
|
||||
fonts used in terminals/consoles. This assumption is simply not valid
|
||||
with most "modern" font formats, even bitmapped-based ones like
|
||||
PCF or BDF.</p>
|
||||
<p>A lot of people have difficulties to understand this topic, because
|
||||
they think of glyphs as fixed-width resp. fixed-height "cells", like
|
||||
those of fonts used in terminals/consoles. This assumption is simply
|
||||
not valid with most "modern" font formats, even bitmapped-based ones
|
||||
like <tt>PCF</tt> or <tt>BDF</tt>.</p>
|
||||
|
||||
<p>Be aware that the <em>character size</em> that is set either through
|
||||
<tt>FT_Set_Char_Size</tt> or <tt>FT_Set_Pixel_Sizes</tt> isn't directly
|
||||
related to the dimension of the glyph bitmaps generated.</p>
|
||||
<tt>FT_Set_Char_Size()</tt> or <tt>FT_Set_Pixel_Sizes()</tt> isn't
|
||||
directly related to the dimension of the glyph bitmaps generated.</p>
|
||||
|
||||
<p>Rather, the character size is indeed the size of
|
||||
<em>an abstract square</em>, called the <em>EM</em>, used by typographers
|
||||
to design fonts. Scaling two distinct fonts to the same character size, be
|
||||
it expressed in points or pixels, will generally result in bitmaps with
|
||||
<em>distinct dimensions</em> !</p>
|
||||
<p>Rather, the character size is indeed the size of <em>an abstract
|
||||
square</em>, called the <em>EM</em>, used by typographers to design
|
||||
fonts. Scaling two distinct fonts to the same character size, be it
|
||||
expressed in points or pixels, will generally result in bitmaps with
|
||||
<em>distinct dimensions</em>!</p>
|
||||
|
||||
<p>Note that historically, the EM corresponded to the width of a capital
|
||||
"M" in Latin typefaces. However, later improvements in typography led to
|
||||
the designs that greatly detract from this rule. Today, it is not possible
|
||||
to connect the EM size to a specific font "feature" in a reliable way.</p>
|
||||
"M" in Latin typefaces. However, later improvements in typography led
|
||||
to designs that greatly detract from this rule. Today, it is not
|
||||
possible to connect the EM size to a specific font "feature" in a
|
||||
reliable way.</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<a name="other-bbox">
|
||||
<h3>
|
||||
IV.4 How can I compute the bounding box of a given string of text without
|
||||
loading its glyphs before ?
|
||||
IV.4 How can I compute the bounding box of a given string of text
|
||||
without loading its glyphs before?
|
||||
</h3>
|
||||
|
||||
<p>A lot of people want to be able to compute the size in pixels of a simple
|
||||
string of text with minimal overhead. For example, that can be useful to
|
||||
draw centered text within a button.</p>
|
||||
|
||||
|
||||
<p>A lot of people want to be able to compute the size in pixels of a
|
||||
simple string of text with minimal overhead. For example, that can be
|
||||
useful to draw centered text within a button. (to be continued...)</p>
|
||||
|
||||
<hr>
|
||||
<a name="other-antialias">
|
||||
<h3>
|
||||
IV.1 Which anti-aliasing algorithm is used by FreeType 2?</h3>
|
||||
IV.5 Which anti-aliasing algorithm is used by FreeType 2?</h3>
|
||||
|
||||
<p>The algorithm has been specifically designed for FreeType. It is
|
||||
based on ideas that were originally found in the implementation of the
|
||||
|
@ -699,7 +698,7 @@
|
|||
<hr>
|
||||
<a name="other-opentype">
|
||||
<h3>
|
||||
IV.2 When will FreeType 2 support OpenType?
|
||||
IV.6 When will FreeType 2 support OpenType?
|
||||
</h3>
|
||||
|
||||
<p>Well, the engine already reads OpenType/CFF files perfectly. What it
|
||||
|
@ -707,7 +706,7 @@
|
|||
|
||||
<p>FreeType 1 comes with a set of extensions that are used to load
|
||||
and manage OpenType Layout tables. It even has a demonstration program
|
||||
named "<tt>ftstrtto</tt>" to show its capabilities.</p>
|
||||
named <tt>ftstrtto</tt> to show its capabilities.</p>
|
||||
|
||||
<p>For FreeType 2, we have decided that the layout operations
|
||||
provided through these tables are better placed in a specific
|
||||
|
|
Loading…
Reference in New Issue