首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的字体不注册?

为什么我的字体不注册?
EN

Stack Overflow用户
提问于 2012-11-29 21:38:19
回答 1查看 3.4K关注 0票数 2

我有一个使用iTextSharp的程序,其中包括代码

代码语言:javascript
复制
FontFactory.RegisterDirectories();

foreach (string fontname in FontFactory.RegisteredFonts)
{
   Log.Info("**** Found registered font: " + fontname);
}

当我运行它(在CentOS框上使用Mono )时,日志只显示核心PostScript字体:

  • 斑纹蝙蝠
  • 时代-罗马
  • 时斜体
  • 黑体斜
  • 信使-斜交
  • helvetica-粗体
  • 黑尔维蒂卡
  • 信使-斜
  • 斜斜
  • 速递-粗体
  • 时代性
  • 信使
  • 时代-大胆
  • 符号

但是我的/usr/share/fonts目录树下有156个TTF文件(这是RegisterDirectories函数的代码中提到的目录之一)。为什么这些没有注册?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-02 10:03:45

iText和iTextSharp之间有细微的区别。

在iText中,registerDirectories()如下所示:

代码语言:javascript
复制
public int registerDirectories() {
    int count = 0;
    String windir = System.getenv("windir");
    String fileseparator = System.getProperty("file.separator");
    if (windir != null && fileseparator != null) {
        count += registerDirectory(windir + fileseparator + "fonts");
    }
    count += registerDirectory("/usr/share/X11/fonts", true);
    count += registerDirectory("/usr/X/lib/X11/fonts", true);
    count += registerDirectory("/usr/openwin/lib/X11/fonts", true);
    count += registerDirectory("/usr/share/fonts", true);
    count += registerDirectory("/usr/X11R6/lib/X11/fonts", true);
    count += registerDirectory("/Library/Fonts");
    count += registerDirectory("/System/Library/Fonts");
    return count;
}

然而,在iTextSharp中,该方法如下所示:

代码语言:javascript
复制
public virtual int RegisterDirectories() {
    string dir = Path.Combine(
        Path.GetDirectoryName(
            Environment.GetFolderPath(Environment.SpecialFolder.System)), "Fonts");
    return RegisterDirectory(dir);
}

Java与平台无关,所以我们必须寻找“常见的嫌疑人”。C#是特定于Windows的,因此我们可以依赖于环境来告诉我们在哪里可以找到字体。您的问题告诉我们Mono不支持这一点,所以您必须使用FontFactory.RegisterDirectory("/usr/share/fonts");

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13635212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档