Subject: bug#6364: [PATCH] Use GetCharABCWidthsFloatW if GetGlyphOutlineW fails.

From: Eli Zaretskii <[email-masked]>
Date: Tue, 26 Nov 2013 19:52:45 +0200

> From: Tom Seddon <[email-masked]>
> Date: Tue, 26 Nov 2013 00:35:05 +0000
> 
> Please find below a patch to improve the poor scrolling performance when using bitmap fonts. #14721 (http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14721) and and 14307 (http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14307) may also be affected. The patch has been tested against emacs 24.3. It applied cleanly to git head (22687e54e0e4d7c73c098417478574a55393fe2c) but I haven't built it.
> 
> Performance with particularly long lines is still rather poor, but general responsiveness is much improved. (Once the buffer is fontified, emacs can now usually keep up if I hold down PgUp, PgDn, C-s, etc.)

Thanks, but can you please provide a reproducible test case, including
the font where the slow scrolling happens?  I don't see any fonts
named in these bug reports.

> (I settled on GetCharABCWidthsFloatW because it works for bitmap fonts and TrueType fonts alike. But the key thing is simply not to create a DC each time w32font_text_extents is called, so there are various other functions that could be called instead if preferred.)

Are there other possibilities to fix this, without using
GetCharABCWidthsFloatW?  The problem with that function is that it is
not available on Windows 9X (in the unicows.dll library), so this
problem will be left unsolved on those systems.