|
|
|
@ -336,15 +336,14 @@ bool ImFontAtlasBuildWithFreeType(FT_Library ft_library, ImFontAtlas* atlas, uns |
|
|
|
|
{ |
|
|
|
|
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i]; |
|
|
|
|
ImFontBuildDstDataFT& dst_tmp = dst_tmp_array[src_tmp.DstIndex]; |
|
|
|
|
ImFontConfig& cfg = atlas->ConfigData[src_i]; |
|
|
|
|
src_tmp.GlyphsSet.Resize(src_tmp.GlyphsHighest + 1); |
|
|
|
|
if (dst_tmp.SrcCount > 1 && dst_tmp.GlyphsSet.Storage.empty()) |
|
|
|
|
if (dst_tmp.GlyphsSet.Storage.empty()) |
|
|
|
|
dst_tmp.GlyphsSet.Resize(dst_tmp.GlyphsHighest + 1); |
|
|
|
|
|
|
|
|
|
for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2) |
|
|
|
|
for (int codepoint = src_range[0]; codepoint <= src_range[1]; codepoint++) |
|
|
|
|
{ |
|
|
|
|
if (cfg.MergeMode && dst_tmp.GlyphsSet.GetBit(codepoint)) // Don't overwrite existing glyphs. We could make this an option (e.g. MergeOverwrite)
|
|
|
|
|
if (dst_tmp.GlyphsSet.GetBit(codepoint)) // Don't overwrite existing glyphs. We could make this an option (e.g. MergeOverwrite)
|
|
|
|
|
continue; |
|
|
|
|
uint32_t glyph_index = FT_Get_Char_Index(src_tmp.Font.Face, codepoint); // It is actually in the font? (FIXME-OPT: We are not storing the glyph_index..)
|
|
|
|
|
if (glyph_index == 0) |
|
|
|
@ -354,8 +353,7 @@ bool ImFontAtlasBuildWithFreeType(FT_Library ft_library, ImFontAtlas* atlas, uns |
|
|
|
|
src_tmp.GlyphsCount++; |
|
|
|
|
dst_tmp.GlyphsCount++; |
|
|
|
|
src_tmp.GlyphsSet.SetBit(codepoint, true); |
|
|
|
|
if (dst_tmp.SrcCount > 1) |
|
|
|
|
dst_tmp.GlyphsSet.SetBit(codepoint, true); |
|
|
|
|
dst_tmp.GlyphsSet.SetBit(codepoint, true); |
|
|
|
|
total_glyphs_count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|