| Index: core/src/fxcrt/fx_unicode.cpp
|
| diff --git a/core/src/fxcrt/fx_unicode.cpp b/core/src/fxcrt/fx_unicode.cpp
|
| index 4fd0bc58a6a8015ddb0300b24d40704446a3d223..fe97a14f46a86d9d3c5d7dbb7480303f3835b6fb 100644
|
| --- a/core/src/fxcrt/fx_unicode.cpp
|
| +++ b/core/src/fxcrt/fx_unicode.cpp
|
| @@ -13,6 +13,13 @@ FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch) {
|
| return 0;
|
| }
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| +FX_BOOL FX_IsCtrlCode(FX_WCHAR ch) {
|
| + FX_DWORD dwRet = (FX_GetUnicodeProperties(ch) & FX_CHARTYPEBITSMASK);
|
| + return dwRet == FX_CHARTYPE_Tab || dwRet == FX_CHARTYPE_Control;
|
| +}
|
| +
|
| +#endif
|
| FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical) {
|
| FX_DWORD dwProps = FX_GetUnicodeProperties(wch);
|
| FX_DWORD dwTemp = (dwProps & 0xFF800000);
|
| @@ -33,3 +40,28 @@ FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical) {
|
| }
|
| return wch;
|
| }
|
| +#ifdef PDF_ENABLE_XFA
|
| +
|
| +FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch,
|
| + FX_DWORD dwProps,
|
| + FX_BOOL bRTL,
|
| + FX_BOOL bVertical) {
|
| + FX_DWORD dwTemp = (dwProps & 0xFF800000);
|
| + if (bRTL && dwTemp < 0xFF800000) {
|
| + size_t idx = dwTemp >> 23;
|
| + if (idx < kFXTextLayoutBidiMirrorSize) {
|
| + wch = kFXTextLayoutBidiMirror[idx];
|
| + dwProps = FX_GetUnicodeProperties(wch);
|
| + }
|
| + }
|
| + if (bVertical) {
|
| + dwTemp = (dwProps & 0x007E0000);
|
| + if (dwTemp < 0x007E0000) {
|
| + size_t idx = dwTemp >> 17;
|
| + if (idx < kFXTextLayoutVerticalMirrorSize)
|
| + wch = kFXTextLayoutVerticalMirror[idx];
|
| + }
|
| + }
|
| + return wch;
|
| +}
|
| +#endif
|
|
|