documentation/docfx/releases/4.147.0.md
Preview only · Superseded by 4.148.0 · Never released as stable — these changes rolled up into 4.148.0 · NuGet
API changes · SkiaSharp API diff · HarfBuzzSharp 8.3.1.6
Version 4.147.0 was the first major-version v4 preview of SkiaSharp, upgrading the Skia engine to milestone 147 and introducing a raft of new capabilities: variable font support in both SkiaSharp and HarfBuzzSharp, color font palette handling, animated WebP encoding via SKWebpEncoder, zero-copy stream-to-data conversion, and a new HBColor struct. Platform coverage expanded with Linux Bionic native assets, Tizen x64/arm64 native builds, and C# 13 support on legacy TFMs. All of this work shipped cumulatively in 4.148.0. Community contributors @ramezgerges, @4Darmygeometry, @SimonvBez, @ebariche, and @Copilot all contributed meaningful features in this cycle.
HBFace and HBFont variable-instance APIs to both SkiaSharp and HarfBuzzSharp, enabling programmatic access to OpenType font variation axes. ❤️ @ramezgerges (#3703)SKWebpEncoder — Animated WebP encoding — New encoder for producing multi-frame animated WebP files. (#3771)SKStream.GetData() — Zero-copy conversion from a stream to SKData, avoiding unnecessary memory allocations. (#3772)SKSamplingOptions on SKSurface.Draw / SKCanvas.DrawSurface — Adds filtering-quality overloads for surface-to-canvas drawing. ❤️ @Copilot (#3491)HBColor struct — Proper managed type for hb_color_t, enabling correct color glyph API usage in HarfBuzzSharp. (#4000)SKPath finalizer crash — Resolves a crash when SKPathBuilder is collected before the SKPath it created. ❤️ @ramezgerges (#3796).26.0 TFMs for library projects and unversioned TFMs for app projects, matching the .NET MAUI convention. (#3798)SKGLView not rendering after MAUI tab switch — Resolves a rendering blank after switching tabs in a MAUI TabBar on Android. ❤️ @SimonvBez (#3076)net48 / netstandard targets. ❤️ @4Darmygeometry (#3642)| Platform | What's New |
|---|---|
| 🍎 Apple | Fixed platform TFMs for libraries vs apps |
| 🤖 Android | Fixed SKGLView blank after MAUI tab switch |
| 🌐 WebAssembly | Dropped pre-.NET 8 Emscripten builds |
| 🐧 Linux | Linux Bionic native assets |
| 📦 General | Tizen x64/arm64 native builds; C# 13 on legacy TFMs |
| Contributor | What They Did |
|---|---|
| @ramezgerges | Skia m147 engine bump; variable font support; SKPath finalizer fix; default-typeface fix; SkiaSharpGenerator Linux support |
| @Copilot | SKSamplingOptions overloads for SKSurface.Draw and SKCanvas.DrawSurface |
| @4Darmygeometry | Linux Bionic native assets; C# 13 support on legacy TFMs |
| @SimonvBez | Fixed Android SKGLView rendering after MAUI tab switch |
| @ebariche | Reduced SkiaFiddle WASM application size by ~60% |
Added HBColor struct, dependency updates (libjpeg-turbo, freetype, zlib), missing API wrappers and naming fixes, Blazor Gallery redesign, and dropped pre-.NET 8 WASM Emscripten support.
Added SKWebpEncoder for animated WebP, SKStream.GetData() for zero-copy conversion, fixed SKPath finalizer crash, fixed Apple platform TFMs, and expanded the gallery with five new interactive samples.
Launched SkiaSharp v4: upgraded to Skia m147, introduced variable font support, color font palettes, SKSamplingOptions overloads, Linux Bionic native assets, Tizen x64/arm64 native builds, fixed Android SKGLView rendering, fixed default-typeface resolution, and added C# 13 support on legacy TFMs.