css 是否可以使用xslt将字体导出为base64?

mcvgt66p  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(135)

我想从.fo文件中创建一些html输出,我自己编写了一些xsl模板来获得所需的输出。对于html-元素的样式,每个元素都有一个class属性,并带有匹配的css-class。
如下所示:

.page_2_text_3 {
   transform: translate(0pt, 82.96pt);
   font-family: ITCFranklinGothicStd-Book;
   font-style: normal;
   font-weight: 400;
   font-variant: normal;
   font-size: 10pt;
   color: #000000;
}

这里的问题是找不到字体ITCFranklinGothicStd-Book,它被其他字体替换了。
有没有办法在模板中将字体导出为base64,这样我就可以像这样添加@font-face到我的css中:

<xsl:template name="fontexport">
  <xsl:param name="font"/>
  <xsl:param name="fontname"/>
  @font-face {
   font-family: "<xsl:value-of select="$fontname"/>";
   src: url("<xsl:value-of select="$font" mode="base64"/>")<!-- convert the $font into base64 -->
  }
</xsl:template>

当使用font和fontname作为参数调用call-template时,这将创建以下输出

@font-face {
   font-family: "ITCFranklinGothicStd-Book";
   src: url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAB...)
}

这可能吗

5vf7fwbs

5vf7fwbs1#

如果使用支持EXPath文件模块的XSLT处理器(如Saxon-PE),则可以使用file:read-binary()读取字体文件,它返回一个xs:base64Binary值,应用于该值的string()函数提供Base64表示。

相关问题