使用本地磁盘中的字体文件
Using font files from local disk
我正在使用 C# 开发一个 UWP 应用程序来预览用户本地磁盘中的字体文件。我正在使用 SharpDX 库读取 .ttf 文件内容并查询不同的字体属性。我的问题是:
如何将 TextBlock FontFamily 设置为加载的字体?
当然,用加载的字体名称设置 FontFamily 属性 是行不通的,因为系统上不需要安装加载的字体。
请帮忙。
只要您没有完整的文件系统权限,就无法加载字体。
但是你可以做的是:
我。让用户从系统中选择一个字体文件(我猜你已经完成了这个任务)
二.将检索到的 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);
伏。就是这样!
不要忘记清理本地文件夹, 当不再需要字体时。
我正在使用 C# 开发一个 UWP 应用程序来预览用户本地磁盘中的字体文件。我正在使用 SharpDX 库读取 .ttf 文件内容并查询不同的字体属性。我的问题是:
如何将 TextBlock FontFamily 设置为加载的字体?
当然,用加载的字体名称设置 FontFamily 属性 是行不通的,因为系统上不需要安装加载的字体。
请帮忙。
只要您没有完整的文件系统权限,就无法加载字体。
但是你可以做的是:
我。让用户从系统中选择一个字体文件(我猜你已经完成了这个任务)
二.将检索到的 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);
伏。就是这样!
不要忘记清理本地文件夹, 当不再需要字体时。