C # — Чтение содержимого файла шрифта в WinRT

Как прочитать поток файлов шрифтов с платформы WinRT? Мне нужно получить содержимое файла шрифта из C # UWP. Насколько вы, вероятно, знаете, нет возможности напрямую читать файлы из папки Fonts. FilePicker также не вариант для меня, так как это не ответственность пользователя, чтобы выбрать эту папку. Я нашел способ перечислять имена шрифтов, используя DirectWrite (C ++), а затем обернуть его COM-компонентом, который будет доступен в C # (https://code.msdn.microsoft.com/FontExplorer-lets-you-f01d415e#content), Мне интересно, можно ли сделать подобное для чтения содержимого файла шрифта как byte [] или Stream?

0

Решение

Вы не можете напрямую прочитать файл TTF из приложения UWP, если пользователь не перейдет к файлу вручную. Приложение UWP не может открывать файлы без запроса пользователя, если они не находятся в определенных местах.

Также, как упоминалось в комментарии, многие шрифты не могут распространяться или внедряться без специальных лицензий.

0

Другие решения

Хорошие новости: экспорт PDF не имеет особого смысла в Windows 10. Windows 10 имеет встроенный PDF-принтер. Итак, лучше убить двух зайцев одним выстрелом: осуществить печать и получить экспорт в PDF бесплатно.

0

Предполагая, что вы уже получили, насколько вы создали IDWriteFontFile например, тогда легко прочитать произвольный фрагмент файла:

  1. Получить ссылку на файл с помощью IDwriteFontFile::GetReferenceKey();,
  2. Получить интерфейс загрузчика с IDWriteFontFile::GetLoader();
  3. Создать экземпляр потока с IDWriteFontFileLoader::CreateStreamFromKey() используя ключ из шага 1.
  4. использование IDWriteFontFileStream::ReadFileFragment/ReleaseFileFragment читать из файлового потока в ваш буфер.
0
По вопросам рекламы [email protected]