Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fonts 为什么我的字体没有注册?_Fonts_Itextsharp - Fatal编程技术网

Fonts 为什么我的字体没有注册?

Fonts 为什么我的字体没有注册?,fonts,itextsharp,Fonts,Itextsharp,我有一个使用iTextSharp的程序,其中包括代码 FontFactory.RegisterDirectories(); foreach (string fontname in FontFactory.RegisteredFonts) { Log.Info("**** Found registered font: " + fontname); } 当我在CentOS机器上使用Mono运行它时,日志仅显示核心PostScript字体: 扎普丁蝙蝠 罗马时代 斜体时代 黑花蛇舌草 信使

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

FontFactory.RegisterDirectories();

foreach (string fontname in FontFactory.RegisteredFonts)
{
   Log.Info("**** Found registered font: " + fontname);
}
当我在CentOS机器上使用Mono运行它时,日志仅显示核心PostScript字体:

扎普丁蝙蝠 罗马时代 斜体时代 黑花蛇舌草 信使 黑尔维蒂卡黑体 赫尔维蒂卡 信使斜线 斜角海胆 粗体信使 泰晤士报黑体斜体 信使 泰晤士报 象征
但是我在/usr/share/fonts目录树下有156个TTF文件,这是RegisterDirectories函数代码中提到的目录之一。为什么这些没有被注册?

iText和iTextSharp之间有细微的区别

在iText中,registerDirectories如下所示:

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;
}
public virtual int RegisterDirectories() {
    string dir = Path.Combine(
        Path.GetDirectoryName(
            Environment.GetFolderPath(Environment.SpecialFolder.System)), "Fonts");
    return RegisterDirectory(dir);
}
但是,在iTextSharp中,该方法如下所示:

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;
}
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

iText和iTextSharp之间有细微的区别

在iText中,registerDirectories如下所示:

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;
}
public virtual int RegisterDirectories() {
    string dir = Path.Combine(
        Path.GetDirectoryName(
            Environment.GetFolderPath(Environment.SpecialFolder.System)), "Fonts");
    return RegisterDirectory(dir);
}
但是,在iTextSharp中,该方法如下所示:

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;
}
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