我正在尝试在Java应用程序中使用PDF文件中嵌入的一些字体。显然,Java能够加载Type1和TrueType字体。根据一些网站的说法,PDF中的Type1c字体基本上都是CFF或Type2字体。Java7的一个新特性是加载CFF字体,但是Font.createFont()不起作用。
那么,我错在哪里呢?Type1c字体真的是CFF/OpenType字体吗?是否需要进行任何转换?
发布于 2012-11-22 12:05:44
字体是子集的吗?(在这种情况下,它将只包含一些字符,而不是整个字体)。
通常,嵌入到PDF中的CFF字体需要进行大量的转换工作才能使其通用-如果您一直在我们的博客(http://blog.idrsolutions.com)上关注我们的PDF to HTML5转换器的开发,您将会看到许多关于字体各种问题的帖子。
google (http://code.google.com/p/sfntly/)提供了一个有趣的Java字体工具,如果您正在研究字体操作,则fontforge非常有用。
发布于 2012-11-23 23:06:06
恐怕你得找出你到底在打什么仗。不相信关于字体的网站,请阅读PDF规范:http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
具体来说,你要找的是9.6章--简单字体和9.7 -复合字体。
总之,PDF文件中的字体可以是多种类型:-Type0-Type1-Type3- TrueType
Type1和TrueType是最简单的,你很可能会在PDF文件中遇到它们。类型3是一种字体类型,您可以使用图形来绘制字符。不是很常见。
Type0是一种更复杂的字体类型,最初设计为允许您使用大字符集(比如日语/中文),但现在它也经常由许多专业设计和布局应用程序生成。该Type0字体类型有两个子类型:- SubType 0,它是进入Type0夹克的Type1字体,以及- SubType 2,它是进入Type0夹克的TrueType字体
在所有情况下,系统中的“真实”字体与PDF文件中嵌入的字体都存在显著差异。
首先查看包含您要使用的字体的PDF文件。使用来自callas的pdfToolbox (http://www.callassoftware.com/callas/doku.php/en:download)或来自Enfocus的浏览器(http://www.enfocus.com/en/products/browser)等工具。这两个工具都允许您调查PDF文件的低级结构,包括查看实际的页面描述代码和字体字典。pdfToolbox特别擅长研究PDF文件中的字体,包括查看实际形状和用于绘制这些形状的指令。
发布于 2016-09-20 03:53:58
FontVerter是我之前写的一个开源java库,它可以将PDF中的纯CFF*和type0/复合字体转换成OTF/TTF和WOFF1/2。它还可以尝试修复和规范化在浏览器中不能正常工作的OTF/TTF字体,我发现嵌入到PDF中的开放式字体经常存在各种问题,比如缺少表格,这会阻止chrome正确地呈现它们。
(*bare CFF = type1c我相信?,有一点,我忘记了哪种类型是哪种类型)
https://stackoverflow.com/questions/13511554
复制