diff options
author | Dom Lachowicz <doml@src.gnome.org> | 2004-06-12 17:43:49 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2004-06-12 17:43:49 +0000 |
commit | b3b9ac445744a9d588f5a7f7842f24afd93dd866 (patch) | |
tree | 7cbd519ab51dfb7cf0e4ff6b94c53442f89675d7 | |
parent | 35c209ab0ee4a6ea49fbb9c3784cacee24aa5cab (diff) | |
download | librsvg-b3b9ac445744a9d588f5a7f7842f24afd93dd866.tar.gz |
some vector text foo. still eons from working properly
-rw-r--r-- | rsvg-text-vectors.c | 46 | ||||
-rw-r--r-- | rsvg-text.c | 15 |
2 files changed, 36 insertions, 25 deletions
diff --git a/rsvg-text-vectors.c b/rsvg-text-vectors.c index 90e90594..1d5f13fc 100644 --- a/rsvg-text-vectors.c +++ b/rsvg-text-vectors.c @@ -73,6 +73,11 @@ typedef void (* RsvgTextRenderFunc) (PangoFont *font, #define FT_LOAD_TARGET_MONO FT_LOAD_MONOCHROME #endif +/* TODO: stuff these into the RsvgHandle object, expose API for manipulating them */ +#define ANTIALIAS_TEXT 1 +#define HINT_TEXT 1 +#define AUTO_HINT_TEXT 1 + static RenderCtx * rsvg_render_ctx_new (void) { @@ -95,9 +100,13 @@ static void rsvg_text_ft2_subst_func (FcPattern *pattern, gpointer data) { - FcPatternAddBool (pattern, FC_HINTING, 0); - FcPatternAddBool (pattern, FC_ANTIALIAS, 1); - FcPatternAddBool (pattern, FC_AUTOHINT, 0); + RsvgHandle *ctx = (RsvgHandle *)data; + + (void)ctx; + + FcPatternAddBool (pattern, FC_HINTING, HINT_TEXT); + FcPatternAddBool (pattern, FC_ANTIALIAS, ANTIALIAS_TEXT); + FcPatternAddBool (pattern, FC_AUTOHINT, AUTO_HINT_TEXT); } static PangoContext * @@ -199,7 +208,16 @@ rsvg_text_layout_render_flags (RsvgTextLayout *layout) { gint flags; - flags = FT_LOAD_NO_BITMAP | FT_LOAD_FORCE_AUTOHINT; + if (ANTIALIAS_TEXT) + flags = FT_LOAD_NO_BITMAP; + else + flags = FT_LOAD_TARGET_MONO; + + if (!HINT_TEXT) + flags |= FT_LOAD_NO_HINTING; + + if (AUTO_HINT_TEXT) + flags |= FT_LOAD_FORCE_AUTOHINT; return flags; } @@ -218,8 +236,8 @@ static void print266 (FT_Vector *pnt, gchar *msg) { -#if 0 /* def RSVG_TEXT_DEBUG */ - g_print ("%s Point (%d,%d)\n", +#ifdef RSVG_TEXT_DEBUG + fprintf (stderr, "%s Point (%d,%d)\n", msg, (gint)pnt->x, (gint)pnt->y); #endif @@ -371,10 +389,10 @@ rsvg_text_layout_render_trafo (RsvgTextLayout *layout, } else { - trafo->xx = 1; - trafo->xy = 0; - trafo->yx = 0; - trafo->yy = 1; + trafo->xx = 1 * 65536.0; + trafo->xy = 0 * 65536.0; + trafo->yx = 0 * 65536.0; + trafo->yy = 1 * 65536.0; } } @@ -406,7 +424,7 @@ rsvg_text_layout_render_glyphs (RsvgTextLayout *layout, FT_Vector_Transform (&pos, &trafo); - render_func (font, gi->glyph, flags, NULL /* &trafo */, + render_func (font, gi->glyph, flags, &trafo, pos.x, pos.y, render_data); } @@ -496,8 +514,8 @@ rsvg_text_layout_render (RsvgTextLayout *layout, rsvg_text_layout_get_offsets (layout, &x, &y); - x *= -PANGO_SCALE; - y *= -PANGO_SCALE; + x *= PANGO_SCALE; + y *= PANGO_SCALE; iter = pango_layout_get_iter (layout->layout); @@ -542,7 +560,7 @@ rsvg_text_render_text (RsvgHandle *ctx, g_string_append_c(render->path, 'Z'); #ifdef RSVG_TEXT_DEBUG - fprintf(stdout, "%s\n", render->path->str); + fprintf(stderr, "%s\n", render->path->str); #endif rsvg_handle_path (ctx, render->path->str, id); diff --git a/rsvg-text.c b/rsvg-text.c index 53c0196b..7fa8d3d2 100644 --- a/rsvg-text.c +++ b/rsvg-text.c @@ -38,8 +38,6 @@ #include "rsvg-shapes.h" -#define NO_VECTOR_TEXT - char * rsvg_make_valid_utf8 (const char *str) { @@ -87,8 +85,6 @@ rsvg_text_handler_free (RsvgSaxHandler *self) g_free (self); } -#ifdef NO_VECTOR_TEXT - static void rsvg_text_render_text_bitmap (RsvgHandle *ctx, RsvgState *state, @@ -235,8 +231,6 @@ rsvg_text_render_text_bitmap (RsvgHandle *ctx, } -#endif - static void rsvg_text_handler_characters (RsvgSaxHandler *self, const xmlChar *ch, int len) { @@ -283,11 +277,10 @@ rsvg_text_handler_characters (RsvgSaxHandler *self, const xmlChar *ch, int len) string = tmp; } -#ifdef NO_VECTOR_TEXT - rsvg_text_render_text_bitmap (ctx, state, string, NULL); -#else - rsvg_text_render_text (ctx, state, string, NULL); -#endif + if(g_getenv("RSVG_TEXT_VECTORS")) + rsvg_text_render_text (ctx, state, string, NULL); + else + rsvg_text_render_text_bitmap (ctx, state, string, NULL); g_free (string); } |