1 /*
2  * Copyright (C) 2006-2020 by the Widelands Development Team
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  *
18  */
19 
20 #ifndef WL_GRAPHIC_TEXT_BIDI_H
21 #define WL_GRAPHIC_TEXT_BIDI_H
22 
23 #include <unicode/uchar.h>
24 #include <unicode/unistr.h>
25 
26 #include "graphic/text/font_set.h"
27 
28 // BiDi support for RTL languages
29 namespace i18n {
30 
31 std::string make_ligatures(const char* input);
32 std::string line2bidi(const char* input);
33 std::vector<std::string> split_cjk_word(const char* input);
34 bool has_rtl_character(const char* input, int32_t limit = std::numeric_limits<int32_t>::max());
35 bool has_rtl_character(std::vector<std::string> input);
36 // True if a string contains a character from the script's code blocks
37 bool has_script_character(const char* input, UI::FontSets::Selector script);
38 UI::FontSet const* find_fontset(const char* word, const UI::FontSets& fontsets);
39 std::string icustring2string(const icu::UnicodeString& convertme);
40 std::string icuchar2string(const UChar& convertme);
41 bool cannot_start_line(const UChar& c);
42 bool cannot_end_line(const UChar& c);
43 bool is_diacritic(const UChar& c);
44 
45 }  // namespace i18n
46 
47 #endif  // end of include guard: WL_GRAPHIC_TEXT_BIDI_H
48