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