--- deliantra/Deliantra-Client/Client.xs 2006/04/11 19:31:17 1.18 +++ deliantra/Deliantra-Client/Client.xs 2006/04/11 22:49:13 1.19 @@ -25,17 +25,26 @@ } *CFClient__Layout; static void +substitute_func (FcPattern *pattern, gpointer data) +{ + //FcPatternAddBool (pattern, FC_HINTING, 1); + //FcPatternAddBool (pattern, FC_AUTOHINT, 1); +} + +static void layout_update (CFClient__Layout self) { + /* use a random scale factor to account for unknown descenders, 0.8 works + * reasonably well with bitstream vera + */ PangoFontDescription *font = pango_context_get_font_description (context); - pango_font_description_set_absolute_size (font, self->base_height * PANGO_SCALE); + pango_font_description_set_absolute_size (font, self->base_height * (PANGO_SCALE * 8 / 10)); } static void layout_get_pixel_size (CFClient__Layout self, int *w, int *h) { - PangoFontDescription *font = pango_context_get_font_description (context); - pango_font_description_set_absolute_size (font, self->base_height * PANGO_SCALE); + layout_update (self); pango_layout_get_pixel_size (self->pl, w, h); @@ -51,6 +60,7 @@ BOOT: { fontmap = pango_ft2_font_map_new (); + pango_ft2_font_map_set_default_substitute ((PangoFT2FontMap *)fontmap, substitute_func, 0, 0); context = pango_ft2_font_map_create_context ((PangoFT2FontMap *)fontmap); }