From b2343d62474e87b241c6cd2e27464142bb2dd2ba Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 20 May 2025 19:56:27 +0200 Subject: [PATCH] Fonts: fallback to default default rasterizer density + pick one from existing viewports at the time of calling AddUpdateViewport(). # Conflicts: # imgui.cpp --- imgui.cpp | 6 +++++- imgui_draw.cpp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/imgui.cpp b/imgui.cpp index 13cb78f0b..d869da7fe 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4399,7 +4399,10 @@ static void SetCurrentWindow(ImGuiWindow* window) if (window) { if (g.IO.BackendFlags & ImGuiBackendFlags_RendererHasTextures) - g.FontRasterizerDensity = window->Viewport->FramebufferScale.x; // == SetFontRasterizerDensity() + { + ImGuiViewport* viewport = window->Viewport; + g.FontRasterizerDensity = (viewport->FramebufferScale.x != 0.0f) ? viewport->FramebufferScale.x : g.IO.DisplayFramebufferScale.x; // == SetFontRasterizerDensity() + } ImGui::UpdateCurrentFontSize(); ImGui::NavUpdateCurrentWindowIsScrollPushableX(); } @@ -15249,6 +15252,7 @@ static void ImGui::UpdateViewportsNewFrame() main_viewport->Pos = ImVec2(0.0f, 0.0f); main_viewport->Size = g.IO.DisplaySize; main_viewport->FramebufferScale = g.IO.DisplayFramebufferScale; + IM_ASSERT(main_viewport->FramebufferScale.x > 0.0f && main_viewport->FramebufferScale.y > 0.0f); for (ImGuiViewportP* viewport : g.Viewports) { diff --git a/imgui_draw.cpp b/imgui_draw.cpp index 3d719820f..93f5fdf8d 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -5225,6 +5225,7 @@ ImFontBaked* ImFontAtlasBakedGetOrAdd(ImFontAtlas* atlas, ImFont* font, float fo { // FIXME-NEWATLAS: Design for picking a nearest size based on some criteria? // FIXME-NEWATLAS: Altering font density won't work right away. + IM_ASSERT(font_size > 0.0f && font_rasterizer_density > 0.0f); ImGuiID baked_id = ImFontAtlasBakedGetId(font->FontId, font_size, font_rasterizer_density); ImFontAtlasBuilder* builder = atlas->Builder; ImFontBaked** p_baked_in_map = (ImFontBaked**)builder->BakedMap.GetVoidPtrRef(baked_id);