- 所有已实现的接口:
-
Serializable
- 直接已知的子类:
-
FontUIResource
Font
类表示字体,用于以可见方式呈现文本。字体提供了将字符序列映射到字形序列并在Graphics
和Component
对象上呈现字形序列所需的信息。
字符和字形
字符是表示字母、数字或标点等项目的符号。例如,'g'
,拉丁小写字母g,就是一个字符。
字形是用于呈现字符或字符序列的形状。在简单的书写系统中,比如拉丁文,通常一个字形代表一个字符。然而,字符和字形通常并不是一对一对应的。例如,字符'á' 拉丁小写带重音符号的字母a,可以由两个字形表示:一个是'a',另一个是'´'。另一方面,两个字符的字符串"fi"可以由一个字形表示,即"fi"连字。在复杂的书写系统中,比如阿拉伯文或南亚和东南亚的书写系统,字符和字形之间的关系可能更加复杂,涉及依赖上下文的字形选择以及字形重新排序。字体封装了呈现所选字符集的一组字形所需的集合,以及将字符序列映射到相应字形序列的表。
物理字体和逻辑字体
Java平台区分两种字体:物理字体和逻辑字体。物理字体是包含字形数据和用于从字符序列到字形序列的映射的表的实际字体库,使用TrueType或PostScript Type 1等字体技术。Java平台的所有实现都必须支持TrueType字体;对其他字体技术的支持取决于实现。物理字体可能使用名称如Helvetica、Palatino、HonMincho或任意数量的其他字体名称。通常,每个物理字体仅支持有限的书写系统,例如仅支持拉丁字符或仅支持日语和基本拉丁字符。可用的物理字体集在不同配置之间有所变化。需要特定字体的应用程序可以捆绑它们并使用createFont
方法实例化它们。
逻辑字体是Java平台定义的五个字体系列,任何Java运行时环境都必须支持:Serif、SansSerif、Monospaced、Dialog和DialogInput。这些逻辑字体不是实际的字体库。相反,逻辑字体名称由Java运行时环境映射到物理字体。映射是实现和通常是区域设置相关的,因此它们提供的外观和度量标准会有所变化。通常,每个逻辑字体名称映射到多个物理字体,以涵盖大范围的字符。
像Label
和TextField
这样的对等AWT组件只能使用逻辑字体。
有关使用物理或逻辑字体的相对优缺点的讨论,请参阅物理和逻辑字体在Java教程文档中。
字体面和名称
一个Font
可以有许多面,比如heavy、medium、oblique、gothic和regular。所有这些面都具有相似的印刷设计。
您可以从Font
对象中获取三种不同的名称。逻辑字体名称只是用于构造字体的名称。字体面名称,或简称字体名称,是特定字体面的名称,比如Helvetica Bold。字体系列名称是确定跨多个面的印刷设计的字体系列的名称,比如Helvetica。
Font
类表示来自主机系统资源中存在的一组字体面的实例。例如,Arial Bold和Courier Bold Italic是字体面。与字体面关联的可以有多个Font
对象,每个对象在大小、样式、变换和字体特性上有所不同。
由于平台限制,例如缺少适合实现逻辑字体的平台字体,字形可能不会始终以请求的属性(例如字体和样式)呈现。
GraphicsEnvironment
类的getAllFonts
方法返回系统中所有可用字体面的数组。这些字体面作为具有大小为1、恒等变换和默认字体特性的Font
对象返回。然后可以使用此类中的deriveFont
方法从这些基本字体中派生具有不同大小、样式、变换和字体特性的新Font
对象。
字体和TextAttribute
Font
支持大多数TextAttribute
。这使得一些操作,例如呈现下划线文本,更加方便,因为不需要显式构造TextLayout
对象。可以通过使用TextAttribute
值的Map
构造或派生在Font
上设置属性。
一些TextAttribute
的值不可序列化,因此尝试序列化具有这些值的Font
实例将不会序列化它们。这意味着从这样的流反序列化的Font
将不等于包含不可序列化属性的原始Font
。这很少会造成问题,因为这些属性通常仅在特殊情况下使用,不太可能被序列化。
FOREGROUND
和BACKGROUND
使用Paint
值。子类Color
是可序列化的,而GradientPaint
和TexturePaint
不是。CHAR_REPLACEMENT
使用GraphicAttribute
值。子类ShapeGraphicAttribute
和ImageGraphicAttribute
不可序列化。INPUT_METHOD_HIGHLIGHT
使用InputMethodHighlight
值,这些值不可序列化。请参阅InputMethodHighlight
。
创建自定义Paint
和GraphicAttribute
子类的客户端可以使它们可序列化,避免此问题。使用输入法突出显示的客户端可以将其转换为当前平台上该突出显示的特定属性,并将其设置为字体的解决方法。
基于Map
的构造函数和deriveFont
API会忽略FONT属性,并且字体不会保留该属性;如果可能存在FONT属性,则应使用静态的getFont(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>)
方法。有关更多信息,请参阅TextAttribute.FONT
。
一些属性会导致额外的渲染开销,并可能调用布局。如果Font
具有这些属性,则
方法将返回true。hasLayoutAttributes()
注意:字体旋转可能导致文本基线被旋转。为了考虑这种(罕见的)可能性,字体API被指定为返回基于基线的坐标的度量,并接受“基于基线的坐标”的参数。这将'x'坐标映射到沿基线的前进,(正x是沿基线向前),将'y'坐标映射到基线垂直方向上'x'处的距离(正y是基线矢量的顺时针90度)。特别重要的API被称为具有“基于基线的坐标”。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
粗体样式常量。static final int
用于排版文本时,象形文字(如中文、日文和韩文)使用的基线。static final String
逻辑字体“Dialog”的规范系列名称的字符串常量。static final String
逻辑字体“DialogInput”的规范系列名称的字符串常量。static final int
用于排版文本时,梵文和类似文字(如梵文)使用的基线。static final int
斜体样式常量。static final int
作为由Bidi分析确定的从左到右的文本的layoutGlyphVector标志。static final int
作为指示限制后的字符数组中的文本不应被检查的layoutGlyphVector标志。static final int
作为指示限制前的字符数组中的文本不应被检查的layoutGlyphVector标志。static final int
作为由Bidi分析确定的从右到左的文本的layoutGlyphVector标志。static final String
逻辑字体“Monospaced”的规范系列名称的字符串常量。protected String
此Font
的逻辑名称,如传递给构造函数。static final int
普通样式常量。protected float
此Font
的点大小,以float
表示。static final int
用于排版文本时,大多数罗马文字使用的基线。static final String
逻辑字体“SansSerif”的规范系列名称的字符串常量。static final String
逻辑字体“Serif”的规范系列名称的字符串常量。protected int
此Font
的点大小,四舍五入为整数。protected int
此Font
的样式,如传递给构造函数。static final int
标识TRUETYPE类型的字体资源。static final int
标识TYPE1类型的字体资源。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canDisplay
(char c) 检查此Font
是否具有指定字符的字形。boolean
canDisplay
(int codePoint) 检查此Font
是否具有指定字符的字形。int
canDisplayUpTo
(char[] text, int start, int limit) 指示此Font
是否能够显示从start
到limit
的指定text
中的字符。int
canDisplayUpTo
(String str) 指示此Font
是否能够显示指定的String
。int
canDisplayUpTo
(CharacterIterator iter, int start, int limit) 指示此Font
是否能够显示从start
到limit
的iter
中指定的文本。static Font
createFont
(int fontFormat, File fontFile) 使用指定的字体类型和指定的字体文件返回一个新的Font
。static Font
createFont
(int fontFormat, InputStream fontStream) 使用指定的字体类型和输入数据返回一个新的Font
。static Font[]
createFonts
(File fontFile) 返回从指定文件解码的Font
数组。static Font[]
createFonts
(InputStream fontStream) 返回从指定流解码的Font
数组。createGlyphVector
(FontRenderContext frc, char[] chars) 通过基于此Font
中的Unicode cmap将字符一对一地映射到字形,创建一个GlyphVector
。createGlyphVector
(FontRenderContext frc, int[] glyphCodes) 通过基于此Font
中的Unicode cmap将字符一对一地映射到字形,创建一个GlyphVector
。createGlyphVector
(FontRenderContext frc, String str) 通过基于此Font
中的Unicode cmap将字符一对一地映射到字形,创建一个GlyphVector
。通过基于此Font
中的Unicode cmap将指定的字符一对一地映射到字形,创建一个GlyphVector
。static Font
返回由str
参数描述的Font
。deriveFont
(float size) 通过复制当前Font
对象并应用新的大小创建一个新的Font
对象。deriveFont
(int style) 通过复制当前Font
对象并应用新的样式创建一个新的Font
对象。deriveFont
(int style, float size) 通过复制此Font
对象并应用新的样式和大小创建一个新的Font
对象。deriveFont
(int style, AffineTransform trans) 通过复制此Font
对象并应用新的样式和变换创建一个新的Font
对象。deriveFont
(AffineTransform trans) 通过复制当前Font
对象并应用新的变换创建一个新的Font
对象。deriveFont
(Map<? extends AttributedCharacterIterator.Attribute, ?> attributes) 通过复制当前Font
对象并应用新的字体属性集创建一个新的Font
对象。boolean
将此Font
对象与指定的Object
进行比较。Map
<TextAttribute, ?> 返回此Font
中可用的字体属性的映射。返回此Font
支持的所有属性的键。byte
getBaselineFor
(char c) 返回适合显示此字符的基线。返回此Font
的字族名称。返回此Font
的字族名称,针对指定的区域设置本地化。static Font
从系统属性列表返回一个Font
对象。static Font
从系统属性列表获取指定的Font
。static Font
getFont
(Map<? extends AttributedCharacterIterator.Attribute, ?> attributes) 返回适合属性的Font
。返回此Font
的字体名称。返回Font
的字体名称,针对指定的区域设置本地化。float
返回此Font
的斜体角度。getLineMetrics
(char[] chars, int beginIndex, int limit, FontRenderContext frc) 使用指定的参数创建一个LineMetrics
对象。getLineMetrics
(String str, int beginIndex, int limit, FontRenderContext frc) 使用指定的参数创建一个LineMetrics
对象。getLineMetrics
(String str, FontRenderContext frc) getLineMetrics
(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 使用指定的参数创建一个LineMetrics
对象。返回在指定的FontRenderContext
中定义的具有最大边界的字符的边界。int
返回当此Font
没有指定Unicode代码点的字形时使用的glyphCode。getName()
返回此Font
的逻辑名称。int
返回此Font
中的字形数。返回此Font
的PostScript名称。int
getSize()
返回四舍五入为整数的此Font
的点大小。float
返回此Font
的点大小,以float
值表示。getStringBounds
(char[] chars, int beginIndex, int limit, FontRenderContext frc) 返回在指定的FontRenderContext
中指定字符数组的逻辑边界。getStringBounds
(String str, int beginIndex, int limit, FontRenderContext frc) 返回在指定的FontRenderContext
中指定String
的逻辑边界。getStringBounds
(String str, FontRenderContext frc) 返回在指定的FontRenderContext
中指定String
的逻辑边界。getStringBounds
(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 返回在指定的FontRenderContext
中指定的CharacterIterator
中索引的字符的逻辑边界。int
getStyle()
返回此Font
的样式。返回与此Font
关联的变换的副本。int
hashCode()
返回此Font
的哈希码。boolean
如果此Font包含需要额外布局处理的属性,则返回true。boolean
检查此Font
是否具有统一的行度量。boolean
isBold()
指示此Font
对象的样式是否为BOLD。boolean
isItalic()
指示此Font
对象的样式是否为ITALIC。boolean
isPlain()
指示此Font
对象的样式是否为PLAIN。boolean
指示此Font
对象是否具有影响其大小的变换,除了Size属性。layoutGlyphVector
(FontRenderContext frc, char[] text, int start, int limit, int flags) 返回一个新的GlyphVector
对象,如果可能的话执行文本的完整布局。static boolean
textRequiresLayout
(char[] chars, int start, int end) 如果指定文本的任何部分来自复杂脚本,实现将需要调用布局处理才能正确渲染时返回true,使用drawString(String,int,int)
和其他文本渲染方法。toString()
将此Font
对象转换为String
表示形式。
-
Field Details
-
DIALOG
逻辑字体"Dialog"的规范字族名称的字符串常量。在字体构造中使用它可以提供名称的编译时验证。- 自从:
- 1.6
- 参见:
-
DIALOG_INPUT
逻辑字体"DialogInput"的规范字族名称的字符串常量。在字体构造中使用它可以提供名称的编译时验证。- 自从:
- 1.6
- 参见:
-
SANS_SERIF
逻辑字体"SansSerif"的规范字族名称的字符串常量。在字体构造中使用它可以提供名称的编译时验证。- 自从:
- 1.6
- 参见:
-
SERIF
逻辑字体"Serif"的规范字族名称的字符串常量。在字体构造中使用它可以提供名称的编译时验证。- 自从:
- 1.6
- 参见:
-
MONOSPACED
逻辑字体"Monospaced"的规范字族名称的字符串常量。在字体构造中使用它可以提供名称的编译时验证。- 自从:
- 1.6
- 参见:
-
PLAIN
public static final int PLAIN普通样式常量。- 参见:
-
BOLD
public static final int BOLD粗体样式常量。可以与其他样式常量(除了PLAIN)组合以获得混合样式。- 参见:
-
ITALIC
public static final int ITALIC斜体样式常量。可以与其他样式常量(除了PLAIN)组合以获得混合样式。- 参见:
-
ROMAN_BASELINE
public static final int ROMAN_BASELINE在排版文本时,大多数罗马脚本使用的基线。- 参见:
-
CENTER_BASELINE
public static final int CENTER_BASELINE在排版文本时,象形文字脚本(如中文、日文和韩文)使用的基线。- 参见:
-
HANGING_BASELINE
public static final int HANGING_BASELINE在排版文本时,梵文和类似脚本使用的基线。- 参见:
-
TRUETYPE_FONT
public static final int TRUETYPE_FONTIdentify a font resource of type TRUETYPE. Used to specify a TrueType font resource to thecreateFont(int, java.io.InputStream)
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.- Since:
- 1.3
- See Also:
-
TYPE1_FONT
public static final int TYPE1_FONTIdentify a font resource of type TYPE1. Used to specify a Type1 font resource to thecreateFont(int, java.io.InputStream)
method.- Since:
- 1.5
- See Also:
-
name
The logical name of thisFont
, as passed to the constructor.- Since:
- 1.0
- See Also:
-
style
protected int styleThe style of thisFont
, as passed to the constructor. This style can be PLAIN, BOLD, ITALIC, or BOLD+ITALIC.- Since:
- 1.0
- See Also:
-
size
protected int sizeThe point size of thisFont
, rounded to integer.- Since:
- 1.0
- See Also:
-
pointSize
protected float pointSizeThe point size of thisFont
infloat
.- See Also:
-
LAYOUT_LEFT_TO_RIGHT
public static final int LAYOUT_LEFT_TO_RIGHTA flag to layoutGlyphVector indicating that text is left-to-right as determined by Bidi analysis.- See Also:
-
LAYOUT_RIGHT_TO_LEFT
public static final int LAYOUT_RIGHT_TO_LEFTA flag to layoutGlyphVector indicating that text is right-to-left as determined by Bidi analysis.- See Also:
-
LAYOUT_NO_START_CONTEXT
public static final int LAYOUT_NO_START_CONTEXTA flag to layoutGlyphVector indicating that text in the char array before the indicated start should not be examined.- See Also:
-
LAYOUT_NO_LIMIT_CONTEXT
public static final int LAYOUT_NO_LIMIT_CONTEXTA flag to layoutGlyphVector indicating that text in the char array after the indicated limit should not be examined.- See Also:
-
-
Constructor Details
-
Font
Creates a newFont
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
Font.ITALIC
, the font system looks for a face in the "Arial" family that is bold and italic, and may associate the font instance with the physical font face "Arial Bold Italic". The style argument is merged with the specified face's style, not added or subtracted. This means, specifying a bold face and a bold style does not double-embolden the font, and specifying a bold face and a plain style does not lighten the font.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
ITALIC
is requested, but no italic face is available, glyphs from the plain face may be algorithmically obliqued (slanted).Font name lookup is case insensitive, using the case folding rules of the US locale.
If the
name
parameter represents something other than a logical font, i.e. is interpreted as a physical font face or family, and this cannot be mapped by the implementation to a physical font or a compatible alternative, then the font system will map the Font instance to "Dialog", such that for example, the family as reported bygetFamily
will be "Dialog".- Parameters:
-
name
- the font name. This can be a font face name or a font family name, and may represent either a logical font or a physical font found in thisGraphicsEnvironment
. The family names for logical fonts are: Dialog, DialogInput, Monospaced, Serif, or SansSerif. Pre-defined String constants exist for all of these names, for example,DIALOG
. Ifname
isnull
, the logical font name of the newFont
as returned bygetName()
is set to the name "Default". -
style
- the style constant for theFont
The style argument is an integer bitmask that may bePLAIN
, or a bitwise union ofBOLD
and/orITALIC
(for example,ITALIC
orBOLD|ITALIC
). If the style argument does not conform to one of the expected integer bitmasks then the style is set toPLAIN
. -
size
- the point size of theFont
- Since:
- 1.0
- See Also:
-
Font
Creates a newFont
with the specified attributes. Only keys defined inTextAttribute
are recognized. In addition the FONT attribute is not recognized by this constructor (seegetAvailableAttributes()
). Only attributes that have values of valid types will affect the newFont
.If
attributes
isnull
, a newFont
is initialized with default values.- Parameters:
-
attributes
- the attributes to assign to the newFont
, ornull
- See Also:
-
Font
Creates a newFont
from the specifiedfont
. This constructor is intended for use by subclasses.- Parameters:
-
font
- from which to create thisFont
. - Throws:
-
NullPointerException
- iffont
is null - Since:
- 1.6
-
-
Method Details
-
textRequiresLayout
public static boolean textRequiresLayout(char[] chars, int start, int end) Returns true if any part of the specified text is from a complex script for which the implementation will need to invoke layout processing in order to render correctly when usingdrawString(String,int,int)
and other text rendering methods. Measurement of the text may similarly need the same extra processing. Thestart
andend
indices are provided so that the application can request only a subset of the text be considered. The last char index examined is at"end-1"
, i.e a request to examine the entire array would beFont.textRequiresLayout(chars, 0, chars.length);
Note that even if this method returns
false
, layout processing may still be invoked when used with anyFont
for whichhasLayoutAttributes()
returnstrue
, so that method will need to be consulted for the specific font, in order to obtain an answer which accounts for such font attributes.- Parameters:
-
chars
- the text. -
start
- the index of the first char to examine. -
end
- the ending index, exclusive. - Returns:
-
true
if the specified text will need special layout. - Throws:
-
NullPointerException
- ifchars
is null. -
ArrayIndexOutOfBoundsException
- ifstart
is negative orend
is greater than the length of thechars
array. - Since:
- 9
-
getFont
Returns aFont
appropriate to the attributes. Ifattributes
contains aFONT
attribute with a validFont
as its value, it will be merged with any remaining attributes. SeeTextAttribute.FONT
for more information.- Parameters:
-
attributes
- the attributes to assign to the newFont
- Returns:
-
a new
Font
created with the specified attributes - Throws:
-
NullPointerException
- ifattributes
is null. - Since:
- 1.2
- See Also:
-
createFonts
返回从指定流解码的新Font
数组。返回的Font[]
将至少有一个元素。这个对
createFont(int, InputStream)
方法的变体的明确目的是支持代表TrueType/OpenType字体集合的字体源,并能够返回该集合中的所有单独字体。因此,如果数据源不包含至少一个TrueType/OpenType字体,此方法将抛出FontFormatException
。如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。“至少一个”条件允许流表示单个OpenType/TrueType字体。也就是说,它不必是一个集合。返回的数组中每个
Font
元素都是以大小为1和样式为PLAIN
创建的。然后可以使用此基础字体与此类中的deriveFont
方法派生具有不同大小、样式、变换和字体特性的新Font
对象。此方法不会关闭
InputStream
。要使每个
Font
可用于字体构造函数,必须通过调用registerFont(Font)
将其注册到GraphicsEnvironment
中。- 参数:
-
fontStream
- 表示字体或字体集合的输入数据的InputStream
对象。 - 返回:
-
一个新的
Font[]
。 - 抛出:
-
FontFormatException
- 如果fontStream
数据不包含集合中任何元素所需的字体表,或者根本不包含任何字体。 -
IOException
- 如果无法完全读取fontStream
。 - 自版本:
- 9
- 参见:
-
createFonts
返回从指定文件解码的新Font
数组。返回的Font[]
将至少有一个元素。这个对
createFont(int, File)
方法的变体的明确目的是支持代表TrueType/OpenType字体集合的字体源,并能够返回该集合中的所有单独字体。因此,如果数据源不包含至少一个TrueType/OpenType字体,此方法将抛出FontFormatException
。如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。“至少一个”条件允许流表示单个OpenType/TrueType字体。也就是说,它不必是一个集合。返回的数组中每个
Font
元素都是以大小为1和样式为PLAIN
创建的。然后可以使用此基础字体与此类中的deriveFont
方法派生具有不同大小、样式、变换和字体特性的新Font
对象。要使每个
Font
可用于字体构造函数,必须通过调用registerFont(Font)
将其注册到GraphicsEnvironment
中。- 参数:
-
fontFile
- 包含字体或字体集合的输入数据的File
对象。 - 返回:
-
一个新的
Font[]
。 - 抛出:
-
FontFormatException
- 如果File
不包含集合中任何元素所需的字体表,或者根本不包含任何字体。 -
IOException
- 如果无法读取fontFile
。 - 自版本:
- 9
- 参见:
-
createFont
public static Font createFont(int fontFormat, InputStream fontStream) throws FontFormatException, IOException 使用指定的字体类型和输入数据返回一个新的Font
。新的Font
将以大小为1和样式为PLAIN
创建。然后可以使用此基础字体与此类中的deriveFont
方法派生具有不同大小、样式、变换和字体特性的新Font
对象。此方法不会关闭InputStream
。要使
Font
可用于字体构造函数,必须通过调用registerFont(Font)
将返回的Font
注册到GraphicsEnvironment
中。- 参数:
-
fontFormat
-Font
的类型,如果指定了TrueType资源,则为TRUETYPE_FONT
,如果指定了Type 1资源,则为TYPE1_FONT
。 -
fontStream
- 表示字体输入数据的InputStream
对象。 - 返回:
-
使用指定字体类型创建的新
Font
。 - 抛出:
-
IllegalArgumentException
- 如果fontFormat
不是TRUETYPE_FONT
或TYPE1_FONT
。 -
FontFormatException
- 如果fontStream
数据不包含指定格式所需的字体表。 -
IOException
- 如果无法完全读取fontStream
。 - 自版本:
- 1.3
- 参见:
-
createFont
public static Font createFont(int fontFormat, File fontFile) throws FontFormatException, IOException 使用指定的字体类型和指定的字体文件返回一个新的Font
。新的Font
将以大小为1和样式为PLAIN
创建。然后可以使用此基础字体与此类中的deriveFont
方法派生具有不同大小、样式、变换和字体特性的新Font
对象。- 参数:
-
fontFormat
-Font
的类型,如果指定了TrueType资源,则为TRUETYPE_FONT
,如果指定了Type 1资源,则为TYPE1_FONT
。只要返回的字体或其派生字体被引用,实现就可以继续访问fontFile
以检索字体数据。因此,如果更改文件或变得无法访问,则结果是未定义的。要使
Font
可用于字体构造函数,必须通过调用registerFont(Font)
将返回的Font
注册到GraphicsEnvironment
中。 -
fontFile
- 表示字体输入数据的File
对象。 - 返回:
-
使用指定字体类型创建的新
Font
。 - 抛出:
-
IllegalArgumentException
- 如果fontFormat
不是TRUETYPE_FONT
或TYPE1_FONT
。 -
NullPointerException
- 如果fontFile
为null。 -
IOException
- 如果无法读取fontFile
。 -
FontFormatException
- 如果fontFile
不包含指定格式所需的字体表。 -
SecurityException
- 如果执行代码没有从文件读取的权限。 - 自版本:
- 1.5
- 参见:
-
getTransform
返回与此Font
关联的变换的副本。这个变换不一定是用于构造字体的变换。如果字体具有算法上标或宽度调整,这将被合并到返回的AffineTransform
中。通常,字体不会被转换。客户端通常应该首先调用
isTransformed()
,只有在isTransformed
返回true时才调用此方法。- 返回:
-
表示此
Font
对象的变换属性的AffineTransform
对象。
-
getFamily
返回此Font
的族名。字体的族名是特定于字体的。例如,Helvetica Italic和Helvetica Bold这两种字体具有相同的族名Helvetica,而它们的字体面名分别是Helvetica Bold和Helvetica Italic。可通过使用
GraphicsEnvironment.getAvailableFontFamilyNames()
方法获取可用的族名列表。使用
getName
获取字体的逻辑名称。使用getFontName
获取字体的字体面名称。- 返回:
-
此
Font
的族名的String
。 - 自版本:
- 1.1
- 参见:
-
getFamily
返回指定区域设置的Font
的字体族名称。字体的族名称是特定于字体的。例如,Helvetica斜体和Helvetica粗体具有相同的族名称Helvetica,而它们的字体名称分别是Helvetica粗体和Helvetica斜体。可通过使用
GraphicsEnvironment.getAvailableFontFamilyNames()
方法获取可用族名称列表。使用
getFontName
获取字体的字体名称。- 参数:
-
l
- 要获取族名称的区域设置 - 返回:
-
代表字体族名称的
String
,针对指定的区域设置进行本地化。 - 自版本:
- 1.2
- 参见:
-
getPSName
返回此Font
的PostScript名称。使用getFamily
获取字体的族名称。使用getFontName
获取字体的字体名称。- 返回:
-
代表此
Font
的PostScript名称的String
。 - 自版本:
- 1.2
-
getName
返回此Font
的逻辑名称。使用getFamily
获取字体的族名称。使用getFontName
获取字体的字体名称。- 返回:
-
代表此
Font
的逻辑名称的String
。 - 自版本:
- 1.0
- 参见:
-
getFontName
返回此Font
的字体名称。例如,Helvetica粗体可能作为字体名称返回。使用getFamily
获取字体的族名称。使用getName
获取字体的逻辑名称。- 返回:
-
代表此
Font
的字体名称的String
。 - 自版本:
- 1.2
- 参见:
-
getFontName
返回此Font
的字体名称,针对指定的区域设置进行本地化。例如,Helvetica Fett可能作为字体名称返回。使用getFamily
获取字体的族名称。- 参数:
-
l
- 要获取字体名称的区域设置 - 返回:
-
代表此
Font
的字体名称的String
,针对指定的区域设置进行本地化。 - 参见:
-
getStyle
public int getStyle()返回此Font
的样式。样式可以是PLAIN、BOLD、ITALIC或BOLD+ITALIC。- 返回:
-
此
Font
的样式 - 自版本:
- 1.0
- 参见:
-
getSize
public int getSize()返回此Font
的点大小,四舍五入为整数。大多数用户熟悉使用点大小来指定字体中字形的大小。此点大小定义了单倍行距文档中一行的基线到下一行的基线之间的测量。点大小基于印刷点,大约为1/72英寸。Java(tm)2D API采用一个点等于用户坐标中的一个单位的约定。当使用规范化变换将用户空间坐标转换为设备空间坐标时,72个用户空间单位等于设备空间中的1英寸。在这种情况下,一个点等于1/72英寸。
- 返回:
-
此
Font
的点大小,以1/72英寸单位表示。 - 自版本:
- 1.0
- 参见:
-
getSize2D
public float getSize2D()返回此Font
的点大小,以float
值表示。- 返回:
-
此
Font
的点大小,作为float
值表示。 - 自版本:
- 1.2
- 参见:
-
isPlain
public boolean isPlain()指示此Font
对象的样式是否为PLAIN。- 返回:
-
如果此
Font
具有PLAIN样式,则返回true
;否则返回false
。 - 自版本:
- 1.0
- 参见:
-
isBold
public boolean isBold()指示此Font
对象的样式是否为BOLD。- 返回:
-
如果此
Font
对象的样式为BOLD,则返回true
;否则返回false
。 - 自版本:
- 1.0
- 参见:
-
isItalic
public boolean isItalic()指示此Font
对象的样式是否为ITALIC。- 返回:
-
如果此
Font
对象的样式为ITALIC,则返回true
;否则返回false
。 - 自版本:
- 1.0
- 参见:
-
isTransformed
public boolean isTransformed()指示此Font
对象是否具有影响其大小的变换,除了Size属性之外。- 返回:
-
如果此
Font
对象具有非恒等的AffineTransform属性,则返回true
;否则返回false
。 - 自版本:
- 1.4
- 参见:
-
hasLayoutAttributes
public boolean hasLayoutAttributes()如果此Font包含需要额外布局处理的属性,则返回true。- 返回:
- 如果字体具有布局属性,则返回true
- 自版本:
- 1.6
-
getFont
从系统属性列表返回一个Font
对象。将nm
视为要获取的系统属性的名称。然后,该属性的String
值根据Font.decode(String)
的规范解释为Font
对象。如果未找到指定的属性,或者执行代码没有权限读取该属性,则返回null。- 参数:
-
nm
- 属性名称 - 返回:
-
描述属性名称的
Font
对象,如果不存在此类属性,则返回null。 - 抛出:
-
NullPointerException
- 如果nm为null。 - 自版本:
- 1.2
- 参见:
-
decode
返回描述str
参数的Font
。为确保此方法返回所需的Font,请以以下方式格式化str
参数之一:- 字体名称-样式-字号
- 字体名称-字号
- 字体名称-样式
- 字体名称
- 字体名称 样式 字号
- 字体名称 字号
- 字体名称 样式
- 字体名称
"PLAIN"
、"BOLD"
、"BOLDITALIC"
或"ITALIC"
,而字号是正的十进制整数表示的字号大小。例如,如果您想要一个Arial字体,加粗,字号为18,您将使用"Arial-BOLD-18"调用此方法。这相当于调用Font构造函数:new Font("Arial", Font.BOLD, 18);
并且值按照该构造函数指定的方式进行解释。始终将有效的尾部十进制字段解释为字号。因此,不应在仅包含字体名称形式的字体名称中使用包含尾部十进制值的字体名称。
如果样式名称字段不是有效的样式字符串之一,则将其解释为字体名称的一部分,并使用默认样式。
在输入中只能使用一个空格或破折号来分隔字段。确定的分隔符是距离字符串末尾最近的分隔符,它将有效的字号或有效的样式名称与字符串的其余部分分隔开。空(空)字号和样式字段将被视为具有该字段的默认值的有效字段。
某些字体名称可能包含分隔符字符空格或破折号。如果
str
未形成3个组件,例如style
或pointsize
字段未出现在str
中,并且fontname
还包含被确定为分隔符字符的字符,则这些字符(如果它们被视为是字体名称的一部分)可能会被解释为分隔符,因此可能无法正确识别字体名称。默认大小为12,默认样式为PLAIN。如果
str
未指定有效大小,则返回的Font
大小为12。如果str
未指定有效样式,则返回的Font样式为PLAIN。如果在str
参数中未指定有效的字体名称,则此方法将返回一个具有族名"Dialog"的字体。要确定系统上可用的字体族名称,请使用GraphicsEnvironment.getAvailableFontFamilyNames()
方法。如果str
为null
,则返回一个具有族名"Dialog"、大小为12和PLAIN样式的新Font
。- 参数:
-
str
- 字体名称,或null
- 返回:
-
描述
str
的Font
对象,如果str
为null
,则返回一个新的默认Font
。 - 自版本:
- 1.1
- 参见:
-
getFont
从系统属性列表中获取指定的Font
。与System
的getProperty
方法一样,第一个参数被视为要获取的系统属性的名称。然后,此属性的String
值被解释为Font
对象。属性值应为
Font.decode(String)
接受的形式之一。如果未找到指定的属性,或者执行代码没有权限读取属性,则返回font
参数。- 参数:
-
nm
- 不区分大小写的属性名称 -
font
- 如果未定义属性nm
,则返回默认Font
- 返回:
-
属性的
Font
值。 - 抛出:
-
NullPointerException
- 如果nm
为null
- 参见:
-
hashCode
public int hashCode()返回此Font
的哈希码。 -
equals
将此Font
对象与指定的Object
进行比较。 -
toString
将此Font
对象转换为String
表示形式。 -
getNumGlyphs
public int getNumGlyphs()返回此Font
中的字形数。此Font
的字形代码范围从0到getNumGlyphs()
- 1。- 返回:
-
此
Font
中的字形数。 - 自版本:
- 1.2
-
getMissingGlyphCode
public int getMissingGlyphCode()返回当此Font
没有指定Unicode代码点的字形时使用的字形代码。- 返回:
-
此
Font
的字形代码。 - 自版本:
- 1.2
-
getBaselineFor
public byte getBaselineFor(char c) 返回适用于显示此字符的基线。大字体可以支持不同的书写系统,每个系统可以使用不同的基线。字符参数确定要使用的书写系统。客户端不应假定所有字符使用相同的基线。
- 参数:
-
c
- 用于标识书写系统的字符 - 返回:
- 适用于指定字符的基线。
- 自版本:
- 1.2
- 参见:
-
getAttributes
返回此Font
中可用的字体属性映射。属性包括连字和字形替换等内容。- 返回:
-
此
Font
的属性映射。
-
getAvailableAttributes
返回此Font
支持的所有属性的键。这些属性可用于派生其他字体。- 返回:
-
包含此
Font
支持的所有属性键的数组。 - 自版本:
- 1.2
-
deriveFont
通过复制此Font
对象并应用新样式和大小来创建新的Font
对象。- 参数:
-
style
- 新Font
的样式 -
size
- 新Font
的大小 - 返回:
-
新的
Font
对象。 - 自版本:
- 1.2
-
deriveFont
通过复制此Font
对象并应用新样式和变换来创建新的Font
对象。- 参数:
-
style
- 新Font
的样式 -
trans
- 与新Font
关联的AffineTransform
- 返回:
-
新的
Font
对象。 - 抛出:
-
IllegalArgumentException
- 如果trans
为null
- 自版本:
- 1.2
-
deriveFont
通过复制当前Font
对象并应用新大小来创建新的Font
对象。- 参数:
-
size
- 新Font
的大小。 - 返回:
-
新的
Font
对象。 - 自版本:
- 1.2
-
deriveFont
通过复制当前Font
对象并应用新变换来创建新的Font
对象。- 参数:
-
trans
- 与新Font
关联的AffineTransform
- 返回:
-
新的
Font
对象。 - 抛出:
-
IllegalArgumentException
- 如果trans
为null
- 自版本:
- 1.2
-
deriveFont
通过复制当前Font
对象并应用新样式来创建新的Font
对象。- 参数:
-
style
- 新Font
的样式 - 返回:
-
一个新的
Font
对象。 - 自版本:
- 1.2
-
deriveFont
通过复制当前Font
对象并应用一组新的字体属性来创建一个新的Font
对象。- 参数:
-
attributes
- 为新Font
启用的属性映射 - 返回:
-
一个新的
Font
对象。 - 自版本:
- 1.2
-
canDisplay
public boolean canDisplay(char c) 检查此Font
是否具有指定字符的字形。注意: 此方法无法处理补充字符。要支持所有Unicode字符,包括补充字符,请使用
canDisplay(int)
方法或canDisplayUpTo
方法。- 参数:
-
c
- 需要字形的字符 - 返回:
-
如果此
Font
具有此字符的字形,则返回true
; 否则返回false
。 - 自版本:
- 1.2
-
canDisplay
public boolean canDisplay(int codePoint) 检查此Font
是否具有指定字符的字形。- 参数:
-
codePoint
- 需要字形的字符(Unicode代码点)。 - 返回:
-
如果此
Font
具有该字符的字形,则返回true
; 否则返回false
。 - 抛出:
-
IllegalArgumentException
- 如果代码点不是有效的Unicode代码点。 - 自版本:
- 1.5
- 参见:
-
canDisplayUpTo
指示此Font
是否可以显示指定的String
。对于具有Unicode编码的字符串,了解特定字体是否可以显示字符串很重要。此方法返回一个偏移量,指向String
str
中第一个无法显示的字符,除非使用缺失字形代码。如果Font
可以显示所有字符,则返回-1。- 参数:
-
str
- 一个String
对象 - 返回:
-
一个偏移量,指向
str
中此Font
无法显示的第一个字符;或者如果此Font
可以显示str
中的所有字符,则返回-1
。 - 自版本:
- 1.2
-
canDisplayUpTo
public int canDisplayUpTo(char[] text, int start, int limit) 指示此Font
是否可以显示从start
开始并在limit
结束的指定text
中的字符。此方法是一个方便的重载。- 参数:
-
text
- 指定的char
值数组 -
start
- 指定的char
值数组中的起始偏移量 -
limit
- 指定的char
值数组中的结束偏移量 - 返回:
-
一个偏移量,指向
text
中此Font
无法显示的第一个字符;或者如果此Font
可以显示text
中的所有字符,则返回-1
。 - 自版本:
- 1.2
-
canDisplayUpTo
指示此Font
是否可以显示由iter
从start
开始并在limit
结束的指定文本。- 参数:
-
iter
- 一个CharacterIterator
对象 -
start
- 指定的CharacterIterator
中的起始偏移量 -
limit
- 指定的CharacterIterator
中的结束偏移量 - 返回:
-
一个偏移量,指向
iter
中此Font
无法显示的第一个字符;或者如果此Font
可以显示iter
中的所有字符,则返回-1
。 - 自版本:
- 1.2
-
getItalicAngle
public float getItalicAngle()返回此Font
的斜体角度。斜体角度是最能匹配此Font
姿势的插入符的倒数斜率。- 返回:
-
此
Font
的ITALIC样式的角度。 - 参见:
-
hasUniformLineMetrics
public boolean hasUniformLineMetrics()检查此Font
是否具有统一的行度量。逻辑Font
可能是一个复合字体,这意味着它由不同的物理字体组成,以覆盖不同的代码范围。这些字体中的每一个可能具有不同的LineMetrics
。如果逻辑Font
是单个字体,则度量将是统一的。- 返回:
-
如果此
Font
具有统一的行度量,则返回true
; 否则返回false
。
-
getLineMetrics
- 参数:
-
str
- 指定的String
-
frc
- 指定的FontRenderContext
- 返回:
-
使用指定的
String
和FontRenderContext
创建的LineMetrics
对象。
-
getLineMetrics
返回使用指定参数创建的LineMetrics
对象。- 参数:
-
str
- 指定的String
-
beginIndex
-str
的初始偏移量 -
limit
-str
的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
使用指定参数创建的
LineMetrics
对象。
-
getLineMetrics
返回使用指定参数创建的LineMetrics
对象。- 参数:
-
chars
- 字符数组 -
beginIndex
-chars
的初始偏移量 -
limit
-chars
的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
使用指定参数创建的
LineMetrics
对象。
-
getLineMetrics
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 返回使用指定参数创建的LineMetrics
对象。- 参数:
-
ci
- 指定的CharacterIterator
-
beginIndex
-ci
中的初始偏移量 -
limit
-ci
的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
使用指定参数创建的
LineMetrics
对象。
-
getStringBounds
返回指定String
在指定FontRenderContext
中的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括行间距。逻辑边界并不总是包围所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获取包围所有文本的视觉边界框,请使用TextLayout
的getBounds
方法。注意: 返回的边界以基线相对坐标表示(请参阅
类注释
)。- 参数:
-
str
- 指定的String
-
frc
- 指定的FontRenderContext
- 返回:
-
在指定
FontRenderContext
中指定String
的边界框的Rectangle2D
。 - 自版本:
- 1.2
- 参见:
-
getStringBounds
返回指定String
在指定FontRenderContext
中的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括行间距。逻辑边界并不总是包围所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获取包围所有文本的视觉边界框,请使用TextLayout
的getBounds
方法。注意: 返回的边界以基线相对坐标表示(请参阅
类注释
)。- 参数:
-
str
- 指定的String
-
beginIndex
-str
的初始偏移量 -
limit
-str
的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
一个
Rectangle2D
,即指定String
在指定FontRenderContext
中的边界框。 - 抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于零,或limit
大于str
的长度,或beginIndex
大于limit
。 - 自版本:
- 1.2
- 参见:
-
getStringBounds
返回指定字符数组在指定FontRenderContext
中的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括行间距。逻辑边界并不总是包围所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升部分之上或下降部分之下。要获取包围所有文本的视觉边界框,请使用TextLayout
的getBounds
方法。注意:返回的边界以基线相对坐标表示(请参阅
类注释
)。- 参数:
-
chars
- 字符数组 -
beginIndex
- 字符数组中的初始偏移量 -
limit
- 字符数组中的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
一个
Rectangle2D
,即指定字符数组在指定FontRenderContext
中的边界框。 - 抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于零,或limit
大于chars
的长度,或beginIndex
大于limit
。 - 自版本:
- 1.2
- 参见:
-
getStringBounds
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 返回指定CharacterIterator
中索引的字符的逻辑边界,在指定的FontRenderContext
中。逻辑边界包含原点、上升、前进和高度,其中包括行间距。逻辑边界并不总是包围所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升部分之上或下降部分之下。要获取包围所有文本的视觉边界框,请使用TextLayout
的getBounds
方法。注意:返回的边界以基线相对坐标表示(请参阅
类注释
)。- 参数:
-
ci
- 指定的CharacterIterator
-
beginIndex
-ci
中的初始偏移量 -
limit
-ci
中的结束偏移量 -
frc
- 指定的FontRenderContext
- 返回:
-
一个
Rectangle2D
,即指定CharacterIterator
中索引的字符在指定FontRenderContext
中的边界框。 - 抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于ci
的起始索引,或limit
大于ci
的结束索引,或beginIndex
大于limit
- 自版本:
- 1.2
- 参见:
-
getMaxCharBounds
返回具有指定FontRenderContext
中定义的最大边界的字符的边界。注意:返回的边界以基线相对坐标表示(请参阅
类注释
)。- 参数:
-
frc
- 指定的FontRenderContext
- 返回:
-
一个
Rectangle2D
,即具有最大边界的字符的边界框。
-
createGlyphVector
通过根据此Font
中的Unicode cmap将字符一对一地映射到字形来创建一个GlyphVector
。此方法除了将字形映射到字符之外,不进行任何其他处理。这意味着此方法对于某些需要重新排序、成形或连字替换的脚本(如阿拉伯语、希伯来语、泰语和印度语)不实用。- 参数:
-
frc
- 指定的FontRenderContext
-
str
- 指定的String
- 返回:
-
使用指定的
String
和指定的FontRenderContext
创建的新GlyphVector
。
-
createGlyphVector
通过根据此Font
中的Unicode cmap将字符一对一地映射到字形来创建一个GlyphVector
。此方法除了将字形映射到字符之外,不进行任何其他处理。这意味着此方法对于某些需要重新排序、成形或连字替换的脚本(如阿拉伯语、希伯来语、泰语和印度语)不实用。- 参数:
-
frc
- 指定的FontRenderContext
-
chars
- 指定的字符数组 - 返回:
-
使用指定的字符数组和指定的
FontRenderContext
创建的新GlyphVector
。
-
createGlyphVector
通过根据此Font
中的Unicode cmap将指定字符一对一地映射到字形来创建一个GlyphVector
。此方法除了将字形映射到字符之外,不进行任何其他处理。这意味着此方法对于某些需要重新排序、成形或连字替换的脚本(如阿拉伯语、希伯来语、泰语和印度语)不实用。- 参数:
-
frc
- 指定的FontRenderContext
-
ci
- 指定的CharacterIterator
- 返回:
-
使用指定的
CharacterIterator
和指定的FontRenderContext
创建的新GlyphVector
。
-
createGlyphVector
通过根据此Font
中的Unicode cmap将字符一对一地映射到字形来创建一个GlyphVector
。此方法除了将字形映射到字符之外,不进行任何其他处理。这意味着此方法对于某些需要重新排序、成形或连字替换的脚本(如阿拉伯语、希伯来语、泰语和印度语)不实用。- 参数:
-
frc
- 指定的FontRenderContext
-
glyphCodes
- 指定的整数数组 - 返回:
-
使用指定的整数数组和指定的
FontRenderContext
创建的新GlyphVector
。
-
layoutGlyphVector
public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 返回一个新的GlyphVector
对象,如果可能的话执行完整的文本布局。对于复杂文本,如阿拉伯语或印地语,需要完整布局。对不同脚本的支持取决于字体和实现。布局需要双向分析,由
Bidi
执行,并且应仅对具有统一方向的文本执行。方向在标志参数中指示,通过使用LAYOUT_RIGHT_TO_LEFT表示从右到左(阿拉伯语和希伯来语)的运行方向,或使用LAYOUT_LEFT_TO_RIGHT表示从左到右(英语)的运行方向。此外,一些操作,如阿拉伯语成形,需要上下文,以便起始和限制处的字符可以具有正确的形状。有时,提供的范围之外的缓冲区中的数据可能无效。可以将值LAYOUT_NO_START_CONTEXT和LAYOUT_NO_LIMIT_CONTEXT添加到标志参数中,以指示不应检查起始之前或限制之后的文本的上下文。
标志参数的所有其他值均保留。
- 参数:
-
frc
- 指定的FontRenderContext
-
text
- 要布局的文本 -
start
- 用于GlyphVector
的文本起始位置 -
limit
- 用于GlyphVector
的文本结束位置 -
flags
- 如上所述的控制标志 - 返回值:
-
一个新的
GlyphVector
,表示起始位置和结束位置之间的文本,所选取和定位的字形最能代表文本 - 抛出:
-
ArrayIndexOutOfBoundsException
- 如果起始位置或结束位置超出范围 - 自版本:
- 1.4
- 参见:
-