-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem merging font awesome into default font #460
Comments
I got this working a while ago, and I believe you must call ImFontConfig* icons_config = ImGuiNative.ImFontConfig_ImFontConfig();
icons_config->MergeMode = 1;
// etc... Just cloned |
Imgui constructors should be optional, looks like a imgui bug and you should report it to imgui repo. |
The C++ version works just fine, so I don't think it's core ImGui issue. I think the main problem is that I was not allocating a native pointer, but a managed structure and it didn't marshal to the .net C# bindings correctly. |
I see, all good then, I was just pointing to “Constructors/destructors” documentation mentioned in https://github.com/dearimgui/dear_bindings repo. |
Hello @JeffM2501, by any chance, did you find the solution? I am using the following code to load Font Icons to the Font Atlas and it works well with ImGui.NET 1.89.4. However, It doesn't work with ImGui.NET 1.90.0. I dont know why. So I was wondering if you manage to make it work. Thanks in advance.
|
@tingspain Have you tried calling I don't know why this would break in 1.90.0 though. |
@NoahStolk, indeed. I am sorry to not post my solution earlier. At the end, I manage to make it works, as you suggested. Here is my code. public static void AddIconsFonts(float fontSize, char iconMin, char iconMax, string fontFilePath)
{
unsafe {
ushort[] ranges = { iconMin, iconMax, 0 };
var rangesIntPtr = Marshal.UnsafeAddrOfPinnedArrayElement(ranges, 0);
ImFontConfigPtr fontConfig = ImGuiNative.ImFontConfig_ImFontConfig();
fontConfig.MergeMode = true;
fontConfig.OversampleH = 3;
fontConfig.OversampleV = 3;
fontConfig.GlyphOffset = Vector2.Zero;
fontConfig.FontDataOwnedByAtlas = false;
fontConfig.PixelSnapH = true;
fontConfig.GlyphMaxAdvanceX = float.MaxValue;
fontConfig.RasterizerMultiply = 2.0f;
ImGui.GetIO().Fonts.AddFontFromFileTTF( fontFilePath,
fontSize,
fontConfig,
rangesIntPtr);
}
} (Just in case, it will be useful for someone) var io = ImGui.GetIO();
unsafe {
// Sanity Check
if(!Core.Utils.FileExists("Assets/Fonts/Manrope/Manrope-Regular.ttf"))
throw new System.NullReferenceException("The app can not find the default font");
// Add the default fonts for the App
io.Fonts.AddFontFromFileTTF("Assets/Fonts/Manrope/Manrope-Regular.ttf", 17.0f);
// Add the App Icons
if(Core.Utils.FileExists( ImGuiExt.AppIcons.FontFile ) )
ImGuiExt.AddIconsFonts(14,
ImGuiExt.AppIcons.IconMin,
ImGuiExt.AppIcons.IconMax,
ImGuiExt.AppIcons.FontFile);
}
io.ConfigFlags |= ImGuiConfigFlags.DockingEnable | ImGuiConfigFlags.ViewportsEnable | ImGuiConfigFlags.NavEnableKeyboard;
io.BackendFlags |= ImGuiBackendFlags.RendererHasVtxOffset | ImGuiBackendFlags.PlatformHasViewports;
io.Fonts.Build(); It will be more than welcome if anyone has any feedback/suggestion/recommendation. ^___^ Thanks in advance!!! |
holyy shit man genius... forget font-awesome , i wasnt able to replace normal Font no matter what... it works. but i wish we can replace it while app is running. not just Controller definition. at ImGUIController.cs -- modify like these.
here the function GH460_build
|
Hello. I maintain an ImGui backend for the library Raylib (https://www.raylib.com/), for both C++ and C#.
One feature of the backend is that by default we add font awesome icons to the default font so that people can easily use them in ImGui.
I'm having a problem with the C# version of the code, no mater what I try I can't get the font to merge in anymore. This used to work a while ago, but there have been some library updates and refactors since I tested it last (changing over to events, etc..).
I'm in the process of updating the C# backend to the current ImGui.net 1.90.1.1, so I know I'm on current code.
This is my font loading code for C#
https://github.com/raylib-extras/rlImGui-cs/blob/23df04bc3ee07c2225594e2e378955fec57662c4/rlImGui/rlImGui.cs#L277
C#
The font atlas that is generated does not have any of the merged characters in it.

It never seems to load the font. It does not mater if I use the font from memory or a file on disk, so I don't think it's a data issue.
The code very similar to what I do in the C++ version of the backend, and that code does work.
https://github.com/raylib-extras/rlImGui/blob/de2c361b5835e6c2075b4f314bc7d949869666f1/rlImGui.cpp#L252
C++
With this code in C++, I do see the icon fonts as part of the font atlas.

I'm sure there is something I'm missing or doing wrong, C# hasn't been my primary language for a while. Anyone have any idea what more I can do to try and track this down? Any help would be appreciated.
The text was updated successfully, but these errors were encountered: