summaryrefslogtreecommitdiff
path: root/pango/pangowin32-fontcache.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangowin32-fontcache.c')
-rw-r--r--pango/pangowin32-fontcache.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/pango/pangowin32-fontcache.c b/pango/pangowin32-fontcache.c
index f05d341c..6dd87c5b 100644
--- a/pango/pangowin32-fontcache.c
+++ b/pango/pangowin32-fontcache.c
@@ -184,10 +184,37 @@ pango_win32_font_cache_load (PangoWin32FontCache *cache,
}
else
{
- BOOL aa;
+ BOOL font_smoothing;
lf = *lfp;
- SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &aa, 0);
- lf.lfQuality = (aa ? ANTIALIASED_QUALITY : DEFAULT_QUALITY);
+ SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &font_smoothing, 0);
+ /* If on XP or better, try to use ClearType if the global system
+ * settings ask for it.
+ */
+ if (font_smoothing &&
+ (pango_win32_os_version_info.dwMajorVersion > 5 ||
+ (pango_win32_os_version_info.dwMajorVersion == 5 &&
+ pango_win32_os_version_info.dwMinorVersion >= 1)))
+ {
+ UINT smoothing_type;
+
+#ifndef SPI_GETFONTSMOOTHINGTYPE
+#define SPI_GETFONTSMOOTHINGTYPE 0x200a
+#endif
+#ifndef FE_FONTSMOOTHINGCLEARTYPE
+#define FE_FONTSMOOTHINGCLEARTYPE 2
+#endif
+#ifndef CLEARTYPE_QUALITY
+#define CLEARTYPE_QUALITY 5
+#endif
+ SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, 0, &smoothing_type, 0);
+ lf.lfQuality =
+ (font_smoothing ?
+ (smoothing_type == FE_FONTSMOOTHINGCLEARTYPE ?
+ CLEARTYPE_QUALITY : ANTIALIASED_QUALITY) :
+ DEFAULT_QUALITY);
+ }
+ else
+ lf.lfQuality = (font_smoothing ? ANTIALIASED_QUALITY : DEFAULT_QUALITY);
lf.lfCharSet = DEFAULT_CHARSET;
for (tries = 0; ; tries++)
{