Green Sky b8ca49f7dc Squashed 'external/imgui/imgui/' changes from cb16568fca5..5c1d2d1e4c5
5c1d2d1e4c5 Version 1.91.7
9f8481a842e (Breaking) TreeNode: renamed ImGuiTreeNodeFlags_SpanTextWidth to ImGuiTreeNodeFlags_SpanLabelWidth. (#6937)
21902e2f536 Backends: SDL_GPU: fixed SDL_GPUViewport initialisation. (#8163, #7998, #7988)
c38c18c1a07 Avoid using 1<<31 for ImGuiWindowFlags_NavFlattened as it seems to confuse some binding generators.
c5f60942bdd Demo: tweak demo for ImGuiTreeNodeFlags_LabelSpanAllColumns. (#8318, #3565)
290e402a020 TreeNode, Tables: added ImGuiTreeNodeFlags_LabelSpanAllColumns. (#8318, #3565)
6fb7d442559 Backends: SDL2/SDL3: Comments. (#7672, #7670)
32cea853317 Debug Tools:  Item Picker: Always available in menu. Tweak Demo Debug Options. (#2673, #1651)
00f12b9a09d InputText: Fixed not calling CallbackEdit on revert/clear with Escape key. (#8273) + rework comments.
a604d4f717b Fixed IsItemDeactivated(), IsItemDeactivatedAfterEdit() to work when interrupted before/after the active id is submitted. (#5184, #5904, #6766, #8303, #8004)
a28ffa81c4a Docs: added more references to IsKeyDown(), InFlags. (#8317)
1d962820d8b Error Handling: Turned common EndTable() and other TableXXX functions fail cases into recoverable errors. (#1651, #8314)
0b8ff4b2382 Backends, Examples: Vulkan: add IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE. use in descriptor pools sizes. (#6642)
e7fb97208a8 Backends: Metal: Added missing IM_UNUSED (#8302)
596e09770d3 Backends: SDL3: Added ImGui_ImplSDL3_InitForSDLGPU() for consistency. (#8163, #7998, #7988)
e7998492726 Backends: SDLGPU3: Added sdl_gpu backend (amends). (#8163, #7998, #7988)
8bbccf7a977 Backends: SDLGPU3: Added sdl_gpu backend. (#8163, #7998, #7988)
940d9540f3f Fixed MinGW builds uses UTF-8 friendly _wfopen(). (#8300)
c7983115e9f Fonts: Further tweaks for Ellipsis ("...") character width when automatically created from a single comma character: use AdvanceX as min.
90094a871a5 Fonts: Fixed miscalculation of Ellipsis ("...") character width when automatically created from a single comma character.
1c67a3412e1 BeginChild: also caller to manually set ImGuiNextWindowDataFlags_HasChildFlags / ChildFlags. (#8280)
2b8545684ca Refactor: moved Window Focus related functions to a dedicated section.
bbbdc70f26b Refactor: moved FindBlockingModal() in its section.
e6a7c7689f5 Backends: Metal: Fixed memory leaks. (#8276, #8166)
0514332474f Avoid clang/gcc warnings: -Wnontrivial-memaccess in backends. (#8295, #8129, #8135)
3115ae08159 Demo: Font selector combo sets default focus.
cec8ff1885d Backends: Vulkan: Fixed building with using VK_NO_PROTOTYPES. (#8180)
f04d3cbdaaf Backends: DirectX10: Expose selected render state in ImGui_ImplDX10_RenderState, which you can access in 'void* platform_io.Renderer_RenderState' during draw callbacks. (#6969, #5834, #7468, #3590)
af271e73303 Backends: DX11: Expose vertex constant buffer in ImGui_ImplDX11_RenderState.
93a93071a27 Examples: Add Win32+Vulkan example, amends. (#8180)
38e606a153b Examples: Add Win32+Vulkan example. (#8180)
a2e21727c01 Backends: Vulkan: moved helpers to backend: ImGui_ImplVulkanH_SelectPhysicalDevice(), ImGui_ImplVulkanH_SelectQueueFamilyIndex(). (#8180)
dbf76f62f9e Update issue_template.yml
e7e898ea179 Tables: Fixed TableAngledHeadersRow() creating an infinite horizontal scrolling region when the table is hosted in a viewport with negative coordinates.
d0021e16215 Backends: Metal: Fixed resource leak when using multiple contexts. (#7419)
2f1194a2961 Demo: Added label edition to Property Editor demo + fix an ID issue. (#8266)
80aafbc81b0 Data types: moved ImGuiDataType_String to public API as a convenience enum value only. (#8266)
f169102c8ea Misc: fixed misc/cpp/imgui_stdlib.h/.cpp not supporting IMGUI_DISABLE. (#8294)
a0f907933d8 Happy new year!
c147a59bb0e Clarified alternative for ImGuiButtonFlags_Repeat being ImGuiItemFlags_ButtonRepeat. (#8293)
2d2c7d3f955 Backends: Allegro5: Avoid calling al_set_mouse_cursor() repeatedly since it appears to leak on on X11 (#8256).
87f3109c1af Fix capitalization of ImGuiID in comment. (#8283)
6982ce43f5b InputText: fixed badly broken clipboard copy/bug (#8254, #8242)
18929bd6d6c Internals: merge ScaleWindowsInViewport() from docking branch.
2a600bddcbe ImGuiDebugLogFlags_EventFont should not be set by default (had no effect on master tho)
006721fbd6b Added ImFontAtlas section index in comments + minor tweaks to DX12 backends.
7219fa65c02 Revert "Fonts: Allowing PushFont()/PopFont() to be called outside the imgui frame scope. (#3621)"
61d4bf95dc5 Fonts: Allowing PushFont()/PopFont() to be called outside the imgui frame scope. (#3621)
d30e102f3ad Scrollbar, TestEngine: for consistency, scrollbars are registered in _Menu layer.
91e8f2b0feb Debug Tools: Debug Log: hovering 0xXXXXXXXX values in log is allowed even if a popup is blocking mouse access to the debug log window. (#5855)
eed95027956 Error Handling: Fixed bugs recovering from within a table that created a child window, and from nested child windows. (#1651)
fd932297703 Tables, MultiSelect: Fixed an issue where column width may be mismeasured when calling BeginMultiSelect() while inside a table. (#8250)
9b0e61aaaa7 InputText: sanity checks to e.g. detect non zero-terminated buffers + removed a redundant strlen() call during activation.
ae839620b96 Docs: Updated EXAMPLES.md (#8246)
457fae24e7a Silence more zealous GCC warning. (#8241)
cd6c83cdccb Fixes GCC warnings (#8241)
32f11402f96 InputText: use TextSrc more consistently to facilitate accessing user buffer in text processing code. (#8242)
e900571ac24 InputText: Fixed issue when activating a ReadOnly field when the underlying value is being modified. (#8242)
f31d53093b5 TestEngine: for consistency, title bar / window items are registered in _Menu layer.
13c4084362b Nav: Fixed an issue where Alt key would clear current active item on windows with the ImGuiWindowFlags_NoNavInputs flag. (#8231)
f5f11e94be3 InputText: Fixed a bug where character replacements performed from a callback were not applied when pasting from clipbard. (#8229)
324d4bb1402 InputText: calling ReloadUserBuf doesn't clear undo stack. (#2890)
8237ab450e3 Drags, Sliders: store initial value on activation, as a convenience for some mods. (#8223)
4ad5496474b Drags: Added ImGuiSliderFlags_NoSpeedTweaks flag to disable keyboard modifiers altering the tweak speed. (#8223)
f9f4e22f6f7 InputText: some tidying up. (#7925)
4cc464eadc1 BeginListBox(): Comments (#8220)
1d069cf4352 Fonts: store 0 for unset EllipsisChar/FallbackChar. Pull config in BuildLookupTable().
e487eb9da08 Backends: Vulkan: Fixed setting VkSwapchainCreateInfoKHR::preTransform for platforms not supporting VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR. (#8222)
f25665f3600 Version 1.91.7 WIP
993fa347495 Version 1.91.6
2ca83f0bc72 Fixed missing symbols when using IMGUI_DISABLE_DEMO_WINDOWS (e.g. with ImPlot) (#8221)
c3ffd4c53e9 Misc: Added IMGUI_USE_LEGACY_CRC32_ADLER to use old tables. (#8169, #4933)
d78e823449f InputText: added ImGuiInputTextFlags_ElideLeft. (#1442, #1440, #4391, #7208, #8216)
d2645423de8 InputText: reactivating last activated InputText() doesn't restore horizontal scrolling.
f3147f446a7 Backends: OpenGL3: call glGetString(GL_VERSION) even in GS ES 2.0 path. (#8197)
921c22f5adc Examples: GLFW+OpenGL3, SDL3+OpenGL3: Provide ES3 context creation code + failure handling. (#8197)
6b348622bb8 Examples: SDL2+OpenGL3: Provide ES3 context creation code + failure handling. (#8197)
fce07bb1cb4 Don't enable SSE4 under Emscripten - Fix. (#8213, #8169, #4933)
53dd7552dcb Backends: DX12: let the user specifies the DepthStencilView format. (#8217)
2671f68f7f8 Don't enable SSE4 under Emscripten (#8213, #8169, #4933)
3f3c62a3c99 ScrollbarEx: clarify use of flags and make them optional. (#8215)
18e5d769fd7 Backends: DX10: create sampler outside of ImGui_ImplDX11_CreateFontsTexture().
43fbd7ce840 Backends: standardized top of file comments.
566558b17c5 Replacing NULL with nullptr in examples/backends when they creeped back. (#6313, #7071, #4537)
6f6ac84228a Demo: Assets Browser: use correct axis for layout computation, to allow making items non-square. (#8207)
70b6ba42402 Clarify that IMGUI_USE_BGRA_PACKED_COLOR requires backend support. (#8201)
923ca4765a8 Backends: OpenGL3: Fix compile error with IMGUI_IMPL_OPENGL_ES2 and IMGUI_IMPL_OPENGL_DEBUG (#8197)
43c51eb12d1 Tables: fixed SetNextWindowScroll() value being ignored by BeginTable() during the first frame or when scrolling flags have changed. (#8196)
ee2119d7cbe imgui_freetype: Fix build broken by 19a1f2a (#8107)
19a1f2a5d2c Fonts: fixed AddCustomRect() not being packed with TexGlyphPadding + not accounted in surface area. (#8107)
9b26743c6b3 SliderAngle: only write back to value v_rad on value_changed. (#8193)
dda7672008e Backends: Vulkan: removed sizeof(ImTextureID) check.
c1123fd8d05 Backends: Vulkan: small refactor to use a texture struct.
90dd510df1e Backends: DX11: create sampler outside of ImGui_ImplDX11_CreateFontsTexture().
96877eb9c30 Backends: Vulkan: fixed build with VK_NO_PROTOTYPES. (#8172, #4867)
2d660108b27 Misc: amend crc32 to use _mm_crc32_u32. (#8169, #4933)
326dc95f9c7 Misc: use native crc32 instructions on SEE 4.2 targets. (#8169, #4933)
e6dd8f626a1 Misc: changed CRC32 table to use crc32c polynomial in order to be compatible with SSE 4.2 instructions. (#8169, #4933)
61ab94d5534 Backends: Vulkan: Make descriptor pool optional (#8172, #4867)
9b273294377 Comments on ImageButton(). (#8165) + comments on Emscripten -sSINGLE_FILE option. (#8153)
5b7feebfd8f Backends: DX9: extract RGBA convert loop as we are going to need it more often.
dfbf1b4f6b1 Backends: DX9: cache result of ImGui_ImplDX9_CheckFormatSupport() as we are going to need it more often.
20360e00ceb Merge miscellaneous small changes to reduce drift with texture update branch.
551b6c4d662 Tools: binary_to_compressed_c: added -u8/-u32/-base85 export options.
d0e870aad2c Misc: changed embedded ProggyClean encoding to save a bit of binary space (~12kb to 9.5kb). (#8161)
5ae3dd52a07 Fonts: added IMGUI_DISABLE_DEFAULT_FONT macro. (#8161)
eb0ad66d88d Demo: example tree used by Property Editor & Selection demos properly freed on app closure. (#8158)
142827f7d86 Backends: DX12: rework legacy path for handling ImGui_ImplDX12_Init() being called with space for a single descriptor.
08400f5be7f Backends: DX12: tidying up, added a ImGui_ImplDX12_Texture helper struct.
40b2286d16e (Breaking) Backends: DX12: changed ImGui_ImplDX12_Init() signature. Added ImGui_ImplDX12_InitInfo. Added support for Srv allocators.
3260ea69545 Examples: Win32+DX12: Tweaks.
8be0723fb7a Amend Changelog to better document how changing button behavior of InputInt/InputFloat step buttons affected some mis-uses (#8149)
e97b97467e4 Error Handling: fixed cases where recoverable error handling would crash. (#1651)
3381ab423b3 Version 1.91.6 WIP + fixed typo in tooltip.
f401021d5a5 Version 1.91.5
31b967f098d Fix 01d27a4 (sorry I cherry-picked from wrong branch)
01d27a4acde Internals: added IM_LIKELY(), IM_UNLIKELY() helper macros (yet unused). Added ImFontGetCharAdvanceX() macro.
419a9ada16e Ignore clang warning Wnontrivial-memaccess (#8129, #8135)
17bd417a3d1 AddCustomRectFontGlyph: added storage for Colored bool in ImFontAtlasCustomRect. (#8133)
3b683927ee6 imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the first font in a merged set has no loaded glyph. (#8081)
3543dfda953 Docs: document removal of ImFont const qualifier as potentially breaking.
d97bbf19042 Tabs, Style: made ImGuiCol_TabDimmedSelectedOverline alpha 0 (not visible) in default styles.
df0776e931d (Breaking) Removed ImGuiKey_COUNT. (#4921)
738d6db3e6b (Breaking) Removed used of ImGuiKey_KeysData_SIZE, ImGuiKey_KeysData_OFFSET. (#4921)
6f287dd16d5 (Breaking) Removed pre-1.87 obsolete io.KeyMap[], io.KeysDown[], io.NavInputs[]. Remove IMGUI_DISABLE_OBSOLETE_KEYIO. (#4921)
57ab2b42260 Fixed unused function warning (#8130)
ec2f1d69c8d Docs: word-wrap some the older changelogs.
63234f8dd0a InputText: Internals: rename CurLenA->TextLen, InitialTextA->TextToRevertTo.
be2d006e2e7 Align warning blocks. Removed -Wunused-function, -Wmissing-prototypes from imgui_internal.h
88e232739bc Ignore clang warning Wnontrivial-memaccess (#8129)
d4791f1bbef Fixed a comment typo. (#8128)
82d0584e7bb InputText: using CurLenA instead of TextA.Size for correctness. (#7925)
75f83de52ab InputText: fixed a bug (regression in 1.91.2) where modifying text buffer within a callback would sometimes prevents further appending to the buffer. (#7925)
f77d22837c0 Examples: Android+OpenGL: Using ALooper_pollOnce() instead of ALooper_pollAll(). (#8013)
71c77c081ac Demo: added a "Windows" section.
772ca9e9a9d Log/Capture: added experimental io.ConfigWindowsCopyContentsWithCtrlC config option.
f37a9a27e58 Log/Capture: reworked scope + decorating menus, tabs.
a4fcc93f4af Log/Capture: renaming ImGuiLogType to ImGuiLogFlags
9a0dff1bc56 Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use PressedOnClick instead of PressedOnClickRelease when unspecified.
0bde57c25a9 Font, Misc: remove qualifier from most font functions.
3b8c7d0326d Backends: Win32: rework to add ImGui_ImplWin32_WndProcHandlerEx() not using current context (experimental). (#8069, #6293, #5856, #586)
d67e2eea1a0 Backends: Win32: internal rename.
81b689b9693 Backends: OpenGL3: added additional debug GL_CALL enclosure for glCreateShader() calls. (#8104)
81cfe096578 Selectable, Style: selected Selectable() use _Header color instead of an arbitrary lerp between _Header and _HeaderHovered. (#8106, #1861)
ccb6646baea Examples: added SDL3+Vulkan example. (#8084, #8085)
1039b7f543c Examples: added more build_win64.bat helpers.
a908d73c16a Backends: avoid missing -Wmissing-declaration warning.  (#8087, #7997)
b4033b37ad7 Backends: WGPU: update for Dawn WGPU String usage. (#8082, #8083)
a855bd8df3c Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the actual include. (#8095, #7967, #3190)
06092a9756b Backends: SDL2, SDL3: SDL_EVENT_MOUSE_WHEEL event doesn't require dividing by 100.0f on Emscripten. (#4019, #6096, #1463)
062e580436e Fixed copy/paste error in DebugModeWindow() (#8094)
4994e75852a Backends: DX12: Unmap() call specify written range.
41f02825fc5 Version 1.91.5 WIP
99109c0b3b0 Amend Changelog, oops didn't get it in the previous commit.
83b64b8be22 Version 1.91.4
ab9ce2a927a Nav: added io.ConfigNavCursorVisibleAuto, io.ConfigNavCursorVisibleAlways. (#1074, #2048, #7237, #8059, #3200, #787)
3982cb35dcf Nav, Docs: consistently use "keyboard/gamepad" instead of sometimes "gamepad/keyboard".
1ff9768aa30 Nav: (Breaking) renamed ImGuiCol_NavHighlight to ImGuiCol_NavCursor. (#1074, #2048, #7237, #8059, #1712, #7370, #787)
634a7ed9886 Nav: added SetNavCursorVisible(). (#1074, #2048, #7237, #8059)
0bae2db77fd Internals: (Breaking) renamed NavDisableMouseHover to NavHighlightItemUnderNav.
0536ace2b6c Internals: (Breaking) renamed RenderNavHighlight() to RenderNavCursor(), ImGuiNavHighlightFlags to ImGuiNavRenderCursorFlags. (#1074, #2048, #7237, #8059, #1712, #7370, #787)
23b655f8e3a Internals: (Breaking) changed g.NavDisableHighlight to g.NavCursorVisible : same logic but inverted value. (#1074, #2048, #7237, #8059, #1712, #7370, #787)
7a56b411247 Nav: added io.ConfigNavEscapeClearFocusItem. (#8059, #2048, #1074, #3200)
db26fe7ca8d Debug Tools: Metrics: Fixed a crash when browsing "InputText" section before using one. (#8071)
604f2fa84aa InputScalar: added an assert to clarify that ImGuiInputTextFlags_EnterReturnsTrue is not supported by InputFloat, InputInt etc. (#8065)
38617a5ad34 Internals: remove ImGuiInputTextFlags_NoMarkEdited and g.LockMarkEdited n favor of ImGuiItemFlags_NoMarkEdited.
0f6a463fae5 Internals: rename ImGuiTreeNodeStackData::InFlags and ImGuiNavItemData::InFlags to ItemFlags too.
e6b5cafe65f Internals: rename ImGuiLastItemData::InFlags -> ItemFlags. ImGuiNextItemData::Flags -> HasFlags to avoid mistakes.
706438a43c3 Disabled: clicking a disabled item focuses parent window. Fix/amend 83ecc84. (#8064)
04d9a045570 imgui_freetype: Added support for plutosvg to render OpenType SVG fonts.  (#7927, #7187 + #6591, #6607)
83ecc846dc4 Disabled: clicking a disabled item focuses parent window. (#8064)
67e5f3505d4 InvisibleButton: disable navigation properly + added ImGuiButtonFlags_EnableNav to enable navigation. (#8057)
971d243a872 Fixed typo (#8063)
49a9eee33f2 Commented out obsolete internals's SetItemUsingMouseWheel() (#2891), TreeNodeBehaviorIsOpen() (#4814, #5423, #282, #2958, #924)
50de550ecdd Tooltips: fixed incorrect tooltip positioning when using keyboard/gamepad navigation (1.91.3 regression). (#8036)
42f47590f98 Fixed ad37b79 breaking IsItemHovered()->IsItemFocused() passthrough for navigation.
97da66209cf Internals: removing ImGuiButtonFlags_Repeat (in favor of ImGuiItemFlags_ButtonRepeat), ImGuiButtonFlags_DontClosePopups (unused)
462d1674568 Nav: rectangle highlight not rendered for items with ImGuiItemFlags_NoNav. (#8057)
ad37b79bca2 Nav: shallow tidying up.
626d358e55e Nav: fixed Ctrl+Tab so when starting with no focused window it starts from the top-most window. (#3200)
b0010389011 Nav: added io.ConfigNavEscapeClearFocusWindow to clear focused window on Escape. (#3200)
ba5161740ea Amend d885fe4, fixes default value of ConfigNavCaptureKeyboard. (#2517, #2009)
d885fe4dd0c (Breaking) moved ImGuiConfigFlags_NavEnableSetMousePos -> io.ConfigNavMoveSetMousePos, ImGuiConfigFlags_NavNoCaptureKeyboard -> ConfigNavCaptureKeyboard. (#2517, #2009)
349af8766cb InputText: ensure mouse cursor is set regardless of whether keyboard mode is enabled or not. (#6417)
20ae8bd4c32 Error Handling: turned IsItemHovered()/IsWindowHovered() checks into IM_ASSERT_USER_ERROR. (#1651)
c4bc6744824 IO: WantCaptureKeyboard is never set when ImGuiConfigFlags_NoKeyboard is enabled. (#4921)
98d52b7b26c DrawList: AddCallback() added an optional size parameter allowing to copy and store any amount of user data for usage by callbacks: (#6969, #4770, #7665)
f29e505d94e CI: remove --disableLicenseExpirationCheck.
a0b811dd373 Backends: SDLRenderer2/3: expose selected state in ImGui_ImplXXXX_RenderState structures during render loop. (#6969, #5834, #7468, #3590 + #7616)
9fbc3134591 InputText: amend 661bba0. (#8048)
661bba09ce1 InputText: fixed an issue with not declaring ownership of Delete/Backspace/Arrow keys. (#8048)
f3d242a90d6 Tables: fixed initial auto-sizing issue with synched-instances. (#8045, #7218)
c3629adbeb2 Backends: Metal: fixed ImTextureID cast. (#1641)
6b8accbfa1b Fixed building when defining ImTextureID to a multi-token name. (#1641)
92b94980c69 (Breaking) Default ImTextureID to use a Im64 instead of void* (#1641)
19b494df89f Examples: DirectX12: update Windows SDK version.
f890d853816 Backends: Fixed typo in comments from old wip work 'io.BackendRendererRenderState' -> 'platform_io.Renderer_RenderState'.  (#6969, #5834, #7468, #3590
42206b3d513 Backends: DX9, DX10, DX11, DX12, OpenGL, Vulkan, WGPU: Changed default texture sampler to Clamp instead of Repeat/Wrap. (#7468, #7511, #5999, #5502)
74dd38d27c9 Backends: Vulkan: fixed warnings when building in 32-bit mode.
e94f95d82b9 Backends: DX11, DX12, Vulkan, WGPU: Expose some backend-specific render state usable for callbacks. (#6969, #5834, #7468, #3590)
9bd5d8a2405 Backends: misc renaming of locals. Use 'draw_list' instead of 'cmd_list'. Avoid using 'ctx'.
1dde20ff4a1 Version 1.91.4 WIP

git-subtree-dir: external/imgui/imgui
git-subtree-split: 5c1d2d1e4c562a2ed3efbc64476e703a655b45fd
2025-01-18 13:40:21 +01:00
..

imgui_freetype

Build font atlases using FreeType instead of stb_truetype (which is the default font rasterizer).
by @vuhdo, @mikesart, @ocornut.

Usage

  1. Get latest FreeType binaries or build yourself (under Windows you may use vcpkg with vcpkg install freetype --triplet=x64-windows, vcpkg integrate install).
  2. Add imgui_freetype.h/cpp alongside your project files.
  3. Add #define IMGUI_ENABLE_FREETYPE in your imconfig.h file

About Gamma Correct Blending

FreeType assumes blending in linear space rather than gamma space. See FreeType note for FT_Render_Glyph. For correct results you need to be using sRGB and convert to linear space in the pixel shader output. The default Dear ImGui styles will be impacted by this change (alpha values will need tweaking).

Testbed for toying with settings (for developers)

See https://gist.github.com/ocornut/b3a9ecf13502fd818799a452969649ad

Known issues

  • Oversampling settings are ignored but also not so much necessary with the higher quality rendering.

Comparison

Small, thin anti-aliased fonts typically benefit a lot from FreeType's hinting: comparing_font_rasterizers

Colorful glyphs/emojis

You can use the ImGuiFreeTypeBuilderFlags_LoadColor flag to load certain colorful glyphs. See the "Using Colorful Glyphs/Emojis" section of FONTS.md.

colored glyphs

Using OpenType SVG fonts (SVGinOT)

  • SVG in Open Type is a standard by Adobe and Mozilla for color OpenType and Open Font Format fonts. It allows font creators to embed complete SVG files within a font enabling full color and even animations.
  • Popular fonts such as twemoji and fonts made with scfbuild is SVGinOT
  • Two alternatives are possible to render SVG fonts: use "lunasvg" or "plutosvg". plutosvg will support some more fonts (e.g. NotoColorEmoji-Regular) and may load them faster.

Using lunasvg

Requires: lunasvg v2.3.2 and above

  • Add #define IMGUI_ENABLE_FREETYPE_LUNASVG in your imconfig.h.
  • Get latest lunasvg binaries or build yourself. Under Windows you may use vcpkg with: vcpkg install lunasvg --triplet=x64-windows.

Using plutosvg (and plutovg)

  • Add #define IMGUI_ENABLE_FREETYPE_PLUTOSVG in your imconfig.h.
  • Compile and link with plutosvg and plutovg (which is required by plutosvg)

Compilation hints for plutovg

  • Compile all source files in plutovg/source/*.c
  • Add include directory: plutovg/include + plutovg/stb

Compilation hints for plutosvg

  • Compile plutosvg/source/plutosvg.c
  • Add include directory: plutosvg/source
  • Add define: PLUTOSVG_HAS_FREETYPE
  • Link with: plutovg, freetype