diff --git a/uppsrc/CtrlCore/Ctrl.cpp b/uppsrc/CtrlCore/Ctrl.cpp index 31d4b7fba..5eba2a5dc 100644 --- a/uppsrc/CtrlCore/Ctrl.cpp +++ b/uppsrc/CtrlCore/Ctrl.cpp @@ -932,9 +932,23 @@ void Modality::End() } extern void (*whenSetStdFont)(); +extern void (*adjustDefaultFont)(Font& font); INITBLOCK { whenSetStdFont = &Ctrl::ReSkin; + + adjustDefaultFont = [](Font& font) { + Size wsz = Ctrl::GetPrimaryWorkArea().GetSize(); + wsz.cy = max(wsz.cy - DPI(24), 0); + while(font.GetHeight() >= 0) { + Size csz = GetTextSize(sZoomText, font); + Size dsz = Size(99, 13 + 4); + Size sz = csz * Size(1000, 700) / dsz; + if(sz.cx <= wsz.cx && sz.cy <= wsz.cy) + break; + font.Height(font.GetHeight() - 1); + } + }; } void (**Ctrl::skin)(); diff --git a/uppsrc/Draw/Font.cpp b/uppsrc/Draw/Font.cpp index 5627630b7..d5c56b9f2 100644 --- a/uppsrc/Draw/Font.cpp +++ b/uppsrc/Draw/Font.cpp @@ -161,9 +161,13 @@ void Font::SetStdFont0(Font font) bool Font::std_font_override; +void (*adjustDefaultFont)(Font& font); + void Font::SetDefaultFont(Font font) { LLOG("SetDefaultFont " << font); + if(adjustDefaultFont) + adjustDefaultFont(font); int override_scale = Atoi(GetEnv("UPP_SCALE__")); if(override_scale) { int cy = decode(override_scale, 3, 18, 4, 24, 6, 36, 12);