【问题标题】:I cannot get JavaFX GraphicsContext strokeText() to display monospaced fonts right我无法让 JavaFX GraphicsContext strokeText() 正确显示等宽字体
【发布时间】:2020-05-02 00:00:23
【问题描述】:

问题:我希望 GraphicContext 对象以等宽字体描边文本。如何实现?

问题:我正在使用 JavaFX。我有一个 Canvas 对象和一个 GraphicsContext 对象。我想使用 GraphicsContext 的 strokeText() 方法在画布上绘制文本。在调用 strokeText() 之前,我使用 GraphicsContext 对象的 setFont() 将字体设置为等宽字体。重要的是,我要在画布上绘制的字符串中的所有字符都具有相同的宽度。 我尝试使用 Courier、Courier New 和 Monospace 字体在画布上绘制文本。我知道这些字体应该是等宽的。我已经导入了 javafx.scene.text.Font。

但是,当我检查画布上绘制的文本时,我每次都会看到: Screenshot of the left corner of my canvas object.

为了测试字体,我让 GraphicsContext 对象在各自的行上绘制了 5 次字符“_”、“a”、“i”和“W”。字符大小不等,行长度不同。另外,我没有看到字体有任何变化。

这是我用于创建画布、抽屉和抚摸文本的代码:

Canvas canvas = new Canvas(800,200);
GraphicsContext drawer = canvas.getGraphicsContext2D();
drawer.setFill(Color.BLACK);
drawer.setFont(new Font("Monospaced",15));

drawer.strokeText("_____", 5, 5);
drawer.strokeText("aaaaa", 5, 25);
drawer.strokeText("iiiii", 5, 45);
drawer.strokeText("WWWWW", 5, 65);

我在 java 中搜索了有关等宽字体的信息,尝试导入 java.awt.Fonts 并查看了 GraphicsContext 的 javadoc,但似乎没有任何帮助解决这个问题。

我做错了什么?

【问题讨论】:

    标签: javafx canvas fonts monospace graphicscontext


    【解决方案1】:

    new Font(String name, double size) 根据字体的全名字体大小创建字体。 Font.font(String family, double size) 根据字体系列名称字体大小创建字体。

    在您的情况下,姓氏是"Monospaced" (java.awt.Font.MONOSPACED), 全名是"Monospaced Regular",我的Windows平台上的文件名 是C:\Windows\Fonts\cour.ttf (Courier New)

    我更喜欢

    drawer.setFont(Font.font("Monospaced", 15));
    

    但是

    drawer.setFont(new Font("Monospaced Regular", 15));
    

    drawer.setFont(Font.loadFont(Files.newInputStream(Paths.get("C:/Windows/Fonts/cour.ttf")), 15));
    

    也可以。

    【讨论】:

      【解决方案2】:

      我将在这里回答我自己的问题,因为我找到了解决此问题的方法。我不知道是什么导致了这个问题,所以答案仍然非常受欢迎。然而,这似乎是治疗方法:

      drawer.setFont(Font.font(java.awt.Font.MONOSPACED,15));
      

      非常感谢!

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 2017-12-25
        • 1970-01-01
        相关资源
        最近更新 更多