diff --git a/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/DWriteFactory.cs b/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/DWriteFactory.cs index 8713ed41453..04c59e281a2 100644 --- a/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/DWriteFactory.cs +++ b/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/DWriteFactory.cs @@ -40,7 +40,7 @@ internal static Text.TextInterface.Factory Instance } } - internal static Text.TextInterface.FontCollection SystemFontCollection + internal static unsafe Text.TextInterface.FontCollection SystemFontCollection { get { @@ -50,7 +50,13 @@ internal static Text.TextInterface.FontCollection SystemFontCollection { if (_systemFontCollection == null) { - _systemFontCollection = DWriteFactory.Instance.GetSystemFontCollection(); + var dwriteFactory = Instance.DWriteFactoryAddRef; + IDWriteFontCollection* dwriteFontCollection = null; + var checkForUpdates = false; + var hr = dwriteFactory->GetSystemFontCollection(&dwriteFontCollection, checkForUpdates); + System.GC.KeepAlive(this); + _systemFontCollection = new MS.Internal.Text.TextInterface.FontCollection(dwriteFontCollection); + dwriteFactory->Release(); } } }