freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ft-devel] FT_Glyphslot_Embolden is broken at sometimes.


From: sunmoon1997
Subject: [ft-devel] FT_Glyphslot_Embolden is broken at sometimes.
Date: Tue, 25 Oct 2005 18:22:31 +0800
User-agent: Mozilla Thunderbird 1.0.2 (X11/20050425)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

hi,
    FT_Glyphslot_Embolden works at most of time, but sometimes it
doesn't(see attachment). To run the testcase, you need simsun.ttc
from windows.  Any comments?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDXgdmuOtwLijeKbwRApnoAKDHOiL0DrSt9ZVPXQuDqMiuVQHxEACeNzjs
v1OdFsqZVicCcYzzCZqabSk=
=Updo
-----END PGP SIGNATURE-----

#include <cairo.h>

#define WIDTH 350
#define HEIGHT 100
#define TEXT "惊"

int main() {
        cairo_surface_t * sr;
        cairo_t * cr;
        cairo_text_extents_t extents;
        double y = 0;
        
        sr = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,  WIDTH, HEIGHT);
        cr = cairo_create (sr);

        cairo_select_font_face (cr, "simsun",
                                CAIRO_FONT_SLANT_NORMAL,
                                CAIRO_FONT_WEIGHT_NORMAL);
        cairo_set_font_size (cr, 48.0);
        
        cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
        cairo_paint(cr);

        cairo_set_source_rgb (cr, 0, 0, 1.0);   
        cairo_text_extents (cr, TEXT, &extents);
        cairo_move_to (cr, -extents.x_bearing, y - extents.y_bearing);
        cairo_show_text (cr, TEXT);

        /* require bold style */
        cairo_select_font_face (cr, "simsun",
                                CAIRO_FONT_SLANT_NORMAL,
                                CAIRO_FONT_WEIGHT_BOLD);

        /* cairo will call FT_GlyphSlot_Embolden */
        y += extents.height + 2.0;
        cairo_text_extents (cr, TEXT, &extents);
        cairo_move_to (cr, -extents.x_bearing, y - extents.y_bearing);
        cairo_show_text (cr, TEXT);

        cairo_set_line_width (cr, 0.5);
        cairo_set_source_rgb (cr, 0, 0, 0);
        cairo_set_font_size (cr, 48.0);
        
        /* outline */
        cairo_move_to (cr, 80, 80);
        cairo_text_path (cr, TEXT);
        cairo_stroke (cr);

        /* regular style */
        cairo_select_font_face (cr, "simsun",
                                CAIRO_FONT_SLANT_NORMAL,
                                CAIRO_FONT_WEIGHT_NORMAL);
        cairo_move_to (cr, 140, 80);
        cairo_text_path (cr, TEXT);
        cairo_stroke (cr);

        cairo_move_to (cr, 200, 80);
        cairo_text_path (cr, TEXT);
        cairo_fill (cr);

        cairo_surface_write_to_png (sr, "ft-glyphslot-embolden-broken.png");

        cairo_destroy (cr);
        cairo_surface_destroy (sr);

        return 0;
}

PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]