【问题标题】:AWT string width depends on DPIAWT 字符串宽度取决于 DPI
【发布时间】:2012-11-12 16:10:40
【问题描述】:

我们正在开发一个打印应用程序。使用 AWT 以两种不同分辨率的模式呈现相同的文本 - 屏幕(小 DPI)和打印(300 DPI)。

问题在于文本布局取决于 DPI。而且这种依赖是非线性的。有例子:

宽度:200 像素,字体大小:10 pt

宽度:400 px,字体大小:20 pt

宽度:600 px,字体大小:30 pt

矩形宽度和字体大小从第一张到第三张图片按比例增加。但是在第一张图片上我们只有“lazy”,第二张我们有“lazy do”,第三张只有“lazy d”。

有没有什么方法可以限制文本布局,同时增加总图像大小(以像素为单位)?

【问题讨论】:

  • 有什么理由限制您使用 AWT?也许使用其他库会更容易。 SVG 渲染器可能不错。
  • 有趣的问题。为了尽快获得更好的帮助,请发帖SSCCE
  • @Christopher Martin,你能推荐一些好的文本渲染库吗?我们使用 AWT 是因为它很容易使用单个 Graphics2D 上下文来一起渲染图像和文本。

标签: java fonts awt


【解决方案1】:

SVG 渲染器可能更适合您,因为您可以构建单个矢量图像并以任意像素密度渲染它。

Batik 可能有用,虽然我从未使用过。

【讨论】:

  • 什么是 SVG 渲染器?那是一个 Java 库吗?
  • SVG 是矢量图形的一种格式。请参阅en.wikipedia.org/wiki/Scalable_Vector_Graphics - Batik 是一个用于处理 SVG 文件的 Java 库。
  • SVG 的问题是我看不到如何将文本换行。
  • 嗯,我认为答案很简单,但似乎并非如此。您可能想为此打开另一个 Stack Overflow 问题。
【解决方案2】:
graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多