Share via

[DirectWrite] How to create IDWriteFontFileEnumerator from SystemFontCollection?

Bergeron, Jérémie 61 Reputation points
2023-10-09T12:17:44.82+00:00

Is there a way to create a IDWriteFontFileEnumerator from the IDWriteFactory::GetSystemFontCollection?

From what I can see, I can create an IDWriteFontFileEnumerator from IDWriteFontCollectionLoader::CreateEnumeratorFromKey, but since I don't know the key and keySize of IDWriteFontCollection created by IDWriteFactory::GetSystemFontCollection , I don't see how I can use IDWriteFontFileEnumerator.

Does IDWriteFontFileEnumerator only works with custom collection?

Windows development | Windows API - Win32

1 answer

Sort by: Most helpful
  1. Castorix31 91,876 Reputation points
    2023-10-10T17:36:27.23+00:00

    You can do :

    IDWriteFactory3::GetSystemFontSet

    loop on IDWriteFontSet::GetFontCount

    IDWriteFontSet::GetFontFaceReference

    IDWriteFontFaceReference::GetFontFile

    IDWriteFontFile::GetLoader

    IDWriteFontFileLoader::QueryInterface to get IDWriteLocalFontFileLoader

    IDWriteFontFile::GetReferenceKey

    then

    IDWriteLocalFontFileLoader::GetFilePathFromKey

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.