org.apache.pdfbox.pdmodel.font

## Class PDSimpleFont

- java.lang.Object
- - org.apache.pdfbox.pdmodel.font.PDFont
  - - org.apache.pdfbox.pdmodel.font.PDSimpleFont

All Implemented Interfaces:
  COSObjectable, PDFontLike

Direct Known Subclasses:
  PDTrueTypeFont, PDType1CFont, PDType1Font, PDType3Font

    public abstract class PDSimpleFont
    extends PDFont

A simple font. Simple fonts use a PostScript encoding vector.

Author:
  John Hewson

### Field Summary

Fields
`protected Encoding` `encoding`
`protected GlyphList` `glyphList`

### Fields inherited from class org.apache.pdfbox.pdmodel.font.PDFont

`DEFAULT_FONT_MATRIX, dict`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `addToSubset(int codePoint)` Adds the given Unicode point to the subset.
`Encoding` `getEncoding()` Returns the Encoding vector.
`abstract org.apache.fontbox.FontBoxFont` `getFontBoxFont()` Returns the embedded or system font used for rendering.
`GlyphList` `getGlyphList()` Returns the Encoding vector.
`abstract GeneralPath` `getPath(String name)` Returns the path for the character with the given name.
`protected float` `getStandard14Width(int code)` Returns the glyph width from the AFM if this is a Standard 14 font.
`protected Boolean` `getSymbolicFlag()` Returns the value of the symbolic flag, allowing for the fact that the result may be indeterminate.
`boolean` `hasExplicitWidth(int code)` Returns true if the Font dictionary specifies an explicit width for the given glyph.
`abstract boolean` `hasGlyph(String name)` Returns true if the font contains the character with the given name.
`protected Boolean` `isFontSymbolic()` Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.
`boolean` `isStandard14()` Returns true if this font is one of the "Standard 14" fonts and receives special handling.
`boolean` `isSymbolic()` Returns true the font is a symbolic (that is, it does not use the Adobe Standard Roman character set).
`boolean` `isVertical()` Returns true if the font uses vertical writing mode.
`protected void` `readEncoding()` Reads the Encoding from the Font dictionary or the embedded or substituted font file.
`protected abstract Encoding` `readEncodingFromFont()` Called by readEncoding() if the encoding needs to be extracted from the font file.
`void` `subset()` Replaces this font with a subset containing only the given Unicode characters.
`String` `toUnicode(int code)` Returns the Unicode character sequence which corresponds to the given character code.
`String` `toUnicode(int code, GlyphList customGlyphList)` Returns the Unicode character sequence which corresponds to the given character code.
`boolean` `willBeSubset()` Returns true if this font will be subset when embedded.

### Methods inherited from class org.apache.pdfbox.pdmodel.font.PDFont

`encode, encode, equals, getAverageFontWidth, getCOSObject, getDisplacement, getFontDescriptor, getFontMatrix, getPositionVector, getSpaceWidth, getStandard14AFM, getStringWidth, getSubType, getToUnicodeCMap, getType, getWidth, getWidths, hashCode, readCMap, readCode, setFontDescriptor, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.pdfbox.pdmodel.font.PDFontLike

`getBoundingBox, getHeight, getName, getWidthFromFont, isDamaged, isEmbedded`

### Field Detail

#### encoding

    protected Encoding encoding

#### glyphList

    protected GlyphList glyphList

### Method Detail

#### readEncoding

    protected void readEncoding()
                         throws IOException

Reads the Encoding from the Font dictionary or the embedded or substituted font file. Must be called at the end of any subclass constructors.

Throws:
  `IOException` - if the font file could not be read

#### readEncodingFromFont

    protected abstract Encoding readEncodingFromFont()
                                              throws IOException

Called by readEncoding() if the encoding needs to be extracted from the font file.

Throws:
  `IOException` - if the font file could not be read.

#### getEncoding

    public Encoding getEncoding()

Returns the Encoding vector.

#### getGlyphList

    public GlyphList getGlyphList()

Returns the Encoding vector.

#### isSymbolic

    public final boolean isSymbolic()

Returns true the font is a symbolic (that is, it does not use the Adobe Standard Roman character set).

#### isFontSymbolic

    protected Boolean isFontSymbolic()

Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.

#### getSymbolicFlag

    protected final Boolean getSymbolicFlag()

Returns the value of the symbolic flag, allowing for the fact that the result may be indeterminate.

#### toUnicode

    public String toUnicode(int code)
                     throws IOException

Description copied from class: `PDFont`
Returns the Unicode character sequence which corresponds to the given character code.

Overrides:
  `toUnicode` in class `PDFont`
Parameters:
  `code` - character code
Returns:
  Unicode character(s)
Throws:
  `IOException`

#### toUnicode

    public String toUnicode(int code,
                            GlyphList customGlyphList)
                     throws IOException

Description copied from class: `PDFont`
Returns the Unicode character sequence which corresponds to the given character code.

Overrides:
  `toUnicode` in class `PDFont`
Parameters:
  `code` - character code
  `customGlyphList` - a custom glyph list to use instead of the Adobe Glyph List
Returns:
  Unicode character(s)
Throws:
  `IOException`

#### isVertical

    public boolean isVertical()

Description copied from class: `PDFont`
Returns true if the font uses vertical writing mode.

Specified by:
  `isVertical` in class `PDFont`

#### getStandard14Width

    protected final float getStandard14Width(int code)

Description copied from class: `PDFont`
Returns the glyph width from the AFM if this is a Standard 14 font.

Specified by:
  `getStandard14Width` in class `PDFont`
Parameters:
  `code` - character code
Returns:
  width in 1/1000 text space

#### isStandard14

    public boolean isStandard14()

Description copied from class: `PDFont`
Returns true if this font is one of the "Standard 14" fonts and receives special handling.

Overrides:
  `isStandard14` in class `PDFont`

#### getPath

    public abstract GeneralPath getPath(String name)
                                 throws IOException

Returns the path for the character with the given name. For some fonts, GIDs may be used instead of names when calling this method.

Returns:
  glyph path
Throws:
  `IOException` - if the path could not be read

#### hasGlyph

    public abstract boolean hasGlyph(String name)
                              throws IOException

Returns true if the font contains the character with the given name.

Throws:
  `IOException` - if the path could not be read

#### getFontBoxFont

    public abstract org.apache.fontbox.FontBoxFont getFontBoxFont()

Returns the embedded or system font used for rendering. This is never null.

#### addToSubset

    public void addToSubset(int codePoint)

Description copied from class: `PDFont`
Adds the given Unicode point to the subset.

Specified by:
  `addToSubset` in class `PDFont`
Parameters:
  `codePoint` - Unicode code point

#### subset

    public void subset()
                throws IOException

Description copied from class: `PDFont`
Replaces this font with a subset containing only the given Unicode characters.

Specified by:
  `subset` in class `PDFont`
Throws:
  `IOException` - if the subset could not be written

#### willBeSubset

    public boolean willBeSubset()

Description copied from class: `PDFont`
Returns true if this font will be subset when embedded.

Specified by:
  `willBeSubset` in class `PDFont`

#### hasExplicitWidth

    public boolean hasExplicitWidth(int code)
                             throws IOException

Description copied from interface: `PDFontLike`
Returns true if the Font dictionary specifies an explicit width for the given glyph. This includes Width, W but not default widths entries.

Parameters:
  `code` - character code
Throws:
  `IOException` - if the font could not be read