ChartDirector 7.0 (Java Edition)

Font Specification


Font Name

In ChartDirector for Java, a font can be specified using the format:

{font name} [Bold] [Italic]

where "{font name}" is a Java compatible font name (that is, the font name that is used in java.awt.Font). The "[Bold]" and "[Italic]" are optional. The followings are some examples:

Arial Bold
Times New Roman
Courier Bold Italic
SansSerif

When using the above format, you may use all fonts that are known to the Java system. You can use the Java API GraphicsEnvironment.getAvailableFontFamilyNames to determine the fonts known to the Java system.

ChartDirector also supports using true-type fonts that are unknown to the Java system, which is useful if you would like to use private fonts in your application. This is by specifying the font using the font file name. ChartDirector will try to load the font file from the Java class path as well as from the file system. For example, if you are using ChartDirector in a JSP web application, you can put the fonts files in the WEB-INF/classes inside your web application directory. You can also include the font files in a JAR file as include the JAR file in your Java applications.

Special Note for Headless Systems

Using Java fonts or private font files requires a working the Java font system.

Java running on systems with a GUI should have working font systems. However, some server side Java systems may be "headless", which are systems without GUI. In these cases, Java should be started in headless mode, such as by using the command line flag "-Djava.awt.headless=true". Otherwise, any attempt to use the Java font system may cause error. Please refer to the Java documentation for more details on "headless" mode.

If the Java font system is not working (eg. running on "headless" system but the headless mode is not enabled for Java), as a last resort, ChartDirector will switch to an internal backup font system, so the charts will still work. The internal font system only have 3 fonts - generic sans serif (Arial like font), generic serif (Times New Roman like font) and generic monospace (Courier like font). All of them have bold, italic and bold-italic styles.

Font List

Instead of specifying a single font file as the font name, you may specify a list of font files as the font name, separated by semi-colons. This is useful when using international characters that are only available in some fonts.

For example, if you would like to use the Arial font for western characters, and the MingLiu font for Chinese characters (since the Arial font does not have Chinese characters), you may specify the font name as "Arial;MingLiu". In this case, ChartDirector will try the Arial font first. If it cannot find a certain character there, it will try the MingLiu font.

Indirect Font Names

ChartDirector supports several special keywords for specifying the font name indirectly. When these keywords are used as font names, ChartDirector will look up the actual font names from a font table. The keywords are as follows:

KeywordsDescription
"normal"This default normal font, which is the first font in the font table. This is initially mapped to "Arial".
"bold"The default bold font, which is the second font in the font table. This is initially mapped to "Arial Bold".
"italic"The default italic font, which is the third font in the font table. This is initially mapped to "Arial Italic".
"boldItalic"The default bold-italic font, which is the fourth font in the font table. This is initially mapped to "Arial Bold Italic" .
"fontN"The (N + 1)th font in the font table (the first font is "font0").

The font table can be modified using BaseChart.setFontTable or DrawArea.setFontTable.

The advantage of using indirect font names is that you can change the fonts fonts in your charts in one place.

Font Index

The font index is ignored in ChartDirector for Java. It is solely for compatibility with other ChartDirector editions.

Font Size

The font size decides how big a font will appear in the image. The font size is expressed in a font unit called points. This is the same unit used in common word processors.

Instead of specifying font size, some ChartDirector API (eg. TextBox.setFontSize) allow you to specify font height and font width separately. In ChartDirector for Java, only font height is used as the font size, and font width is ignored.

Font Color

This is the color to draw the font. (See Color Specification on how colors are represented in ChartDirector.)

Font Angle

This is the angle in degrees by which the font should be rotated anti-clockwise.

Vertical Layout

By default, text are laid out horizontally, with characters being drawn from left to right.

ChartDirector also supports vertical layout, with characters being drawn from top to bottom. For example, you may use BaseChart.addText to add text that are laid out vertically. Vertical layout is common for oriental languages such as Chinese, Japanese and Korean.