| Backend | Gagner | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| Vulkan |
Vulkan Versions:

ImGuifontStudio est un outil de police de sous-ensemble et d'extraire les noms de glyphes pour une utilisation embrasée ou non dans un logiciel, en particulier pour une utilisation avec IMGUI pour une manière intégrée.
Grandement inspiré / basé sur le projet iconfontcppheders
Ceci est mon premier grand logiciel OpenSource.
En tant qu'auto-apprentissage, j'ai toujours développé mes Softs en solo.
Alors peut-être que vous trouverez des choses étranges, un mauvais modèle de conception, une mauvaise optimisation ou d'autres conneries :)
Veuillez m'envoyer vos commentaires. J'apprécie tous les commentaires constructifs et l'aide est la bienvenue.
Testé avec succès de mon côté:
Pour plus d'informations sur la façon d'utiliser les fichiers générés, consultez ce projet: https://github.com/juliettef/iConfontcppheders
Mon doux fait le même travail et plus encore mais plus facile pour l'utilisateur :)
Vous devez utiliser Cmake. Pour le 3 OS (Win, Linux, MacOS), l'utilisation CMake est exactement la même,
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildModeUne version CMake a besoin de mode de construction définir via la directive cmake_build_type ou via - Config lorsque nous lançons la construction. C'est pourquoi je mets les possibilités de THOSS
Soit dit en passant, vous avez besoin avant, pour vous assurer que vous avez besoin de dépendances.
Vous devez faire installer la bibliothèque OpenGL
Vous avez besoin de beaucoup de lib: (x11, xrandr, xinerama, xcursor, mesa)
Si vous êtes sur Debian, vous pouvez courir:
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-devVous avez besoin de beaucoup de lib: OpenGl et Cocoa Framework
ImGuifontStudio générera, 4 types de fichiers, selon vos besoins.
| Type de fichier | Description |
|---|---|
| Fichier de police TTF | Fichier de police vectorielle nécessaire pour le mode externe |
| Code source | .c / .cpp / .cs pour C / C ++ / C # avec des données de police con Sortie pour le mode intégré |
| Code d'en-tête | .h / .cs pour c / c ++ / c # avec infos like (étiquettes de glyphe / codepoint min / max gammes)]] |
| Carte | .png Cette carte est un fichier photo qui affiche chaque glyphe et les étiquettes correspondantes |
Pour charger cela dans IMGUI, vous devez fusionner l'icône de police dans la police principale actuelle utilisée dans votre application IMGUI. Mais nous avons juste besoin de charger certains points de code, pas de la table Unicode. C'est pourquoi vous avez dans le fichier d'en-tête la plage min / max infos.
Par exemple, ici, dans cet exemple de police intégrée de charge, nous avons (avec des préfixes de police 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_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 ());
}Par exemple, dans cet exemple de police intégrée de charge, nous avons (avec Font 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 ());
}Dans les deux cas, l'utilisation dans le code est la même:
Après cette étape, lorsque vous avez un widget IMGUI à tester, il vous suffit de mettre dans le champ d'étiquette, le glyphe que vous souhaitez, défini dans le fichier d'en-tête pour les étiquettes:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); Et vous aurez ce résultat: 
Vous pouvez utiliser l'onglet Issue pour les problèmes de rapport ou pour la demande de fonctionnalités. Ou vous pouvez également contribuer avec les onglets de discussion via les problèmes, ou / et de requêtes :)
ImGuifontStudio est un logiciel open source sous Licence Apache 2.0
Vue principale: volet source 
Vue principale: volet final avec deux polices 
Vue principale: volet final pour l'édition 
Échantillon d'une carte: 
Faites-moi savoir votre projet avec une panc et je peux l'ajouter ici:
Pour le moment (comme je le sais), il y a: