c# - 查找所有已安装字体的后记名称

标签 c# fonts gdi+ gdi

我需要枚举所有已安装字体的附注名称。

例如:

        foreach (FontFamily item in FontFamily.Families)
        {
            listBox1.Items.Add(item.Name);
        }

这只会给出实际的字体名称。但我需要找到后记名称。

例如:对于字体“Arial Black” - 1. 实际字体名称是“Arial Black” 2. PostScript 名称为“Arial-Black”

提前致谢, 詹姆斯


编辑:

  1. @plinth 实际上,我是从PDF中读取字体名称并加载相应的系统字体。在这种情况下,PDF 的字体名称为“Arial-Black”(后脚本名称)。我如何相应地从系统(Arial Black)加载字体......想法??

所以,理想的方法应该是从安装的字体中读取后记名称

  1. 将“-”替换为“”不是合适的解决方案,因为可能还有其他字体名称,例如“Arial-Bold”、“Time New Roman - PSMT”等。

最佳答案

您可以直接在 PostScript 中进行。执行这个:

%!PS
/FS { findfont exch scalefont setfont } bind def

% gets page boundaries
clippath pathbbox newpath
/var_TopOfPage exch def
/var_RightOfPage exch def
/var_BottomOfPage exch def
/var_LeftOfPage exch def

% helvetica is almost always there
12 /Helvetica FS
0 setgray

% set start position
var_LeftOfPage var_TopOfPage 30 sub moveto
/pos var_TopOfPage 20 sub def

GlobalFontDirectory {
    var_LeftOfPage pos moveto
    /FontName get 70 string cvs show
    /pos pos 20 sub def
    pos 0 le {
        showpage
        /pos var_TopOfPage 20 sub def
    } if
} forall

showpage
%%EOF

我已经能够使用此代码找出打印机的可用字体。

希望对你有所帮助。

关于c# - 查找所有已安装字体的后记名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579593/

相关文章:

c# - 为什么 switch for enum 接受隐式转换为 0 但不接受任何其他整数?

c# - 无法找到 ASP.NET 5 类库项目并将其添加到解决方案中

c# - java 服务器 <-> c# + javascript + java + * 客户端

html - 如何了解 Google Web Fonts 的采用率?

html - 尽管缺少覆盖 CSS 说明符,但字体颜色没有改变

c++ - 如何反转 PNG 以进行绘图

C# 结合 GDI+ 和 OpenGL/DirectX

c# - 对 Windows CE/.NET CF 应用程序进行单元测试的最佳方法是什么?

java - 如何为我的整个应用程序设置默认手机字体

c# - 如何在屏幕上移动一个位图对象,并让多个对象使用同一个位图