From fde7b97fcc18f6f6e2b3d476e9f35696ac8eeb7c Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 28 Jun 2022 00:46:53 +0100 Subject: [PATCH] Attempts at allowing unicode in imgui based widgets Signed-off-by: falkTX --- plugins/Cardinal/src/ImGuiWidget.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/plugins/Cardinal/src/ImGuiWidget.cpp b/plugins/Cardinal/src/ImGuiWidget.cpp index 4ca8c07..3e86b00 100644 --- a/plugins/Cardinal/src/ImGuiWidget.cpp +++ b/plugins/Cardinal/src/ImGuiWidget.cpp @@ -122,15 +122,35 @@ struct ImGuiWidget::PrivateData { { #ifndef DGL_NO_SHARED_RESOURCES using namespace dpf_resources; - static const ImWchar ranges[] = { 0x20, 0xFF, 0 }; /* FIXME unicode range not working.. */ ImFontConfig fc; fc.FontDataOwnedByAtlas = false; fc.OversampleH = 1; fc.OversampleV = 1; fc.PixelSnapH = true; - io.Fonts->AddFontFromMemoryTTF((void*)dejavusans_ttf, - dejavusans_ttf_size, - 13.0f * scaleFactor, &fc, ranges); + io.Fonts->AddFontFromMemoryTTF((void*)dejavusans_ttf, dejavusans_ttf_size, 13.0f * scaleFactor, &fc); + + // extra fonts we can try loading for unicode support + static const char* extraFontPathsToTry[] = { + #if defined(ARCH_WIN) + // TODO + // "Meiryo.ttc", + #elif defined(ARCH_MAC) + // TODO + #elif defined(ARCH_LIN) + "/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc", + #endif + }; + + fc.FontDataOwnedByAtlas = true; + fc.MergeMode = true; + + for (size_t i=0; iAddFontFromFileTTF(extraFontPathsToTry[i], 13.0f * scaleFactor, &fc, + io.Fonts->GetGlyphRangesJapanese()); + } + io.Fonts->Build(); #endif }