Dmitry Timoshkov : gdi32: Don' t return cached glyph metrics if a custom transformation was requested.

Alexandre Julliard julliard at winehq.org
Tue Jun 24 06:46:56 CDT 2008


Module: wine
Branch: master
Commit: 433c3cfeecbd518be6f54d572defbfd9b3601ace
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=433c3cfeecbd518be6f54d572defbfd9b3601ace

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Tue Jun 24 16:12:32 2008 +0900

gdi32: Don't return cached glyph metrics if a custom transformation was requested.

---

 dlls/gdi32/freetype.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 01c9530..e185544 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -4327,8 +4327,13 @@ DWORD WineEngGetGlyphOutline(GdiFont *incoming_font, UINT glyph, UINT format,
 	font->gm = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, font->gm,
 			       font->gmsize * sizeof(GM*));
     } else {
-        if(format == GGO_METRICS && font->gm[original_index / GM_BLOCK_SIZE] != NULL && FONT_GM(font,original_index)->init ) {
+        if (format == GGO_METRICS && font->gm[original_index / GM_BLOCK_SIZE] != NULL &&
+            FONT_GM(font,original_index)->init && (!lpmat || is_identity_MAT2(lpmat)))
+        {
             *lpgm = FONT_GM(font,original_index)->gm;
+            TRACE("cached: %u,%u,%s,%d,%d\n", lpgm->gmBlackBoxX, lpgm->gmBlackBoxY,
+                  wine_dbgstr_point(&lpgm->gmptGlyphOrigin),
+                  lpgm->gmCellIncX, lpgm->gmCellIncY);
             LeaveCriticalSection( &freetype_cs );
 	    return 1; /* FIXME */
 	}




More information about the wine-cvs mailing list