为什么Java Swing的HTML字体呈现看起来如此糟糕?

3
为了显示具有多个样式的复杂多行标签,我使用Swing的HTML渲染功能,结果字体呈现非常糟糕。
我尝试过显式设置字体系列 -
infoLabel.setText("<html><span style='font-family:Tahoma;'>My text..

但与非HTML文本相比,带有HTML文本的JLabel总是呈现出非常丑陋的外观,看起来似乎没有进行抗锯齿处理。我尝试了字体平滑CSS属性:

<html><span style="font-family:Tahoma;font-smooth:always;">

但是Swing渲染出来的HTML仍然看起来很丑陋。如果我在setText中不使用HTML样式,它看起来会好一些。我确保使用相同的字体族、字体大小等。

可能的问题是什么?


3
你能否发布一张显示“糟糕”的字体截图。在我的测试中,我没有发现任何问题。 - Sean
我在另一个答案中发布了解决方案。 - Baltasarq
2个回答

1

我想知道你是否需要单独指定样式,例如

"<html><style type = 'text/css'> span {font-family: Tahoma;} ...... <span>...."

而不是直接添加到 span 标签中。


1

尝试使用-Dswing.aatext=true标志运行程序,它将强制使用抗锯齿。

如果您需要复杂的样式,可以使用JTextPane。将其设置为透明,不可编辑,去除边框,它看起来就像一个标签。您可以应用不同的样式,它将呈现抗锯齿效果,而且您不必处理HTML,因为它的支持并不好。


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