【问题标题】:Using font files from local disk使用本地磁盘中的字体文件
【发布时间】:2017-08-10 07:21:47
【问题描述】:

我正在使用 C# 开发一个 UWP 应用程序来预览用户本地磁盘中的字体文件。我正在使用 SharpDX 库来读取 .ttf 文件内容并查询不同的字体属性。我的问题是:

如何将 TextBlock FontFamily 设置为加载的字体?

当然,用加载的字体名称设置 FontFamily 属性是行不通的,因为加载的字体不需要安装在系统上。

请帮忙。

【问题讨论】:

    标签: c# xaml uwp sharpdx directwrite


    【解决方案1】:

    只要您没有完整的文件系统权限,就无法加载字体。

    但是你可以做的是:

    我。让用户从系统中选择一个字体文件(我猜你已经完成了这个任务)

    二。将检索到的 StorageFile 复制到您应用的沙箱中。

    async Task<StorageFile> ImportFont(StorageFile file)
    {
      StorageFolder folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("fontcache", CreationCollisionOption.OpenIfExists);
      return await file.CopyAsync(folder, file.Name, NameCollisionOption.ReplaceExisting);
    }
    

    三。接下来,创建导入文件的路径(here are all available URI schemes listed

    StorageFile importedFile = await ImportFont(userPickedFile);
    string fontPath = "ms-appdata:///local/fontcache/" + importedFile.Name;
    

    四。根据您的路径创建字体系列

    string fontName = sharpDXFont.Name; // this is the name SharpDX has extracted
    FontFamily family = new FontFamily(fontPath + "#" + fontName);
    

    V。就是这样!

    不要忘记清理本地文件夹,当字体不再需要时。

    【讨论】:

    • 我为我的鲁莽道歉。你不同意的答案我已经删除了。
    • 你看到这个答案很老了,uwp 在沙箱中运行,它无法直接访问磁盘,我的评论不正确。
    猜你喜欢
    • 2021-12-05
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多