فهرست منبع

imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the first font in a merged set has no loaded glyph. (#8081)

ocornut 8 ماه پیش
والد
کامیت
3b683927ee
2فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 2 0
      docs/CHANGELOG.txt
  2. 3 2
      misc/freetype/imgui_freetype.cpp

+ 2 - 0
docs/CHANGELOG.txt

@@ -72,6 +72,8 @@ Other changes:
   automatically copy window contents into clipboard using CTRL+C. This is experimental
   because (1) it currently breaks on nested Begin/End, (2) text output quality varies,
   and (3) text output comes in submission order rather than spatial order.
+- imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the
+  first font in a merged set has no loaded glyph. (#8081)
 - Backends: DX12: Unmap() call specify written range. The range is informational and
   may be used by debug tools.
 - Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the

+ 3 - 2
misc/freetype/imgui_freetype.cpp

@@ -681,8 +681,6 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u
     for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
     {
         ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
-        if (src_tmp.GlyphsCount == 0)
-            continue;
 
         // When merging fonts with MergeMode=true:
         // - We can have multiple input fonts writing into a same destination font.
@@ -693,6 +691,9 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u
         const float ascent = src_tmp.Font.Info.Ascender;
         const float descent = src_tmp.Font.Info.Descender;
         ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent);
+
+        if (src_tmp.GlyphsCount == 0)
+            continue;
         const float font_off_x = cfg.GlyphOffset.x;
         const float font_off_y = cfg.GlyphOffset.y + IM_ROUND(dst_font->Ascent);