X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2FSDL-TTF.html-inc;h=6fca4a97273aed82472339e7c36ebe9ac58ad81b;hb=c8ad4fe9f211e727310a1ce6d23ffb1d7822d71f;hp=394a88d282490c36f8bd4c47093132a7b921f386;hpb=b0e2356c9c3a2e11538ba77b8ff325f0f9e09b4b;p=sdlgit%2FSDL-Site.git diff --git a/pages/SDL-TTF.html-inc b/pages/SDL-TTF.html-inc index 394a88d..6fca4a9 100644 --- a/pages/SDL-TTF.html-inc +++ b/pages/SDL-TTF.html-inc @@ -4,6 +4,7 @@
TODO, TTF
+TTF
+ +The constants are exported by default. You can avoid this by doing:
+use SDL::TTF (); + + + + ++
and access them directly:
+SDL::TTF::TTF_HINTING_NORMAL; + ++
Available constants for "hinting":
+Available constants for "style":
+use SDL::TTF; use SDL::TTF::Font; - my $font = SDL::TTF::open_font('arial.ttf', '24); + my $font = SDL::TTF::open_font('arial.ttf', 24);@@ -340,6 +382,7 @@ using smaller sized fonts. If the user is selecting a font, you may wish to let
Get the current kerning setting of the loaded font.
Returns: 0
(zero) if kerning is disabled. A non-zero value is returned when enabled. The default for a newly loaded font is enabled(1
).
Note: at least SDL_ttf 2.0.10 needed
+Note: This function returns wrong values: See http://bugzilla.libsdl.org/show_bug.cgi?id=973
maxy
metric to resolve the top
of the rectangle used when blitting the glyph on the screen.
Example:
-my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, 'M') }; +my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") }; $rect->y( $top + SDL::TTF::font_ascent($font) - $maxy ); @@ -395,7 +438,7 @@ the font. It could be used when drawing an individual glyph relative to a bottom point, by combining it with the glyph'smaxy
metric to resolve the top of the rectangle used when blitting the glyph on the screen.Example:
-my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, 'M') }; +my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") }; $rect->y( $bottom - SDL::TTF::font_descent($font) - $maxy ); @@ -468,11 +511,29 @@ in the font is the same width, thus you can assume that a rendered string's widtglyph_is_provided
+my $glyph_is_provided = SDL::TTF::glyph_is_provided($font, $unicode_char); + ++Get the status of the availability of the glyph from the loaded font.
+Returns: the index of the glyph in font, or 0 for an undefined character code.
+Note: 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.
+Note: at least SDL_ttf 2.0.10 needed
+Example:
+print("We have this char!\n") if SDL::TTF::glyph_is_provided($font, "\0M"); + +glyph_metrics
-my @glyph_metrics = @{ SDL::TTF::glyph_metrics($font, 'M') }; +my @glyph_metrics = @{ SDL::TTF::glyph_metrics($font, $unicode_char) }; + ++Get desired glyph metrics of the UNICODE char from the loaded font.
+See also: The FreeType2 Documentation Tutorial
+Note: 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.
+Example:
+my ($minx, $maxx, $miny, $maxy, $advance) = @{ SDL::TTF::glyph_metrics($font, "\0M") };@@ -483,76 +544,248 @@ in the font is the same width, thus you can assume that a rendered string's widtsize_text
-my ($width, $height) = @{ SDL::TTF::size_text($font, 'Hallo World!') }; +my ($width, $height) = @{ SDL::TTF::size_text($font, $text) };+Calculate the resulting surface size of the LATIN1 encoded text rendered using
$font
. No actual rendering is done, however correct kerning +is done to get the actual width. The height returned is the same as you can get using SDL::TTF::font_height.size_utf8
-my ($width, $height) = @{ SDL::TTF::size_utf8($font, 'Hallo World!') }; +my ($width, $height) = @{ SDL::TTF::size_utf8($font, $text) }; + ++Calculate the resulting surface size of the UTF8 encoded text rendered using
+$font
. No actual rendering is done, however correct kerning is +done to get the actual width. The height returned in h is the same as you can get using SDL::TTF::font_height.Note that the first example uses the same text as in the LATIN1 example, that is because plain ASCII is UTF8 compatible.
+Examples:
+($width, $height) = @{ SDL::TTF::size_utf8($font, 'Hallo World!') }; # plain text, if your script is in utf8 or ansi-format + + # or + + ($width, $height) = @{ SDL::TTF::size_utf8($font, "\xE4\xBB\x8A\xE6\x97\xA5\xE3\x81\xAF") }; # utf8 hex-data + + # or + + use Unicode::String; + my $unicode = utf8($data_from_somwhere); + ($width, $height) = @{ SDL::TTF::size_utf8($font, $unicode->utf8) }; # utf8 via Unicode::Stringsize_unicode
-my ($width, $height) = @{ SDL::TTF::size_unicode($font, 'Hallo World!') }; - -+my ($width, $height) = @{ SDL::TTF::size_unicode($font, $text) }; + ++Calculate the resulting surface size of the UNICODE encoded text rendered using
+$font
. No actual rendering is done, however correct kerning +is done to get the actual width. The height returned in h is the same as you can get using SDL::TTF::font_height.+
$text
has to be:+
+- UTF16BE without BOM
+- +
+"hallo" will look like "\0h\0a\0l\0l\0o"
+- UTF16BE with BOM
+- +
+"hallo" will look like "\xFE\xFF\0h\0a\0l\0l\0o"
+- UTF16LE with BOM
+- +
+"hallo" will look like "\xFF\xFEh\0a\0l\0l\0o\0"
+You may use Unicode::String for this.
Font Rendering
-render_glyph_solid
+Solid
++ ++render_glyph_solid
+-my $surface = SDL::TTF::render_glyph_solid($font, $char, $color); + ++Render the unicode encoded char onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.
+Note: The unicode char has to be passed exactly like for SDL::TTF::size_unicode.
+Note: See space-character bug. You have to upgrade libfreetype2 to at least version 2.3.5
render_glyph_shaded
-+render_text_solid
++-my $surface = SDL::TTF::render_text_solid($font, $text, $color); + ++Render the LATIN1 encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.
+Note: See space-character bug. You have to upgrade libfreetype2 to at least +version 2.3.5
+Example:
+use SDL; + use SDL::Rect; + use SDL::Video; + use SDL::Color; + use SDL::TTF; + use SDL::TTF::Font; + + SDL::init(SDL_INIT_VIDEO); + SDL::TTF::init(); + my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE); + my $font = SDL::TTF::open_font('test/data/aircut3.ttf', '24'); + die 'Coudnt make font '. SDL::get_error if !$font; + my $surface = SDL::TTF::render_text_solid($font, 'Hallo!', SDL::Color->new(0xFF,0xFF,0xFF)); + SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480)); + SDL::Video::update_rect($display, 0, 0, 0, 0); + SDL::delay(5000); + +render_glyph_blended
-+render_utf8_solid
++-my $surface = SDL::TTF::render_utf8_solid($font, $text, $color); + ++Render the UTF8 encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.
+Note: See space-character bug. You have to upgrade libfreetype2 to at least +version 2.3.5
render_text_solid
--Note: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062
+render_unicode_solid
++-my $surface = SDL::TTF::render_unicode_solid($font, $text, $color); + ++Render the unicode encoded text onto a new surface, using the Solid mode. After that you can blit this surface to your display-surface.
+Note: The unicode test has to be passed exactly like for SDL::TTF::size_unicode.
+Note: See space-character bug. You have to upgrade libfreetype2 to at least +version 2.3.5
render_text_shaded
-+Shaded
+-render_text_blended
-+render_glyph_shaded
++-my $surface = SDL::TTF::render_glyph_shaded($font, $char, $color, $background_color); + ++Render the unicode encoded char onto a new surface. The surface is filled with
+$background_color
. After that you can blit this surface to +your display-surface.Note: The unicode char has to be passed exactly like for SDL::TTF::size_unicode.
render_utf8_solid
-+render_text_shaded
++-my $surface = SDL::TTF::render_text_shaded($font, $text, $color, $background_color); + ++Render the LATIN1 encoded text onto a new surface. The surface is filled with
+$background_color
. After that you can blit this surface to +your display-surface.Example:
+use SDL; + use SDL::Video; + use SDL::Color; + use SDL::TTF; + use SDL::TTF::Font; + + SDL::init(SDL_INIT_VIDEO); + + my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE); + my $font = SDL::TTF::open_font('arial.ttf', '24); + my $white = SDL::Color->new(0xFF, 0xFF, 0xFF); + my $black = SDL::Color->new(0x00, 0x00, 0x00); + my $surface = SDL::TTF::render_text_solid($font, 'Hallo!', $white, $black); + + SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480)); + SDL::Video::update_rect($display, 0, 0, 0, 0); + + SDL::delay(5000); + +render_utf8_shaded
+render_utf8_shaded
+-my $surface = SDL::TTF::render_utf8_shaded($font, $text, $color, $background_color); + ++Render the UTF8 encoded text onto a new surface. The surface is filled with
$background_color
. After that you can blit this surface to +your display-surface.render_utf8_blended
-+render_unicode_shaded
++-my $surface = SDL::TTF::render_unicode_shaded($font, $text, $color, $background_color); + ++Render the unicode encoded text onto a new surface. The surface is filled with
+$background_color
. After that you can blit this surface to +your display-surface.Note: The unicode text has to be passed exactly like for SDL::TTF::size_unicode.
render_unicode_solid
-+Blended
+-render_unicode_shaded
-+render_glyph_blended
+++my $surface = SDL::TTF::render_glyph_blended($font, $char, $color); + ++Render the unicode encoded char onto a new surface. After that you can blit this surface to your display-surface.
+Note: The unicode char has to be passed exactly like for SDL::TTF::size_unicode.
+ +render_text_blended
++-my $surface = SDL::TTF::render_text_blended($font, $text, $color); + ++Render the LATIN1 encoded text onto a new surface. After that you can blit this surface to your display-surface.
+Example:
+use SDL; + use SDL::Video; + use SDL::Color; + use SDL::TTF; + use SDL::TTF::Font; + + SDL::init(SDL_INIT_VIDEO); + + my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE); + my $font = SDL::TTF::open_font('arial.ttf', '24); + my $surface = SDL::TTF::render_text_blended($font, 'Hallo!', SDL::Color->new(0xFF,0xFF,0xFF)); + + SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(10, 10, 640, 480)); + SDL::Video::update_rect($display, 0, 0, 0, 0); + + SDL::delay(5000); + +render_unicode_blended
+render_utf8_blended
+++my $surface = SDL::TTF::render_utf8_blended($font, $text, $color); + ++Render the UTF8 encoded text onto a new surface. After that you can blit this surface to your display-surface.
+ +render_unicode_blended
+my $surface = SDL::TTF::render_unicode_blended($font, $text, $color); + ++Render the unicode encoded text onto a new surface. After that you can blit this surface to your display-surface.
+Note: The unicode char has to be passed exactly like for SDL::TTF::size_unicode.
AUTHOR