<PackageReference Include="System.Drawing.Common" Version="10.0.0-preview.7.25380.108" />

FontCollection

Provides a base class for installed and private font collections.
using System.Runtime.CompilerServices; using Windows.Win32; using Windows.Win32.Foundation; using Windows.Win32.Graphics.GdiPlus; namespace System.Drawing.Text { public abstract class FontCollection : IDisposable, IPointer<GpFontCollection> { private unsafe GpFontCollection* _nativeFontCollection; unsafe IntPtr IPointer<GpFontCollection>.Pointer { get { return (IntPtr)_nativeFontCollection; } } [Nullable(1)] public unsafe FontFamily[] Families { [NullableContext(1)] get { int num = default(int); PInvokeGdiPlus.GdipGetFontCollectionFamilyCount(_nativeFontCollection, &num).ThrowIfFailed(); if (num == 0) return Array.Empty<FontFamily>(); bool fromInstalledFontCollection = GetType() == typeof(InstalledFontCollection); GpFontFamily*[] array = new GpFontFamily*[num]; fixed (GpFontFamily** gpfamilies = array) { PInvokeGdiPlus.GdipGetFontCollectionFamilyList(_nativeFontCollection, num, gpfamilies, &num).ThrowIfFailed(); } FontFamily[] array2 = new FontFamily[num]; for (int i = 0; i < num; i++) { array2[i] = new FontFamily(array[i], fromInstalledFontCollection); } GC.KeepAlive(this); return array2; } } private protected unsafe FontCollection(GpFontCollection* nativeFontCollection) { _nativeFontCollection = nativeFontCollection; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected unsafe virtual void Dispose(bool disposing) { _nativeFontCollection = null; } ~FontCollection() { Dispose(false); } } }