Class ITextFontResolver

java.lang.Object
org.xhtmlrenderer.pdf.ITextFontResolver
All Implemented Interfaces:
FontResolver
Direct Known Subclasses:
CJKFontResolver

public class ITextFontResolver extends Object implements FontResolver
  • Field Details

  • Constructor Details

    • ITextFontResolver

      public ITextFontResolver()
  • Method Details

    • getFonts

      public Map<String,FontFamily> getFonts()
    • getDistinctFontFamilyNames

      public static Set<String> getDistinctFontFamilyNames(String path, String encoding, boolean embedded)
      Utility method which uses iText libraries to determine the family name(s) for the font at the given path. The iText APIs seem to indicate there can be more than one name, but this method will return a set of them. Use a name from this list when referencing the font in CSS for PDF output. Note that family names as reported by iText may vary from those reported by the AWT Font class, e.g. "Arial Unicode MS" for iText and "ArialUnicodeMS" for AWT.
      Parameters:
      path - local path to the font file
      encoding - same as what you would use for addFont(String, String, boolean)
      embedded - same as what you would use for addFont(String, String, boolean)
      Returns:
      set of all family names for the font file, as reported by iText libraries
    • resolveFont

      public @Nullable FSFont resolveFont(SharedContext renderingContext, FontSpecification spec)
      Specified by:
      resolveFont in interface FontResolver
    • flushCache

      public void flushCache()
      Specified by:
      flushCache in interface FontResolver
    • flushFontFaceFonts

      public void flushFontFaceFonts()
    • importFontFaces

      public void importFontFaces(List<FontFaceRule> fontFaces, UserAgentCallback userAgentCallback)
    • importFontFace

      private void importFontFace(FontFaceRule rule, UserAgentCallback userAgentCallback)
    • addFontDirectory

      public void addFontDirectory(String dir, boolean embedded) throws com.lowagie.text.DocumentException, IOException
      Add all fonts from given directory with encoding "CP1252" (don't ask me why :) )
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • addFontDirectory

      public void addFontDirectory(String dir, String encoding, boolean embedded) throws com.lowagie.text.DocumentException, IOException
      Add all fonts from given directory (all files with extension ".otf" and ".ttf")
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • filesWithExtensions

      private File[] filesWithExtensions(File f, String... extensions)
    • addFont

      public void addFont(String path, boolean embedded) throws com.lowagie.text.DocumentException, IOException
      Add the font with encoding "CP1252" (don't ask me why :) )
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • addFont

      public void addFont(String path, String encoding, boolean embedded) throws com.lowagie.text.DocumentException, IOException
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • addFont

      public void addFont(String path, String encoding, boolean embedded, @Nullable String pathToPFB) throws com.lowagie.text.DocumentException, IOException
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • addFont

      public void addFont(String path, @Nullable String fontFamilyNameOverride, String encoding, boolean embedded, @Nullable String pathToPFB) throws com.lowagie.text.DocumentException, IOException
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • addFont

      public void addFont(com.lowagie.text.pdf.BaseFont font, String path, @Nullable String fontFamilyNameOverride)
    • getFontFamilyNames

      private static Collection<String> getFontFamilyNames(com.lowagie.text.pdf.BaseFont font, @Nullable String fontFamilyNameOverride)
    • fontSupported

      private boolean fontSupported(String uri)
    • addFontFaceFont

      private void addFontFaceFont(@Nullable String fontFamilyNameOverride, @Nullable IdentValue fontWeightOverride, @Nullable IdentValue fontStyleOverride, String uri, String encoding, boolean embedded, byte[] ttfAfm, byte @Nullable [] pfb) throws com.lowagie.text.DocumentException, IOException
      Parameters:
      ttfAfm - the font as a byte array, possibly null
      Throws:
      com.lowagie.text.DocumentException
      IOException
    • fontDescription

      private static FontDescription fontDescription(@Nullable IdentValue fontWeightOverride, @Nullable IdentValue fontStyleOverride, String uri, byte[] ttfAfm, com.lowagie.text.pdf.BaseFont font)
    • readFile

      private byte[] readFile(String path) throws IOException
      Throws:
      IOException
    • getFontFamily

      private FontFamily getFontFamily(String fontFamilyName)
    • resolveFont

      private @Nullable FSFont resolveFont(String @Nullable [] families, float size, IdentValue weight, IdentValue style)
    • normalizeFontFamily

      String normalizeFontFamily(String fontFamily)
    • stripQuotes

      private String stripQuotes(String text)
      strip off the leading and trailing quote if they are there
    • resolveFont

      private @Nullable FSFont resolveFont(String fontFamily, float size, IdentValue weight, IdentValue style)
    • convertWeightToInt

      public static int convertWeightToInt(IdentValue weight)
    • loadFonts

      protected Map<String,FontFamily> loadFonts()
    • createFont

      private com.lowagie.text.pdf.BaseFont createFont(String name)
    • createFont

      private com.lowagie.text.pdf.BaseFont createFont(String name, String encoding, boolean embedded)
    • addCourier

      private void addCourier(Map<String,FontFamily> result)
    • addTimes

      private void addTimes(Map<String,FontFamily> result)
    • addHelvetica

      private void addHelvetica(Map<String,FontFamily> result)
    • addSymbol

      private void addSymbol(Map<String,FontFamily> result)
    • addZapfDingbats

      private void addZapfDingbats(Map<String,FontFamily> result)