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:
- https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.min.mjs
Documentation:
Changed
https://github.com/pixijs/pixijs/compare/v8.16.0...v8.17.0
🚨 Behavior Change
BlurFilternow uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Setlegacy: trueto restore the old behavior.new BlurFilter({ legacy: true }); // or globally: BlurFilter.defaultOptions.legacy = true;- Text with
align: 'justify'now useswordWrapWidthfor width calculation instead ofmaxLineWidth, matching CSS behavior. The last line is no longer stretched. breakWords: trueinHTMLTextnow correctly uses CSSword-break: break-wordinstead ofbreak-allto match behavior of other text renderers.
🎁 Added
- feat: add tagged text support to canvasTextSplit by @Zyie in https://github.com/pixijs/pixijs/pull/11949
SplitTextnow supportstagStyles, so styled runs (e.g.<red>Hello</red> <blue>World</blue>) are correctly split into per-characterTextobjects 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
whiteSpacemodes (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
bluranddistanceproportionally to font size - Bitmap font
xAdvancenow uses true advance width frommeasureText()instead of bounding-box width - Kerning values correctly scaled by
fontScalein dynamic bitmap fonts
- Bitmap text now supports
- 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
- fix: prevent filter corruption with TexturePool mipmap separation by @vkarponen in https://github.com/pixijs/pixijs/pull/11865
- fix: blur by reducing strength on each pass by @Zyie in https://github.com/pixijs/pixijs/pull/11909
- fix: Reduce work done by the blur shader by @Sertion in https://github.com/pixijs/pixijs/pull/11917
- fix: Correctly handle offset in ColorMatrixFilter by @Sertion in https://github.com/pixijs/pixijs/pull/11925
- fix: Apply global filter offset to ParticleContainer rendering by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11882
- fix: respect texture trim offset in NineSliceSprite by @shtse8 in https://github.com/pixijs/pixijs/pull/11919
- fix: return valid empty bounds from empty Graphics by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11908
- fix: Graphics getLocalBounds returns stale data between operations in same frame by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11886
- fix: Graphics bounds account for miter joins at sharp angles by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11884
- fix: BindGroup crash when resource destroyed in batched group by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11876
- fix: remove listener from old resource in BindGroup.setResource by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11901
- fix: removeAllListeners() on Renderer.destroy() by @taye in https://github.com/pixijs/pixijs/pull/11951
- fix: correct minFPS/maxFPS mutual clamping in Ticker by @Zyie in https://github.com/pixijs/pixijs/pull/11952
- fix: invalidate cached source in color.setAlpha() to prevent stale alpha reuse by @darthvader58 in https://github.com/pixijs/pixijs/pull/11924
- fix: emit removed event when using addChildAt by @aSipz in https://github.com/pixijs/pixijs/pull/11912
- fix: guard against missing characters and kerning data in bitmap text by @stargazer-2697 in https://github.com/pixijs/pixijs/pull/11907
- fix: copy modifier keys from TouchEvent to normalized touch objects by @kaigritun in https://github.com/pixijs/pixijs/pull/11906
- fix: use quotes when loading a Web font to support old versions of Chrome by @adngdb in https://github.com/pixijs/pixijs/pull/11902
- fix: move DOMPipe registration to init.ts to fix Web Worker support by @Zyie in https://github.com/pixijs/pixijs/pull/11953
- fix: clarify BackgroundLoader cache behavior in documentation by @imuday984 in https://github.com/pixijs/pixijs/pull/11935
🧹 Chores
- chore: Add PixiJS development playground by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11878
- chore: overhaul documentation system with TypeDoc plugins, examples, and guides by @Zyie in https://github.com/pixijs/pixijs/pull/11905
- chore: consolidate build and test scripts by @Zyie in https://github.com/pixijs/pixijs/pull/11910
- chore: expand build, test, and API documentation by @Zyie in https://github.com/pixijs/pixijs/pull/11956
- chore: combine visual test diff output into single labeled image by @Zyie in https://github.com/pixijs/pixijs/pull/11954
- chore: add ESLint rule enforcing ~/ imports in test and scene files by @Zyie in https://github.com/pixijs/pixijs/pull/11899
- chore: reorganizes visual scene tests into logical subdirectories by @Zyie in https://github.com/pixijs/pixijs/pull/11872
- chore: Improve test server setup by dynamically allocating port by @Zyie in https://github.com/pixijs/pixijs/pull/11874
- chore: increase HTMLText visual test wait from 250ms to 350ms by @Zyie in https://github.com/pixijs/pixijs/pull/11891
- chore: remove tsc-silent dependency by @Zyie
- docs: document filters + RenderLayer limitation by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11883
New Contributors
- @adngdb made their first contribution in https://github.com/pixijs/pixijs/pull/11902
- @kaigritun made their first contribution in https://github.com/pixijs/pixijs/pull/11906
- @darthvader58 made their first contribution in https://github.com/pixijs/pixijs/pull/11924
- @Sertion made their first contribution in https://github.com/pixijs/pixijs/pull/11925
- @shtse8 made their first contribution in https://github.com/pixijs/pixijs/pull/11919
- @aSipz made their first contribution in https://github.com/pixijs/pixijs/pull/11912
- @ikigai-bjorn-s made their first contribution in https://github.com/pixijs/pixijs/pull/11940
- @vkarponen made their first contribution in https://github.com/pixijs/pixijs/pull/11865
- @imuday984 made their first contribution in https://github.com/pixijs/pixijs/pull/11935
- @taye made their first contribution in https://github.com/pixijs/pixijs/pull/11951