From c5653d5f34b50d9edb2d189790df3fbabdc72f82 Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 20 Jan 2025 20:01:21 +0100 Subject: [PATCH] Fonts: stb_truetype loader: Reworked scale handling to suggest this is not required caching. --- imgui_draw.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/imgui_draw.cpp b/imgui_draw.cpp index 18e9501c3..4edddf5fa 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -4151,19 +4151,14 @@ static bool ImGui_ImplStbTrueType_FontSrcInit(ImFontAtlas* atlas, ImFontConfig* // FIXME-NEWFONTS: reevaluate sizing metrics int oversample_h, oversample_v; ImFontAtlasBuildGetOversampleFactors(src, &oversample_h, &oversample_v); - + float scale; if (src->SizePixels > 0.0f) - { - bd_font_data->ScaleForRasterX = stbtt_ScaleForPixelHeight(&bd_font_data->FontInfo, src->SizePixels * src->RasterizerDensity) * oversample_h; - bd_font_data->ScaleForRasterY = stbtt_ScaleForPixelHeight(&bd_font_data->FontInfo, src->SizePixels * src->RasterizerDensity) * oversample_v; - bd_font_data->ScaleForLayout = stbtt_ScaleForPixelHeight(&bd_font_data->FontInfo, src->SizePixels); - } + scale = stbtt_ScaleForPixelHeight(&bd_font_data->FontInfo, 1.0f); else - { - bd_font_data->ScaleForRasterX = stbtt_ScaleForMappingEmToPixels(&bd_font_data->FontInfo, -src->SizePixels * src->RasterizerDensity) * oversample_h; - bd_font_data->ScaleForRasterY = stbtt_ScaleForMappingEmToPixels(&bd_font_data->FontInfo, -src->SizePixels * src->RasterizerDensity) * oversample_v; - bd_font_data->ScaleForLayout = stbtt_ScaleForMappingEmToPixels(&bd_font_data->FontInfo, -src->SizePixels); - } + scale = -stbtt_ScaleForMappingEmToPixels(&bd_font_data->FontInfo, 1.0f); + bd_font_data->ScaleForRasterX = scale * src->SizePixels * src->RasterizerDensity * oversample_h; + bd_font_data->ScaleForRasterY = scale * src->SizePixels * src->RasterizerDensity * oversample_v; + bd_font_data->ScaleForLayout = scale * src->SizePixels; // FIXME-NEWFONTS: make use of line gap value int unscaled_ascent, unscaled_descent, unscaled_line_gap;