Changelog
All notable changes to funky-pixi-text are documented here. The format is based on Keep a Changelog, and the library adheres to Semantic Versioning.
v1.1.1
LatestFixed
The published bundles no longer inline pixi.js (it is a peer dependency and now resolves to the consumer's copy). This removes ~500 kB per bundle and fixes pixi's module state being split between two copies — the
Assetscache and loader-parser registry the library uses are now the same ones the consuming app uses. (1.1.0 was published with the inlined bundles.)
v1.1.0
Deprecated
validatePartialConfig,validatePresetsData,getConfigHash, andremoveAllPerformanceConfigListenersare deprecated and will be removed from the public API in 2.0. UsegetConfigFingerprintinstead ofgetConfigHash, and the unsubscribe function returned byonPerformanceConfigChangedinstead ofremoveAllPerformanceConfigListeners(which also silently unsubscribes the library's own monitors).
Changed
detectPerformancePreset/detectWebGLCapabilitiesno longer run the blocking GPU benchmark when heuristics can't tier the GPU — they assume a mid tier instead (the benchmark caused 100–500 ms main-thread stalls at startup). UsedetectPerformancePresetAsyncto refine the tier off an idle callback, or opt back in with{ syncGPUBenchmark: true }.Word wrap now takes precedence over
autoScaleon width: wrapped text re-flows withinmaxWidthat full scale (effect paddings no longer trigger scaling), andautoScaleshrinks only a single unbreakable word wider thanmaxWidthor wrapped text exceedingmaxHeight.Missing glyphs now log a one-time warning per font/character instead of silently rendering as a space-width gap.
Empty text measures zero height (previously one line height).
Fixed
Runtime style updates:
setStyle({ fontName })re-points the atlas texture, andsetStyle({ fillTexture })can enable, disable, and modify the fill texture after the initial build (all were silent no-ops).Word wrap:
breakWordsno longer produces lines wider thanmaxWidth; no phantom empty first line for leading spaces; kerning against the previous line is dropped when a word wraps; identical words get identical widths underletterSpacing; all breakable whitespace is trimmed at line ends.Font loading: unload+reload of a font no longer returns a destroyed texture; metrics are fetched directly instead of re-entering the pixi loader on the in-flight URL; font cache is keyed by font-data identity (fixes stale glyph data after reloads and a lifetime leak).
destroy()during a pending build no longer resurrects GPU resources.Shaders: inline drop shadows are no longer double-attenuated by
(1 - alpha)²; linear gradients render correctly at all angles (180° no longer collapses to a single color); position/UV varyings use high precision on mobile GPUs (fixes wobbly glyph edges); NaN speckles in fp16 shadow tails eliminated; derivative calls hoisted out of non-uniform control flow.Performance monitor:
destroy()/stop()/start()from user callbacks is safe; a throwingonCircuitBreakerTripno longer kills the loop; preset edits no longer wipe adaptive recovery state; vsync-locked displays can upgrade pastmobile_high; restarted monitors no longer serve stale stats; catastrophic frame stalls are clamped into stats instead of dropped;start()is SSR-safe; Chromium Edge is detected correctly.createTextStyleignores explicitly-undefinedstyle values (previously produced NaN layouts).
Performance
Drop shadows: small blurs composite inline in the text quad (half the quads); the compiled Gaussian kernel adapts to the actual blur radius; far-offset shadows use the dedicated pass; fully transparent shadows skip their render pass entirely; quads are padded for the preset-clamped blur, not the raw style value.
Kerning lookup no longer allocates a string per character pair in the layout hot path.
GL draw-call counters use fixed-arity wrappers (no per-draw-call argument allocation) and are stack-safe across multiple monitors.
v1.0.1
Changed
Fix WeakRef support on Safari.
Fix build issue on older iPhones.
Properly detect WebGL derivatives capability to support older phones.
v1.0.0
Added
Initial release: MSDF text rendering for PIXI.js v7 with word wrap, auto-scaling, kerning, gradients, stroke, drop shadow, extrusion, texture fill, adaptive performance presets, and a performance monitor.