mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2026-10-12 02:08:05 +08:00
Implemented GetGlyphRangesChineseSimplifiedOfficial (#2756)
This commit is contained in:
1 parent
affa94b98c
commit
b150009e28
2 files changed
+35
-1
No files matched your search
@@ -124,12 +124,45 @@ namespace big
|
||||
return {};
|
||||
}
|
||||
|
||||
const ImWchar* font_mgr::GetGlyphRangesChineseSimplifiedOfficial()
|
||||
{
|
||||
// Store all official characters for Simplified Chinese.
|
||||
// Sourced from https://en.wikipedia.org/wiki/Table_of_General_Standard_Chinese_Characters
|
||||
// (Stored as accumulative offsets from the initial unicode codepoint 0x4E00. This encoding is designed to helps us compact the source code size.)
|
||||
static const short accumulative_offsets_from_0x4E00[] = {0, 1, 2, 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 2, 1, 2, 3, 1, 2, 3, 2, 2, 4, 1, 1, 1, 2, 1, 4, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 3, 1, 1, 1, 1, 1, 5, 3, 7, 1, 2, 5, 6, 8, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 2, 1, 4, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 1, 2, 1, 2, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 2, 2, 1, 1, 3, 2, 1, 1, 4, 2, 1, 2, 1, 1, 4, 2, 2, 2, 7, 1, 1, 1, 2, 1, 1, 1, 1, 6, 1, 1, 1, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 3, 2, 3, 7, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 3, 3, 1, 3, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 4, 1, 2, 2, 2, 2, 3, 3, 1, 3, 2, 3, 3, 2, 1, 1, 1, 1, 1, 2, 2, 1, 5, 1, 4, 6, 4, 1, 1, 5, 3, 1, 1, 1, 1, 6, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 2, 4, 14, 1, 2, 3, 1, 1, 1, 3, 1, 1, 2, 2, 1, 2, 4, 1, 1, 1, 1, 1, 2, 1, 1, 6, 6, 1, 1, 2, 3, 2, 4, 1, 4, 2, 1, 4, 2, 5, 2, 5, 4, 7, 1, 3, 2, 4, 1, 4, 3, 1, 1, 3, 2, 3, 1, 4, 5, 3, 14, 2, 2, 1, 1, 3, 6, 8, 1, 12, 7, 1, 5, 2, 4, 12, 1, 5, 1, 1, 2, 3, 2, 6, 11, 1, 4, 7, 15, 5, 13, 1, 11, 1, 1, 2, 1, 1, 1, 2, 1, 2, 2, 4, 3, 1, 1, 4, 2, 6, 3, 3, 3, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 4, 3, 1, 3, 1, 2, 3, 2, 1, 2, 2, 2, 1, 4, 2, 2, 1, 7, 2, 1, 1, 1, 1, 1, 2, 1, 1, 4, 1, 1, 3, 4, 2, 1, 2, 2, 1, 3, 2, 2, 5, 3, 2, 3, 1, 3, 7, 2, 2, 1, 3, 3, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, 1, 1, 2, 3, 1, 3, 1, 4, 1, 1, 1, 1, 1, 2, 3, 4, 4, 1, 2, 1, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 5, 1, 1, 1, 3, 1, 3, 1, 1, 6, 2, 1, 2, 4, 2, 2, 1, 5, 3, 11, 2, 2, 1, 2, 4, 8, 3, 8, 2, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 4, 1, 1, 9, 2, 1, 4, 4, 2, 2, 2, 3, 2, 2, 2, 2, 2, 5, 1, 4, 12, 10, 4, 1, 1, 5, 1, 2, 5, 2, 1, 5, 1, 1, 2, 3, 1, 3, 1, 2, 3, 4, 4, 11, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 4, 1, 2, 1, 1, 2, 1, 1, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 5, 3, 2, 1, 1, 3, 2, 1, 1, 8, 1, 2, 2, 3, 2, 3, 1, 2, 1, 2, 1, 5, 13, 3, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 4, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 4, 2, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 2, 1, 1, 1, 2, 3, 3, 1, 1, 2, 1, 5, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 6, 1, 1, 2, 2, 9, 1, 1, 2, 1, 1, 1, 3, 1, 1, 3, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 3, 1, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 4, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 7, 2, 1, 2, 2, 5, 1, 2, 6, 1, 1, 3, 7, 2, 3, 2, 1, 1, 3, 3, 2, 2, 1, 1, 1, 2, 2, 2, 5, 2, 1, 2, 2, 1, 2, 3, 1, 6, 5, 1, 6, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 4, 2, 3, 4, 1, 3, 1, 2, 5, 3, 10, 2, 2, 2, 2, 2, 2, 1, 6, 1, 4, 3, 1, 3, 1, 1, 1, 1, 2, 6, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 3, 3, 1, 2, 2, 6, 1, 2, 1, 7, 1, 3, 2, 1, 9, 2, 1, 3, 1, 2, 2, 1, 3, 5, 1, 4, 1, 2, 2, 3, 2, 4, 1, 2, 5, 5, 1, 1, 6, 3, 1, 1, 3, 6, 2, 4, 1, 1, 1, 1, 5, 5, 5, 1, 8, 1, 1, 8, 1, 4, 7, 9, 10, 2, 8, 5, 14, 10, 6, 1, 3, 1, 1, 1, 1, 2, 7, 2, 3, 1, 3, 1, 2, 2, 1, 3, 1, 1, 4, 1, 2, 2, 1, 1, 2, 4, 9, 3, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 6, 1, 1, 3, 2, 2, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 3, 4, 4, 1, 1, 5, 1, 1, 2, 2, 3, 1, 1, 1, 1, 3, 1, 2, 4, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 3, 2, 4, 1, 3, 1, 3, 1, 4, 1, 2, 1, 3, 2, 1, 2, 1, 1, 1, 3, 2, 1, 4, 6, 1, 2, 2, 5, 1, 3, 1, 1, 2, 1, 5, 1, 3, 1, 2, 2, 1, 1, 1, 2, 1, 4, 4, 5, 2, 1, 3, 3, 1, 2, 6, 2, 3, 7, 1, 1, 6, 1, 1, 6, 1, 4, 3, 4, 5, 1, 7, 6, 1, 5, 13, 2, 1, 2, 2, 3, 1, 7, 2, 1, 2, 3, 1, 1, 4, 1, 2, 2, 3, 2, 1, 19, 5, 4, 12, 4, 15, 7, 1, 2, 2, 3, 3, 2, 1, 11, 3, 6, 2, 1, 4, 1, 1, 3, 1, 2, 3, 5, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 3, 3, 1, 1, 1, 2, 5, 1, 2, 3, 1, 1, 2, 3, 1, 2, 2, 1, 1, 1, 1, 1, 2, 6, 1, 1, 3, 8, 6, 1, 2, 2, 1, 4, 4, 1, 1, 1, 2, 1, 1, 2, 3, 5, 1, 3, 1, 1, 1, 5, 5, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 3, 7, 2, 3, 8, 2, 2, 1, 5, 1, 1, 1, 1, 3, 1, 2, 2, 1, 1, 5, 1, 1, 3, 4, 2, 3, 5, 3, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 5, 2, 5, 4, 3, 1, 3, 2, 4, 8, 1, 2, 1, 1, 6, 4, 6, 3, 1, 2, 1, 8, 3, 2, 4, 2, 2, 2, 3, 3, 1, 8, 1, 1, 1, 1, 3, 1, 1, 3, 3, 2, 2, 12, 1, 3, 4, 1, 3, 12, 3, 4, 1, 1, 2, 3, 6, 3, 1, 2, 5, 3, 6, 2, 1, 1, 2, 2, 2, 4, 1, 2, 3, 3, 1, 1, 2, 4, 12, 12, 13, 1, 4, 10, 7, 8, 3, 8, 1, 5, 11, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 3, 1, 2, 4, 1, 2, 2, 5, 3, 4, 2, 1, 1, 2, 1, 1, 2, 1, 3, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 2, 1, 4, 1, 1, 2, 1, 2, 1, 1, 1, 5, 4, 2, 1, 10, 1, 1, 2, 3, 1, 3, 6, 2, 8, 1, 1, 1, 1, 3, 2, 3, 2, 3, 1, 5, 2, 3, 1, 1, 2, 2, 2, 1, 5, 2, 1, 2, 1, 2, 2, 5, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 3, 1, 1, 1, 4, 4, 5, 2, 1, 2, 2,Line truncated
|
||||
static ImWchar base_ranges[] = // not zero-terminated
|
||||
{
|
||||
0x0020,
|
||||
0x00FF, // Basic Latin + Latin Supplement
|
||||
0x3000,
|
||||
0x30FF, // Punctuations, Hiragana, Katakana
|
||||
0x31F0,
|
||||
0x31FF, // Katakana Phonetic Extensions
|
||||
0xFF00,
|
||||
0xFFEF, // Half-width characters
|
||||
};
|
||||
static ImWchar full_ranges[IM_ARRAYSIZE(base_ranges) + IM_ARRAYSIZE(accumulative_offsets_from_0x4E00) * 2 + 1] = {0};
|
||||
if (!full_ranges[0])
|
||||
{
|
||||
memcpy(full_ranges, base_ranges, sizeof(base_ranges));
|
||||
ImWchar* out_ranges = full_ranges + IM_ARRAYSIZE(base_ranges);
|
||||
int base_codepoint = 0x4E00;
|
||||
for (int n = 0; n < IM_ARRAYSIZE(accumulative_offsets_from_0x4E00); n++, out_ranges += 2)
|
||||
{
|
||||
out_ranges[0] = out_ranges[1] = (ImWchar)(base_codepoint + accumulative_offsets_from_0x4E00[n]);
|
||||
base_codepoint += accumulative_offsets_from_0x4E00[n];
|
||||
}
|
||||
out_ranges[0] = 0;
|
||||
}
|
||||
return &full_ranges[0];
|
||||
}
|
||||
|
||||
const ImWchar* font_mgr::get_imgui_alphabet_type()
|
||||
{
|
||||
auto& io = ImGui::GetIO();
|
||||
switch (m_require_extra)
|
||||
{
|
||||
case eAlphabetType::CHINESE: return io.Fonts->GetGlyphRangesChineseFull();
|
||||
case eAlphabetType::CHINESE: return GetGlyphRangesChineseSimplifiedOfficial();
|
||||
case eAlphabetType::CYRILLIC: return io.Fonts->GetGlyphRangesCyrillic();
|
||||
case eAlphabetType::JAPANESE: return io.Fonts->GetGlyphRangesJapanese();
|
||||
case eAlphabetType::KOREAN: return io.Fonts->GetGlyphRangesKorean();
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace big
|
||||
void rebuild();
|
||||
|
||||
file get_available_font_file_for_alphabet_type();
|
||||
const ImWchar* GetGlyphRangesChineseSimplifiedOfficial();
|
||||
const ImWchar* get_imgui_alphabet_type();
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user