| Бэкэнд | Победить | Linux | Оси |
|---|---|---|---|
| OpenGL 3 | |||
| Вулкан |
Вульковские версии:

ImguifontStudio - это инструмент для подмножества шрифта и извлечения имен глифов для использования поставленных или не в программном обеспечении, особенно для использования с IMGUI для встроенного пути.
Вдохновлен / основан на проекте IconfontCppHeaders
Это мое первое большое программное обеспечение OpenSource.
Как самоучащийся человек, я всегда развивал свои мягкие в одиночку.
Так что, может быть, вы найдете некоторые странные вещи, плохие шаблоны дизайна, плохая оптимизация или другие чушьи :)
Пришлите мне свой отзыв. Я наслаждаюсь всеми конструктивными комментариями, и помощь приветствуется.
Успешно протестировано на моей стороне:
Для получения дополнительной информации, как использовать сгенерированные файлы, см. Этот проект: https://github.com/juliettef/iconfontcppheaders
Мой мягкий делаю ту же работу и больше, но проще для пользователя :)
Вам нужно использовать Cmake. Для 3 ОС (Win, Linux, MacOS) использование Cmake точно такое же,
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildModeНекоторая версия Cmake нуждается в режиме сборки, определяемой с помощью директивы CMAKE_BUILD_TYPE или VIA -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 и Cocoa Framework
ImguifontStudio будет генерировать 4 типа файлов, в зависимости от ваших потребностей.
| Тип файла | Описание |
|---|---|
| Файл шрифта ttf | Векторный файл шрифта, необходимый для внешнего режима |
| Исходный код | .c/.cpp/.cs для c/c ++/c# с помощью данных шрифта для встроенного режима |
| Код заголовка | .h/.cs для c/c ++/c# с такими, как (глиф этикетки/Codepoint min/max ranges)]] |
| Карта | .png Эта карта - файл изображения, который показывает каждый глиф и соответствующие этикетки |
Для загрузки этого в Imgui вам необходимо объединить значок шрифта в текущий основной шрифт, используемый в вашем приложении imgui. Но нам просто нужно загрузить некоторые кодепоина, а не всю таблицу Unicode. Вот почему у вас есть в файле заголовка в диапазоне min/max 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 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 ());
}В обоих случаях использование в коде одинаково:
После этого шага, когда у вас есть виджет Imgui для тестирования, вам просто нужно поместить в поле метки, глиф, который вы хотите, определил в файле заголовка для метков:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); И у вас будет этот результат: 
Вы можете использовать вкладку «Выпуск» для выпусков отчетов или для запроса функций. Или вы также можете внести свой вклад в обсуждение вкладок по вопросам или/и запросов на получение :)
ImguifontStudio - это программное обеспечение с открытым исходным кодом по лицензии Apache 2.0
Основной вид: исходная панель 
Основной вид: финальная панель с двумя шрифтами 
Основной вид: финальная панель для издания 
Образец карты: 
Дайте мне знать ваш проект с пикатом, и я могу добавить его здесь:
На данный момент (как я знаю), есть: