Module: wine Branch: master Commit: 0a29308e87780a7f0f6c5504ad80768443166cbb URL: http://source.winehq.org/git/wine.git/?a=commit;h=0a29308e87780a7f0f6c5504ad...
Author: Aric Stewart aric@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);