Fonts: fallback to default default rasterizer density + pick one from existing viewports at the time of calling AddUpdateViewport().

# Conflicts:
#	imgui.cpp
This commit is contained in:
ocornut
2025-05-20 19:56:27 +02:00
parent 83aad81279
commit b2343d6247
2 changed files with 6 additions and 1 deletions

View File

@@ -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)
{

View File

@@ -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);