Class PDFont

  • Direct Known Subclasses:
    PDCIDFont, PDSimpleFont

    public abstract class PDFont
    extends PDResource
    This is PD representation of font.
    Author:
    Sergey Shemyakov
    • Field Detail

      • toUnicodeCMap

        protected PDCMap toUnicodeCMap
      • isFontParsed

        protected boolean isFontParsed
      • boundingBox

        protected double[] boundingBox
    • Constructor Detail

      • PDFont

        public PDFont​(COSDictionary dictionary)
        Constructor from COSDictionary.
        Parameters:
        dictionary - is font dictionary.
    • Method Detail

      • getDictionary

        public COSDictionary getDictionary()
        Returns:
        font COSDictionary.
      • getFontDescriptor

        public PDFontDescriptor getFontDescriptor()
        Returns:
        font descriptor COSDictionary.
      • getType

        public String getType()
        Returns:
        font type (Type entry).
      • getSubtype

        public ASAtom getSubtype()
        Returns:
        font subtype (Subtype entry).
      • isSymbolic

        public boolean isSymbolic()
        Returns:
        true if the font flags in the font descriptor dictionary mark indicate that the font is symbolic (the entry /Flags has bit 3 set to 1 and bit 6 set to 0). descriptor is null.
      • getEncodingMapping

        public Encoding getEncodingMapping()
        Returns:
        encoding mapping object for this font.
      • getFontWeight

        public Double getFontWeight()
      • getName

        public String getName()
        Returns:
        name of the font as specified in BaseFont key of font dictionary.
      • getNameWithoutSubset

        public String getNameWithoutSubset()
        Returns:
        name of the font without subset as specified in BaseFont key of font dictionary.
      • getBoundingBox

        public double[] getBoundingBox()
      • getEncoding

        public COSObject getEncoding()
        Returns:
        encoding of the font as specified in Encoding key of font dictionary.
      • getDifferences

        public Map<Integer,​String> getDifferences()
        Returns:
        map of differences as given in Differences key in Encoding of this font.
      • getDifferencesFromCosEncoding

        public static Map<Integer,​String> getDifferencesFromCosEncoding​(COSObject e)
        Returns:
        map of differences as given in Differences key in Encoding.
      • getWidths

        public COSObject getWidths()
        Returns:
        widths of the font as specified in Widths key of font dictionary.
      • getFirstChar

        public Long getFirstChar()
        Returns:
        first char in the font as specified in FirstChar key of font dictionary.
      • getLastChar

        public Long getLastChar()
        Returns:
        last char in the font as specified in LastChar key of font dictionary.
      • readCode

        public int readCode​(InputStream stream)
                     throws IOException
        Method reads next character code from stream according to font data. It can contain from 1 to 4 bytes.
        Parameters:
        stream - is stream with raw data.
        Returns:
        next character code read.
        Throws:
        IOException - if reading fails.
      • getFontProgram

        public abstract FontProgram getFontProgram()
        Returns:
        embedded font program fo this PDFont.
      • getWidthFromProgram

        public abstract float getWidthFromProgram​(int code)
        Gets width of given code from font program.
        Parameters:
        code - is code of character in strings to display.
        Returns:
        width of glyph for this code.
      • glyphIsPresent

        public abstract boolean glyphIsPresent​(int code)
        Checks if glyph for given code is present in this font.
        Parameters:
        code - is code for glyph in this font.
        Returns:
        true if glyph is present.
      • toUnicode

        public String toUnicode​(int code)
        Gets Unicode string for given character code. This method returns null in case when no toUnicode mapping for this character was found, so some inherited classes need to call this method, check return value on null and then implement their special logic.
        Parameters:
        code - is code for character.
        Returns:
        Unicode string
      • cMapToUnicode

        public String cMapToUnicode​(int code)
        Gets toUnicode value just from toUnicode cMap.
        Parameters:
        code - is character code.
        Returns:
        Unicode value as specified in toUnicode cMap.
      • getProgramSubtype

        public ASAtom getProgramSubtype()
        Returns:
        value of Subtype key in embedded font program stream or null if no value available.
      • getWidth

        public Double getWidth​(int code)
        Gets width for glyph with given code in this font.
        Parameters:
        code - is code of glyph.
        Returns:
        width for glyph with given code as specified in Widths array.
      • getDefaultWidth

        public Double getDefaultWidth()
        Returns:
        default width for this font as specified in font descriptor.
      • isSuccessfullyParsed

        public boolean isSuccessfullyParsed()
        Returns:
        true if font program for this font has been successfully parsed.
      • setSuccessfullyParsed

        public void setSuccessfullyParsed​(boolean successfullyParsed)
        Sets flag indicating successful parsing of embedded font program.
      • isSubset

        protected boolean isSubset()
      • getAscent

        public Double getAscent()
      • getDescent

        public Double getDescent()