Как прочитать поток файлов шрифтов с платформы WinRT? Мне нужно получить содержимое файла шрифта из C # UWP. Насколько вы, вероятно, знаете, нет возможности напрямую читать файлы из папки Fonts. FilePicker также не вариант для меня, так как это не ответственность пользователя, чтобы выбрать эту папку. Я нашел способ перечислять имена шрифтов, используя DirectWrite (C ++), а затем обернуть его COM-компонентом, который будет доступен в C # (https://code.msdn.microsoft.com/FontExplorer-lets-you-f01d415e#content), Мне интересно, можно ли сделать подобное для чтения содержимого файла шрифта как byte [] или Stream?
Вы не можете напрямую прочитать файл TTF из приложения UWP, если пользователь не перейдет к файлу вручную. Приложение UWP не может открывать файлы без запроса пользователя, если они не находятся в определенных местах.
Также, как упоминалось в комментарии, многие шрифты не могут распространяться или внедряться без специальных лицензий.
Хорошие новости: экспорт PDF не имеет особого смысла в Windows 10. Windows 10 имеет встроенный PDF-принтер. Итак, лучше убить двух зайцев одним выстрелом: осуществить печать и получить экспорт в PDF бесплатно.
Предполагая, что вы уже получили, насколько вы создали IDWriteFontFile
например, тогда легко прочитать произвольный фрагмент файла:
IDwriteFontFile::GetReferenceKey();
,IDWriteFontFile::GetLoader();
IDWriteFontFileLoader::CreateStreamFromKey()
используя ключ из шага 1.IDWriteFontFileStream::ReadFileFragment/ReleaseFileFragment
читать из файлового потока в ваш буфер.