Java AWT字体乱七八糟

时间:2017-08-20 17:44:58

标签: java vector graphics awt

我们目前正在使用以下代码在XChart库中绘制文本,但在ODROID C2上,例如文本被加扰且不可读(参见附图以供参考)。之前使用的代码是以layout.draw开头的行,但它被替换,因为它导致了EPS和PDF导出中的问题。我们有一个github问题here,它说明了问题的各种原因。它在其他几个装置上运行良好。

      FontRenderContext frc = g.getFontRenderContext();
      // TextLayout layout = new TextLayout(tickLabel, font, new FontRenderContext(null, true, false));
      TextLayout layout = new TextLayout(tickLabel, getChartPainter().getStyleManager().getAxisTickLabelsFont(), frc);
      Rectangle2D tickLabelBounds = layout.getBounds();
      // layout.draw(g, (float) xOffset, (float) (yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));

      Shape shape = layout.getOutline(null);

      AffineTransform orig = g.getTransform();
      AffineTransform at = new AffineTransform();
      at.translate((float) xOffset, (float) (yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));
      g.transform(at);
      g.fill(shape);
      g.setTransform(orig);

Screenshot showing scrambled fonts

更新:

原来这是与arm64 java相关的。当使用64位Java时,问题如图所示,当使用32位Java时,它正常工作。我仍然不知道为什么或如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

此问题与odroid c2上运行的oracles arm64 Java有关。切换到Zulu Java后,此问题已解决。