The set of supported fonts varies between different implementations of the Java platform. For the terminology used, see the Font class description.
The JRE supports TrueType and PostScript Type 1 fonts.
Physical fonts need to be installed in locations known to the Java runtime environment. The JRE looks in two locations: the lib/fonts
directory within the JRE itself, and the normal font ___location(s) defined by the host operating system. If fonts with the same name exist in both locations, the one in the lib/fonts
directory is used.
You can add physical fonts that use a supported font technology by installing them in a way supported by the host operating system. The recommended ___location to add per-user fonts on Solaris or Linux is the $HOME/.fonts
directory which is searched by the platform's libfontconfig
, and which is in turn used by the JRE.
Do not make any modifications under the lib
directory within the JRE, as this is not supported since JDK 9.
Logical font names are mapped to physical fonts in implementation dependent ways. Typically one logical font name maps to several physical fonts in order to cover a large range of characters. The JRE uses font configuration files to define the mapping; see Font Configuration Files.
The Oracle JRE includes several physical fonts of the "Lucida" design family. These fonts are physical fonts, but since they come with the JRE, they don't depend on the host operating system. These fonts are also licensed for use in other implementations of the Java Platform. Using them provides the benefit of a consistent look and feel across platforms and implementations for a large set of languages.
There are three different type families: "Lucida Sans"
, "Lucida Sans Typewriter"
, and "Lucida Bright"
. Each family has plain, bold, italic, and bold-italic styles. Not all of these are present in all JRE implementations. For example, the default download bundle of the JRE for Windows only contains the Lucida Sans plain font (but note that application developers can include all Lucida fonts with a JRE that they redistribute with an application).
The following table shows which Unicode character blocks are covered by each font family:
Unicode Block | Lucida Sans | Lucida Sans Typewriter | Lucida Bright |
---|---|---|---|
Basic Latin |
yes |
yes |
yes |
Latin-1 Supplement |
yes |
yes |
yes |
Latin Extended-A |
yes |
yes |
yes |
Latin Extended-B |
partial |
partial |
partial |
IPA Extensions |
partial |
no |
no |
Spacing Modifier Letter |
partial |
partial |
partial |
Combining Diacritical Marks |
partial |
no |
partial |
Greek |
yes |
yes |
yes |
Cyrillic |
partial |
partial |
partial |
Hebrew |
yes |
yes |
no |
Arabic |
partial |
partial |
partial |
Devanagari |
yes |
no |
no |
Thai |
yes |
yes |
no |
General Punctuation |
partial |
partial |
partial |
Superscripts and Subscripts |
partial |
partial |
partial |
Currency Symbols |
partial |
partial |
partial |
Letterlike Symbols |
partial |
partial |
partial |
Number Forms |
partial |
partial |
no |
Arrows |
partial |
partial |
partial |
Mathematical Operators |
yes |
partial |
yes |
Enclosed Alphanumerics |
partial |
no |
no |
Box Drawings |
partial |
partial |
no |
Block Elements |
partial |
partial |
no |
Geometric Shapes |
partial |
partial |
partial |
Miscellaneous Symbols |
partial |
partial |
no |
Dingbats |
yes |
no |
no |
Alphabetic Presentation Forms |
partial |
partial |
no |
Arabic Presentation Forms-A |
partial |
partial |
partial |
Arabic Presentation Forms-B |
yes |
yes |
yes |
Note that of the writing systems that are generally fully supported by the JRE, the Lucida fonts do not support Chinese (Simplified), Chinese (Traditional), Japanese, and Korean. See the JDK 9 and JRE 9 Supported Locales page.
The fonts are installed in the Java SE Runtime Environment's lib/fonts
directory as the following files (not all of them may be present):
LucidaSansDemiBold.ttf LucidaSansRegular.ttf LucidaTypewriterBold.ttf LucidaTypewriterRegular.ttf LucidaBrightDemiBold.ttf LucidaBrightDemiItalic.ttf LucidaBrightItalic.ttf LucidaBrightRegular.ttf