ComPtr<IDWriteFontSet> GetLocalFonts(ComPtr<IDWriteFontSet> const& fonts) { auto factory = As<IDWriteFactory3>(CustomFontManager::GetInstance()->GetSharedFactory()); ComPtr<IDWriteFontSetBuilder> fontSetBuilder; ThrowIfFailed(factory->CreateFontSetBuilder(&fontSetBuilder)); const uint32_t fontCount = fonts->GetFontCount(); for (uint32_t i = 0; i < fontCount; ++i) { ComPtr<IDWriteFontFaceReference> fontFaceReference; ThrowIfFailed(fonts->GetFontFaceReference(i, &fontFaceReference)); if (fontFaceReference->GetLocality() == DWRITE_LOCALITY_LOCAL) { ThrowIfFailed(fontSetBuilder->AddFontFaceReference(fontFaceReference.Get())); } } ComPtr<IDWriteFontSet> localFonts; ThrowIfFailed(fontSetBuilder->CreateFontSet(&localFonts)); return localFonts; }