diff --git "a/win32ss/gdi/ntgdi/freetype.c" "b/win32ss/gdi/ntgdi/freetype.c" index 5a6f8479bbc..c0664d5b8bc 100644 --- "a/win32ss/gdi/ntgdi/freetype.c" +++ "b/win32ss/gdi/ntgdi/freetype.c" @@ -6795,7 +6795,9 @@ IntExtTextOutW( FONT_CACHE_ENTRY Cache; FT_Matrix mat; BOOL bNoTransform; - DWORD ch0, ch1, etx = 3; // etx is ASCII End of Text + DWORD ch0, ch1, nbsp = 0xa0; // nbsp is a non-breaking space + /* stx & eot are ASCII Start of Text & End of Transmission */ + DWORD stx = 2, eot = 4; FONTLINK_CHAIN Chain; SIZE spaceWidth; @@ -7063,13 +7065,16 @@ IntExtTextOutW( bitSize.cx = realglyph->bitmap.width; bitSize.cy = realglyph->bitmap.rows; - /* Do chars other than space and etx have a bitSize.cx of zero? */ - if (ch0 != L' ' && ch0 != etx && bitSize.cx == 0) - DPRINT1("WARNING: WChar 0x%04x has a bitSize.cx of zero\n", ch0); + /* Do chars other than space, stx, etx, eot & nbsp have a bitSize.cx of zero? */ + if (ch0 != L' ' && (ch0 < stx || ch0 > eot) && ch0 != nbsp && bitSize.cx == 0) + DPRINT1("WARNING: Font '%s' WChar 0x%04x has a bitSize.cx of zero\n", + FontGDI->SharedFace->Face->family_name, ch0); /* Don't ignore spaces when computing offset. * This completes the fix of CORE-11787. */ - if ((pdcattr->flTextAlign & TA_UPDATECP) && ch0 == L' ' && bitSize.cx == 0) + if ((pdcattr->flTextAlign & TA_UPDATECP) && + (ch0 == L' ' || ch0 == nbsp) // Chars needing x-dim widths + && bitSize.cx == 0) { IntUnLockFreeType(); /* Get the width of the space character */