add a string to force glyph ranges
This commit is contained in:
parent
13ca42ea39
commit
291e7f5d8b
|
@ -7049,6 +7049,35 @@ bool FurnaceGUI::init() {
|
||||||
|
|
||||||
ImGui::LocalizeRegisterEntries(guiLocalization,8);
|
ImGui::LocalizeRegisterEntries(guiLocalization,8);
|
||||||
|
|
||||||
|
const char* localeSettings=_("LocaleSettings: ccjk");
|
||||||
|
if (strlen(localeSettings)<20) {
|
||||||
|
logE("the LocaleSettings string is incomplete!");
|
||||||
|
} else {
|
||||||
|
localeRequiresChinese=(localeSettings[16]=='C');
|
||||||
|
localeRequiresChineseTrad=(localeSettings[17]=='C');
|
||||||
|
localeRequiresJapanese=(localeSettings[18]=='J');
|
||||||
|
localeRequiresKorean=(localeSettings[19]=='K');
|
||||||
|
if (strlen(localeSettings)>21) {
|
||||||
|
if (localeSettings[20]==' ') {
|
||||||
|
ImWchar next=0;
|
||||||
|
for (const char* i=&localeSettings[21]; *i; i++) {
|
||||||
|
if (((*i)>='0' && (*i)<='9') || ((*i)>='A' && (*i)<='F')) {
|
||||||
|
next<<=4;
|
||||||
|
if ((*i)>='0' && (*i)<='9') {
|
||||||
|
next|=(*i)-'0';
|
||||||
|
} else {
|
||||||
|
next|=(*i)-'A'+10;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
localeExtraRanges.push_back(next);
|
||||||
|
next=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
localeExtraRanges.push_back(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loadUserPresets(true);
|
loadUserPresets(true);
|
||||||
|
|
||||||
applyUISettings();
|
applyUISettings();
|
||||||
|
@ -7669,6 +7698,10 @@ FurnaceGUI::FurnaceGUI():
|
||||||
bigFont(NULL),
|
bigFont(NULL),
|
||||||
headFont(NULL),
|
headFont(NULL),
|
||||||
fontRange(NULL),
|
fontRange(NULL),
|
||||||
|
localeRequiresJapanese(false),
|
||||||
|
localeRequiresChinese(false),
|
||||||
|
localeRequiresChineseTrad(false),
|
||||||
|
localeRequiresKorean(false),
|
||||||
prevInsData(NULL),
|
prevInsData(NULL),
|
||||||
pendingLayoutImport(NULL),
|
pendingLayoutImport(NULL),
|
||||||
pendingLayoutImportLen(0),
|
pendingLayoutImportLen(0),
|
||||||
|
|
|
@ -2228,6 +2228,12 @@ class FurnaceGUI {
|
||||||
|
|
||||||
char finalLayoutPath[4096];
|
char finalLayoutPath[4096];
|
||||||
|
|
||||||
|
bool localeRequiresJapanese;
|
||||||
|
bool localeRequiresChinese;
|
||||||
|
bool localeRequiresChineseTrad;
|
||||||
|
bool localeRequiresKorean;
|
||||||
|
std::vector<ImWchar> localeExtraRanges;
|
||||||
|
|
||||||
DivInstrument* prevInsData;
|
DivInstrument* prevInsData;
|
||||||
|
|
||||||
unsigned char* pendingLayoutImport;
|
unsigned char* pendingLayoutImport;
|
||||||
|
|
|
@ -6411,18 +6411,21 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
||||||
//fontConfP.RasterizerMultiply=1.5;
|
//fontConfP.RasterizerMultiply=1.5;
|
||||||
|
|
||||||
range.AddRanges(upTo800);
|
range.AddRanges(upTo800);
|
||||||
if (settings.loadJapanese) {
|
if (settings.loadJapanese || localeRequiresJapanese) {
|
||||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesJapanese());
|
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesJapanese());
|
||||||
}
|
}
|
||||||
if (settings.loadChinese) {
|
if (settings.loadChinese || localeRequiresChinese) {
|
||||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseSimplifiedCommon());
|
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseSimplifiedCommon());
|
||||||
}
|
}
|
||||||
if (settings.loadChineseTraditional) {
|
if (settings.loadChineseTraditional || localeRequiresChineseTrad) {
|
||||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseFull());
|
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseFull());
|
||||||
}
|
}
|
||||||
if (settings.loadKorean) {
|
if (settings.loadKorean || localeRequiresKorean) {
|
||||||
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesKorean());
|
range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesKorean());
|
||||||
}
|
}
|
||||||
|
if (!localeExtraRanges.empty()) {
|
||||||
|
range.AddRanges(localeExtraRanges.data());
|
||||||
|
}
|
||||||
// I'm terribly sorry
|
// I'm terribly sorry
|
||||||
range.UsedChars[0x80>>5]=0;
|
range.UsedChars[0x80>>5]=0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue