don't depend on console language always load cjk font (#5326)

This commit is contained in:
georgemoralis
2026-10-09 08:59:06 -07:00
committed by GitHub
parent 30d82c9003
commit 5cfd53250d
+11 -18
View File
@@ -104,19 +104,16 @@ const ImWchar* GetPrimaryTextRanges(ImFontAtlas* atlas) {
return ranges.Data;
}
const ImWchar* GetCjkCoverageRanges(ImFontAtlas* atlas, const int console_language) {
switch (console_language) {
case kConsoleLanguageJapanese:
return atlas->GetGlyphRangesJapanese();
case kConsoleLanguageKorean:
return atlas->GetGlyphRangesKorean();
case kConsoleLanguageSimplifiedChinese:
return atlas->GetGlyphRangesChineseSimplifiedCommon();
case kConsoleLanguageTraditionalChinese:
return atlas->GetGlyphRangesChineseFull();
default:
return nullptr;
const ImWchar* GetCjkCoverageRanges(ImFontAtlas* atlas) {
static ImVector<ImWchar> ranges{};
if (ranges.empty()) {
ImFontGlyphRangesBuilder rb{};
rb.AddRanges(atlas->GetGlyphRangesJapanese());
rb.AddRanges(atlas->GetGlyphRangesKorean());
rb.AddRanges(atlas->GetGlyphRangesChineseFull());
rb.BuildRanges(&ranges);
}
return ranges.Data;
}
void AddMergedFont(ImFontAtlas* atlas, const CompressedFontBlob blob, const float font_size,
@@ -143,12 +140,8 @@ ImFont* AddPrimaryUiFont(ImFontAtlas* atlas, const float font_size, const int co
AddMergedFont(atlas, kNotoSansSymbols2Blob, font_size, kSymbolsRanges, base_cfg);
if (include_cjk_fallback) {
// Keep the atlas lean by only merging CJK ranges for active CJK console locales.
const ImWchar* cjk_ranges = GetCjkCoverageRanges(atlas, console_language);
if (cjk_ranges != nullptr) {
AddMergedFont(atlas, kNotoSansCjkBlob, font_size, cjk_ranges, base_cfg,
GetCjkFontIndex(console_language));
}
AddMergedFont(atlas, kNotoSansCjkBlob, font_size, GetCjkCoverageRanges(atlas), base_cfg,
GetCjkFontIndex(console_language));
}
return font;