| Backend | Menang | Linux | Osx |
|---|---|---|---|
| OpenGL 3 | |||
| Vulkan |
Versi Vulkan:

Imguifontstudio adalah alat untuk subset font dan mengekstrak nama mesin terbang untuk digunakan diembkan atau tidak dalam perangkat lunak, terutama untuk digunakan dengan IMGUI untuk Way Way.
Sangat terinspirasi / berdasarkan proyek iconfontcppheaders
Ini adalah perangkat lunak OpenSource besar pertama saya.
Sebagai pria belajar diri saya selalu mengembangkan softs saya di solo.
Jadi mungkin Anda akan menemukan beberapa hal aneh, pola desain yang buruk, optimasi yang buruk, atau omong kosong lainnya :)
Tolong kirimkan saya tanggapan Anda. Saya menikmati semua komentar dan bantuan yang konstruktif dipersilakan.
Berhasil diuji di sisi saya:
Untuk informasi lebih lanjut cara menggunakan file yang dihasilkan, lihat proyek ini: https://github.com/juliettef/iconfontcppheaders
Soft saya melakukan pekerjaan yang sama dan lebih tetapi lebih mudah bagi pengguna :)
Anda perlu menggunakan cmake. Untuk 3 OS (Win, Linux, MacOS), penggunaan CMAKE persis sama,
cmake -B my_build_directory -DCMAKE_BUILD_TYPE=BuildMode
cmake --build my_build_directory --config BuildModeBeberapa versi cmake perlu mode build ditentukan melalui arahan cmake_build_type atau via --config ketika kami meluncurkan build. Inilah sebabnya saya menempatkan kedua kemungkinan
Ngomong -ngomong yang Anda butuhkan sebelumnya, untuk memastikan, Anda membutuhkan dependensi.
Anda harus menginstal Perpustakaan OpenGL
Anda membutuhkan banyak lib: (x11, xrandr, xinerama, xcursor, mesa)
Jika Anda berada di Debian, Anda dapat menjalankan:
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-devAnda membutuhkan banyak lib: OpenGL dan Cocoa Framework
Imguifontstudio akan menghasilkan, 4 jenis file, tergantung kebutuhan Anda.
| Jenis file | Keterangan |
|---|---|
| File Font TTF | File font vektor yang diperlukan untuk mode eksternal |
| Kode Sumber | .c/.cpp/.cs untuk C/C ++/C# dengan data font yang terkontes untuk mode tertanam |
| Kode header | .h/.cs untuk c/c ++/c# dengan info seperti (label glyph/codepoint min/rentang max)]] |
| Kartu | .png kartu ini adalah file gambar yang menunjukkan setiap mesin terbang dan label yang sesuai |
Untuk memuatnya di IMGUI, Anda perlu menggabungkan ikon font ke dalam font utama saat ini yang digunakan di aplikasi IMGUI Anda. Tapi kita hanya perlu memuat beberapa titik codepoints, tidak semua tabel Unicode. Inilah sebabnya mengapa Anda memiliki file header Infos Min/Max Range.
Misalnya di sini dalam contoh ini untuk memuat font tertanam, kami memiliki (dengan awalan font 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 ());
}Misalnya di sini dalam contoh ini untuk memuat font tertanam, kami memiliki (dengan 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 ());
}Dalam kedua kasus, penggunaan dalam kode adalah sama:
Setelah langkah itu, ketika Anda memiliki widget imgui untuk diuji, Anda hanya perlu memasukkan ke dalam bidang label, mesin terbang yang Anda inginkan, ditentukan dalam file header untuk label:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); Dan Anda akan mendapatkan hasil ini: 
Anda dapat menggunakan tab masalah untuk masalah laporan atau untuk permintaan fitur. Atau Anda juga dapat berkontribusi dengan Diskusi melalui tab Masalah, atau/dan permintaan tarik :)
Imguifontstudio adalah perangkat lunak open source di bawah lisensi Apache 2.0
Tampilan Utama: Panel Sumber 
Tampilan utama: Panel akhir dengan dua font 
Pandangan Utama: Panel Akhir untuk Edisi 
Contoh kartu: 
Beri tahu saya proyek Anda dengan pciture dan saya dapat menambahkannya di sini:
Untuk saat ini (seperti yang saya tahu), ada: