What’s New

pixijs v8.17.0

v8.17.0
Added
  • SplitText now supports tagStyles, so styled runs are correctly split into per-character Text objects with individual styles preserved
  • Bitmap text now supports whiteSpace modes (normal, pre, nowrap, pre-line, pre-wrap) with proper space and newline collapsing
  • Bitmap text word wrap now supports break-after characters including hyphens, en-dash, em-dash, and soft hyphen
  • Canvas text and split text now render align: 'justify' by distributing extra word spacing
  • Dynamic bitmap fonts scale drop shadow blur and distance proportionally to font size
  • Bitmap font xAdvance now uses true advance width from measureText() instead of bounding-box width
  • Kerning values are correctly scaled by fontScale in dynamic bitmap fonts
  • Add visibleChanged event to container that fires when visibility changes
  • Add function for removing aliases from resolver
Changed
  • BlurFilter now uses an optimized halving strength scheme by default, which changes visual output compared to previous versions
  • Text with align: 'justify' now uses wordWrapWidth for width calculation instead of maxLineWidth, matching CSS behavior, and the last line is no longer stretched
  • breakWords: true in HTMLText now correctly uses CSS word-break: break-word instead of break-all to match behavior of other text renderers
Fixed
  • Prevent filter corruption with TexturePool mipmap separation
  • Correctly handle offset in ColorMatrixFilter
  • Apply global filter offset to ParticleContainer rendering
  • Respect texture trim offset in NineSliceSprite
  • Return valid empty bounds from empty Graphics
  • Graphics getLocalBounds no longer returns stale data between operations in same frame
  • Graphics bounds now account for miter joins at sharp angles
  • Remove listener from old resource in BindGroup.setResource
💾 Download

Installation:

npm install pixi.js@8.17.0

Development Build:

Production Build:

Documentation:

Changed

https://github.com/pixijs/pixijs/compare/v8.16.0...v8.17.0

🚨 Behavior Change
  • BlurFilter now uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Set legacy: true to restore the old behavior.
    new BlurFilter({ legacy: true });
    // or globally:
    BlurFilter.defaultOptions.legacy = true;
    
  • Text with align: 'justify' now uses wordWrapWidth for width calculation instead of maxLineWidth, matching CSS behavior. The last line is no longer stretched.
  • breakWords: true in HTMLText now correctly uses CSS word-break: break-word instead of break-all to match behavior of other text renderers.
🎁 Added
  • feat: add tagged text support to canvasTextSplit by @Zyie in https://github.com/pixijs/pixijs/pull/11949
    • SplitText now supports tagStyles, so styled runs (e.g. <red>Hello</red> <blue>World</blue>) are correctly split into per-character Text objects with individual styles preserved.
  • feat: Improves text rendering and layout handling by @Zyie in https://github.com/pixijs/pixijs/pull/11947
    • Bitmap text now supports whiteSpace modes (normal, pre, nowrap, pre-line, pre-wrap) with proper space/newline collapsing
    • Bitmap text word wrap supports break-after characters (hyphens, en-dash, em-dash, soft hyphen)
    • Canvas text and split text now render align: 'justify' by distributing extra word spacing
    • Dynamic bitmap fonts scale drop shadow blur and distance proportionally to font size
    • Bitmap font xAdvance now uses true advance width from measureText() instead of bounding-box width
    • Kerning values correctly scaled by fontScale in dynamic bitmap fonts
  • feat: add visibleChanged event to container by @ikigai-bjorn-s in https://github.com/pixijs/pixijs/pull/11940
    container.on('visibleChanged', (visible) => {
        console.log('Visibility changed to:', visible);
    });
    
  • feat: Add function for removing aliases from resolver by @Sertion in https://github.com/pixijs/pixijs/pull/11921
🐛 Fixed
🧹 Chores
New Contributors
View original