【问题标题】:Convert HTML's font size attribute to CSS font-size attribute将 HTML 的字体大小属性转换为 CSS 字体大小属性
【发布时间】:2019-01-31 07:01:51
【问题描述】:

我的问题几乎是来自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 值?

【问题讨论】:

  • 字体的属性 sizer 不再适用于 HTML5,您需要改用 CSS。 w3schools.com/tags/att_font_size.asp
  • @AlvaroAlves 明白了。但是我遇到的这个 HTML/CSS 问题将在 Java 应用程序中呈现,而不是在 Web 浏览器中呈现。
  • 哦,我明白了,那么您可以获取 em 值并使用此转换器:w3schools.com/tags/ref_pxtoemconversion.asp
  • size=6 指的是 pt 大小 - CSS 可能是 font-size: 6pt(而不是 px)。
  • 在“将 EM 转换为 PX:”框上,例如0.63em => 然后它将被转换为 Result: 10.08px - 并有一个表格,其中有一些转换

标签: java html css fonts flying-saucer


【解决方案1】:

这里有一些神秘之处,因为今天没有一个健全的 Java 应用程序会支持这一点,而且今天写 HTML 的人甚至都不应该知道这个标签曾经存在过……它已经有近 20 年没有发生了:没有 HTML 标准有自 1999 年发布的 HTML 4.01 以来的 &lt;font&gt; 元素。

最后一个允许 &lt;font&gt; 元素的 HTML 标准是 HTML 3.2,所以让我们参考 1997 年的 the HTML3.2 specification

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

不幸的是,你完全不走运。鉴于&lt;font&gt; 元素的HTML3.2 size 属性,实际上无法判断字体“应该”使用哪个实际点或像素大小。当 HTML 3.2 仍然存在时,您可能能够找出特定操作系统上的特定浏览器的特定版本用于支持,但该信息对于任何其他操作系统、任何其他浏览器,甚至任何其他版本都是无用的对于同一操作系统上的同一浏览器。

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

话虽如此:您正在使用哪些疯狂的 Java 代码,您可以使用 &lt;font&gt; 元素而不会出现错误,或者至少会发出关于二十年来不存在的标记的警告?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多