summaryrefslogtreecommitdiff
path: root/i18nutil/source/utility
diff options
context:
space:
mode:
authorKevin Suo <suokunlong@126.com>2022-11-21 23:32:53 +0800
committerKevin Suo <suokunlong@126.com>2022-11-30 13:40:24 +0100
commite788317bb58f4e4ad3bf57ee7b0e995cb4407ede (patch)
treea8847397cd472c1bfb81e78298455aff337aa9a4 /i18nutil/source/utility
parent11e72e61b64bcabf5c599bc24e0b2f6b62c91b5c (diff)
tdf#104597 related: restore the mirroring of Bidi_Mirrored characters
The method PDFIProcessor::mirrorString() was removed, and ::comphelper::string::reverseString was used, by Kevin Suo in commit 69e9925ded584113e52f84ef0ed7c224079fa061. The old PDFIProcessor::mirrorString() did two things: 1) Reverse the code points in the string. However, due to its use of iterateCodePoints(&i) rather than iterateCodePoints(&i, -1) (i.e. iterating in forward rather than reversed order), the reverse was not functioning at all. 2) Use GetMirroredChar (i.e. the icu unicode u_charMirror() which was dropped in commit 720a093461aadff044ac0b1b7b45cf3d416b3785) to get the mirrored-image of characters with the Bidi_Mirrored properties. Stephan Bergmann restored the #1 in commit 50d73574b6c3d71f9a539c895a15d6fcda22390b (by introducing comphelper::string::reverseCodePoints). However, the #2 was not restored. I do not see a clear reason to drop #2 (at least this is an area I don't quite familiar with), so it's better to restore it as well, in *this* commit, named as SubstituteBidiMirrored. Change-Id: Ic263097938310e6e04f3b95bb12e4f4e834198f2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143041 Tested-by: Jenkins Reviewed-by: Kevin Suo <suokunlong@126.com>
Diffstat (limited to 'i18nutil/source/utility')
-rw-r--r--i18nutil/source/utility/unicode.cxx5
1 files changed, 5 insertions, 0 deletions
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
index 6e002aa69f18..730b5105d52c 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -97,6 +97,11 @@ unicode::getUnicodeDirection( const sal_Unicode ch ) {
return r;
}
+sal_uInt32 unicode::GetMirroredChar(sal_uInt32 nChar) {
+ nChar = u_charMirror(nChar);
+ return nChar;
+}
+
#define bit(name) (1U << name)
#define UPPERMASK bit(UnicodeType::UPPERCASE_LETTER)