From: Jason Rumney Date: Sun, 20 Jan 2002 16:21:15 +0000 (+0000) Subject: (w32_native_per_char_metric): Don't trust the metrics X-Git-Tag: emacs-21.2~168 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=eb7dd3d5d4058446c21b523594bb5d3578ffc073;p=emacs.git (w32_native_per_char_metric): Don't trust the metrics that Windows returns. If a double check fails, try to guess how ExtTextOut is going to act. --- diff --git a/src/w32term.c b/src/w32term.c index 028c722b3b9..19c1d07853e 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -1238,7 +1238,18 @@ w32_native_per_char_metric (font, char2b, font_type, pcm) if (retval) { + /* Don't trust the ABC widths. For synthesized fonts they are + wrong, and so is the result of GetCharWidth()! */ + int real_width; + GetCharWidth (hdc, *char2b, *char2b, &real_width); + pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC; + + /* As far as I can tell, this is the best way to determine what + ExtTextOut will do with the broken font. */ + if (pcm->width != real_width) + pcm->width = (pcm->width + real_width) / 2; + pcm->lbearing = char_widths.abcA; pcm->rbearing = pcm->width - char_widths.abcC; pcm->ascent = FONT_BASE (font);