Aric Stewart : gdi32: GetGlyphOutline needs to look at linked fonts
as well .
Alexandre Julliard
julliard at wine.codeweavers.com
Thu May 3 08:57:05 CDT 2007
Module: wine
Branch: master
Commit: ec9f7550865f6d4bd2629016452bc3085cbf9d6e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ec9f7550865f6d4bd2629016452bc3085cbf9d6e
Author: Aric Stewart <aric at codeweavers.com>
Date: Wed May 2 11:15:12 2007 -0500
gdi32: GetGlyphOutline needs to look at linked fonts as well.
---
dlls/gdi32/freetype.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index caadf4b..d3ca23b 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -439,6 +439,7 @@ static BOOL have_installed_roman_font = FALSE; /* CreateFontInstance will fail i
static const WCHAR font_mutex_nameW[] = {'_','_','W','I','N','E','_','F','O','N','T','_','M','U','T','E','X','_','_','\0'};
+static BOOL get_glyph_index_linked(GdiFont *font, UINT c, GdiFont **linked_font, FT_UInt *glyph);
/****************************************
* Notes on .fon files
@@ -3354,12 +3355,13 @@ DWORD WineEngGetGlyphIndices(GdiFont *font, LPCWSTR lpstr, INT count,
* question rather than an HDC.
*
*/
-DWORD WineEngGetGlyphOutline(GdiFont *font, UINT glyph, UINT format,
+DWORD WineEngGetGlyphOutline(GdiFont *incoming_font, UINT glyph, UINT format,
LPGLYPHMETRICS lpgm, DWORD buflen, LPVOID buf,
const MAT2* lpmat)
{
static const FT_Matrix identityMat = {(1 << 16), 0, 0, (1 << 16)};
- FT_Face ft_face = font->ft_face;
+ FT_Face ft_face = incoming_font->ft_face;
+ GdiFont *font = incoming_font;
FT_UInt glyph_index;
DWORD width, height, pitch, needed = 0;
FT_Bitmap ft_bitmap;
@@ -3378,8 +3380,10 @@ DWORD WineEngGetGlyphOutline(GdiFont *font, UINT glyph, UINT format,
if(format & GGO_GLYPH_INDEX) {
glyph_index = glyph;
format &= ~GGO_GLYPH_INDEX;
- } else
- glyph_index = get_glyph_index(font, glyph);
+ } else {
+ get_glyph_index_linked(incoming_font, glyph, &font, &glyph_index);
+ ft_face = font->ft_face;
+ }
if(glyph_index >= font->gmsize) {
font->gmsize = (glyph_index / INIT_GM_SIZE + 1) * INIT_GM_SIZE;
More information about the wine-cvs
mailing list