Description
The current ImGui font setup loads a TTF font at a small fixed size and then applies FontGlobalScale to upscale it at runtime. This causes blurry text on all displays and produces inconsistent sizing across different screen types — the UI looks correct on a HiDPI OLED display but oversized on a standard 1080p laptop screen.
Root Cause
In GUI/imgui_layer.hpp, the font is loaded at 18.0f and then scaled by 1.8f globally:
io.Fonts->AddFontFromFileTTF("...Nunito-Regular.ttf", 18.0f);
io.FontGlobalScale = 1.8f;
FontGlobalScale stretches the already-rasterized font bitmap at render time. This is equivalent to zooming into a low-resolution texture — the result is blurry text. On a standard 1080p display with larger physical pixels, the upscaled text also appears disproportionately large.
Expected Behavior
Font should appear at a consistent, readable size across HiDPI and standard resolution displays, with crisp rendering on both.
Proposed Fix
Remove io.FontGlobalScale = 1.8f and load the font at the correct pixel size derived from the system DPI scale:
float xscale, yscale;
glfwGetWindowContentScale(m_window, &xscale, &yscale);
float fontSize = 16.0f * std::max(xscale, yscale);
io.Fonts->AddFontFromFileTTF("...Nunito-Regular.ttf", fontSize);
io.FontGlobalScale = 1.0f;
Files Affected
GUI/imgui_layer.hpp — onAttach(), lines 191–204
Environment
- Works correctly on: HiDPI OLED display
- Broken on: standard 1080p laptop display
Description
The current ImGui font setup loads a TTF font at a small fixed size and then applies
FontGlobalScaleto upscale it at runtime. This causes blurry text on all displays and produces inconsistent sizing across different screen types — the UI looks correct on a HiDPI OLED display but oversized on a standard 1080p laptop screen.Root Cause
In
GUI/imgui_layer.hpp, the font is loaded at18.0fand then scaled by1.8fglobally:FontGlobalScalestretches the already-rasterized font bitmap at render time. This is equivalent to zooming into a low-resolution texture — the result is blurry text. On a standard 1080p display with larger physical pixels, the upscaled text also appears disproportionately large.Expected Behavior
Font should appear at a consistent, readable size across HiDPI and standard resolution displays, with crisp rendering on both.
Proposed Fix
Remove
io.FontGlobalScale = 1.8fand load the font at the correct pixel size derived from the system DPI scale:Files Affected
GUI/imgui_layer.hpp—onAttach(), lines 191–204Environment