首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TrueType字体在AFP与Apache?

如何使用TrueType字体在AFP与Apache?
EN

Stack Overflow用户
提问于 2017-11-21 00:39:03
回答 1查看 561关注 0票数 2

我试图使用TrueType字体在法新社与ApacheFOP2.2。

我相信我的配置是正确的,但我得到了以下例外:

代码语言:javascript
复制
java.lang.ClassCastException: org.apache.fop.afp.modca.MapDataResource cannot be cast to org.apache.fop.afp.modca.MapCodedFont
    at org.apache.fop.afp.modca.ActiveEnvironmentGroup.getCurrentMapCodedFont(ActiveEnvironmentGroup.java:286)
    at org.apache.fop.afp.modca.ActiveEnvironmentGroup.createFont(ActiveEnvironmentGroup.java:201)
    at org.apache.fop.afp.modca.AbstractPageObject.createFont(AbstractPageObject.java:149)
    at org.apache.fop.afp.DataStream.createFont(DataStream.java:331)
    at org.apache.fop.afp.DataStream.addFontsToCurrentPage(DataStream.java:313)
    at org.apache.fop.render.afp.AFPDocumentHandler.endPage(AFPDocumentHandler.java:310)
    at org.apache.fop.render.intermediate.util.IFDocumentHandlerProxy.endPage(IFDocumentHandlerProxy.java:167)
    at org.apache.fop.render.intermediate.EventProducingFilter.endPage(EventProducingFilter.java:48)
    at org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.java:603)
    at org.apache.fop.area.RenderPagesModel.renderPage(RenderPagesModel.java:193)
    at org.apache.fop.area.RenderPagesModel.checkPreparedPages(RenderPagesModel.java:174)
    at org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:146)
    at org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.finishPage(AbstractPageSequenceLayoutManager.java:316)
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:226)
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:145)
    at org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267)
    at org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:130)
    at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:360)
    at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:190)

下面是我的conf.xml配置的一个片段:

代码语言:javascript
复制
<renderer mime="application/x-afp">
    <fonts>
        <font name="Script MT Bold" kerning="yes" embed-url="/fonts/SCRIPTBL.TTF">
            <font-triplet name="Script MT Bold" style="normal" weight="normal"/>
        </font>
    </fonts>
</renderer>

我需要额外的配置吗?

此外,我必须嵌入TrueType字体在法新社或我可以简单地包括一个引用和依赖主机打印机来解决它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 08:10:50

我也面临着同样的例外。在创建用于呈现当前页面的字体时,FOP似乎填充了一个AbstractStructuredObject列表。

在加载True类型字体时,FOP为它创建一个MapDataResource,并在AbstractStructuredObject列表中填充相同的字体。

但是,如果页面有其他字体,比如光栅字体,那么在加载这个光栅字体之前,它会从列表中获得最新的AbstractStructuredObject,并将其输入到MapCodedFont。由于最近大多数的对象都是MapDataResource类型的,所以我们得到了ClassCastException。

作为一种解决办法,我目前只在我的AFP文档中使用True Type字体,并将默认的字体-三重奏添加到其中一个字体配置中。

代码语言:javascript
复制
<font name="Script MT Bold" kerning="yes" embed-url="/fonts/SCRIPTBL.TTF">
    <font-triplet name="Script MT Bold" style="normal" weight="normal"/>
    <font-triplet name="any" style="normal" weight="normal"/>
</font>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47403449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档