Fonts: Functions with a 'float size_pixels' parameter can accept zero if it is set in ImFontSize::SizePixels.
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 274de61..fb6304d 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -48,6 +48,7 @@
- Tables: Fix invalid data in TableGetSortSpecs() when SpecsDirty flag is unset. (#4233)
- TabBar: Fixed using more than 32 KB-worth of tab names. (#4176)
- Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592)
+- Fonts: Functions with a 'float size_pixels' parameter can accept zero if it is set in ImFontSize::SizePixels.
- Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if IMGUI_DISABLE_METRICS_WINDOW is not set. (#4171)
Normally the right way to disable compiling the demo is to set IMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid
implying that the file is required.
diff --git a/imgui_draw.cpp b/imgui_draw.cpp
index ea559bd..a026ce4 100644
--- a/imgui_draw.cpp
+++ b/imgui_draw.cpp
@@ -2167,7 +2167,7 @@
IM_ASSERT(font_cfg.FontData == NULL);
font_cfg.FontData = ttf_data;
font_cfg.FontDataSize = ttf_size;
- font_cfg.SizePixels = size_pixels;
+ font_cfg.SizePixels = size_pixels > 0.0f ? size_pixels : font_cfg.SizePixels;
if (glyph_ranges)
font_cfg.GlyphRanges = glyph_ranges;
return AddFont(&font_cfg);
diff --git a/misc/freetype/imgui_freetype.cpp b/misc/freetype/imgui_freetype.cpp
index 2538f20..71a1887 100644
--- a/misc/freetype/imgui_freetype.cpp
+++ b/misc/freetype/imgui_freetype.cpp
@@ -648,6 +648,22 @@
const int tx = pack_rect.x + padding;
const int ty = pack_rect.y + padding;
+ // Register glyph
+ float x0 = info.OffsetX + font_off_x;
+ float y0 = info.OffsetY + font_off_y;
+ float x1 = x0 + info.Width;
+ float y1 = y0 + info.Height;
+ float u0 = (tx) / (float)atlas->TexWidth;
+ float v0 = (ty) / (float)atlas->TexHeight;
+ float u1 = (tx + info.Width) / (float)atlas->TexWidth;
+ float v1 = (ty + info.Height) / (float)atlas->TexHeight;
+ dst_font->AddGlyph(&cfg, (ImWchar)src_glyph.Codepoint, x0, y0, x1, y1, u0, v0, u1, v1, info.AdvanceX);
+
+ ImFontGlyph* dst_glyph = &dst_font->Glyphs.back();
+ IM_ASSERT(dst_glyph->Codepoint == src_glyph.Codepoint);
+ if (src_glyph.Info.IsColored)
+ dst_glyph->Colored = tex_use_colors = true;
+
// Blit from temporary buffer to final texture
size_t blit_src_stride = (size_t)src_glyph.Info.Width;
size_t blit_dst_stride = (size_t)atlas->TexWidth;
@@ -666,22 +682,6 @@
for (int x = 0; x < info.Width; x++)
blit_dst[x] = blit_src[x];
}
-
- // Register glyph
- float x0 = info.OffsetX + font_off_x;
- float y0 = info.OffsetY + font_off_y;
- float x1 = x0 + info.Width;
- float y1 = y0 + info.Height;
- float u0 = (tx) / (float)atlas->TexWidth;
- float v0 = (ty) / (float)atlas->TexHeight;
- float u1 = (tx + info.Width) / (float)atlas->TexWidth;
- float v1 = (ty + info.Height) / (float)atlas->TexHeight;
- dst_font->AddGlyph(&cfg, (ImWchar)src_glyph.Codepoint, x0, y0, x1, y1, u0, v0, u1, v1, info.AdvanceX);
-
- ImFontGlyph* dst_glyph = &dst_font->Glyphs.back();
- IM_ASSERT(dst_glyph->Codepoint == src_glyph.Codepoint);
- if (src_glyph.Info.IsColored)
- dst_glyph->Colored = tex_use_colors = true;
}
src_tmp.Rects = NULL;