AWT字体渲染和指标替代

时间:2012-12-27 11:18:46

标签: java fonts

AWT字体渲染和指标似乎不适合真正的打印应用程序。字体渲染取决于DPI,FontMetrics给出错误的结果。因此,实际上不可能在边界框内呈现真实文本。

Java可以选择渲染真实字体,水平和垂直对齐文本,在边界框内准确呈现文本等等,是什么?

我们在JPEG和PNG上呈现小DPI和300 DPI的文本。我们还使用了很多不同的字体。

2 个答案:

答案 0 :(得分:5)

一种方法是:

  • 使用更适合文本和格式的语言创建文档,然后
  • 使用典型的OS应用程序在所需的DPI上“打印”或栅格化该文档。

有许多格式是常见的,基于文本的和/或在Java中有许多库:

LaTex为多个平台安装了一个易于安装的二进制文件,可以对您的图像进行栅格化,例如:

  

$ tex2png --help

     

ABOUT     tex2png - 将(La)TeX转换为PNG图像

     

USAGE     tex2png [选项]

     

A(La)Tex字符串可以作为命令行参数或通过传递     STDIN。通过STDIN手动输入时,使用ctrl + d终止输入。

     

OPTIONS     -b       传递给dvipng的“--bg”选项的背景颜色。应该给出       在TeX color \ special语法中,例如“rgb 0.2 0.2 0.2”。 “透明”和       “透明”也被接受。有关更多信息,请参阅dvipng帮助消息       细节。默认值:'透明'

     

-c       (La)TeX字符串。

     

-d       输出目录。见下文。

     

-f       指定完整的输入文档。默认情况下,tex2png提供自己的       标题并包装文档标记中的输入。此选项启用用户       提供带有自定义标题的完整(La)TeX文档。

     

-i       内联模式。这将包括输出中的高度和深度,可以       用于网页中的垂直对齐,例如

     

-h       显示此帮助信息。

     

-o       图像路径。见下文。

     

-p       要呈现的页码。默认值为1。

     

-s       字体大小参数传递给“dvipng”。默认值为1400。

     

-t       临时工作目录。使用“mktemp”创建随机目录       默认情况下。

     

-T       在内容周围裁剪空白(dvipng -T紧)。

     

OUTPUT     如果设置了图像路径,则它是图像的完整路径。如果不是     然后设置图像名称将是(La)Tex输入字符串的sha256摘要     扩展名为“.png”。如果已设置输出目录,则图像     将保存在那里,否则它将保存在当前目录中。

对于PS / PDF文件,您可以使用适当的Adobe应用程序,操作系统或ImageMagick(video here):

  

$ convert -density 300 file.pdf output.png

答案 1 :(得分:1)

桌面排版软件经常达到高性能系统的极限。使用Java进行DTP是一个坏主意。你将沉迷于快速的atomar计算,以便用c / c ++或其他低级编程语言编写不同的程序。

这就是为什么我接受安德鲁的答案,因为外部程序更好。

如果您正在寻找类似桌面发布的Java项目,您可能会对在示例中使用http://community.jaspersoft.com/project/jasperreports-library感到满意。