| الخلفية | يفوز | Linux | OSX |
|---|---|---|---|
| OpenGL 3 | |||
| فولكان |
إصدارات فولكان:

ImguifontStudio هي أداة لخط مجموعة فرعية واستخراج الأسماء الحربية للاستخدام المدمجة أو لا في برنامج ، خاصة للاستخدام مع Imgui للطريقة المضمنة.
مستوحى / استناد إلى حد كبير على المشروع iconfontcppheaders
هذا هو برنامج OpenSource الأول الخاص بي.
كرجل في التعلم الذاتي ، قمت دائمًا بتطوير أريكة بلدي في منفردة.
لذلك ربما ستجد بعض الأشياء الغريبة ، ونمط التصميم السيئ ، والتحسين السيئ ، أو الهراء الآخرين :)
من فضلك أرسل لي ملاحظاتك. أنا أستمتع بكل التعليقات البناءة والمساعدة موضع ترحيب.
تم اختباره على جانبي بنجاح:
لمزيد من المعلومات كيفية استخدام الملفات التي تم إنشاؤها ، راجع هذا المشروع: https://github.com/juliettef/iconfontcppheaders
Soft My Soft يقوم بنفس الوظيفة وأكثر من ذلك ولكن أسهل للمستخدم :)
تحتاج إلى استخدام 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 أو عبر -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# مع INFOS مثل (ملصقات Glyph/CodePoint Min/Max Ranges)] |
| بطاقة | .png هذه البطاقة عبارة |
لتحميل ذلك في IMGUI ، تحتاج إلى دمج أيقونة الخط في الخط الرئيسي الحالي المستخدم في تطبيق IMGUI الخاص بك. لكننا نحتاج فقط إلى تحميل بعض نقاط الترميز ، وليس كل جدول Unicode. هذا هو السبب في أن لديك في ملف MIN/MAX Range 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 ());
}على سبيل المثال هنا في هذا المثال لتحميل الخط المدمج ، لدينا (مع 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 ());
}في كلتا الحالتين ، يكون الاستخدام في الكود هو نفسه:
بعد هذه الخطوة ، عندما يكون لديك عنصر واجهة مستخدم IMGUI للاختبار ، تحتاج فقط إلى وضع في حقل الملصقات ، الرماية التي تريدها ، محددة في ملف الرأس للعلامات:
ImGui::Button (ICON_IGFS_FOLDER_OPEN " Open Font " ); ImGui::Button (IconFonts.IGFS_Labels.FOLDER_OPEN + " Open Font " ); وستحصل على هذه النتيجة: 
يمكنك استخدام علامة تبويب المشكلة لمشكلات التقرير أو طلب الميزات. أو يمكنك أيضًا المساهمة من خلال مناقشة علامات تبويب القضايا ، أو/وسحب الطلبات :)
Imguifontstudio هو برنامج مفتوح المصدر بموجب ترخيص Apache 2.0
المنظر الرئيسي: جزء المصدر 
المنظر الرئيسي: الجزء النهائي مع خطين 
العرض الرئيسي: الجزء النهائي للنسخة 
عينة من البطاقة: 
اسمحوا لي أن أعرف مشروعك مع PCAINER ويمكنني إضافته هنا:
في الوقت الحالي (كما أعرف) ، هناك: