| 后端 | 赢 | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| VULKAN |
VULKAN版本:

ImguifontStudio是用于子集字体的工具,并提取在软件中使用或不使用嵌入的字形名称,尤其是与IMGUI一起用于嵌入方式。
极大地启发 /基于该项目IconFontCppheaders
这是我的第一个大型OpenSource软件。
作为一个自学习的人,我总是在独奏中发展自己的软件。
因此,也许您会发现一些奇怪的东西,不良的设计模式,不良的优化或其他牛棚:)
请给我您的反馈。我喜欢所有建设性的评论,欢迎帮助。
在我这边成功测试了:
有关如何使用生成文件的更多信息,请参见此项目:https://github.com/juliettef/iconfontcppheaders
我的软弱要做相同的工作,而对用户更容易:)
您需要使用Cmake。对于3个OS(Win,Linux,MacOS),CMAKE使用完全相同,
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildMode某些CMAKE版本需要构建模式通过指令cmake_build_type或启动构建时通过 - config定义。这就是为什么我将两种可能性都提出
通过以前需要的方式,以确保您需要依赖关系。
您需要安装OpenGL库
您需要许多Lib :( X11,Xrandr,Xinerama,Xcursor,Mesa)
如果您在Debian上,可以运行:
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-dev您需要许多Lib:OpenGL和可可框架
Imguifontstudio将生成4种文件类型,具体取决于您的需求。
| 文件类型 | 描述 |
|---|---|
| 字体文件TTF | 外部模式所需的向量字体文件 |
| 源代码 | .c/.cpp/.cs for c/c ++/c#带有嵌入式模式的汇总字体数据 |
| 标题代码 | .h/.cs用于c/c ++/c#,带有Infos(Glyph Labels/codepoint min/max范围)]] |
| 卡片 | .png此卡是一个显示每个字形和相应标签的图片文件 |
为了加载IMGUI,您需要将字体图标合并到IMGUI应用中使用的当前主字体中。但是,我们只需要加载一些编码点,而不是所有Unicode表。这就是为什么您在标题文件中含有最小/最大范围Infos的原因。
例如,在此示例中,载荷嵌入式字体,我们有(带有字体前缀IGF):
ImGuiIO * ioptr = igGetIO ();
ImFontAtlas_AddFontDefault ( ioptr -> Fonts , NULL );
const ImWchar icons_ranges [ 3 ] = { ICON_MIN_IGFS , ICON_MAX_IGFS , 0 };
ImFontConfig * icons_config = ImFontConfig_ImFontConfig ();
icons_config -> MergeMode = true;
icons_config -> PixelSnapH = true;
ImFontAtlas_AddFontFromFileTTF ( ioptr -> Fonts , FONT_ICON_FILE_NAME_IGFS , 15.0f , icons_config , icons_ranges );
ImFontConfig_destroy ( icons_config ); ImGui::GetIO ().Fonts->AddFontDefault();
static const ImWchar icons_ranges[] = { ICON_MIN_IGFS, ICON_MAX_IGFS, 0 };
ImFontConfig icons_config; icons_config.MergeMode = true ; icons_config.PixelSnapH = true ;
ImGui::GetIO ().Fonts->AddFontFromFileTTF(FONT_ICON_FILE_NAME_IGFS, 15 . 0f , &icons_config, icons_ranges);ImGui.GetIO().Fonts.AddFontDefault();
unsafe
{
ImFontConfigPtr config = ImGuiNative. ImFontConfig_ImFontConfig (); config. MergeMode = true ; config. PixelSnapH = true ;
GCHandle rangeHandle = GCHandle. Alloc ( new ushort []{IconFonts. IGFS_Labels . ICON_MIN , IconFonts. IGFS_Labels . ICON_MAX , 0 }, GCHandleType. Pinned );
ImGui. GetIO (). Fonts . AddFontFromFileTTF (IconFonts. IGFS_Labels . FONT_ICON_FILE_NAME , 15 , config, rangeHandle. AddrOfPinnedObject ());
}例如,在此示例中,有关载荷嵌入式字体的示例,我们有(带有字体Prefxi IGF):
ImGuiIO * ioptr = igGetIO ();
ImFontAtlas_AddFontDefault ( ioptr -> Fonts , NULL );
const ImWchar icons_ranges [ 3 ] = { ICON_MIN_IGFS , ICON_MAX_IGFS , 0 };
ImFontConfig * icons_config = ImFontConfig_ImFontConfig ();
icons_config -> MergeMode = true;
icons_config -> PixelSnapH = true;
ImFontAtlas_AddFontFromMemoryCompressedBase85TTF ( ioptr -> Fonts , FONT_ICON_FILE_NAME_IGFS , 15.0f , icons_config , icons_ranges );
ImFontConfig_destroy ( icons_config ); ImGui::GetIO ().Fonts->AddFontDefault();
static const ImWchar icons_ranges[] = { ICON_MIN_IGFS, ICON_MAX_IGFS, 0 };
ImFontConfig icons_config; icons_config.MergeMode = true ; icons_config.PixelSnapH = true ;
ImGui::GetIO ().Fonts->AddFontFromMemoryCompressedBase85TTF(FONT_ICON_BUFFER_NAME_IGFS, 15 . 0f , &icons_config, icons_ranges);ImGui.GetIO().Fonts.AddFontDefault();
unsafe
{
ImFontConfigPtr config = ImGuiNative. ImFontConfig_ImFontConfig (); config. MergeMode = true ; config. PixelSnapH = true ;
GCHandle rangeHandle = GCHandle. Alloc ( new ushort []{IconFonts. IGFS_Labels . ICON_MIN , IconFonts. IGFS_Labels . ICON_MAX , 0 }, GCHandleType. Pinned );
ImGui. GetIO (). Fonts . AddFontFromMemoryCompressedBase85TTF (IconFonts. IGFS_Bytes . compressed_data_base85 , 15 , config, rangeHandle. AddrOfPinnedObject ());
}在这两种情况下,代码中的使用都是相同的:
在此步骤之后,当您有一个IMGUI小部件要测试时,您只需要放入标签字段,即所需的字形,在标签的标题文件中定义:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " );您将获得此结果: 
您可以将“问题”选项卡用于报告问题或用于功能请求。或者,您也可以通过问题选项卡进行讨论,或/和拉的请求:)
IMGUIFONTSTUDIO是许可证Apache 2.0下的开源软件
主视图:源窗格
主视图:带有两种字体的最后窗格
主视图:版本的最终窗格
卡的样本: 
让我知道您的项目,而我可以在这里添加:
目前(我知道),有: