/* =====================================================================
* OrsonPDF : a fast, light-weight PDF library for the Java(tm) platform
* =====================================================================
*
* (C)opyright 2013-2015, by Object Refinery Limited. All rights reserved.
*
* Project Info: http://www.object-refinery.com/orsonpdf/index.html
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.]
*
* If you do not wish to be bound by the terms of the GPL, an alternative
* commercial license can be purchased. For details, please see visit the
* Orson PDF home page:
*
* http://www.object-refinery.com/orsonpdf/index.html
*
*/
package com.orsonpdf;
/**
* A {@link PDFObject} representing a PDF font.
*/
public class PDFFont extends PDFObject {
/** Identifier for the standard PDF font 'Helvetica'. */
public static final String HELVETICA = "Helvetica";
/** Identifier for the standard PDF font 'Helvetica-Bold'. */
public static final String HELVETICA_BOLD = "Helvetica-Bold";
/** Identifier for the standard PDF font 'Helvetica-Oblique'. */
public static final String HELVETICA_OBLIQUE = "Helvetica-Oblique";
/** Identifier for the standard PDF font 'Helvetica-BoldOblique'. */
public static final String HELVETICA_BOLDOBLIQUE = "Helvetica-BoldOblique";
/** Identifier for the standard PDF font 'Times-Roman'. */
public static final String TIMES_ROMAN = "Times-Roman";
/** Identifier for the standard PDF font 'Times-Bold'. */
public static final String TIMES_BOLD = "Times-Bold";
/** Identifier for the standard PDF font 'Times-Italic'. */
public static final String TIMES_ITALIC = "Times-Italic";
/** Identifier for the standard PDF font 'Times-BoldItalic'. */
public static final String TIMES_BOLDITALIC = "Times-BoldItalic";
/** Identifier for the standard PDF font 'Courier'. */
public static final String COURIER = "Courier";
/** Identifier for the standard PDF font 'Courier-Bold'. */
public static final String COURIER_BOLD = "Courier-Bold";
/** Identifier for the standard PDF font 'Courier-Italic'. */
public static final String COURIER_ITALIC = "Courier-Italic";
/** Identifier for the standard PDF font 'Courier-BoldItalic'. */
public static final String COURIER_BOLDITALIC = "Courier-BoldItalic";
private String name;
/** The BaseFont (for example, "/Helvetica"). */
private String baseFont;
private String encoding;
/**
* Creates a new {@code PDFFont} instance.
*
* @param number the PDF object number.
* @param generation the PDF object generation number.
* @param name the font name within the PDF document.
* @param baseFont the base font name.
* @param encoding the encoding.
*/
PDFFont(int number, int generation, String name, String baseFont,
String encoding) {
super(number, generation);
this.name = name;
this.baseFont = baseFont;
this.encoding = encoding;
}
/**
* Returns the name of the font within the PDF document (this is not the
* same as the font name).
*
* @return The font name.
*/
public String getName() {
return this.name;
}
/**
* Returns the bytes that go between the 'obj' and 'endobj' in the
* PDF output for this object.
*
* @return A byte array.
*/
@Override
public byte[] getObjectBytes() {
return createDictionary().toPDFBytes();
}
private Dictionary createDictionary() {
Dictionary dictionary = new Dictionary("/Font");
dictionary.put("/Subtype", "/Type1");
dictionary.put("/Name", this.name);
dictionary.put("/BaseFont", this.baseFont);
dictionary.put("/Encoding", this.encoding);
return dictionary;
}
}