Skip to content

Commit aef0ad5

Browse files
committed
support variable font
1 parent 6a506f0 commit aef0ad5

File tree

11 files changed

+383
-134
lines changed

11 files changed

+383
-134
lines changed

common.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include "common.h"
2+
3+
std::wstring to_utf16le(const std::wstring& input) {
4+
std::wstring utf16_string;
5+
int len = input.length();
6+
char* content = (char*)input.c_str();
7+
utf16_string.reserve(len);
8+
for (size_t i = 0; i < len; i += 2) {
9+
char16_t code_unit = (static_cast<char16_t>(content[i]) << 8) |
10+
static_cast<char16_t>(content[i + 1]);
11+
utf16_string.push_back(code_unit);
12+
}
13+
return utf16_string;
14+
}
15+
16+
std::wstring to_wide_string(const std::string& input)
17+
{
18+
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
19+
return converter.from_bytes(input);
20+
}
21+
// convert wstring to string
22+
std::string to_byte_string(const std::wstring& input)
23+
{
24+
//std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
25+
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
26+
return converter.to_bytes(input);
27+
}
28+
29+
wstring to_lower_case(wstring str) {
30+
transform(str.begin(), str.end(), str.begin(), ::tolower);
31+
return str;
32+
}

common.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,19 +90,15 @@ void Log(wchar_t* Msg);
9090

9191

9292
// convert string to wstring
93-
inline std::wstring to_wide_string(const std::string & input)
94-
{
95-
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
96-
return converter.from_bytes(input);
97-
}
93+
std::wstring to_wide_string(const std::string & input);
94+
9895
// convert wstring to string
99-
inline std::string to_byte_string(const std::wstring & input)
100-
{
101-
//std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
102-
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
103-
return converter.to_bytes(input);
104-
}
96+
std::string to_byte_string(const std::wstring & input);
97+
98+
// convert a utf-16be string back to utf-16le string
99+
std::wstring to_utf16le(const std::wstring& input);
105100

101+
wstring to_lower_case(wstring str);
106102

107103
FORCEINLINE HINSTANCE GetDLLInstance()
108104
{

0 commit comments

Comments
 (0)