Nikolay Sivov : dwrite: Use correct ranges to set DWRITE_SCRIPT_SHAPES_NO_VISUAL.
Alexandre Julliard
julliard at winehq.org
Mon Jul 25 16:19:30 CDT 2022
Module: wine
Branch: master
Commit: 5259c1a1dcbbdeec8d60548194bbb6aed9c2f671
URL: https://gitlab.winehq.org/wine/wine/-/commit/5259c1a1dcbbdeec8d60548194bbb6aed9c2f671
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Jul 25 14:27:41 2022 +0300
dwrite: Use correct ranges to set DWRITE_SCRIPT_SHAPES_NO_VISUAL.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dwrite/analyzer.c | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c
index 86d030b3738..200ffc8da4c 100644
--- a/dlls/dwrite/analyzer.c
+++ b/dlls/dwrite/analyzer.c
@@ -501,15 +501,31 @@ static inline UINT16 get_char_script(WCHAR c)
return script == Script_Inherited ? Script_Unknown : script;
}
-static DWRITE_SCRIPT_ANALYSIS get_char_sa(WCHAR c)
+static DWRITE_SCRIPT_ANALYSIS get_char_sa(UINT32 c)
{
DWRITE_SCRIPT_ANALYSIS sa;
- WORD type;
- GetStringTypeW(CT_CTYPE1, &c, 1, &type);
sa.script = get_char_script(c);
- sa.shapes = (type & C1_CNTRL) || c == 0x2028 /* LINE SEPARATOR */ || c == 0x2029 /* PARAGRAPH SEPARATOR */ ?
- DWRITE_SCRIPT_SHAPES_NO_VISUAL : DWRITE_SCRIPT_SHAPES_DEFAULT;
+ sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT;
+ if ((c >= 0x0001 && c <= 0x001f) ||
+ (c >= 0x007f && c <= 0x009f) ||
+ (c == 0x00ad) /* SOFT HYPHEN */ ||
+ (c >= 0x200b && c <= 0x200f) ||
+ (c >= 0x2028 && c <= 0x202e) ||
+ (c >= 0x2060 && c <= 0x2064) ||
+ (c >= 0x2066 && c <= 0x206f) ||
+ (c == 0xfeff) ||
+ (c == 0xfff9) ||
+ (c == 0xfffa) ||
+ (c == 0xfffb))
+ {
+ sa.shapes = DWRITE_SCRIPT_SHAPES_NO_VISUAL;
+ }
+ else
+ {
+ sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT;
+ }
+
return sa;
}
More information about the wine-cvs
mailing list