为什么 Java Swing html 字体渲染看起来这么糟糕?
为了显示具有多种样式的复杂多行标签,我使用了 Swing 的 html 渲染功能,但最终得到了非常糟糕的字体渲染。
我尝试显式设置字体系列 -
infoLabel.setText("<html><span style='font-family:Tahoma;'>My text..
但与非 HTML 文本相比,带有 HTML 文本的 JLabel 总是呈现非常难看,看起来像蚂蚁锯齿没有发生。我尝试了 font smooth CSS 属性:
<html><span style="font-family:Tahoma;font-smooth:always;">
但是 Swing 渲染的 html 看起来仍然很难看。如果我不在 setText 中使用 html 样式,它看起来很好。我确保使用相同的字体系列、字体大小等。
可能是什么问题?
To display a complex multi-line label with multiple styling I use Swing's html rendering capabilities and end up with really crappy font rendering.
I have tried to explicitly set the font family -
infoLabel.setText("<html><span style='font-family:Tahoma;'>My text..
But compared to non-HTML text, the JLabel with HTML text always renders very ugly, looks like ant-aliasing is not happening. I tried font smooth CSS property :
<html><span style="font-family:Tahoma;font-smooth:always;">
But the rendered html by Swing still looks ugly. If I don't use html styling in setText it looks fine. I am ensuring I am using the same font family, font size etc.
What could be the issue ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想知道您是否可能需要单独指定样式,
而不是直接将其添加到 span 标记中。
I wonder if you might have to specify the style separately like
instead of adding it directly to the span tag.
尝试使用
-Dswing.aatext=true
标志运行您的程序,它将强制它使用抗锯齿功能。如果您需要复杂的样式,可以使用 JTextPane。使其透明,不可编辑,删除边框,它看起来就像一个标签。你可以应用不同的样式,它将使用抗锯齿进行渲染,并且你不必处理html,它的支持不是很好。
Try to run your program with
-Dswing.aatext=true
flag, it will force it to use anti-aliasing.If you need complex styling, you can use a JTextPane. Make it transparent, not editable, remove the border and it will look just like a label. You can apply different styles, it will be rendered with anti-aliasing and you won't have to deal with html, its support is not that good.