Aric Stewart : gdi32: Fall back on uniscribe for complex scripts.
Alexandre Julliard
julliard at winehq.org
Mon Jun 6 15:19:08 CDT 2011
Module: wine
Branch: master
Commit: 0a29308e87780a7f0f6c5504ad80768443166cbb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0a29308e87780a7f0f6c5504ad80768443166cbb
Author: Aric Stewart <aric at codeweavers.com>
Date: Mon Jun 6 07:43:07 2011 -0500
gdi32: Fall back on uniscribe for complex scripts.
---
dlls/gdi32/bidi.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/dlls/gdi32/bidi.c b/dlls/gdi32/bidi.c
index 297ce86..9b8f758 100644
--- a/dlls/gdi32/bidi.c
+++ b/dlls/gdi32/bidi.c
@@ -359,6 +359,7 @@ BOOL BIDI_Reorder(
WORD *chartype;
BYTE *levels;
unsigned i, done, glyph_i;
+ BOOL is_complex;
int maxItems;
int nItems;
@@ -404,11 +405,20 @@ BOOL BIDI_Reorder(
if (lpOutString)
memcpy(lpOutString, lpString, uCount * sizeof(WCHAR));
+ is_complex = FALSE;
+ for (i = 0; i < uCount && !is_complex; i++)
+ {
+ if ((lpString[i] >= 0x900 && lpString[i] <= 0xfff) ||
+ (lpString[i] >= 0x1cd0 && lpString[i] <= 0x1cff) ||
+ (lpString[i] >= 0xa840 && lpString[i] <= 0xa8ff))
+ is_complex = TRUE;
+ }
+
/* Verify reordering will be required */
if ((WINE_GCPW_FORCE_RTL == (dwWineGCP_Flags&WINE_GCPW_DIR_MASK)) ||
((dwWineGCP_Flags&WINE_GCPW_DIR_MASK) == WINE_GCPW_LOOSE_RTL))
State.uBidiLevel = 1;
- else
+ else if (!is_complex)
{
done = 1;
classify(lpString, chartype, uCount);
More information about the wine-cvs
mailing list