[daisy] PDF export i18n tip: how to export UTF8-encoded docs to PDF in different languages, eg. Russian without ###

Vitaly Sazanovich vitaly.sazanovich at gmail.com
Sun May 6 09:19:32 CDT 2007


Hello,
as you might know from my prev. message (to Jira, but also auto-copied 
to the mail list) I was trying to see Russian letters in the exported 
PDF but to no avail.
What is said here: 
http://cocoon.apache.org/2.1/userdocs/pdf-serializer.html is all 
correct. What is not obvious from that is why it still doesn't work 
after all steps implemented.
In the example used at this link Arial is used. While if we do 'font' 
search throughout the Daisy sources we will find the following font aliases:
helvetica,sans-serif,tahoma,verdana,monospace,Tahoma,Verdana
It means that they all should be mentioned in the fop-config file! Plus 
their variations in weight and style.
Here is my fop-config.xml that I came up with finally. It's not quite 
correct since it uses only Arial (regular,italic,bold, italic-bold) for 
all fonts but I don't mind as long as it is not ###

But this solves the problem only partially. It turns out that what you 
see in html in tags pre, p and others is displayed correctly in PDF. But 
tags h1,h2,hX are still ### in PDF for Russian.
To fix this find file: 
..\webapp\daisy\resources\skins\default\xslt\xslfo-styles.xsl and add
<xsl:attribute name="font-family"><xsl:value-of 
select="$fontSansSerif"/></xsl:attribute>
to
<xsl:attribute-set name="h1" use-attribute-sets="base.heading.style"> 
and other attribute declarations of h's.

I hope this will save you some time (took me around 2 days) when you 
encounter such problems.
Also note that font aliases are case-sensitive. So we actually have to 
mention both Verdana and verdana, I guess.
--VS

PS Another problem that you might encounter when trying to generate font 
metric file is the infamous NoClassDefFoundError 
(http://www.google.com/search?hl=en&rlz=1B2RNFA_enIN210IN210&q=org.apache.fop.fonts.apps.TTFReader+noclassdeffounderror&btnG=Search) 
I solved this after around 100 attempts by adding/removing jars to the 
classpath.
Here is how my successful java call looked like:
C:\jdk6\bin\java -classpath 
"D:\dist\fonts\fop.jar;D:\dist\fonts\commons-io-1.1.jar;D:\dist\fonts\fop.jar;D:\dist\fonts\commons-logging-1.0.4.jar;D:\dist\fonts\fop.jar;D:\dist\fonts\xercesImpl-2.9.0.jar;D:\dist\fonts\xml-apis-1.3.04.jar;D:\dist\fonts\avalon-framework-impl-4.3.jar;D:\dist\fonts\xalan-2.7.0.jar" 
org.apache.fop.fonts.apps.TTFReader courbi.ttf courbi.ttf.xml
fop.jar is from the latest fop dist package (It contains TTFReader.main 
function unlike some earlier versions).
PS2 Here is the result of my endeavors: http://psy.ediew.com/psy/2-DSY.html


__________________________________________________________________________
<configuration>
  <fonts>
    <font metrics-file="file:///home/adsapient/dist/fonts/arial.ttf.xml"
          kerning="yes" embed-file="/home/adsapient/dist/fonts/arial.ttf">
      <font-triplet name="Arial" style="normal" weight="normal"/>
      <font-triplet name="ArialMT" style="normal" weight="normal"/>

      <font-triplet name="sans-serif" style="normal" weight="normal"/>
      <font-triplet name="serif" style="normal" weight="normal"/>
      <font-triplet name="helvetica" style="normal" weight="normal"/>

      <font-triplet name="Tahoma" style="normal" weight="normal"/>
      <font-triplet name="Verdana" style="normal" weight="normal"/>
      <font-triplet name="Helvetica" style="normal" weight="normal"/>

      <font-triplet name="tahoma" style="normal" weight="normal"/>
      <font-triplet name="verdana" style="normal" weight="normal"/>
      <font-triplet name="monospace" style="normal" weight="normal"/>

    <font-triplet name="Courier" style="normal" weight="normal"/>
    <font-triplet name="Courier New" style="normal" weight="normal"/>

    </font>

    <font metrics-file="file:///home/adsapient/dist/fonts/arialbd.ttf.xml"
          kerning="yes" embed-file="/home/adsapient/dist/fonts/arialbd.ttf">
      <font-triplet name="Arial" style="normal" weight="bold"/>
      <font-triplet name="ArialMT" style="normal" weight="bold"/>

      <font-triplet name="sans-serif" style="normal" weight="bold"/>
      <font-triplet name="serif" style="normal" weight="bold"/>
      <font-triplet name="helvetica" style="normal" weight="bold"/>

      <font-triplet name="Tahoma" style="normal" weight="bold"/>
      <font-triplet name="Verdana" style="normal" weight="bold"/>
      <font-triplet name="Helvetica" style="normal" weight="bold"/>


      <font-triplet name="tahoma" style="normal" weight="bold"/>
      <font-triplet name="verdana" style="normal" weight="bold"/>
      <font-triplet name="monospace" style="normal" weight="bold"/>

    <font-triplet name="Courier" style="normal" weight="bold"/>
    <font-triplet name="Courier New" style="normal" weight="bold"/>

    </font>
    <font metrics-file="file:///home/adsapient/dist/fonts/ariali.ttf.xml"
          kerning="yes" embed-file="/home/adsapient/dist/fonts/ariali.ttf">
      <font-triplet name="Arial" style="italic" weight="normal"/>
      <font-triplet name="ArialMT" style="italic" weight="normal"/>

      <font-triplet name="sans-serif" style="italic" weight="normal"/>
      <font-triplet name="serif" style="italic" weight="normal"/>
      <font-triplet name="helvetica" style="italic" weight="normal"/>

      <font-triplet name="Tahoma" style="italic" weight="normal"/>
      <font-triplet name="Verdana" style="italic" weight="normal"/>
      <font-triplet name="Helvetica" style="italic" weight="normal"/>


      <font-triplet name="tahoma" style="italic" weight="normal"/>
      <font-triplet name="verdana" style="italic" weight="normal"/>
      <font-triplet name="monospace" style="italic" weight="normal"/>

    <font-triplet name="Courier" style="italic" weight="normal"/>
    <font-triplet name="Courier New" style="italic" weight="normal"/>

    </font>

    <font metrics-file="file:///home/adsapient/dist/fonts/arialbi.ttf.xml"
          kerning="yes" embed-file="/home/adsapient/dist/fonts/arialbi.ttf">
      <font-triplet name="Arial" style="italic" weight="bold"/>
      <font-triplet name="ArialMT" style="italic" weight="bold"/>

      <font-triplet name="sans-serif" style="italic" weight="bold"/>
      <font-triplet name="serif" style="italic" weight="bold"/>
      <font-triplet name="helvetica" style="italic" weight="bold"/>

      <font-triplet name="Tahoma" style="italic" weight="bold"/>
      <font-triplet name="Verdana" style="italic" weight="bold"/>
      <font-triplet name="Helvetica" style="italic" weight="bold"/>

      <font-triplet name="tahoma" style="italic" weight="bold"/>
      <font-triplet name="verdana" style="italic" weight="bold"/>
      <font-triplet name="monospace" style="italic" weight="bold"/>

    <font-triplet name="Courier" style="italic" weight="bold"/>
    <font-triplet name="Courier New" style="italic" weight="bold"/>

    </font>

  </fonts>
</configuration>


More information about the daisy mailing list