Browse Source

Fonts: Baked system, fix subsequent sources overriding shared font metrics.

ocornut 7 months ago
parent
commit
92993e68c8
2 changed files with 7 additions and 3 deletions
  1. 2 1
      imgui_draw.cpp
  2. 5 2
      misc/freetype/imgui_freetype.cpp

+ 2 - 1
imgui_draw.cpp

@@ -4313,7 +4313,8 @@ static void ImGui_ImplStbTrueType_FontBakedInit(ImFontAtlas* atlas, ImFontBaked*
     {
         ImFontConfig* src = &font->Sources[src_n];
         ImGui_ImplStbTrueType_FontSrcData* bd_font_data = (ImGui_ImplStbTrueType_FontSrcData*)src->FontLoaderData;
-
+        if (src_n != 0)
+            continue;
         // FIXME-NEWFONTS: reevaluate how to use sizing metrics
         // FIXME-NEWFONTS: make use of line gap value
         float scale_for_layout = bd_font_data->ScaleFactor * baked->Size;

+ 5 - 2
misc/freetype/imgui_freetype.cpp

@@ -479,8 +479,11 @@ void ImGui_ImplFreeType_FontBakedInit(ImFontAtlas* atlas, ImFontBaked* baked)
         bd_baked_data->MaxAdvanceWidth = (float)FT_CEIL(metrics.max_advance) * bd_font_data->InvRasterizationDensity;
 
         // Output
-        baked->Ascent = bd_baked_data->Ascender;
-        baked->Descent = bd_baked_data->Descender;
+        if (src_n == 0)
+        {
+            baked->Ascent = bd_baked_data->Ascender;
+            baked->Descent = bd_baked_data->Descender;
+        }
     }
 }