java.lang.Objectjava.awt.Font
All Implemented Interfaces:
java$io$Serializable
Direct Known Subclasses:
FontUIResource
Font
class represents fonts, which are used to
render text in a visible way.
A font provides the information needed to map sequences of
characters to sequences of glyphs
and to render sequences of glyphs on Graphics
and
Component
objects.
'g'
,
LATIN SMALL LETTER G, is a character.
A glyph is a shape used to render a character or a sequence of characters. In simple writing systems, such as Latin, typically one glyph represents one character. In general, however, characters and glyphs do not have one-to-one correspondence. For example, the character 'á' LATIN SMALL LETTER A WITH ACUTE, can be represented by two glyphs: one for 'a' and one for '´'. On the other hand, the two-character string "fi" can be represented by a single glyph, an "fi" ligature. In complex writing systems, such as Arabic or the South and South-East Asian writing systems, the relationship between characters and glyphs can be more complicated and involve context-dependent selection of glyphs as well as glyph reordering. A font encapsulates the collection of glyphs needed to render a selected set of characters as well as the tables needed to map sequences of characters to corresponding sequences of glyphs.
Physical fonts are the actual font libraries containing glyph data and tables to map from character sequences to glyph sequences, using a font technology such as TrueType or PostScript Type 1. All implementations of the Java Platform must support TrueType fonts; support for other font technologies is implementation dependent. Physical fonts may use names such as Helvetica, Palatino, HonMincho, or any number of other font names. Typically, each physical font supports only a limited set of writing systems, for example, only Latin characters or only Japanese and Basic Latin. The set of available physical fonts varies between configurations. Applications that require specific fonts can bundle them and instantiate them using the createFont method.
Logical fonts are the five font families defined by the Java platform which must be supported by any Java runtime environment: Serif, SansSerif, Monospaced, Dialog, and DialogInput. These logical fonts are not actual font libraries. Instead, the logical font names are mapped to physical fonts by the Java runtime environment. The mapping is implementation and usually locale dependent, so the look and the metrics provided by them vary. Typically, each logical font name maps to several physical fonts in order to cover a large range of characters.
Peered AWT components, such as Label and TextField , can only use logical fonts.
For a discussion of the relative advantages and disadvantages of using physical or logical fonts, see the Internationalization FAQ document.
Font
can have many faces, such as heavy, medium, oblique, gothic and
regular. All of these faces have similar typographic design.
There are three different names that you can get from a
Font
object. The logical font name is simply the
name that was used to construct the font.
The font face name, or just font name for
short, is the name of a particular font face, like Helvetica Bold. The
family name is the name of the font family that determines the
typographic design across several faces, like Helvetica.
The Font
class represents an instance of a font face from
a collection of font faces that are present in the system resources
of the host system. As examples, Arial Bold and Courier Bold Italic
are font faces. There can be several Font
objects
associated with a font face, each differing in size, style, transform
and font features.
The getAllFonts method
of the GraphicsEnvironment
class returns an
array of all font faces available in the system. These font faces are
returned as Font
objects with a size of 1, identity
transform and default font features. These
base fonts can then be used to derive new Font
objects
with varying sizes, styles, transforms and font features via the
deriveFont
methods in this class.
Font
supports most
TextAttribute
s. This makes some operations, such as
rendering underlined text, convenient since it is not
necessary to explicitly construct a TextLayout
object.
Attributes can be set on a Font by constructing or deriving it
using a Map
of TextAttribute
values.
The values of some TextAttributes
are not
serializable, and therefore attempting to serialize an instance of
Font
that has such values will not serialize them.
This means a Font deserialized from such a stream will not compare
equal to the original Font that contained the non-serializable
attributes. This should very rarely pose a problem
since these attributes are typically used only in special
circumstances and are unlikely to be serialized.
FOREGROUND
and BACKGROUND
use
Paint
values. The subclass Color
is
serializable, while GradientPaint
and
TexturePaint
are not.CHAR_REPLACEMENT
uses
GraphicAttribute
values. The subclasses
ShapeGraphicAttribute
and
ImageGraphicAttribute
are not serializable.INPUT_METHOD_HIGHLIGHT
uses
InputMethodHighlight
values, which are
not serializable. See java.awt.im.InputMethodHighlight .Paint
and
GraphicAttribute
can make them serializable and
avoid this problem. Clients who use input method highlights can
convert these to the platform-specific attributes for that
highlight on the current platform and set them on the Font as
a workaround.
The Map
-based constructor and
deriveFont
APIs ignore the FONT attribute, and it is
not retained by the Font; the static #getFont method should
be used if the FONT attribute might be present. See java.awt.font.TextAttribute#FONT for more information.
Several attributes will cause additional rendering overhead
and potentially invoke layout. If a Font
has such
attributes, the #hasLayoutAttributes()
method
will return true.
Note: Font rotations can cause text baselines to be rotated. In order to account for this (rare) possibility, font APIs are specified to return metrics and take parameters 'in baseline-relative coordinates'. This maps the 'x' coordinate to the advance along the baseline, (positive x is forward along the baseline), and the 'y' coordinate to a distance along the perpendicular to the baseline at 'x' (positive y is 90 degrees clockwise from the baseline vector). APIs for which this is especially important are called out as having 'baseline-relative coordinates.'
Field Summary | ||
---|---|---|
public static final String | DIALOG | A String constant for the canonical family name of the
logical font "Dialog". It is useful in Font construction
to provide compile-time verification of the name.
|
public static final String | DIALOG_INPUT | A String constant for the canonical family name of the
logical font "DialogInput". It is useful in Font construction
to provide compile-time verification of the name.
|
public static final String | SANS_SERIF | A String constant for the canonical family name of the
logical font "SansSerif". It is useful in Font construction
to provide compile-time verification of the name.
|
public static final String | SERIF | A String constant for the canonical family name of the
logical font "Serif". It is useful in Font construction
to provide compile-time verification of the name.
|
public static final String | MONOSPACED | A String constant for the canonical family name of the
logical font "Monospaced". It is useful in Font construction
to provide compile-time verification of the name.
|
public static final int | PLAIN | The plain style constant. |
public static final int | BOLD | The bold style constant. This can be combined with the other style constants (except PLAIN) for mixed styles. |
public static final int | ITALIC | The italicized style constant. This can be combined with the other style constants (except PLAIN) for mixed styles. |
public static final int | ROMAN_BASELINE | The baseline used in most Roman scripts when laying out text. |
public static final int | CENTER_BASELINE | The baseline used in ideographic scripts like Chinese, Japanese, and Korean when laying out text. |
public static final int | HANGING_BASELINE | The baseline used in Devanigiri and similar scripts when laying out text. |
public static final int | TRUETYPE_FONT | Identify a font resource of type TRUETYPE.
Used to specify a TrueType font resource to the
#createFont method.
The TrueType format was extended to become the OpenType
format, which adds support for fonts with Postscript outlines,
this tag therefore references these fonts, as well as those
with TrueType outlines.
|
public static final int | TYPE1_FONT | Identify a font resource of type TYPE1.
Used to specify a Type1 font resource to the
#createFont method.
|
protected String | name | The logical name of this Font , as passed to the
constructor.
|
protected int | style | The style of this Font , as passed to the constructor.
This style can be PLAIN, BOLD, ITALIC, or BOLD+ITALIC.
|
protected int | size | The point size of this Font , rounded to integer.
|
protected float | pointSize | The point size of this Font in float .
|
transient int | hash | |
public static final int | LAYOUT_LEFT_TO_RIGHT | A flag to layoutGlyphVector indicating that text is left-to-right as determined by Bidi analysis. |
public static final int | LAYOUT_RIGHT_TO_LEFT | A flag to layoutGlyphVector indicating that text is right-to-left as determined by Bidi analysis. |
public static final int | LAYOUT_NO_START_CONTEXT | A flag to layoutGlyphVector indicating that text in the char array before the indicated start should not be examined. |
public static final int | LAYOUT_NO_LIMIT_CONTEXT | A flag to layoutGlyphVector indicating that text in the char array after the indicated limit should not be examined. |
Constructor: |
---|
Font with the specified attributes.
Only keys defined in TextAttribute
are recognized. In addition the FONT attribute is
not recognized by this constructor
(see #getAvailableAttributes ). Only attributes that have
values of valid types will affect the new Font .
If
|
Font from the specified font .
This constructor is intended for use by subclasses.
|
Font from the specified name, style and
point size.
The font name can be a font face name or a font family name.
It is used together with the style to find an appropriate font face.
When a font family name is specified, the style argument is used to
select the most appropriate face from the family. When a font face
name is specified, the face's style and the style argument are
merged to locate the best matching font from the same family.
For example if face name "Arial Bold" is specified with style
If no face for the requested style can be found, the font system
may apply algorithmic styling to achieve the desired style.
For example, if Font name lookup is case insensitive, using the case folding rules of the US locale.
If the
|
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from java.awt.Font Detail: |
---|
Font has a glyph for the specified
character.
Note: This method cannot handle supplementary
characters. To support all Unicode characters, including
supplementary characters, use the #canDisplay(int)
method or |
Font has a glyph for the specified
character. |
Font can display a
specified String . For strings with Unicode encoding,
it is important to know if a particular font can display the
string. This method returns an offset into the String
str which is the first character this
Font cannot display without using the missing glyph
code. If the Font can display all characters, -1 is
returned. |
Font can display
the characters in the specified text
starting at start and ending at
limit . This method is a convenience overload. |
Font can display the
text specified by the iter starting at
start and ending at limit . |
Font using the specified font type
and input data. The new Font is
created with a point size of 1 and style PLAIN .
This base font can then be used with the deriveFont
methods in this class to derive new Font objects with
varying sizes, styles, transforms and font features. This
method does not close the InputStream .
To make the |
Font using the specified font type
and the specified font file. The new Font is
created with a point size of 1 and style PLAIN .
This base font can then be used with the deriveFont
methods in this class to derive new Font objects with
varying sizes, styles, transforms and font features. |
Font . This method does no other
processing besides the mapping of glyphs to characters. This
means that this method is not useful for some scripts, such
as Arabic, Hebrew, Thai, and Indic, that require reordering,
shaping, or ligature substitution. |
Font . This method does no other
processing besides the mapping of glyphs to characters. This
means that this method is not useful for some scripts, such
as Arabic, Hebrew, Thai, and Indic, that require reordering,
shaping, or ligature substitution. |
Font . This method does no other
processing besides the mapping of glyphs to characters. This
means that this method is not useful for some scripts, such
as Arabic, Hebrew, Thai, and Indic, that require reordering,
shaping, or ligature substitution. |
Font . This method does no other
processing besides the mapping of glyphs to characters. This
means that this method is not useful for some scripts, such
as Arabic, Hebrew, Thai, and Indic, that require reordering,
shaping, or ligature substitution. |
Font that the str
argument describes.
To ensure that this method returns the desired Font,
format the str parameter in
one of these ways
"PLAIN" , "BOLD" , "BOLDITALIC" , or
"ITALIC" , and pointsize is a positive decimal integer
representation of the point size.
For example, if you want a font that is Arial, bold, with
a point size of 18, you would call this method with:
"Arial-BOLD-18".
This is equivalent to calling the Font constructor :
new Font("Arial", Font.BOLD, 18);
and the values are interpreted as specified by that constructor.
A valid trailing decimal field is always interpreted as the pointsize. Therefore a fontname containing a trailing decimal value should not be used in the fontname only form. If a style name field is not one of the valid style strings, it is interpreted as part of the font name, and the default style is used. Only one of ' ' or '-' may be used to separate fields in the input. The identified separator is the one closest to the end of the string which separates a valid pointsize, or a valid style name from the rest of the string. Null (empty) pointsize and style fields are treated as valid fields with the default value for that field.
Some font names may include the separator characters ' ' or '-'.
If
The default size is 12 and the default style is PLAIN.
If |
Font object by replicating the current
Font object and applying a new size to it. |
Font object by replicating the current
Font object and applying a new transform to it. |
Font object by replicating the current
Font object and applying a new style to it. |
Font object by replicating the current
Font object and applying a new set of font attributes
to it. |
Font object by replicating this
Font object and applying a new style and size. |
Font object by replicating this
Font object and applying a new style and transform. |
Font object to the specified
Object . |
Font . Attributes include things like ligatures and
glyph substitution. |
Font . These attributes can be used to derive other
fonts. |
Large fonts can support different writing systems, and each system can use a different baseline. The character argument determines the writing system to use. Clients should not assume all characters use the same baseline. |
Font .
The family name of a font is font specific. Two fonts such as Helvetica Italic and Helvetica Bold have the same family name, Helvetica, whereas their font face names are Helvetica Bold and Helvetica Italic. The list of available family names may be obtained by using the GraphicsEnvironment#getAvailableFontFamilyNames() method. Use |
Font , localized for
the specified locale.
The family name of a font is font specific. Two fonts such as Helvetica Italic and Helvetica Bold have the same family name, Helvetica, whereas their font face names are Helvetica Bold and Helvetica Italic. The list of available family names may be obtained by using the GraphicsEnvironment#getAvailableFontFamilyNames() method. Use |
|
Font appropriate to the attributes.
If attributes contains a FONT attribute
with a valid Font as its value, it will be
merged with any remaining attributes. See
java.awt.font.TextAttribute#FONT for more
information. |
Font object from the system properties list.
nm is treated as the name of a system property to be
obtained. The String value of this property is then
interpreted as a Font object according to the
specification of Font.decode(String)
If the specified property is not found, or the executing code does
not have permission to read the property, null is returned instead. |
Font from the system properties
list. As in the getProperty method of
System , the first
argument is treated as the name of a system property to be
obtained. The String value of this property is then
interpreted as a Font object.
The property value should be one of the forms accepted by
|
Font . For example,
Helvetica Bold could be returned as a font face name.
Use getFamily to get the family name of the font.
Use getName to get the logical name of the font. |
Font , localized
for the specified locale. For example, Helvetica Fett could be
returned as the font face name.
Use getFamily to get the family name of the font. |
Font . The italic angle
is the inverse slope of the caret which best matches the posture of this
Font . |
String and FontRenderContext . |
LineMetrics object created with the
specified arguments. |
LineMetrics object created with the
specified arguments. |
LineMetrics object created with the
specified arguments. |
FontRenderContext .
Note: The returned bounds is in baseline-relative coordinates (see class notes ). |
Font
does not have a glyph for a specified unicode code point. |
Font .
Use getFamily to get the family name of the font.
Use getFontName to get the font face name of the font. |
Font . Glyph codes
for this Font range from 0 to
getNumGlyphs() - 1. |
Font .
Use getFamily to get the family name of the font.
Use getFontName to get the font face name of the font. |
Deprecated! Font - rendering is now platform independent.
Font . |
|
Font , rounded to
an integer.
Most users are familiar with the idea of using point size to
specify the size of glyphs in a font. This point size defines a
measurement between the baseline of one line to the baseline of the
following line in a single spaced text document. The point size is
based on typographic points, approximately 1/72 of an inch.
The Java(tm)2D API adopts the convention that one point is equivalent to one unit in user coordinates. When using a normalized transform for converting user space coordinates to device space coordinates 72 user space units equal 1 inch in device space. In this case one point is 1/72 of an inch. |
Font in
float value. |
String in
the specified FontRenderContext . The logical bounds
contains the origin, ascent, advance, and height, which includes
the leading. The logical bounds does not always enclose all the
text. For example, in some languages and in some fonts, accent
marks can be positioned above the ascent or below the descent.
To obtain a visual bounding box, which encloses all the text,
use the getBounds method of
TextLayout .
Note: The returned bounds is in baseline-relative coordinates (see class notes ). |
String in
the specified FontRenderContext . The logical bounds
contains the origin, ascent, advance, and height, which includes
the leading. The logical bounds does not always enclose all the
text. For example, in some languages and in some fonts, accent
marks can be positioned above the ascent or below the descent.
To obtain a visual bounding box, which encloses all the text,
use the getBounds method of
TextLayout .
Note: The returned bounds is in baseline-relative coordinates (see class notes ). |
FontRenderContext . The logical
bounds contains the origin, ascent, advance, and height, which
includes the leading. The logical bounds does not always enclose
all the text. For example, in some languages and in some fonts,
accent marks can be positioned above the ascent or below the
descent. To obtain a visual bounding box, which encloses all the
text, use the getBounds method of
TextLayout .
Note: The returned bounds is in baseline-relative coordinates (see class notes ). |
FontRenderContext . The logical bounds
contains the origin, ascent, advance, and height, which includes
the leading. The logical bounds does not always enclose all the
text. For example, in some languages and in some fonts, accent
marks can be positioned above the ascent or below the descent.
To obtain a visual bounding box, which encloses all the text,
use the getBounds method of
TextLayout .
Note: The returned bounds is in baseline-relative coordinates (see class notes ). |
Font . The style can be
PLAIN, BOLD, ITALIC, or BOLD+ITALIC. |
Font . This transform is not necessarily the one
used to construct the font. If the font has algorithmic
superscripting or width adjustment, this will be incorporated
into the returned AffineTransform .
Typically, fonts will not be transformed. Clients generally
should call #isTransformed first, and only call this
method if |
|
Font has uniform
line metrics. A logical Font might be a
composite font, which means that it is composed of different
physical fonts to cover different code ranges. Each of these
fonts might have different LineMetrics . If the
logical Font is a single
font then the metrics would be uniform. |
Font . |
Font object's style is
BOLD. |
Font object's style is
ITALIC. |
Font object's style is
PLAIN. |
Font object has a
transform that affects its size in addition to the Size
attribute. |
GlyphVector object, performing full
layout of the text if possible. Full layout is required for
complex text, such as Arabic or Hindi. Support for different
scripts depends on the font and implementation.
Layout requires bidi analysis, as performed by
In addition, some operations, such as Arabic shaping, require context, so that the characters at the start and limit can have the proper shapes. Sometimes the data in the buffer outside the provided range does not have valid data. The values LAYOUT_NO_START_CONTEXT and LAYOUT_NO_LIMIT_CONTEXT can be added to the flags parameter to indicate that the text before start, or after limit, respectively, should not be examined for context. All other values for the flags parameter are reserved. |
Font object to a String
representation. |