1 /*
2 * JasperReports - Free Java Reporting Library.
3 * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4 * http://www.jaspersoft.com
5 *
6 * Unless you have purchased a commercial license agreement from Jaspersoft,
7 * the following license terms apply:
8 *
9 * This program is part of JasperReports.
10 *
11 * JasperReports is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * JasperReports is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23 */
24 package net.sf.jasperreports.engine.util;
25
26 import java.awt.GraphicsEnvironment;
27 import java.util.Arrays;
28 import java.util.HashSet;
29 import java.util.Set;
30
31 import net.sf.jasperreports.engine.JRRuntimeException;
32
33
34 /**
35 * @author Teodor Danciu (teodord@users.sourceforge.net)
36 */
37 public final class JRGraphEnvInitializer
38 {
39 public static final String EXCEPTION_MESSAGE_KEY_INITIALIZATION_ERROR = "util.graphic.environment.initialization.error";
40
41 /**
42 *
43 */
44 private static Set<String> AVAILABLE_FONT_FACE_NAMES; //NOPMD
45
46 /**
47 *
48 */
49 public static synchronized void initializeGraphEnv()
50 {
51 if (AVAILABLE_FONT_FACE_NAMES == null)
52 {
53 AVAILABLE_FONT_FACE_NAMES = new HashSet<String>();
54
55 try
56 {
57 AVAILABLE_FONT_FACE_NAMES.addAll(
58 Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())
59 );
60 }
61 catch(Exception e)
62 {
63 throw
64 new JRRuntimeException(
65 EXCEPTION_MESSAGE_KEY_INITIALIZATION_ERROR,
66 (Object[])null,
67 e);
68 }
69 }
70 }
71
72 /**
73 *
74 */
75 public static boolean isAwtFontAvailable(String font)
76 {
77 initializeGraphEnv();
78
79 return AVAILABLE_FONT_FACE_NAMES.contains(font);//FIXMEFONT not sure if we should check families or fonts
80 }
81
82
83 private JRGraphEnvInitializer()
84 {
85 }
86 }
87