| Backend | Gewinnen | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| Vulkan |
Vulkan -Versionen:

IMGuifontStudio ist ein Werkzeug für die Schriftart und Extrahieren von Glyph -Namen zur Verwendung von Embated oder nicht in einer Software, insbesondere für die Verwendung mit IMGUI für den eingebetteten Weg.
Stark inspiriert / basierend auf den Projektikonfontcppheaders
Dies ist meine erste große OpenSource -Software.
Als selbstlernen Mann habe ich immer meine Softs im Solo entwickelt.
Vielleicht finden Sie einige seltsame Dinge, schlechte Designmuster, schlechte Optimierung oder andere Bullshits :)
Bitte senden Sie mir Ihr Feedback. Ich genieße alle konstruktiven Kommentare und Hilfe ist willkommen.
Erfolgreich auf meiner Seite getestet:
Weitere Informationen zum Verwenden der generierten Dateien finden Sie in diesem Projekt: https://github.com/juliettef
Mein Soft macht den gleichen Job und mehr aber einfacher für den Benutzer :)
Sie müssen CMake verwenden. Für das 3 -Betriebssystem (Win, Linux, MacOS) ist die CMake -Verwendung genau gleich.
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildModeEinige CMAKE -Versionen müssen Build -Modus über die Anweisung definieren CMAKE_BUILD_TYPE oder über -Konfiguration beim Start des Builds. Deshalb habe ich die Angeordneten Möglichkeiten gestellt
Übrigens, wie Sie es zuvor benötigen, um sicherzustellen, dass Sie Abhängigkeiten benötigen.
Sie müssen die OpenGL -Bibliothek installieren lassen
Sie brauchen viele Libus: (X11, Xrandr, Xinerama, Xcursor, Mesa)
Wenn Sie auf Debian sind, können Sie ausführen:
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-devSie brauchen viele Libs: OpenGL und Cocoa -Framework
IMGuifontstudio generiert 4 Dateitypen, abhängig von Ihren Anforderungen.
| Dateityp | Beschreibung |
|---|---|
| Schriftart Datei TTF | Vektor -Schriftdatei benötigt für den externen Modus |
| Quellcode | .c/.cpp/.cs für c/c ++/c# mit konprimierten Schriftdaten für den eingebetteten Modus |
| Headercode | .h/.cs für c/c ++/c# mit Infos wie (Glyph -Etiketten/CodePoint min/maxe Bereiche)]] |
| Karte | .png Diese Karte ist eine Bilddatei, die jede Glyphe und die entsprechenden Beschriftungen anzeigt |
Um dies in IMGui zu laden, müssen Sie das Schriftsymbol in die aktuelle Hauptschrift in Ihrer IMGui -App zusammenführen. Aber wir müssen nur einige CodePoints laden, nicht die gesamte Unicode -Tabelle. Aus diesem Grund haben Sie in der Header -Datei die min/max -Bereichsinfos.
Zum Beispiel hier in diesem Beispiel für die eingebettete Last -Schriftart haben wir (mit IGFs mit Schriftart Präfix):
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 ());
}Zum Beispiel hier in diesem Beispiel für die eingebettete Load -Schriftart haben wir (mit Schriftart Prefxi IGFs):
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 ());
}In beiden Fällen ist die Verwendung im Code gleich:
Wenn Sie nach diesem Schritt ein IMGUI -Widget testen müssen, müssen Sie nur das Feld Etikett, die gewünschte Glyphe, in der Header -Datei für Beschriftungen definiert:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); Und Sie werden dieses Ergebnis haben: 
Sie können die Registerkarte "Problem" für Berichtsprobleme oder für Funktionen für Funktionen verwenden. Oder Sie können auch mit Diskussionen über Themen Tabs oder/und an Anfragen beitragen :)
IMGuifontstudio ist eine Open -Source -Software unter Lizenz Apache 2.0
Hauptansicht: Quellscheibe 
Hauptansicht: Endscheibe mit zwei Schriftarten 
Hauptansicht: Endbereich für Ausgabe 
Probe einer Karte: 
Lassen Sie mich wissen, dass Ihr Projekt mit einem Leiterplatten mit einer PCitation und ich es hier hinzufügen kann:
Im Moment (wie ich weiß) gibt es: