/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports 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. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.engine.util; import net.sf.jasperreports.engine.JRConstants; import net.sf.jasperreports.engine.JRRuntimeException; /** * Exception raised when a font name used as value for the <code>fontName</code> attribute in the report template, * is not found in any of the runtime available JasperReports font extensions, nor among the font names available * to the Java Virtual Machine. * <p/> * The missing font check that raises this exception can be turned off by using the * <code>net.sf.jasperreports.awt.ignore.missing.font</code> boolean configuration property, * which is available globally or at report level. * <p/> * However, we advise you to leave this font check in place and rather make sure that inside your report template * you are using a font that will certainly be available at runtime, when the report will be filled or displayed/rendered * using the JRGraphics2DExporter (or the JasperViewer). * <br/> * This ensures that all font metrics and layout calculations performed while the report was designed/previewed, * remain consistent with those performed while the report is fill and then rendered on screen. * <br/> * By turning off the missing font check using the above mentioned configuration property, the engine will no longer * raise an exception when the font used inside the report template is not available at runtime. It will use a platform * dependent font instead of the missing font. It is highly likely that this default font that replaces the one specified * in the report template, comes with totally different font metrics and, as a consequence, all the layout calculations * made using this in-lieu font will be different then the ones used when the report was designed/previewed. * <br/> * The most common side effect of this is that text content will no longer fit the specified text element height * and the text content will get cut off, not appearing in the generated document. * <p/> * With the font check in place (as it is by default in JasperReports), all you need to do is to make sure you * are using only fonts that you ship with your reports, packaged as JasperReports font extensions (recommended), * or that you use fonts that you are sure will be available to the JVM where you deploy the reports * (Java logical fonts or system fonts). * <br/> * Note that the use of Java logical fonts such as: Serif, SansSerif, Monospaced, Dialog, and DialogInput is not encouraged * with JasperReports. This is because while these fonts are always available to JVM, they are not physical fonts, but rather * virtual/logical fonts that are mapped to different physical fonts, depending on the local JVM configuration. * <br/> * When using such a logical font in a report template, we are never sure which physical font will be used by the JVM, * and thus we are never sure about its font metrics either. The worse case happens when the report is designed/previewed on a machine * that maps the logical font on some small glyph font, but when the report is filled, on some other machine, the same logical * font is mapped to some other font, with bigger glyphs, and the text fill no longer fit the specified text element height, * resulting in the text being cut. * <br/> * This is why we encourage our users to package up TTF files as font extensions, using built JasperReports font extension * support, and thus make sure the report template is deployed together with the fonts it needs to render properly. * Fonts used inside a report template should be considered as indispensable resources, just like image files and resource bundles. * Just as a report would not display properly if some required logo image is missing, the same way the report would not * display properly if some required font is missing as well. And just as the logo image is shipped with the report template, * the same way font files should be shipped as well. * <p/> * For more details about working with JasperReports font extensions, check the JasperReports documentation and the samples * provided with the JasperReports project distribution package. * * @author Teodor Danciu (teodord@users.sourceforge.net) * @version $Id: JRRuntimeException.java 3033 2009-08-27 11:46:22Z teodord $ */ public class JRFontNotFoundException extends JRRuntimeException { private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID; /** * */ public JRFontNotFoundException(String font) { super("Font '" + font + "' is not available to the JVM. See the Javadoc for more details."); } }