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

Latest

Fixed

  • 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 Assets cache 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, and removeAllPerformanceConfigListeners are deprecated and will be removed from the public API in 2.0. Use getConfigFingerprint instead of getConfigHash, and the unsubscribe function returned by onPerformanceConfigChanged instead of removeAllPerformanceConfigListeners (which also silently unsubscribes the library's own monitors).

Changed

  • detectPerformancePreset / detectWebGLCapabilities no 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). Use detectPerformancePresetAsync to refine the tier off an idle callback, or opt back in with { syncGPUBenchmark: true }.

  • Word wrap now takes precedence over autoScale on width: wrapped text re-flows within maxWidth at full scale (effect paddings no longer trigger scaling), and autoScale shrinks only a single unbreakable word wider than maxWidth or wrapped text exceeding maxHeight.

  • 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, and setStyle({ fillTexture }) can enable, disable, and modify the fill texture after the initial build (all were silent no-ops).

  • Word wrap: breakWords no longer produces lines wider than maxWidth; no phantom empty first line for leading spaces; kerning against the previous line is dropped when a word wraps; identical words get identical widths under letterSpacing; 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 throwing onCircuitBreakerTrip no longer kills the loop; preset edits no longer wipe adaptive recovery state; vsync-locked displays can upgrade past mobile_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.

  • createTextStyle ignores explicitly-undefined style 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.