/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2006 - 2013 Pentaho Corporation and Contributors. All rights reserved.
*/
package org.pentaho.reporting.libraries.fonts.itext;
import com.lowagie.text.pdf.BaseFont;
/**
* A PDF font record. The record is used to cache the generated PDF fonts. Once created the base font record is
* immutable. The base font record does not store font sizes.
*
* @author Thomas Morgner
*/
public final class BaseFontRecord {
/**
* The iText base font.
*/
private BaseFont baseFont;
/**
* The file name.
*/
private String fileName;
/**
* A flag indicating whether this font record describes an embedded PDF font.
*/
private boolean embedded;
// give me a marker to know whether to apply manual bold and italics styles ..
private boolean trueTypeFont;
private transient BaseFontRecordKey key;
private boolean bold;
private boolean italics;
/**
* Creates a new font record.
*
* @param fileName the physical filename name of the font file.
* @param embedded a flag that defines whether this font should be embedded in the target document.
* @param baseFont the generated base font for the given font definition.
*/
public BaseFontRecord( final String fileName,
final boolean trueTypeFont,
final boolean embedded,
final BaseFont baseFont,
final boolean bold,
final boolean italics ) {
if ( baseFont == null ) {
throw new NullPointerException( "iText-FontDefinition is null." );
}
if ( fileName == null ) {
throw new NullPointerException( "Logical font name is null." );
}
this.trueTypeFont = trueTypeFont;
this.baseFont = baseFont;
this.fileName = fileName;
this.embedded = embedded;
this.italics = italics;
this.bold = bold;
}
public boolean isTrueTypeFont() {
return trueTypeFont;
}
public boolean isBold() {
return bold;
}
public boolean isItalics() {
return italics;
}
/**
* Creates a font record key.
*
* @return the font record key.
*/
public BaseFontRecordKey createKey() {
if ( key == null ) {
key = new BaseFontRecordKey( getFileName(), getEncoding(), isEmbedded() );
}
return key;
}
/**
* Returns the encoding.
*
* @return the encoding.
*/
public String getEncoding() {
return baseFont.getEncoding();
}
/**
* Returns true if the font should be embedded in the PDF output, and false if not.
*
* @return true or false.
*/
public boolean isEmbedded() {
return embedded;
}
/**
* Returns the logical name of the font.
*
* @return the logical name.
*/
public String getFileName() {
return fileName;
}
/**
* Returns the iText BaseFont.
*
* @return the itext BaseFont.
*/
public BaseFont getBaseFont() {
return baseFont;
}
}