fonts: better font matching

Huw D M Davies h.davies1 at physics.ox.ac.uk
Mon Aug 9 11:39:12 CDT 2004


        Huw Davies <huw at codeweavers.com>
        Try harder to match to a font if the family name is matches,
        but the style is doesn't.
-- 
Huw Davies
huw at codeweavers.com
Index: dlls/gdi/freetype.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/freetype.c,v
retrieving revision 1.65
diff -u -r1.65 freetype.c
--- dlls/gdi/freetype.c	6 Aug 2004 17:31:39 -0000	1.65
+++ dlls/gdi/freetype.c	9 Aug 2004 16:36:47 -0000
@@ -1759,7 +1759,25 @@
     if(!face && best)
         face = best;
     else if(!face) {
-        face = family->FirstFace;
+        best = NULL;
+        for(face = family->FirstFace; face; face = face->next) {
+            if(face->scalable)
+                break;
+            if(height > 0)
+                newdiff = height - (signed int)(face->size.y_ppem >> 6);
+            else
+                newdiff = -height - ((signed int)(face->size.y_ppem >> 6) - face->size.internal_leading);
+            if(!best || (diff > 0 && newdiff < diff && newdiff >= 0) ||
+               (diff < 0 && newdiff > diff)) {
+                TRACE("%ld is better for %d diff was %d\n", face->size.y_ppem >> 6, height, diff);
+                diff = newdiff;
+                best = face;
+                if(diff == 0)
+                    break;
+            }
+        }
+        if(!face && best)
+            face = best;
 	if(it && !face->Italic) ret->fake_italic = TRUE;
 	if(bd && !face->Bold) ret->fake_bold = TRUE;
     }



More information about the wine-patches mailing list