当前位置: 首页 > 知识库问答 >
问题:

apache fop嵌入式字体粗体

闻人仲渊
2023-03-14

我在apache fop 1.0环境中使用嵌入式字体:

<fo:block-container  
  right="10mm" position="absolute">
  <fo:block font-family="hnlt57con" >
    my text
  </fo:block>
</fo:block-container>

配置文件如下所示:

<fop version="1.0">
  <renderers>
   <renderer mime="application/pdf">
   <fonts>
       <font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
           <font-triplet name="hnlt57con" style="normal" weight="normal" />
       </font>         
   </fonts>
   </renderer>
</renderers>

这工作得很好,文本以字体hnlt57con呈现。

我现在想做的是用粗体呈现一些文本:

<fo:block-container  
  right="10mm" position="absolute">
  <fo:block font-family="hnlt57conbold" font-weight="bold"  >
    my text
  </fo:block>
</fo:block-container>

配置文件如下所示:

<fop version="1.0">
  <renderers>
   <renderer mime="application/pdf">
   <fonts>
       <font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
           <font-triplet name="hnlt57con" style="normal" weight="normal" />
       </font>
       <font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
           <font-triplet name="hnlt57conbold" style="normal" weight="bold" />                 
       </font>       
   </fonts>
   </renderer>
</renderers>

不幸的是,文本没有以粗体显示,但是以和上面例子一样的方式显示。

添加一个额外的字体三元组(如 http://www.scriptorium.com/whitepapers/fop_fonts/FOP_fonts5.html 中所示)不会改变任何内容:

<fop version="1.0">
  <renderers>
   <renderer mime="application/pdf">
   <fonts>
       <font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
           <font-triplet name="hnlt57con" style="normal" weight="normal" />
       </font>
       <font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
           <font-triplet name="hnlt57conbold" style="normal" weight="bold" />
           <font-triplet name="hnlt57conbold" style="normal" weight="700" />
       </font>            
   </fonts>
   </renderer>
</renderers>

Helvetica-neue-lt-STD-57-condensed . TTF是我自己用fontforge从Helvetica-neue-lt-STD-57-condensed . OTF转换而来的字体。

我的问题:

我怎样才能用嵌入的字体加粗显示一些文本?

有没有可能,这种字体不能用粗体显示,因为它是由otf转换而来的?但是在MS-Word中,我可以用粗体显示。

我错过了什么吗?

共有1个答案

夹谷英奕
2023-03-14

是的,你错过了最重要的东西。普通字体不是粗体,它们是不同的东西,因此是不同的文件。在您的示例中,您将普通字体和粗体字体指向完全相同的TTF文件(阅读:字体文件)。即Helvetica-neue-lt-STD-57-condensed . TTF。

因此,您告诉 FOP 对普通和粗体使用完全相同的字体文件,因此您会看到相同的输出。

要对此进行测试,请尝试将“粗体”条目指向您拥有的不同TTF文件。您将看到字符更改为该字体。

简而言之,“粗体”字体和“普通”字体不是从同一个TTF字体文件创建的,它们来自两个不同的文件。您应该将粗体条目指向具有粗体字形的不同文件。

哦,我应该补充一点,尽管你认为它可以在微软的Word中运行,但你真的错了。Word要么是(1)使用不同但相似的字体,却不告诉你;要么是(2):通过夸大字体中的像素来假加粗。它没有使用完全不同的加粗字体,除非你真的在视窗系统中安装了它,却不知道。

 类似资料:
  • 我的系统: Qt Embedded(开源版)4.8 用于图形的Linux帧缓冲区 字体:(拉丁语、日语、希腊语)。(/usr/lib/fonts) 我正在尝试将拉丁字母与其他类型的字符(例如日语)混合使用。我有拉丁字母和日语字符的字体,但它们不是同一种字体。我研究了帖子: Qt同时使用多个字体以及如何在Qt-embedded中正确输出多语言文本 我按照步骤操作,但无法正确显示所有字符 有没有办法表

  • 问题内容: 如何使用CSS选择器加粗句子的第一个单词,就浏览器的可比性而言,这是一种好/坏方法吗? 码: 谢谢 问题答案: CSS中没有伪元素。您必须将第一个单词包装在一个额外的元素中,然后选择该元素。

  • 在CSS中,通过 font-weight属性 用来设置字体的粗细值,取值为 lighter | normal | bold | bolder,默认为 normal。lighter 为细体,normal 为正常粗细,bold 为粗体,bolder 为特粗体。如: .lighter { font-weight: lighter;} .normal { font-weight: normal

  • 我正在使用PDFBox从现有的PDF模板构建文档,因此它会打开文件,向其中添加文本,然后保存。除了尝试使用外部TTF字体外,它工作得很好。我尝试了不同的方法,花了两天时间寻找解决方案,但PDFBox上没有太多。 这里有一些代码,使用字体“Tardy Kid”,因为它不能被误认为其他任何东西,也不太可能是任何标准库的一部分。 代码执行良好,显示println中的“TardyKid”(显示字体已加载且

  • 问题内容: 在其中,可以使轴标签的文本为粗体 您也可以在正确的后端使用LaTeX 但是,当您将它们合并时,数学文本不再是粗体 以下LaTeX命令似乎也没有任何作用 如何在轴标签上加粗? 问题答案: 不幸的是,您不能使用加粗字体来加粗符号,请在tex.stackexchange上查看此问题。 如答案所示,您可以使用粗体phi: 您需要加载到TeX序言中:

  • $format = new \Vtiful\Kernel\Format($fileHandle); $boldStyle = $format->bold()->toResource();