我无法使JavaFX GraphicsContext strokeText()正确显示单间距字体
问题:我希望GraphicContext对象以单间距字体对文本进行笔划。如何做到这一点 问题:我正在使用JavaFX。我有一个Canvas对象和一个GrahpicsContext对象。我想使用GraphicsContext的strokeText()方法在画布上绘制文本。在调用strokeText()之前,我使用GraphicsContext对象的setFont()将字体设置为单间距字体。重要的是,我要在画布上绘制的字符串中的所有字符都具有相同的宽度。 我尝试过用字体Courier、Courier New和Monospace在画布上绘制文本。我知道这些字体应该是等距的。我已导入javafx.scene.text.Font 但是,当我检查画布上绘制的文本时,每次都会看到: 为了测试字体,我让GraphicsContext对象在各自的行上加上5次字符“u”、“a”、“I”和“W”。字符大小不相等,行的长度不同。而且,我看不到字体有任何变化 以下是我用于创建画布、抽屉和笔划文本的代码:我无法使JavaFX GraphicsContext strokeText()正确显示单间距字体,javafx,canvas,fonts,monospace,graphicscontext,Javafx,Canvas,Fonts,Monospace,Graphicscontext,问题:我希望GraphicContext对象以单间距字体对文本进行笔划。如何做到这一点 问题:我正在使用JavaFX。我有一个Canvas对象和一个GrahpicsContext对象。我想使用GraphicsContext的strokeText()方法在画布上绘制文本。在调用strokeText()之前,我使用GraphicsContext对象的setFont()将字体设置为单间距字体。重要的是,我要在画布上绘制的字符串中的所有字符都具有相同的宽度。 我尝试过用字体Courier、Courier
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));