Today, we are releasing the latest build of Nimi Places 20260812, which introduces hybrid text rendering and limited support for rendering symbols and icons (ideographs), including those rendering in color.
Rendering ideographs in color requires either operating system support or a compatible CBLC/CBDT color font.
Color symbols and icons (ideographs) 🌸 in Nimi Places
Rendering text with color symbols and icons (ideographs) requires either:
- operating system support,
- or the presence of a color font file with CBLC/CBDT tables named "colorIdeographs.ttf" in the application directory.
Hybrid text rendering itself is a multi-method text drawing approach, with rendering methods chosen in advance depending on the needs of the draw operation. While multiple text rendering engines were implemented during development, it was ultimately decided to utilize only those that align with legacy text rendering.
Related to text rendering, localization support has also been improved; the UI text-ellipsis function now handles surrogate pairs and modifiers, as well as strips unnecessary whitespace characters.
Another addition is limited dark mode support. Currently, only managed context menus and notification area icons adapt to dark mode.
Lastly, this build brings multiple fixes, alongside stability and performance improvements.
- Added conditional delaying context menu items selection painting on rapid selection rapid changes.
- Added explicit handling of background erase requests for controls using text rendering.
- Added hybrid text rendering.
- Added limited dark mode support.
- Added limited support for rendering color symbols and icons (ideographs) in text.
- Added limited support for rendering symbols and icons (ideographs) in text.
- Added throttling mouse wheel scrolling of settings window list.
- Added wrapping around, when navigating context menu via keyboard.
- Changed synchronous delayed batch icon repainting in settings window list to instant asynchronous.
- Optimized container window background surface clearing on accent color change.
- Optimized context menu selection updates to use direct DC painting instead of invalidation.
- Revised and unified notification area icon related code.
- Fixed application could terminate on error, before handling prompt to save error report, due to aborting threads.
- Fixed container accent color not being updated on global accent color change, due to inversed conditional for checking if container uses custom accent color.
- Fixed context menu sub-menu sole item being selected, even if is not enabled.
- Fixed context menus not being disposed, due to invalid conditional.
- Fixed crash on older operating systems, not using wallpaper, due to not ensuring that got wallpaper path before processing it.
- Fixed crashing on older operating systems since build 20260705, due to operating system version check before calling API was two versions lower than first operating system version that supported it.
- Fixed crashing, when attempting navigating to context menu sub-menu using keyboard.
- Fixed hex conversion logic accepting A-Z range instead of only A-F range.
- Fixed invalid text placement for generic extension icons.
- Fixed multiple same fonts could be created during initialization, due to optimization preventing using cache at initialization stage.
- Fixed not ensuring that category header for first item under given category in settings window list is visible, when scrolling given item into view.
- Fixed not using integer precision for drawing colorized text with shadow, since build 20260705, due leaving code for early hybrid text rendering.
- Fixed not using RTL supporting controls consistently.
- Fixed processing whole URL during its scheme resolving, due to not using limiter.
- Fixed resolving file name without extension being trimmed to first dot not last.
- Fixed settings window list being scrollable even if not needed.
- Fixed settings window list could be scrolled over using scrollbar due to incorrect maximum calculation.
- Fixed settings window list view could flicker during painting, due to unconditionally drawing background, before main composition.
- Fixed shell menu attached menu not being released, due to reference not being resolved before checking if assigned.
- Fixed text ellipsis function for UI allowing more characters than the requested limit.
- Fixed using control color instead of menu color, when computing contrastful context menu text foreground color.
- Fixed window controls overlapping with larger fonts.
- Removed container item renaming support for changing extensions for consistent dot support in container item names.
- Optimized calculation used for estimating box height for given number of lines using given font.
- Optimized container item renaming.
- Optimized drawing text with colorized shadow to use single image buffer and graphics instance.
- Optimized parallel initialization by load-balancing long-running tasks to prevent worker thread starvation and reduce startup latency.
- Optimized settings window localization caching for rules.
- Revised pictogram button painting and resources management.
- Revised text ellipsis function for UI to handle surrogate pairs and modifiers, as well as strip unnecessary whitespace type characters.
- Inlined rectangles used for rendering A4 paged content into functions.
- Other changes, updates and fixes.
- Switched control refreshing for applicable controls from synchronous UI thread invocation to direct invalidation and redraw.
