【发布时间】:2018-10-15 06:38:13
【问题描述】:
有没有办法检测在 JLabel 中呈现的(语法正确的)HTML 是否已成功呈现,并且是否正在显示所有预期的字形
我有以下 HTML 字符串:
<html><h3>Title</h3><ul><li><b>S</b>tuff</li><li><b>S</b>taff</li><li><b>S</b>tiff</li></ul></html>
呈现:
标题
- S凝灰岩
- S员工
- Stiff
但是,在应用程序中,JLabel 中的相同 HTML 呈现为:
可以看出,bold 什么都不是,我的自定义 HTML 解析器可以检查 HTML issues,它检测到该字符串是正确的,然后“正确”解析,并呈现字形,但是,bold Glyph(s) 将被其默认的 plain Glyph(s) 替换。
有没有办法以编程方式检测 Glyph 未被使用,然后搜索 Glyph 并替换它?
同样值得注意:
- 类似的问题没有产生显着的结果。我可以确认 HTML 始终是正确的,即使使用“测试 HTML”,也会出现问题。
- 字体包含粗体面
- 其他 HTML 标记正在其他地方正确呈现(p、i、h 等)
- HTML 来自其他供应商,不应更改/处理/定义
【问题讨论】:
-
你确定你运行的平台支持使用的字体吗?
-
@MickMnemonic 是的。我已经使用不同的 JLabel 和派生字体进行了测试。所有的字形都在那里,斜体、粗体、斜体和粗体等。应用程序有字形,只是没有使用它们,我一直无法检测到原因。如果可以的话,试着提出任何方向,我可能会试图找出原因。通过扫描 JLabel html 粗体范围中的字形并“绘制”,“问题”已经得到解决,但这是一个临时的 hack,不应该/不能保留。我想知道为什么会这样。
-
你试过
<strong>而不是<b>吗? -
HTML 在这里按预期呈现。如其他地方所述,如果标签/PLAF 使用粗体字体,则首先将其设为纯字体。一种方法可能是
htmlLabel.setFont( htmlLabel.getFont().deriveFont(..) );或通过 PLAF 更改它(但这会影响 所有 标签,而不仅仅是用于呈现 HTML 的标签)。
标签: java html swing fonts jlabel