Swing创建字体

5

我有一些自定义组件,其覆盖了paintComponent(Graphics g)方法。在某些组件中,使用了Graphics g对象的drawString()方法。

我想为这样绘制的字符串定义自定义字体。

我有*.ttf文件,其中包含TrueType字体定义。

我有一个CSS文件,其中定义了字体样式类,如下所示:

.rosTexLogoTitle {
   -fx-font: bold 20pt 'Tahoma Bold';
   -fx-text-fill: #246db6;
   -fx-font-weight: heavybold;
   -fx-padding: 0 10 0 0

我希望在我的Java类中定义所有的CSS属性,或者也许有一种方法可以直接从CSS文件中使用样式(不是必须的)。

我尝试使用Map参数创建字体:

public Font(Map<? extends Attribute, ?> attributes) {
}

但我没有成功。 我可以使用Font.createFont(style, path)创建自定义字体,然后可以派生它以设置大小。颜色可以在Graphics.setColor()中设置。但我无法设置“Tahoma Bold”。


如何正确设置所有字体属性(我已经在CSS中拥有它们)。 从*.ttf创建字体,然后派生并设置大小,并将颜色设置为图形?如何设置字重?如何设置字族?如何使用接受属性映射的字体构造函数? 问题的另一部分是关于平滑文本,但我想再提一个问题吗? - Yegoshin Maxim
当我问“你的问题是什么?”时,我的意思是一个单独的问题,而不是5个问题。选择你最喜欢的一个。 - Andrew Thompson
如何使用接受属性映射的字体构造函数? - Yegoshin Maxim
2个回答

2

无法设置字体的粗细或族群; 它们只是用于选择正确的.ttf文件。

因此,解决方案是从一开始就使用正确的.ttf文件。例如,字体族群Arial有四个文件:

arialbd.ttf - Weight "Bold"
arialbi.ttf - Weight "Bold", Slant "Italic"
ariali.ttf  - Slant "Italic"
arial.ttf   - Plain version

1

你有.ttf文件吗?使用createFont(style,File)返回新的字体,然后可以设置颜色

你可以使用sun.awt.Win32GraphicsEnvironment.getAvailableFontFamilyNames()获取所有操作系统字体


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接