You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImGui字体加载问题:Build()调用后如何添加新字体?

在ImGui中高效加载/追加字体的正确方式

一次性加载多字体的正常实现

ImGui支持一次性加载10个及以上字体,可正常运行,示例代码如下:

ImGuiIO* ImGuiIO_p = &ImGui::GetIO();
 
(*ImGuiIO_p).Fonts->AddFontDefault();               
 
(*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_1[0], size_Font, ImFontConfig_p, 0);
(*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_2[0], size_Font, ImFontConfig_p, 0);

曾误解的繁琐实现方式

此前误以为要在Build()调用前追加新字体,必须先调用Clear()清空所有已加载字体,再重新加载原有字体并添加新字体后执行Build(),相关代码如下:
先执行清空操作:

(*ImGuiIO_p).Fonts->Clear();

再重新加载所有字体:

ImGuiIO* ImGuiIO_p = &ImGui::GetIO();
 
(*ImGuiIO_p).Fonts->AddFontDefault();               
 
(*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_1[0], size_Font, ImFontConfig_p, 0);
(*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_2[0], size_Font, ImFontConfig_p, 0);
(*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_NEW[0], size_Font, ImFontConfig_p, 0); // 新增加载的字体
 
(*ImGuiIO_p).Fonts->Build();

更高效的正确追加方式

上述操作过于繁琐,经测试验证:无需清空原有字体,直接添加新字体后再次调用Build()即可完成字体追加。

内容的提问来源于stack exchange,提问作者Lua_beg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:17:18