| Backend | Ganar | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| Vulkan |
Versiones de Vulkan:

IMGUIFONTSTUDIO es una herramienta para la fuente de subconjuntos y extraer nombres de glifos para usar embebido o no en un software, especialmente para usar con IMGUI para una manera incrustada.
Muy inspirado / basado en el proyecto iconfontcpppheaders
Este es mi primer software Big OpenSource.
Como hombre de egoísta, siempre desarrollé mis softs en solo.
Entonces, tal vez encuentres algunas cosas raras, malos patrón de diseño, mala optimización o otras mierdas :)
Por favor envíeme sus comentarios. Disfruto de todos los comentarios constructivos y la ayuda es bienvenida.
Probado con éxito de mi lado:
Para obtener más información sobre cómo usar los archivos generados, consulte este proyecto: https://github.com/juliettef/iconfontcppheaders
Mi suave hace el mismo trabajo y más, pero más fácil para el usuario :)
Necesitas usar CMake. Para los 3 OS (Win, Linux, MacOS), el uso de CMake es exactamente el mismo,
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildModeAlguna versión de CMake necesita el modo de compilación Definir a través de la directiva CMake_Build_Type o a través de -config cuando lanzamos la compilación. Por eso pongo las posibilidades
Por cierto, lo necesita antes, para asegurarse, ha necesitado dependencias.
Necesita instalar la biblioteca OpenGL
Necesitas muchos lib: (x11, xrandr, xinerama, xcursor, mesa)
Si estás en Debian puedes ejecutar:
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-devNecesitas muchos liber: OpenGL y Cocoa Framework
IMGUIFONTSTUDIO generará 4 tipos de archivos, dependiendo de sus necesidades.
| Tipo de archivo | Descripción |
|---|---|
| Archivo de fuente TTF | Archivo de fuente vectorial necesario para modo externo |
| Código fuente | .c/.cpp/.cs para c/c ++/c# con datos de fuentes con prestación para el modo integrado |
| Código de encabezado | .h/.cs para c/c ++/c# con infos como (etiquetas de glifo/codePoint min/max rangos)]] |
| Tarjeta | .png Esta tarjeta es un archivo de imágenes que muestra cada glifo y las etiquetas correspondientes |
Para cargar eso en IMGUI, debe fusionar el icono de fuente en la fuente principal actual utilizada en su aplicación IMGUI. Pero solo necesitamos cargar algunos puntos de código, no toda la tabla Unicode. Es por eso que tiene en el archivo de encabezado el rango min/max infos.
Por ejemplo, aquí en este ejemplo de fuente de carga incrustada, tenemos (con IGFS de prefijo de fuentes):
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 ());
}Por ejemplo, aquí en este ejemplo de fuente de carga incrustada, tenemos (con 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 ());
}En ambos casos, el uso en el código es el mismo:
Después de ese paso, cuando tiene un widget IMGUI para probar, solo necesita poner en el campo de la etiqueta, el glifo que desea, definido en el archivo de encabezado para las etiquetas:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); y tendrás este resultado: 
Puede usar la pestaña Problema para problemas de informes o para la solicitud de características. O también puede contribuir con las pestañas de discusión a través de temas, o/y solicitudes de extracción :)
IMGUIFONTSTUDIO es un software de código abierto bajo la licencia Apache 2.0
Vista principal: panel fuente 
Vista principal: panel final con dos fuentes 
Vista principal: panel final para la edición 
Muestra de una tarjeta: 
Déjame saber tu proyecto con un PCTITE y puedo agregarlo aquí:
Por el momento (como sé), hay: