我需要在iText中这样做:
Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD);但是我需要在段落上使用TIMES的新罗马字体,而不是使用ARIAL字体。我怎么才能做到这一点呢?
谢谢。
发布于 2010-12-18 05:28:42
你有麻烦了。
Font.getFamily(字符串)仅适用于"Base 14“字体、Helvetica、Times Roman、Courier (加上它们的粗体和斜体变体)、Symbol和ZapfDingbats。请求除这些字体之外的任何字体都将返回FontFamily.UNDEFINED。
你的代码并不像你想的那样工作。如果你碰巧用的是Arial,那是因为它是默认字体。
你想要的是FontFactory.getFont(...)。在FontFactory可以按名称返回给定字体之前,您需要注册该字体的文件。要做到这一点,最简单的方法是调用FontFactory.registerDirectories(),它将枚举操作系统用来存储字体的所有目录,并注册在那里找到的所有字体。这将花费更长的时间,这取决于您有多少字体,以及这些字体有多大。很多CJKV字体需要相当长的时间才能注册...大概不到30秒,但我的野兽系统可能需要10-20秒才能做到这一点(但我有很多大字体)。
您也可以将单个文件注册到FontFactory.register(fontPath),但这要求您首先知道在哪里可以找到它们。
在任何情况下,您的代码都可能是这样的:
FontFactory.registerDirectories();
Font fuente = FontFactory.getFont("Times New Roman");在查找字体时,FontFactory确实忽略了大小写。Font.getFamily()不需要。
https://stackoverflow.com/questions/4474125
复制相似问题