Программно определять, правильно ли отображается HTML-разметка Swing

Есть ли способ определить, был ли (синтаксически правильный) HTML-код, отображаемый в JLabel, успешно обработан и отображает все предполагаемые глифы

У меня есть следующая строка 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>

Это дает:


Заголовок

  • Stuff
  • Staff
  • Stiff

Однако в приложении тот же HTML-код внутри JLabel отображается как: Программно определять, правильно ли отображается HTML-разметка Swing

Как можно видеть, ничто не является bold, мой пользовательский анализатор HTML может проверять наличие HTML issues, и он определяет эту строку как правильную, затем анализирует «правильно» и отображает глиф (ы), однако глиф (и) bold заменяются их глифами plain по умолчанию.

Есть ли способ программно определить, что символ не использовался, найти этот символ и заменить его?

Также стоит отметить:

  • Подобные вопросы не дали значительных результатов. Я могу подтвердить, что HTML всегда правильный, и даже при использовании «тестового HTML» проблема возникла.
  • Шрифт содержит лицо смелый
  • Другая разметка HTML отображается правильно в другом месте (p, i, h и т. д.)
  • HTML-код предоставлен другим поставщиком (-ами) и не должен изменяться / обрабатываться / определяться

Вы уверены, что используемый шрифт поддерживается платформой, на которой вы работаете?

Mick Mnemonic 04.05.2018 20:11

@MickMnemonic Да. Я тестировал другой JLabel с производным шрифтом. Здесь есть все символы, курсив, полужирный, курсив, полужирный и т. д. В приложении есть глиф, оно просто не использует их, и я не смог определить почему. Если можете, попробуйте указать какое-нибудь направление, чтобы я мог понять, почему. «Проблема» уже решена путем сканирования Глифа (ов) в диапазоне полужирного шрифта JLabel html и «рисования», но это временный прием, и он не должен / не может оставаться. Я хочу понять, почему это происходит.

Bonatti 04.05.2018 21:20

Вы пробовали <strong> вместо <b>?

Mick Mnemonic 04.05.2018 21:22

HTML здесь отображается так, как ожидалось. Как отмечалось в другом месте, если в метке / PLAF используется жирный шрифт, нужно сначала сделать его обычным шрифтом. Одним из способов сделать это может быть htmlLabel.setFont( htmlLabel.getFont().deriveFont(..) ); или изменить его через PLAF (но это повлияет на метки все, а не только на те, которые используются для рендеринга HTML).

Andrew Thompson 05.05.2018 03:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Текст JLabel по умолчанию уже выделен жирным шрифтом. Вы не можете удвоить жирный шрифт, вы можете только отменить его и переформатировать.

Пытаться:

<html><body style = "font-weight: normal"><h3>Title</h3><ul><li><b>S</b>tuff</li><li><b>S</b>taff</li><li><b>S</b>tiff</li></ul></body></html>

Другие вопросы по теме