The branch split the text-measurement layer out of Pretext itself. The engine is now backend-agnostic and resolves measurement through Pretext.Contracts.
If you do not set a factory explicitly, Pretext:
Pretext*.dll assembliesPretextTextMeasurerFactoryAttribute declarationsIsSupported is truePriority| Backend | OS support | Priority |
|---|---|---|
Pretext.DirectWrite |
Windows | 100 |
Pretext.FreeType |
Linux | 100 |
Pretext.CoreText |
macOS | 100 |
Pretext.SkiaSharp |
Any OS | 0 |
That means a host-native backend wins on its matching OS, while Pretext.SkiaSharp stays available as the portable fallback.
Use PretextLayout.SetTextMeasurerFactory(...) when:
using Pretext;
using Pretext.CoreText;
PretextLayout.SetTextMeasurerFactory(new CoreTextTextMeasurerFactory());
Calling SetTextMeasurerFactory(...) also clears the cached font state so the new backend takes effect immediately.
If no supported backend is found, Pretext throws and tells you to either:
Pretext.SkiaSharp, orPretextLayout.SetTextMeasurerFactory(...)If multiple supported backends exist at the same highest priority, Pretext throws and requires an explicit selection.
| Host type | Recommended packages |
|---|---|
| Windows-native host | Pretext + Pretext.DirectWrite |
| Linux-native host | Pretext + Pretext.FreeType |
| macOS-native host | Pretext + Pretext.CoreText |
| Generic SkiaSharp host | Pretext + Pretext.SkiaSharp |
| Uno app | Pretext.Uno |