Преобразовать атрибут размера шрифта HTML в атрибут размера шрифта CSS - PullRequest
0 голосов
/ 24 августа 2018

Мой вопрос в значительной степени дублирует вопрос от Преобразование тега шрифта (атрибут размера) в css

Я вижу ответы от 2014 года. Поэтому я не был уверен, что продолжитьспросить там или сделать этот новый вопрос.Но я сталкиваюсь с той же проблемой и спрашиваю, есть ли решение для этого с тех пор, кроме ответа Девина в этой ссылке выше.

В приложении Java я пытаюсь проанализировать некоторые строки HTML-кодаа затем программно установить некоторые значения шрифта как CSS.

У меня есть простой вывод шрифта с размером шрифта текста, установленным на 6.

<font id="test" face="Calibri" size="6" color="#000000">Hello World</font>

Он отображается нормально, но, как упоминалось выше, яя пытаюсь разобрать атрибуты лица, размера и цвета и установить его как CSS:

<style>

#test {
   color: #000000;
   font-family: Calibri, Times, serif;
   font-size: 6px;    
}
</style>

Когда этот текст CSS отображается, текст "Hello World" значительно уменьшается.

Я понимаю, что в CSS у меня есть единица измерения размера шрифта как px, но я не могу найти в сети, какая единица измерения является атрибутом размера шрифта HTML, чтобы выполнить преобразование.

Какая единица измеренияАтрибут размера шрифта HTML?так я знаю, как программно разобрать его и создать соответствующие значения CSS?

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Здесь есть какая-то загадка, потому что ни одно здравое Java-приложение сегодня не поддержало бы это, и никто, пишущий сегодня HTML, не должен даже знать, что этот тег когда-либо существовал ... это не было делом в течение почти двадцати лет: ни один стандарт HTML не имел элемент <font> начиная с HTML 4.01, выпущенного в 1999 году.

Последним стандартом HTML, который допускал использование элемента <font>, был HTML 3.2, поэтому давайте посмотрим спецификацию HTML3.2 1997 года:

Размеры шрифта приведены в виде скалярного диапазона, определенного пользовательским агентом, без прямого сопоставления с размерами точек и т. Д.

Так что, к сожалению, вам совершенно не повезло. Буквально невозможно определить, какую фактическую точку или размер пикселя должен использовать шрифт, учитывая атрибут HTML3.2 size для элемента <font>. Возможно, вам удастся выяснить, какие конкретные версии определенных браузеров в определенных операционных системах использовались для поддержки еще в то время, когда HTML 3.2 все еще существовал, но эта информация будет бесполезна для любой другой ОС, любого другого браузера и даже любой другой версии. для того же браузера в той же ОС.

Это одна из основных причин того, что атрибуты стиля были полностью исключены из спецификации HTML, а инструкции по стилю оставлены (почти) исключительно для обработки CSS.

С учетом всего сказанного: с каким сумасшедшим Java-кодом вы работаете, с которым вы можете использовать элемент <font> без ошибок или, по крайней мере, с предупреждениями о разметке, которой не было два десятилетия?

0 голосов
/ 24 августа 2018

Я довольно ржавый на Java, и я не знаю, как вы анализируете / декларируете свойства своего класса, так что это может не применяться ... Хотя, возможно, вы продолжите

//Make an array with the sizes and their equivalents. Probably a more elegant way to accomplish this 
var sizes = [['6', '2em'], ['7', '3em'], /*etc. Follow pattern from example you provided*/]
Document myDoc = parse(myHtml);
Element myEl = myDoc.select("font").first();
String mySize = myEl.attr("size");
String fontSize = "";

//Also not so elegant
for(int i = 0; i < sizes.length; i++){
    if(mySize.equals(sizes[i][0])){
       fontSize = sizes[i][1];
    }
}
...