3 <h3 id="TOP">Index</h3>
5 <ul><li><a href="#NAME">NAME</a></li>
6 <li><a href="#CATEGORY">CATEGORY</a></li>
7 <li><a href="#CONSTANTS">CONSTANTS</a></li>
8 <li><a href="#METHODS">METHODS</a>
9 <ul><li><a href="#General_methods">General methods</a>
10 <ul><li><a href="#linked_version">linked_version</a></li>
11 <li><a href="#compile_time_version">compile_time_version</a></li>
12 <li><a href="#init">init</a></li>
13 <li><a href="#was_init">was_init</a></li>
14 <li><a href="#quit">quit</a></li>
17 <li><a href="#Management_functions">Management functions</a>
18 <ul><li><a href="#open_font">open_font</a></li>
19 <li><a href="#open_font_index">open_font_index</a></li>
20 <li><a href="#open_font_RW">open_font_RW</a></li>
21 <li><a href="#open_font_index_RW">open_font_index_RW</a></li>
24 <li><a href="#Attributes">Attributes</a>
25 <ul><li><a href="#Global_attributes">Global attributes</a>
26 <ul><li><a href="#byte_swapped_unicode">byte_swapped_unicode</a></li>
29 <li><a href="#Font_style">Font style</a>
30 <ul><li><a href="#get_font_style">get_font_style</a></li>
31 <li><a href="#set_font_style">set_font_style</a></li>
32 <li><a href="#get_font_outline">get_font_outline</a></li>
33 <li><a href="#set_font_outline">set_font_outline</a></li>
36 <li><a href="#Font_settings">Font settings</a>
37 <ul><li><a href="#get_font_hinting">get_font_hinting</a></li>
38 <li><a href="#set_font_hinting">set_font_hinting</a></li>
39 <li><a href="#get_font_kerning">get_font_kerning</a></li>
40 <li><a href="#set_font_kerning">set_font_kerning</a></li>
43 <li><a href="#Font_metrics">Font metrics</a>
44 <ul><li><a href="#font_height">font_height</a></li>
45 <li><a href="#font_ascent">font_ascent</a></li>
46 <li><a href="#font_descent">font_descent</a></li>
47 <li><a href="#font_line_skip">font_line_skip</a></li>
50 <li><a href="#Face_attributes">Face attributes</a>
51 <ul><li><a href="#font_faces">font_faces</a></li>
52 <li><a href="#font_face_is_fixed_width">font_face_is_fixed_width</a></li>
53 <li><a href="#font_face_family_name">font_face_family_name</a></li>
54 <li><a href="#font_face_style_name">font_face_style_name</a></li>
57 <li><a href="#Glyphs">Glyphs</a>
58 <ul><li><a href="#glyph_is_provided">glyph_is_provided</a></li>
59 <li><a href="#glyph_metrics">glyph_metrics</a></li>
62 <li><a href="#Text_metrics">Text metrics</a>
63 <ul><li><a href="#size_text">size_text</a></li>
64 <li><a href="#size_utf8">size_utf8</a></li>
65 <li><a href="#size_unicode">size_unicode</a></li>
70 <li><a href="#Font_Rendering">Font Rendering</a>
71 <ul><li><a href="#Solid">Solid</a>
72 <ul><li><a href="#render_glyph_solid">render_glyph_solid</a></li>
73 <li><a href="#render_text_solid">render_text_solid</a></li>
74 <li><a href="#render_utf8_solid">render_utf8_solid</a></li>
75 <li><a href="#render_unicode_solid">render_unicode_solid</a></li>
78 <li><a href="#Shaded">Shaded</a>
79 <ul><li><a href="#render_glyph_shaded">render_glyph_shaded</a></li>
80 <li><a href="#render_text_shaded">render_text_shaded</a></li>
81 <li><a href="#render_utf8_shaded">render_utf8_shaded</a></li>
82 <li><a href="#render_unicode_shaded">render_unicode_shaded</a></li>
85 <li><a href="#Blended">Blended</a>
86 <ul><li><a href="#render_glyph_blended">render_glyph_blended</a></li>
87 <li><a href="#render_text_blended">render_text_blended</a></li>
88 <li><a href="#render_utf8_blended">render_utf8_blended</a></li>
89 <li><a href="#render_unicode_blended">render_unicode_blended</a></li>
96 <li><a href="#AUTHOR">AUTHOR</a></li>
97 <li><a href="#SEE_ALSO">SEE ALSO</a>
102 <h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
103 <div id="NAME_CONTENT">
104 <p>SDL::TTF - True Type Font functions (libfreetype)</p>
107 <h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
108 <div id="CATEGORY_CONTENT">
112 <h1 id="CONSTANTS">CONSTANTS</h1><p><a href="#TOP" class="toplink">Top</a></p>
113 <div id="CONSTANTS_CONTENT">
114 <p>The constants are not exported by default. You can export them into your namespace by doing:</p>
115 <pre> use SDL::TTF qw(:hinting :style);
119 <pre> use SDL::TTF ':all';
122 <p>or access them directly:</p>
123 <pre> SDL::TTF::TTF_HINTING_NORMAL;
126 <p>Available constants for "hinting":</p>
128 <li>TTF_HINTING_NORMAL </li>
129 <li>TTF_HINTING_LIGHT </li>
130 <li>TTF_HINTING_MONO </li>
131 <li>TTF_HINTING_NONE</li>
134 <p>Available constants for "style":</p>
136 <li>TTF_STYLE_NORMAL </li>
137 <li>TTF_STYLE_BOLD </li>
138 <li>TTF_STYLE_ITALIC </li>
139 <li>TTF_STYLE_UNDERLINE </li>
140 <li>TTF_STYLE_STRIKETHROUGH</li>
145 <h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
146 <div id="METHODS_CONTENT">
149 <h2 id="General_methods">General methods</h2>
150 <div id="General_methods_CONTENT">
153 <h3 id="linked_version">linked_version</h3>
154 <div id="linked_version_CONTENT">
155 <pre> my $version = SDL::TTF::linked_version();
158 <p>This gives you the SDL::Version object which SDL_ttf lib is used on the system.
159 No prior initialization needs to be done before these function is called. </p>
164 my $version = SDL::TTF::linked_version();
166 printf("got version: %d.%d.%d\n", $version->major, $version->minor, $version->patch);
171 <h3 id="compile_time_version">compile_time_version</h3>
172 <div id="compile_time_version_CONTENT">
173 <pre> my $version = SDL::TTF::compile_time_version();
176 <p>This gives you the SDL::Version object which SDL_ttf was present at compile time.</p>
179 <h3 id="init">init</h3>
180 <div id="init_CONTENT">
181 <pre> my $success = SDL::TTF::init();
184 <p>Initialize the truetype font API.
185 This must be called before using other functions in this library, except <a href="/SDL-TTF.html#was_init">SDL::TTF::was_init</a> and <a href="/SDL-TTF.html#linked_version">SDL::TTF::linked_version</a>.
186 SDL does not have to be initialized before this call.</p>
187 <p>Returns: <code>0</code> on success, <code>-1</code> on any error.</p>
190 <h3 id="was_init">was_init</h3>
191 <div id="was_init_CONTENT">
192 <pre> my $was_init = SDL::TTF::was_init();
195 <p>Query the initilization status of the truetype font API.
196 You may, of course, use this before <a href="/SDL-TTF.html#init">SDL::TTF::init</a> to avoid initializing twice in a row. Or use this to determine if you need to call
197 <a href="/SDL-TTF.html#quit">SDL::TTF::quit</a>.</p>
200 <h3 id="quit">quit</h3>
201 <div id="quit_CONTENT">
202 <pre> SDL::TTF::quit();
205 <p>Shutdown and cleanup the truetype font API.
206 After calling this the SDL::TTF functions should not be used, excepting <a href="/SDL-TTF.html#was_init">SDL::TTF::was_init</a>. You may, of course, use <a href="/SDL-TTF.html#init">SDL::TTF::init</a> to
207 use the functionality again</p>
210 <h2 id="Management_functions">Management functions</h2>
211 <div id="Management_functions_CONTENT">
214 <h3 id="open_font">open_font</h3>
215 <div id="open_font_CONTENT">
216 <pre> my $font = SDL::TTF::open_font($font_file, $point_size);
219 <p>Load file for use as a font, at the given size. This is actually <code>SDL::TTF::open_font_index(..., ..., $index = 0)</code>. This can load TTF and FON files.</p>
220 <p>Returns: a <a href="SDL-TTF-Font.html">SDL::TTF::Font</a> object. <code>undef</code> is returned on errors.</p>
225 my $font = SDL::TTF::open_font('arial.ttf', 24);
230 <h3 id="open_font_index">open_font_index</h3>
231 <div id="open_font_index_CONTENT">
232 <pre> my $font = SDL::TTF::open_font($font_file, $point_size, $face_index);
235 <p>This is the same as <a href="/SDL-TTF.html#open_font">SDL::TTF::open_font</a>, except you can specify the face index of a font file containing multiple faces.
236 This can load TTF and FON files. </p>
239 <h3 id="open_font_RW">open_font_RW</h3>
240 <div id="open_font_RW_CONTENT">
241 <pre> my $font = SDL::TTF::open_font_RW($rwops_object, $free, $point_size);
244 <p>This is the same as <a href="/SDL-TTF.html#open_font">SDL::TTF::open_font</a>, except you can pass an <a href="SDL-RWOps.html">SDL::RWOps</a>-object. If you pass true as <code>$free</code>, the <a href="SDL-RWOps.html">SDL::RWOps</a>-object
245 will be freed by SDL_ttf library. Don't do this, perl will free this object for you.</p>
247 <pre> my $font = SDL::TTF::open_font_RW(SDL::RWOps->new_file($font_file, 'r'), 0, 24);
252 <h3 id="open_font_index_RW">open_font_index_RW</h3>
253 <div id="open_font_index_RW_CONTENT">
254 <pre> my $font = SDL::TTF::open_font_index_RW($rwops_object, $free, $point_size, $face_index);
257 <p>This is the same as <a href="/SDL-TTF.html#open_font_index">SDL::TTF::open_font_index</a>, except you can pass an <a href="SDL-RWOps.html">SDL::RWOps</a>-object. If you pass true as <code>$free</code>, the
258 <a href="SDL-RWOps.html">SDL::RWOps</a>-object will be freed by SDL_ttf library. Don't do this, perl will free this object for you.</p>
261 <h2 id="Attributes">Attributes</h2>
262 <div id="Attributes_CONTENT">
265 <h3 id="Global_attributes">Global attributes</h3>
266 <div id="Global_attributes_CONTENT">
269 <h4 id="byte_swapped_unicode">byte_swapped_unicode</h4>
270 <div id="byte_swapped_unicode_CONTENT">
271 <pre> SDL::TTF::byte_swapped_unicode( $bool );
274 <p>This function tells SDL_ttf whether UNICODE (2 bytes per character) text is generally byteswapped. A <code>UNICODE_BOM_NATIVE</code> or
275 <code>UNICODE_BOM_SWAPPED</code> character in a string will temporarily override this setting for the remainder of that string, however this setting
276 will be restored for the next one. The default mode is non-swapped, native endianness of the CPU.</p>
279 <h3 id="Font_style">Font style</h3>
280 <div id="Font_style_CONTENT">
283 <h4 id="get_font_style">get_font_style</h4>
284 <div id="get_font_style_CONTENT">
285 <pre> SDL::TTF::get_font_style($font);
288 <p>Returns: The style as a bitmask composed of the following masks:</p>
290 <li>TTF_STYLE_NORMAL </li>
291 <li>TTF_STYLE_BOLD </li>
292 <li>TTF_STYLE_ITALIC </li>
293 <li>TTF_STYLE_UNDERLINE </li>
294 <li>TTF_STYLE_STRIKETHROUGH (since SDL_ttf 2.0.10)</li>
298 <pre> my $style = SDL::TTF::get_font_style($font);
300 print("normal\n") if $style == TTF_STYLE_NORMAL;
301 print("bold\n") if $style & TTF_STYLE_BOLD;
302 print("italic\n") if $style & TTF_STYLE_ITALIC;
303 print("underline\n") if $style & TTF_STYLE_UNDERLINE;
304 print("strikethrough\n") if $style & TTF_STYLE_STRIKETHROUGH;
309 <h4 id="set_font_style">set_font_style</h4>
310 <div id="set_font_style_CONTENT">
311 <pre> SDL::TTF::set_font_style($font, $style);
314 <p>Set the rendering style of the loaded font.</p>
315 <p><strong>Note</strong>: <code>TTF_STYLE_UNDERLINE</code> may cause surfaces created by <code>SDL::TTF::render_glyph_*</code> functions to be extended vertically, downward only,
316 to encompass the underline if the original glyph metrics didn't allow for the underline to be drawn below. This does not change the math used
317 to place a glyph using glyph metrics.
318 On the other hand <code>TTF_STYLE_STRIKETHROUGH</code> doesn't extend the glyph, since this would invalidate the metrics used to position the glyph when
319 blitting, because they would likely be extended vertically upward. There is perhaps a workaround, but it would require programs to be smarter
320 about glyph blitting math than they are currently designed for.
321 Still, sometimes the underline or strikethrough may be outside of the generated surface, and thus not visible when blitted to the screen. In
322 this case, you should probably turn off these styles and draw your own strikethroughs and underlines. </p>
325 <h4 id="get_font_outline">get_font_outline</h4>
326 <div id="get_font_outline_CONTENT">
327 <pre> my $outline = SDL::TTF::get_font_outline($font);
330 <p>Get the current outline width of the font, in pixels.</p>
331 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
334 <h4 id="set_font_outline">set_font_outline</h4>
335 <div id="set_font_outline_CONTENT">
336 <pre> SDL::TTF::get_font_outline($font, $outline);
339 <p>Set the outline pixel width of the loaded font. Use <code>0</code>(zero) to turn off outlining.</p>
340 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
343 <h3 id="Font_settings">Font settings</h3>
344 <div id="Font_settings_CONTENT">
347 <h4 id="get_font_hinting">get_font_hinting</h4>
348 <div id="get_font_hinting_CONTENT">
349 <pre> my $hinting = SDL::TTF::get_font_hinting($font);
352 <p>Get the current hinting setting of the loaded font.</p>
353 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
354 <p>Returns the hinting type matching one of the following defined values:</p>
356 <li>TTF_HINTING_NORMAL </li>
357 <li>TTF_HINTING_LIGHT </li>
358 <li>TTF_HINTING_MONO </li>
359 <li>TTF_HINTING_NONE</li>
364 <h4 id="set_font_hinting">set_font_hinting</h4>
365 <div id="set_font_hinting_CONTENT">
366 <pre> SDL::TTF::set_font_hinting($font, $hinting);
369 <p>Set the hinting of the loaded font. You should experiment with this setting if you know which font you are using beforehand, especially when
370 using smaller sized fonts. If the user is selecting a font, you may wish to let them select the hinting mode for that font as well.</p>
371 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
373 <pre> SDL::TTF::set_font_hinting($font, TTF_HINTING_LIGHT);
378 <h4 id="get_font_kerning">get_font_kerning</h4>
379 <div id="get_font_kerning_CONTENT">
380 <pre> my $kerning_enabled = SDL::TTF::get_font_kerning($font);
383 <p>Get the current kerning setting of the loaded font.</p>
384 <p>Returns: <code>0</code>(zero) if kerning is disabled. A non-zero value is returned when enabled. The default for a newly loaded font is enabled(<code>1</code>). </p>
385 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
386 <p><strong>Note</strong>: This function returns wrong values: See <a href="http://bugzilla.libsdl.org/show_bug.cgi?id=973">http://bugzilla.libsdl.org/show_bug.cgi?id=973</a></p>
389 <h4 id="set_font_kerning">set_font_kerning</h4>
390 <div id="set_font_kerning_CONTENT">
391 <pre> SDL::TTF::set_font_kerning($font, $kerning_enabled);
394 <p>Set whether to use kerning when rendering the loaded font. This has no effect on individual glyphs, but rather when rendering whole strings of
395 characters, at least a word at a time. Perhaps the only time to disable this is when kerning is not working for a specific font, resulting in
396 overlapping glyphs or abnormal spacing within words.</p>
397 <p>Pass <code>0</code> to disable kerning, 1 to enable.</p>
398 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
401 <h3 id="Font_metrics">Font metrics</h3>
402 <div id="Font_metrics_CONTENT">
405 <h4 id="font_height">font_height</h4>
406 <div id="font_height_CONTENT">
407 <pre> my $font_height = SDL::TTF::font_height($font);
410 <p>Get the maximum pixel height of all glyphs of the loaded font. You may use this height for rendering text as close together vertically as
411 possible, though adding at least one pixel height to it will space it so they can't touch. Remember that SDL_ttf doesn't handle multiline
412 printing, so you are responsible for line spacing, see the <a href="/SDL-TTF.html#font_line_skip">SDL::TTF::font_line_skip</a> as well.</p>
415 <h4 id="font_ascent">font_ascent</h4>
416 <div id="font_ascent_CONTENT">
417 <pre> my $font_ascent = SDL::TTF::font_ascent($font);
420 <p>Get the maximum pixel ascent of all glyphs of the loaded font. This can also be interpreted as the distance from the top of the font to the
422 It could be used when drawing an individual glyph relative to a top point, by combining it with the glyph's <code>maxy</code> metric to resolve the top
423 of the rectangle used when blitting the glyph on the screen.</p>
425 <pre> my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") };
427 $rect->y( $top + SDL::TTF::font_ascent($font) - $maxy );
432 <h4 id="font_descent">font_descent</h4>
433 <div id="font_descent_CONTENT">
434 <pre> my $font_descent = SDL::TTF::font_descent($font);
437 <p>Get the maximum pixel descent of all glyphs of the loaded font. This can also be interpreted as the distance from the baseline to the bottom of
439 It could be used when drawing an individual glyph relative to a bottom point, by combining it with the glyph's <code>maxy</code> metric to resolve the top
440 of the rectangle used when blitting the glyph on the screen.</p>
442 <pre> my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") };
444 $rect->y( $bottom - SDL::TTF::font_descent($font) - $maxy );
449 <h4 id="font_line_skip">font_line_skip</h4>
450 <div id="font_line_skip_CONTENT">
451 <pre> my $font_line_skip = SDL::TTF::font_line_skip($font);
454 <p>Get the recommended pixel height of a rendered line of text of the loaded font. This is usually larger than the <a href="/SDL-TTF.html#font_height">SDL::TTF::font_height</a> of the
458 <h3 id="Face_attributes">Face attributes</h3>
459 <div id="Face_attributes_CONTENT">
462 <h4 id="font_faces">font_faces</h4>
463 <div id="font_faces_CONTENT">
464 <pre> my $font_faces = SDL::TTF::font_faces($font);
467 <p>Get the number of faces ("sub-fonts") available in the loaded font. This is a count of the number of specific fonts (based on size and style
468 and other typographical features perhaps) contained in the font itself.</p>
471 <h4 id="font_face_is_fixed_width">font_face_is_fixed_width</h4>
472 <div id="font_face_is_fixed_width_CONTENT">
473 <pre> my $font_face_is_fixed_width = SDL::TTF::font_face_is_fixed_width($font);
476 <p>Test if the current font face of the loaded font is a fixed width font. Fixed width fonts are monospace, meaning every character that exists
477 in the font is the same width, thus you can assume that a rendered string's width is going to be the result of <code>glyph_width * string_length</code>.</p>
478 <p>Returns: <code>>0</code> if font is a fixed width font. <code>0</code> if not a fixed width font. </p>
481 <h4 id="font_face_family_name">font_face_family_name</h4>
482 <div id="font_face_family_name_CONTENT">
483 <pre> my $font_face_family_name = SDL::TTF::font_face_family_name($font);
486 <p>Get the current font face family name from the loaded font. This information is not for every font available.</p>
488 <pre> my $font = SDL::TTF::open_font('arialuni.ttf', 8);
490 printf("%s\n", SDL::TTF::font_face_family_name($font)); # will print "Arial Unicode MS"
495 <h4 id="font_face_style_name">font_face_style_name</h4>
496 <div id="font_face_style_name_CONTENT">
497 <pre> my $font_face_style_name = SDL::TTF::font_face_style_name($font);
500 <p>Get the current font face style name from the loaded font. This information is not for every font available. </p>
502 <pre> my $font = SDL::TTF::open_font('arialuni.ttf', 8);
504 printf("%s\n", SDL::TTF::font_face_style_name($font)); # will print "Regular"
509 <h3 id="Glyphs">Glyphs</h3>
510 <div id="Glyphs_CONTENT">
513 <h4 id="glyph_is_provided">glyph_is_provided</h4>
514 <div id="glyph_is_provided_CONTENT">
515 <pre> my $glyph_is_provided = SDL::TTF::glyph_is_provided($font, $unicode_char);
518 <p>Get the status of the availability of the glyph from the loaded font.</p>
519 <p>Returns: the index of the glyph in font, or 0 for an undefined character code.</p>
520 <p><strong>Note</strong>: You have to pass this unicode character either as UTF16/UCS-2 big endian without BOM, or with BOM as UTF16/UCS-2 big/little endian.</p>
521 <p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
523 <pre> print("We have this char!\n") if SDL::TTF::glyph_is_provided($font, "\0M");
528 <h4 id="glyph_metrics">glyph_metrics</h4>
529 <div id="glyph_metrics_CONTENT">
530 <pre> my @glyph_metrics = @{ SDL::TTF::glyph_metrics($font, $unicode_char) };
533 <p>Get desired glyph metrics of the UNICODE char from the loaded font.</p>
534 <p>See also: <a href="http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html">The FreeType2 Documentation Tutorial</a></p>
535 <p><strong>Note</strong>: You have to pass this unicode character either as UTF16/UCS-2 big endian without BOM, or with BOM as UTF16/UCS-2 big/little endian.</p>
537 <pre> my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") };
542 <h3 id="Text_metrics">Text metrics</h3>
543 <div id="Text_metrics_CONTENT">
546 <h4 id="size_text">size_text</h4>
547 <div id="size_text_CONTENT">
548 <pre> my ($width, $height) = @{ SDL::TTF::size_text($font, $text) };
551 <p>Calculate the resulting surface size of the LATIN1 encoded text rendered using <code>$font</code>. No actual rendering is done, however correct kerning
552 is done to get the actual width. The height returned is the same as you can get using <a href="/SDL-TTF.html#font_height">SDL::TTF::font_height</a>.</p>
555 <h4 id="size_utf8">size_utf8</h4>
556 <div id="size_utf8_CONTENT">
557 <pre> my ($width, $height) = @{ SDL::TTF::size_utf8($font, $text) };
560 <p>Calculate the resulting surface size of the UTF8 encoded text rendered using <code>$font</code>. No actual rendering is done, however correct kerning is
561 done to get the actual width. The height returned in h is the same as you can get using <a href="/SDL-TTF.html#font_height">SDL::TTF::font_height</a>.</p>
562 <p>Note that the first example uses the same text as in the LATIN1 example, that is because plain ASCII is UTF8 compatible.</p>
564 <pre> ($width, $height) = @{ SDL::TTF::size_utf8($font, 'Hallo World!') }; # plain text, if your script is in utf8 or ansi-format
568 ($width, $height) = @{ SDL::TTF::size_utf8($font, "\xE4\xBB\x8A\xE6\x97\xA5\xE3\x81\xAF") }; # utf8 hex-data
573 my $unicode = utf8($data_from_somwhere);
574 ($width, $height) = @{ SDL::TTF::size_utf8($font, $unicode->utf8) }; # utf8 via Unicode::String
579 <h4 id="size_unicode">size_unicode</h4>
580 <div id="size_unicode_CONTENT">
581 <pre> my ($width, $height) = @{ SDL::TTF::size_unicode($font, $text) };
584 <p>Calculate the resulting surface size of the UNICODE encoded text rendered using <code>$font</code>. No actual rendering is done, however correct kerning
585 is done to get the actual width. The height returned in h is the same as you can get using <a href="/SDL-TTF.html#font_height">SDL::TTF::font_height</a>.</p>
586 <p><code>$text</code> has to be:</p>
588 <dt>UTF16BE without BOM</dt>
590 <p>"hallo" will look like "\0h\0a\0l\0l\0o"</p>
592 <dt>UTF16BE with BOM</dt>
594 <p>"hallo" will look like "\xFE\xFF\0h\0a\0l\0l\0o"</p>
596 <dt>UTF16LE with BOM</dt>
598 <p>"hallo" will look like "\xFF\xFEh\0a\0l\0l\0o\0"</p>
601 <p>You may use Unicode::String for this.</p>
604 <h2 id="Font_Rendering">Font Rendering</h2>
605 <div id="Font_Rendering_CONTENT">
608 <h3 id="Solid">Solid</h3>
609 <div id="Solid_CONTENT">
612 <h4 id="render_glyph_solid">render_glyph_solid</h4>
613 <div id="render_glyph_solid_CONTENT">
614 <pre> my $surface = SDL::TTF::render_glyph_solid($font, $char, $color);
617 <p>Render the unicode encoded char onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.</p>
618 <p><strong>Note</strong>: The unicode char has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
619 <p><strong>Note</strong>: <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062">See space-character bug</a>. You have to upgrade libfreetype2 to at least version 2.3.5</p>
622 <h4 id="render_text_solid">render_text_solid</h4>
623 <div id="render_text_solid_CONTENT">
624 <pre> my $surface = SDL::TTF::render_text_solid($font, $text, $color);
627 <p>Render the LATIN1 encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.</p>
628 <p><strong>Note</strong>: <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062">See space-character bug</a>. You have to upgrade libfreetype2 to at least
638 SDL::init(SDL_INIT_VIDEO);
640 my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE);
641 my $font = SDL::TTF::open_font('test/data/aircut3.ttf', '24');
642 die 'Coudnt make font '. SDL::get_error if !$font;
643 my $surface = SDL::TTF::render_text_solid($font, 'Hallo!', SDL::Color->new(0xFF,0xFF,0xFF));
644 SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480));
645 SDL::Video::update_rect($display, 0, 0, 0, 0);
651 <h4 id="render_utf8_solid">render_utf8_solid</h4>
652 <div id="render_utf8_solid_CONTENT">
653 <pre> my $surface = SDL::TTF::render_utf8_solid($font, $text, $color);
656 <p>Render the UTF8 encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.</p>
657 <p><strong>Note</strong>: <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062">See space-character bug</a>. You have to upgrade libfreetype2 to at least
661 <h4 id="render_unicode_solid">render_unicode_solid</h4>
662 <div id="render_unicode_solid_CONTENT">
663 <pre> my $surface = SDL::TTF::render_unicode_solid($font, $text, $color);
666 <p>Render the unicode encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.</p>
667 <p><strong>Note</strong>: The unicode test has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
668 <p><strong>Note</strong>: <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062">See space-character bug</a>. You have to upgrade libfreetype2 to at least
672 <h3 id="Shaded">Shaded</h3>
673 <div id="Shaded_CONTENT">
676 <h4 id="render_glyph_shaded">render_glyph_shaded</h4>
677 <div id="render_glyph_shaded_CONTENT">
678 <pre> my $surface = SDL::TTF::render_glyph_shaded($font, $char, $color, $background_color);
681 <p>Render the unicode encoded char onto a new surface. The surface is filled with <code>$background_color</code>. After that you can blit this surface to
682 your display-surface.</p>
683 <p><strong>Note</strong>: The unicode char has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
686 <h4 id="render_text_shaded">render_text_shaded</h4>
687 <div id="render_text_shaded_CONTENT">
688 <pre> my $surface = SDL::TTF::render_text_shaded($font, $text, $color, $background_color);
691 <p>Render the LATIN1 encoded text onto a new surface. The surface is filled with <code>$background_color</code>. After that you can blit this surface to
692 your display-surface.</p>
700 SDL::init(SDL_INIT_VIDEO);
702 my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE);
703 my $font = SDL::TTF::open_font('arial.ttf', '24);
704 my $white = SDL::Color->new(0xFF, 0xFF, 0xFF);
705 my $black = SDL::Color->new(0x00, 0x00, 0x00);
706 my $surface = SDL::TTF::render_text_solid($font, 'Hallo!', $white, $black);
708 SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480));
709 SDL::Video::update_rect($display, 0, 0, 0, 0);
716 <h4 id="render_utf8_shaded">render_utf8_shaded</h4>
717 <div id="render_utf8_shaded_CONTENT">
718 <pre> my $surface = SDL::TTF::render_utf8_shaded($font, $text, $color, $background_color);
721 <p>Render the UTF8 encoded text onto a new surface. The surface is filled with <code>$background_color</code>. After that you can blit this surface to
722 your display-surface.</p>
725 <h4 id="render_unicode_shaded">render_unicode_shaded</h4>
726 <div id="render_unicode_shaded_CONTENT">
727 <pre> my $surface = SDL::TTF::render_unicode_shaded($font, $text, $color, $background_color);
730 <p>Render the unicode encoded text onto a new surface. The surface is filled with <code>$background_color</code>. After that you can blit this surface to
731 your display-surface.</p>
732 <p><strong>Note</strong>: The unicode text has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
735 <h3 id="Blended">Blended</h3>
736 <div id="Blended_CONTENT">
739 <h4 id="render_glyph_blended">render_glyph_blended</h4>
740 <div id="render_glyph_blended_CONTENT">
741 <pre> my $surface = SDL::TTF::render_glyph_blended($font, $char, $color);
744 <p>Render the unicode encoded char onto a new surface. After that you can blit this surface to your display-surface.</p>
745 <p><strong>Note</strong>: The unicode char has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
748 <h4 id="render_text_blended">render_text_blended</h4>
749 <div id="render_text_blended_CONTENT">
750 <pre> my $surface = SDL::TTF::render_text_blended($font, $text, $color);
753 <p>Render the LATIN1 encoded text onto a new surface. After that you can blit this surface to your display-surface.</p>
761 SDL::init(SDL_INIT_VIDEO);
763 my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE);
764 my $font = SDL::TTF::open_font('arial.ttf', '24);
765 my $surface = SDL::TTF::render_text_blended($font, 'Hallo!', SDL::Color->new(0xFF,0xFF,0xFF));
767 SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480));
768 SDL::Video::update_rect($display, 0, 0, 0, 0);
775 <h4 id="render_utf8_blended">render_utf8_blended</h4>
776 <div id="render_utf8_blended_CONTENT">
777 <pre> my $surface = SDL::TTF::render_utf8_blended($font, $text, $color);
780 <p>Render the UTF8 encoded text onto a new surface. After that you can blit this surface to your display-surface.</p>
783 <h4 id="render_unicode_blended">render_unicode_blended</h4>
784 <div id="render_unicode_blended_CONTENT">
785 <pre> my $surface = SDL::TTF::render_unicode_blended($font, $text, $color);
788 <p>Render the unicode encoded text onto a new surface. After that you can blit this surface to your display-surface.</p>
789 <p><strong>Note</strong>: The unicode char has to be passed exactly like for <a href="/SDL-TTF.html#size_unicode">SDL::TTF::size_unicode</a>.</p>
792 <h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
793 <div id="AUTHOR_CONTENT">
794 <p>Tobias Leich [FROGGS]</p>
797 <h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
798 <div id="SEE_ALSO_CONTENT">
799 <p><a href="SDL-TTF-Font.html">SDL::TTF::Font</a>, <a href="http://search.cpan.org/perldoc?Unicode::String">Unicode::String</a>, <a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-Surface.html">SDL::Surface</a></p>