Aric Stewart : gdi32: Skip leading @ from FontFace when looking for font to load.
Alexandre Julliard
julliard at winehq.org
Tue Mar 11 10:51:49 CDT 2008
Module: wine
Branch: master
Commit: 5c1229982a932c72d2bf444b61a2f24da6e3d155
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5c1229982a932c72d2bf444b61a2f24da6e3d155
Author: Aric Stewart <aric at codeweavers.com>
Date: Tue Mar 11 19:34:48 2008 +0900
gdi32: Skip leading @ from FontFace when looking for font to load.
---
dlls/gdi32/freetype.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 46a53c8..765ac82 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -3068,13 +3068,22 @@ GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont)
FontSubst *psub;
SYSTEM_LINKS *font_link;
CHILD_FONT *font_link_entry;
+ LPWSTR FaceName = lf.lfFaceName;
- psub = get_font_subst(&font_subst_list, lf.lfFaceName, lf.lfCharSet);
+ /*
+ * Check for a leading '@' this signals that the font is being
+ * requested in tategaki mode (vertical writing subtitution) but
+ * does not affect the fontface that is to be selected.
+ */
+ if (lf.lfFaceName[0]=='@')
+ FaceName = &lf.lfFaceName[1];
+
+ psub = get_font_subst(&font_subst_list, FaceName, lf.lfCharSet);
if(psub) {
- TRACE("substituting %s -> %s\n", debugstr_w(lf.lfFaceName),
+ TRACE("substituting %s -> %s\n", debugstr_w(FaceName),
debugstr_w(psub->to.name));
- strcpyW(lf.lfFaceName, psub->to.name);
+ strcpyW(FaceName, psub->to.name);
}
/* We want a match on name and charset or just name if
@@ -3085,7 +3094,7 @@ GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont)
*/
LIST_FOR_EACH(family_elem_ptr, &font_list) {
family = LIST_ENTRY(family_elem_ptr, Family, entry);
- if(!strcmpiW(family->FamilyName, lf.lfFaceName)) {
+ if(!strcmpiW(family->FamilyName, FaceName)) {
LIST_FOR_EACH(face_elem_ptr, &family->faces) {
face = LIST_ENTRY(face_elem_ptr, Face, entry);
if((csi.fs.fsCsb[0] & (face->fs.fsCsb[0] | face->fs_links.fsCsb[0])) || !csi.fs.fsCsb[0])
@@ -3101,7 +3110,7 @@ GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont)
*/
LIST_FOR_EACH_ENTRY(font_link, &system_links, SYSTEM_LINKS, entry)
{
- if(!strcmpiW(font_link->font_name, lf.lfFaceName))
+ if(!strcmpiW(font_link->font_name, FaceName))
{
TRACE("found entry in system list\n");
LIST_FOR_EACH_ENTRY(font_link_entry, &font_link->links, CHILD_FONT, entry)
More information about the wine-cvs
mailing list