| バックエンド | 勝つ | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| バルカン |
Vulkanバージョン:

ImguifontStudioは、サブセットフォントのツールであり、特に埋め込まれた方法でIMGUIで使用するために、ソフトウェアに埋め込まれているか、使用しないためのグリフ名を抽出します。
プロジェクトのiconfontcppheadersに大きくインスピレーションを受けています
これは私の最初の大きなOpenSourceソフトウェアです。
セルフラーニングマンとして、私はいつもソロでソフトを開発しました。
だから、あなたはいくつかの奇妙なもの、悪いデザインパターン、悪い最適化、または他のブルシットを見つけるかもしれません:)
フィードバックを送ってください。私はすべての建設的なコメントを楽しんでいます、そして、助けは大歓迎です。
私の側で成功してテストしました:
詳細については、生成されたファイルの使用方法については、このプロジェクトを参照してください:https://github.com/juliettef/iconfontcppheaders
私のソフトは同じ仕事をしていて、それ以上のユーザーにとってより簡単です:)
cmakeを使用する必要があります。 3 OS(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-devOpenGLとCocoaフレームワークの多くのLIBが必要です
ImguifontStudioは、ニーズに応じて4つのファイルタイプを生成します。
| ファイルタイプ | 説明 |
|---|---|
| フォントファイルTTF | 外部モードに必要なベクトルフォントファイル |
| ソースコード | .c/.cpp/.cs for c/c ++/c#for embedded mod |
| ヘッダーコード | .h/.cs for c/c ++/c#with infos 'for glyph labels/codepoint min/max ranges)]]] |
| カード | .pngこのカードは、各グリフと対応するラベルを表示する画像ファイルです |
IMGUIでそれをロードするには、フォントアイコンをIMGUIアプリで使用されている現在のメインフォントにマージする必要があります。ただし、すべてのUnicodeテーブルではなく、いくつかのコードポイントをロードする必要があります。これが、ヘッダーファイルにMin/Max Range 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 " );そして、あなたはこの結果を得るでしょう: 
[問題]タブを使用して、レポートの問題や機能リクエストに使用できます。または、[Issue Isuse]タブを介してDiscusedを紹介することもできます。
ImguifontstudioはライセンスApache 2.0の下でのオープンソースソフトウェアです
メインビュー:ソースペイン
メインビュー:2つのフォントを備えた最終ペイン
メインビュー:エディションの最終ペイン
カードのサンプル: 
あなたのプロジェクトがPcitureを使用していることを教えてください。ここに追加できます。
今のところ(私が知っているように)、次のことがあります。