If you just need a couple of fonts use this class (untested):
import com.lowagie.text.pdf.*;
public class SpeedFontMapper extends DefaultFontMapper {
/** Inserts a single font into the map. The encoding
* will be <CODE>BaseFont.CP1252</CODE> but can be
* changed later.
* @param file the font file name
* @return <CODE>true</CODE> if the font was inserted
*/
public boolean insertSingleFont(String file) {
String name = file.toLowerCase();
BaseFont bf = null;
try {
if (name.endsWith(".ttf") || name.endsWith(".afm")) {
bf = BaseFont.createFont(file, BaseFont.CP1252, false,
BaseFont.NOT_CACHED, null, null);
String names[][] = bf.getFullFontName();
bf = null;
insertNames(names, file);
}
else if (name.endsWith(".ttc")) {
String ttcs[] = BaseFont.enumerateTTCNames(file);
for (int j = 0; j < ttcs.length; ++j) {
String nt = file + "," + (j + 1);
bf = BaseFont.createFont(nt, BaseFont.CP1252, false,
BaseFont.NOT_CACHED, null, null);
String names[][] = bf.getFullFontName();
bf = null;
insertNames(names, nt);
}
}
}
catch (Exception e) {
return false;
}
return true;
}
}
Best Regards,
Paulo Soares
> -----Original Message-----
> From: Erwin Achermann [SMTP:[EMAIL PROTECTED]]
> Sent: Friday, June 14, 2002 11:05
> To: iText ML (E-Mail)
> Subject: RE: [iText-questions] DefaultFontMapper.insertDirectory is
> (too) slow
>
> Paulo,
> it was (is) my first attempt to remedy for the problem by making one only
> instance of the DefaultFontMapper in our application. And every thread
> uses this one. But still it takes too long for the DefaultFontMapper to
> read in our font directory. We cannot afford the time on app startup, and
> even less on the first 'toPdf'-action. All I'd expect from the FontMapper
> is to build a table mapping font-name and -attributes to the appropriate
> font-file, so that the fontfactory later will know which file to load
> (avoiding a scan of the font directory in each
> FontFactory.getFont()-call). But the DefaultFontMapper does way more than
> that, apparently it instantiates each possible font... and then throws
> most of each instantiated font away again.
>
> Cheers
> Erwin
>
> > -----Original Message-----
> > From: Paulo Soares [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, June 14, 2002 11:28 AM
> > To: Erwin Achermann; iText ML (E-Mail)
> > Subject: RE: [iText-questions] DefaultFontMapper.insertDirectory is
> > (too) slow
> >
> >
> > There's no problem here. First of all the class DefaultFontMapper is a
> > generic class that may not be suitable for all the cases. You
> > can sub-class
> > it or create a new one if special capabilities are needed.
> > You only have to create an instance of it once and then use
> > it everywhere in
> > other threads; I don't think the load time is that important
> > in this case.
> > Lazy evaluation would require scanning the directory and
> > reading all the
> > files to find the font, saving no time in the process.
> >
> > Best Regards,
> > Paulo Soares
> >
> > > -----Original Message-----
> > > From: Erwin Achermann [SMTP:[EMAIL PROTECTED]]
> > > Sent: Friday, June 14, 2002 10:08
> > > To: iText ML (E-Mail)
> > > Subject: [iText-questions]
> > DefaultFontMapper.insertDirectory is (too)
> > > slow
> > >
> > > Hi Bruno,
> > >
> > > we are facing the problem, that inserDirectory processes
> > 250 font files,
> > > consuming more time than acceptable (8 seconds). I was
> > browsing to code
> > > and observed that for each font file a basefont is created.
> > This includes
> > > loading mapping tables (which is what we need in the first
> > place) but this
> > > also include construction of kerning tables, and numerous other
> > > datastructure:
> > >
> > > TrueTypeFont.process()
> > > ...
> > > fontName = getBaseFont();
> > > fullName = getNames(4); //full name
> > > familyName = getNames(1); //family name
> > > fillTables();
> > > readGlyphWidths();
> > > readCMaps();
> > > readKerning();
> > > ...
> > >
> > > I would propose that these font information are only loaded
> > when the font
> > > is actually needed in the document, and thus speeding up the
> > > insertDirectory-call. A lazy Font construction, if you wish. Is this
> > > problem recognized, planned to be solved or am I completely
> > mistaken here?
> > >
> > >
> > > Cheers
> > > Erwin
> > >
> > >
> > > _______________________________________________________________
> > >
> > > Don't miss the 2002 Sprint PCS Application Developer's Conference
> > > August 25-28 in Las Vegas -
> > > http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
> > >
> > > _______________________________________________
> > > iText-questions mailing list
> > > [EMAIL PROTECTED]
> > > https://lists.sourceforge.net/lists/listinfo/itext-questions
> >
>
> _______________________________________________________________
>
> Don't miss the 2002 Sprint PCS Application Developer's Conference
> August 25-28 in Las Vegas -
> http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
>
> _______________________________________________
> iText-questions mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
_______________________________________________________________
Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions