xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From eborisow <ebori...@yahoo.com>
Subject Trying to programmatically add fonts
Date Fri, 05 Sep 2008 16:19:24 GMT

Hi,

I am trying to embed fonts in a program.  I was able to get my fonts to work
when I run fop.bat standalone.  Here were the relevant lines from the config
xml.

<font-base>file:///C:/programs/apache/fop-0.94-bin-jdk1.3/fonts/</font-base>

<!-- not sure if font tags will display on web site -->
<fonts>
        
          <font-triplet name="Verdana" style="normal" weight="normal"/>
        
		
          <font-triplet name="Verdana" style="normal" weight="bold"/>
        
		
          <font-triplet name="Verdana" style="italic" weight="bold"/>
        
</fonts>

Like I said, this one works.  Now, in an application, I am trying to do the
same using the API.


            // Set the Font Base URL
           
fopFactory.setFontBaseURL("file:///C:/programs/apache/fop-0.94-bin-jdk1.3/fonts/");
            
            String font1 = "verdana.xml";
            String font1Url = "verdana.ttf";
            
            String font2 = "verdanab.xml";
            String font2Url = "verdanab.ttf";
            
            String font3 = "verdanaz.xml";
            String font3Url = "verdanaz.ttf";
            
            FontTriplet fontTriplet1 = new FontTriplet("Verdana",
Font.STYLE_NORMAL, Font.WEIGHT_NORMAL);
            FontTriplet fontTriplet2 = new FontTriplet("Verdana",
Font.STYLE_NORMAL, Font.WEIGHT_BOLD);
            FontTriplet fontTriplet3 = new FontTriplet("Verdana",
Font.STYLE_ITALIC, Font.WEIGHT_BOLD);
            
            List fontTriplets1 = new ArrayList();
            fontTriplets1.add(fontTriplet1);
            
            List fontTriplets2 = new ArrayList();
            fontTriplets2.add(fontTriplet2);
            
            List fontTriplets3 = new ArrayList();
            fontTriplets3.add(fontTriplet3);
            
            EmbedFontInfo verdanaFontInfo = new EmbedFontInfo(font1, true,
fontTriplets1, font1Url);
            EmbedFontInfo verdanaBoldFontInfo = new EmbedFontInfo(font2,
true, fontTriplets2, font2Url);
            EmbedFontInfo verdanaBoldItalicFontInfo = new
EmbedFontInfo(font3, true, fontTriplets3, font3Url);
            FontCache fontCache = fopFactory.getFontCache();
            fontCache.addFont(verdanaFontInfo);
            fontCache.addFont(verdanaBoldFontInfo);
            fontCache.addFont(verdanaBoldItalicFontInfo);
            fontCache.save();

I test the cache using the following:

            log.debug("Contains verdana font: " +
fontCache.containsFont(verdanaFontInfo));
            log.debug("Verdana font info is: " +
fontCache.getFont("verdana.ttf").toString());
            
            log.debug("Contains verdana-bold font: " +
fontCache.containsFont(verdanaBoldFontInfo));
            log.debug("Verdana-bold font info is: " +
fontCache.getFont("verdanab.ttf").toString());
            
            log.debug("Contains verdana-bold-italic font: " +
fontCache.containsFont(verdanaBoldItalicFontInfo));
            log.debug("Verdana-bold-italic font info is: " +
fontCache.getFont("verdanaz.ttf").toString());

In the log, I get the following:

2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:153)  - Contains verdana font:
true
2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:154)  - Verdana font info is:
metrics-url=verdana.xml,embed-url=verdana.ttf, kerning=true,
font-triplet=[Verdana,normal,400], lastModified=-1
2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:156)  - Contains verdana-bold
font: true
2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:157)  - Verdana-bold font info
is: metrics-url=verdanab.xml,embed-url=verdanab.ttf, kerning=true,
font-triplet=[Verdana,normal,700], lastModified=-1
2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:159)  - Contains
verdana-bold-italic font: true
2008-09-05 12:05:12,014 [main] DEBUG
embedding.ExampleXML2PDF(ExampleXML2PDF.java:160)  - Verdana-bold-italic
font info is: metrics-url=verdanaz.xml,embed-url=verdanaz.ttf, kerning=true,
font-triplet=[Verdana,italic,700], lastModified=-1

However, when it actually tries to convert the XML to PDF, I see the
following message in the log:

2008-09-05 12:05:26,905 [main] DEBUG
org.apache.fop.fonts.FontInfo(FontInfo.java:134)  - Font lookup: Verdana
normal 400
2008-09-05 12:05:26,905 [main] WARN 
org.apache.fop.fonts.FontInfo(FontInfo.java:263)  - Font
'Verdana,normal,400' not found. Substituting with 'any,normal,400'.

So, I am obviously doing something wrong.  Can someone see what the problem
is?

Thanks,
Eric
-- 
View this message in context: http://www.nabble.com/Trying-to-programmatically-add-fonts-tp19334713p19334713.html
Sent from the FOP - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Mime
View raw message