- 所有已实现的接口:
-
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
FieldsModifier 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanDisplay(char c) 检查此Font是否具有指定字符的字形。booleancanDisplay(int codePoint) 检查此Font是否具有指定字符的字形。intcanDisplayUpTo(char[] text, int start, int limit) 指示此Font是否能够显示从start到limit的指定text中的字符。intcanDisplayUpTo(String str) 指示此Font是否能够显示指定的String。intcanDisplayUpTo(CharacterIterator iter, int start, int limit) 指示此Font是否能够显示从start到limit的iter中指定的文本。static FontcreateFont(int fontFormat, File fontFile) 使用指定的字体类型和指定的字体文件返回一个新的Font。static FontcreateFont(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支持的所有属性的键。bytegetBaselineFor(char c) 返回适合显示此字符的基线。返回此Font的字族名称。返回此Font的字族名称,针对指定的区域设置本地化。static Font从系统属性列表返回一个Font对象。static Font从系统属性列表获取指定的Font。static FontgetFont(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名称。intgetSize()返回四舍五入为整数的此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中索引的字符的逻辑边界。intgetStyle()返回此Font的样式。返回与此Font关联的变换的副本。inthashCode()返回此Font的哈希码。boolean如果此Font包含需要额外布局处理的属性,则返回true。boolean检查此Font是否具有统一的行度量。booleanisBold()指示此Font对象的样式是否为BOLD。booleanisItalic()指示此Font对象的样式是否为ITALIC。booleanisPlain()指示此Font对象的样式是否为PLAIN。boolean指示此Font对象是否具有影响其大小的变换,除了Size属性。layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 返回一个新的GlyphVector对象,如果可能的话执行文本的完整布局。static booleantextRequiresLayout(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 thisFontinfloat.- 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 newFontfrom 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
ITALICis 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
nameparameter 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 bygetFamilywill 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. Ifnameisnull, the logical font name of the newFontas returned bygetName()is set to the name "Default". -
style- the style constant for theFontThe style argument is an integer bitmask that may bePLAIN, or a bitwise union ofBOLDand/orITALIC(for example,ITALICorBOLD|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 newFontwith the specified attributes. Only keys defined inTextAttributeare 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
attributesisnull, a newFontis initialized with default values.- Parameters:
-
attributes- the attributes to assign to the newFont, ornull - See Also:
-
Font
Creates a newFontfrom the specifiedfont. This constructor is intended for use by subclasses.- Parameters:
-
font- from which to create thisFont. - Throws:
-
NullPointerException- iffontis 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. Thestartandendindices 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 be
An application may find this information helpful in performance sensitive code.Font.textRequiresLayout(chars, 0, chars.length);Note that even if this method returns
false, layout processing may still be invoked when used with anyFontfor 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:
-
trueif the specified text will need special layout. - Throws:
-
NullPointerException- ifcharsis null. -
ArrayIndexOutOfBoundsException- ifstartis negative orendis greater than the length of thecharsarray. - Since:
- 9
-
getFont
Returns aFontappropriate to the attributes. Ifattributescontains aFONTattribute with a validFontas its value, it will be merged with any remaining attributes. SeeTextAttribute.FONTfor more information.- Parameters:
-
attributes- the attributes to assign to the newFont - Returns:
-
a new
Fontcreated with the specified attributes - Throws:
-
NullPointerException- ifattributesis 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编码的字符串,了解特定字体是否可以显示字符串很重要。此方法返回一个偏移量,指向Stringstr中第一个无法显示的字符,除非使用缺失字形代码。如果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
- 参见:
-