将HTML的字体大小属性转换为CSS字体大小属性

时间:2018-08-24 19:16:56

标签: java html css fonts flying-saucer

我的问题与Convert font tag (size attribute) to 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 :(得分:1)

这里有一个谜,因为今天没有理智的Java应用程序可以支持这一点,并且今天没有人编写HTML甚至不知道这个标签曾经存在过……这已经有二十多年了:没HTML标准自1999年发布的HTML 4.01开始,是<font>元素。

最后一个允许<font>元素的HTML标准是HTML 3.2,因此让我们参考一下1997年的https://godoc.org/github.com/oracle/oci-go-sdk/core#LaunchInstanceRequest

  

字体大小是由用户代理定义的标量范围给出的,没有直接映射到点大小等。

很不幸,您完全不走运。在size元素具有HTML3.2 <font>属性的情况下,实际上无法确定字体“应”使用的实际点或像素大小。当HTML 3.2仍然存在时,您也许能够找出特定操作系统上特定浏览器的特定版本用来支持,但是这些信息对于任何其他OS,任何其他浏览器甚至任何其他版本都将是无用的。用于相同操作系统上的相同浏览器。

这是样式属性完全从HTML规范中删除的主要原因之一,而样式指令几乎(几乎)留给CSS处理。

说了这么多:您正在使用什么疯狂的Java代码,可以使用<font>元素而不会出现错误,或者至少可以警告二十年来不存在的标记? >

答案 1 :(得分:-1)

我对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];
    }
}