首页 > 解决方案 > 区分 C# vsto 中自定义安装的字体和 Office 应用程序内置(默认)字体

问题描述

我是.Net 世界的新手。我正在用 C#(vsto) 为 Excel 编写一个插件,我想在其中读出给定 Excel 文件中可用的所有字体样式。我想知道用户是否为 Office 应用程序自定义安装了任何字体。下面的代码有助于检索所有已安装的字体,包括自定义安装和默认办公字体。

InstalledFontCollection installedFontCollection = new InstalledFontCollection();
FontFamily[] fontFamilies = installedFontCollection.Families; 

您能否让我知道是否有任何方式以编程方式区分默认的 Office 应用程序字体和安装的自定义字体?

标签: c#excelvsto

解决方案


您可以使用以下代码获取 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 应用程序总是处理已安装的字体。


推荐阅读