summaryrefslogtreecommitdiffstats
path: root/unicode/unicodecpp.C
diff options
context:
space:
mode:
authorSam Varshavchik2021-02-23 19:18:13 -0500
committerSam Varshavchik2021-02-23 19:18:13 -0500
commita6e6ff2e38a390e66982210eb56972f9e3c00477 (patch)
treeda9eafa6f4f9c324c08f7cee3527cda572f611c7 /unicode/unicodecpp.C
parent8327472b2c20a2e2466e5f4224f2910dda66950c (diff)
downloadcourier-libs-a6e6ff2e38a390e66982210eb56972f9e3c00477.tar.bz2
courier-unicode: unicode_bidi_cleaned_size, unicode::bidi_override
Diffstat (limited to 'unicode/unicodecpp.C')
-rw-r--r--unicode/unicodecpp.C17
1 files changed, 17 insertions, 0 deletions
diff --git a/unicode/unicodecpp.C b/unicode/unicodecpp.C
index e91f756..04d9879 100644
--- a/unicode/unicodecpp.C
+++ b/unicode/unicodecpp.C
@@ -949,3 +949,20 @@ unicode_bidi_direction unicode::bidi_get_direction(const std::u32string &string,
return unicode_bidi_get_direction(string.c_str()+starting_pos, n);
}
+
+std::u32string unicode::bidi_override(const std::u32string &s,
+ unicode_bidi_level_t direction,
+ int cleanup_options)
+{
+ std::u32string ret;
+
+ ret.reserve(s.size()+1);
+
+ ret.push_back(' ');
+ ret.insert(ret.end(), s.begin(), s.end());
+
+ bidi_cleanup(ret, [](size_t) {}, cleanup_options);
+ ret.at(0)=direction & 1 ? UNICODE_RLO : UNICODE_LRO;
+
+ return ret;
+}