为什么 Java Swing html 字体渲染看起来这么糟糕?

发布于 2024-09-28 11:46:14 字数 484 浏览 2 评论 0原文

为了显示具有多种样式的复杂多行标签,我使用了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寂寞美少年 2024-10-05 11:46:14

我想知道您是否可能需要单独指定样式,

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

而不是直接将其添加到 span 标记中。

I wonder if you might have to specify the style separately like

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

instead of adding it directly to the span tag.

清引 2024-10-05 11:46:14

尝试使用 -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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文