| 백엔드 | 이기다 | 리눅스 | OSX |
|---|---|---|---|
| Opengl 3 | |||
| vulkan |
Vulkan 버전 :

Imguifontstudio는 서브 세트 글꼴 및 소프트웨어에 포함되거나 사용하기위한 글리프 이름을 추출하는 도구입니다. 특히 임베디드 방식으로 Imgui와 함께 사용합니다.
프로젝트 ICONFONTCPPHEADERS를 기반으로 크게 영감을 얻었습니다
이것은 나의 첫 번째 큰 오픈 소스 소프트웨어입니다.
자가 학습 남자로서 나는 항상 솔로로 내 소프트를 개발했습니다.
어쩌면 당신은 이상한 것들, 나쁜 디자인 패턴, 나쁜 최적화 또는 다른 헛소리를 발견 할 것입니다 :)
귀하의 의견을 보내주세요. 나는 모든 건설적인 의견을 즐기고 도움을 환영합니다.
내 편에서 성공적으로 테스트했습니다.
생성 된 파일 사용 방법에 대한 자세한 내용은이 프로젝트를 참조하십시오 : 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 버전은 빌드 모드를 통해 빌드 모드가 필요합니다. 이것이 내가 두 가지 가능성을 두는 이유입니다
그건 그렇고, 당신은 의존성이 필요했습니다.
OpenGL 라이브러리를 설치해야합니다
당신은 많은 lib가 필요합니다 : (x11, xrandr, xinerama, xcursor, mesa)
데비안에 있다면 달릴 수 있습니다.
sudo apt-get update
sudo apt-get install libgl1-mesa-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-devOpenGL 및 Cocoa 프레임 워크가 많이 필요합니다
imguifontstudio는 귀하의 요구에 따라 4 개의 파일 유형을 생성합니다.
| 파일 유형 | 설명 |
|---|---|
| 글꼴 파일 TTF | 외부 모드에 필요한 벡터 글꼴 파일 |
| 소스 코드 | C/C ++/C# 용 .C/.CPP/.CS 임베디드 모드에 대한 압축 된 글꼴 데이터 |
| 헤더 코드 | INFOS와 같은 C/C ++/C# 용 .h/.cs (Glyph Labels/CodePoint Min/Max 범위)] |
| 카드 | .png이 카드는 각 Glyph와 해당 레이블을 보여주는 그림 파일입니다. |
Imgui에서이를로드하려면 글꼴 아이콘을 Imgui 앱에 사용 된 현재 기본 글꼴로 병합해야합니다. 그러나 우리는 모든 유니 코드 테이블이 아니라 코드 포인트를로드하면됩니다. 이것이 바로 헤더 파일에 Min/Max 범위 Infos가있는 이유입니다.
예를 들어 여기에 부하 내장 글꼴에 대한이 예에서는 (글꼴 접두사 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 ());
}예를 들어 여기에 부하 내장 글꼴에 대한이 예에서는 (글꼴 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에 따른 오픈 소스 소프트웨어입니다.
메인보기 : 소스 창 
메인보기 : 두 글꼴이있는 최종 창 
메인 뷰 : 에디션의 최종 창 
카드 샘플 : 
PCITURE로 프로젝트를 알려 주시면 여기에 추가 할 수 있습니다.
(내가 아는 것처럼), 다음과 같습니다.