我无法使JavaFX GraphicsContext strokeText()正确显示单间距字体

我无法使JavaFX GraphicsContext strokeText()正确显示单间距字体,javafx,canvas,fonts,monospace,graphicscontext,Javafx,Canvas,Fonts,Monospace,Graphicscontext,问题:我希望GraphicContext对象以单间距字体对文本进行笔划。如何做到这一点 问题:我正在使用JavaFX。我有一个Canvas对象和一个GrahpicsContext对象。我想使用GraphicsContext的strokeText()方法在画布上绘制文本。在调用strokeText()之前,我使用GraphicsContext对象的setFont()将字体设置为单间距字体。重要的是,我要在画布上绘制的字符串中的所有字符都具有相同的宽度。 我尝试过用字体Courier、Courier

问题:我希望GraphicContext对象以单间距字体对文本进行笔划。如何做到这一点

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

但是,当我检查画布上绘制的文本时,每次都会看到:

为了测试字体,我让GraphicsContext对象在各自的行上加上5次字符“u”、“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.font,并查看了GraphicsContext的javadoc,但似乎没有任何东西可以帮助我解决这个问题


我做错了什么?

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

drawer.setFont(Font.font(java.awt.Font.MONOSPACED,15));
多谢各位

新字体(字符串名称,双字号)
根据字体的全名和字体大小创建字体。
Font.Font(字符串系列,双字号)
基于字体系列名称和字体大小创建字体

在您的情况下,姓氏是
“Monospaced”(java.awt.Font.Monospaced)
, 全名是
“等距正则”
,文件名在我的Windows平台上 是
C:\Windows\font\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));