我正在使用 DITA Open Toolkit 1.7 和 RenderX XEP 将 DITA 映射转换为 PDF。在 DITA 主题中,产品名称是使用 conrefs 插入的。我的一个产品名称很长。在表格中使用时会导致布局问题。因此,我在通过 conref 重用的短语中插入了一个软连字符:
<ph id="PD_FineReader2Comp">DOXiS4 FineReader2­Components</ph>
这在生成的页面中效果很好,但在书签中会产生一个问题,其中一个符号代替软连字符显示。
显然,这是一个编码问题。似乎 UTF-8 字符在 PDF 内容中得到了正确处理,但在 PDF 书签中却没有,根据以下来源,可以使用一些 PDF-16 字符(但我不明白哪些字符)。
- http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf
- http://www.setasign.de/support/tips-and-tricks/use-unicode-in-string-values/
DITA Open Toolkit 似乎使用以下代码片段从主题标题创建书签:
<fo:bookmark>
<xsl:attribute name="internal-destination">
<xsl:call-template name="generate-toc-id"/>
</xsl:attribute>
<xsl:if test="$bookmarkStyle!='EXPANDED'">
<xsl:attribute name="starting-state">hide</xsl:attribute>
</xsl:if>
<fo:bookmark-title>
<xsl:value-of select="normalize-space($topicTitle)"/>
</fo:bookmark-title>
<xsl:apply-templates mode="bookmark"/>
</fo:bookmark>
XSL 样式表有 2.0 版。
我想创建一个删除违规字符的覆盖。我怎样才能做到这一点?
- 是否可以正确解决编码问题?(可能不可能)。
- 除了空格、制表符、换行符和回车符之外,是否有任何 XSL 函数或属性可以删除空格?
- 或者我需要对软连字符进行特殊处理吗?