c# - 区分 C# vsto 中自定义安装的字体和 Office 应用程序内置(默认)字体
问题描述
我是.Net 世界的新手。我正在用 C#(vsto) 为 Excel 编写一个插件,我想在其中读出给定 Excel 文件中可用的所有字体样式。我想知道用户是否为 Office 应用程序自定义安装了任何字体。下面的代码有助于检索所有已安装的字体,包括自定义安装和默认办公字体。
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
FontFamily[] fontFamilies = installedFontCollection.Families;
您能否让我知道是否有任何方式以编程方式区分默认的 Office 应用程序字体和安装的自定义字体?
解决方案
您可以使用以下代码获取 Office 应用程序中可用的字体列表:
Option Explicit
Sub listFonts()
Dim wd As Object, fontID As Variant
Set wd = CreateObject("Word.Application")
For Each fontID In wd.FontNames
Sheet1.cmbFonts.AddItem fontID
Next
wd.Quit
Set wd = Nothing
End Sub
FontNames 接口表示所有可用字体的名称列表。您不能在可用字体名称列表中添加名称或从中删除名称。
没有其他方法可以区分内置字体或其他字体。我想 Office 应用程序总是处理已安装的字体。
推荐阅读
- r - 在数据框中创建一列,指示其他列中的值是否连续
- firebase - 如何在没有 id 的情况下将信息发布到实时 firebase 数据库中?
- javascript - 如何将原始二进制数据转换为 blob 并将其显示在 img 标签中?
- php - 以编程方式设置 WooCommerce 用户计费和发货国家/地区
- ruby-on-rails - 赛普拉斯无法从同一个 docker 容器中看到 rails 服务器输出
- html - CSS 模糊出血
- r - 如何将 Y 值的优势比置于高于和低于 X 平均值的一个标准差到 ggplot(或其他 R 图)
- c# - EF core 5 如何在不包含 INCLUDE 的情况下填充导航属性
- python - Preparing wheel metadata ... error ERROR: Command errored out with exit status 1 while installing apex
- javascript - 如果值为空,如何跳过逗号?