Я конвертирую карты DITA в PDF, используя DITA Open Toolkit 1.7 и RenderX XEP. В разделах DITA имена продуктов вставляются с помощью conrefs. Один из моих наименований продуктов довольно длинный. Это вызвало проблемы с компоновкой при использовании в таблицах. Поэтому я вставил мягкий дефис в фразу, которую повторно используют через conref:Как разбить мягкую дефис в Юникоде из закладок PDF, созданных с использованием XSL-FO
<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/
The 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, которые удаляют пробелы, кроме пробелов, вкладок, перевода строки и возврата каретки?
- Или мне нужна специальная обработка для мягкого дефиса?
Благодарим за предложение. Он работает и исправляет непосредственную проблему. –