- 所有已实现的接口:
Serializable
- 已知子类:
FontUIResource
Font 类表示字体,用于以可见方式呈现文本。字体提供将 characters 序列映射到 glyphs 序列以及在 Graphics 和 Component 对象上呈现字形序列所需的信息。
字符和字形
character 是以抽象方式表示字母、数字或标点符号等项目的符号。例如,'g',拉丁文小写字母 G,是一个字符。
glyph 是用于呈现字符或字符序列的形状。在简单的书写系统中,例如拉丁语,通常一个字形代表一个字符。然而,一般而言,字符和字形不具有一一对应关系。例如,字符 'á' 带尖音符号的拉丁文小写字母 A 可以用两个字形表示:一个代表 'a',一个代表 '´'。另一方面,两个字符的字符串“fi”可以由单个字形表示,即“fi”连字。在复杂的书写系统中,例如阿拉伯语或南亚和东南亚书写系统,字符和字形之间的关系可能更加复杂,并且涉及与上下文相关的字形选择以及字形重新排序。字体封装了呈现一组选定字符所需的字形集合,以及将字符序列映射到相应字形序列所需的表格。
物理和逻辑字体
Java 平台区分两种字体:physical 字体和 logical 字体。Physical 字体是包含字形数据和表的实际字体库,用于从字符序列映射到字形序列,使用诸如 TrueType 或 PostScript Type 1 之类的字体技术。Java 平台的所有实现都必须支持 TrueType 字体;对其他字体技术的支持取决于实现。物理字体可以使用诸如 Helvetica、Palatino、HonMincho 或任意数量的其他字体名称之类的名称。通常,每种物理字体仅支持一组有限的书写系统,例如,仅拉丁字符或仅日文和基本拉丁文。可用的物理字体集因配置而异。需要特定字体的应用程序可以将它们捆绑起来并使用 createFont 方法实例化它们。
Logical 字体是由 Java 平台定义的五个字体系列,任何 Java 运行时环境都必须支持它们:Serif、SansSerif、Monospaced、Dialog 和 DialogInput。这些逻辑字体不是实际的字体库。相反,逻辑字体名称由 Java 运行时环境映射到物理字体。映射是实现的,通常依赖于locale,因此它们提供的外观和指标各不相同。通常,每个逻辑字体名称都映射到多个物理字体,以覆盖大范围的字符。
对等 AWT 组件,例如 Label 和 TextField ,只能使用逻辑字体。
有关使用物理或逻辑字体的相对优点和缺点的讨论,请参阅 Java教程 文档中的 物理和逻辑字体。
字体和名称
一个Font 可以有很多面,例如 heavy、medium、oblique、gothic 和 regular。所有这些面孔都有相似的排版设计。
您可以从 Font 对象中获得三个不同的名称。 logical font name 只是用于构造字体的名称。 font face name 或简称 font name 是特定字体的名称,例如 Helvetica Bold。 family name 是字体系列的名称,它决定了多个字体的排版设计,例如 Helvetica。
Font 类表示主机系统的系统资源中存在的字体集合中的一个字体实例。例如,Arial Bold 和 Courier Bold Italic 是字体。可以有多个 Font 对象与一个字体相关联,每个对象在大小、样式、转换和字体特征方面都不同。
由于平台限制,例如缺少合适的平台字体来实现逻辑字体,字形可能并不总是使用请求的属性(例如,字体和样式)呈现。
GraphicsEnvironment 类的 getAllFonts 方法返回系统中所有可用字体的数组。这些字体作为 Font 对象返回,大小为 1,具有身份转换和默认字体功能。然后,这些基本字体可用于通过此类中的 deriveFont 方法派生具有不同大小、样式、转换和字体特征的新 Font 对象。
字体和文本属性
Font 支持大多数 TextAttribute s。这使得一些操作(例如渲染带下划线的文本)变得很方便,因为不必显式构造 TextLayout 对象。可以通过使用 Map 的 TextAttribute 值构造或派生它来在字体上设置属性。
某些 TextAttributes 的值不可序列化,因此尝试序列化具有此类值的 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 保留;如果可能存在 FONT 属性,则应使用静态 getFont(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute, ?>) 方法。有关详细信息,请参阅 TextAttribute.FONT 。
一些属性会导致额外的渲染开销并可能调用布局。如果 Font 具有此类属性,则 方法将返回 true。hasLayoutAttributes()
注意:字体旋转会导致文本基线旋转。为了考虑到这种(罕见的)可能性,字体 API 被指定为返回指标并采用“在基线相对坐标中”的参数。这会将“x”坐标映射到沿基线的前进(正 x 沿基线向前),并将“y”坐标映射到沿与“x”处基线垂直的距离(正 y 为顺时针 90 度)来自基线向量)。这一点特别重要的 API 被称为具有“基线相对坐标”。
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final int大胆的风格不变。static final int布局文本时,在中文、日文和韩文等表意文字中使用的基线。static final String逻辑字体“Dialog”的规范系列名称的字符串常量。static final String逻辑字体“DialogInput”的规范系列名称的字符串常量。static final int布局文本时在梵文和类似脚本中使用的基线。static final int斜体样式常量。static final intlayoutGlyphVector 的标志,指示文本是从左到右的,由 Bidi 分析确定。static final intlayoutGlyphVector 的标志,指示不应检查指定限制之后的 char 数组中的文本。static final intlayoutGlyphVector 的标志,指示不应检查指定开始之前的字符数组中的文本。static final intlayoutGlyphVector 的标志,指示文本是从右到左的,由 Bidi 分析确定。static final String逻辑字体“Monospaced”的规范系列名称的字符串常量。protected String传递给构造函数的此Font的逻辑名称。static final int朴素的风格不变。protected floatFont在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 类型的字体资源。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述booleancanDisplay(char c) 检查此Font是否具有指定字符的字形。booleancanDisplay(int codePoint) 检查此Font是否具有指定字符的字形。intcanDisplayUpTo(char[] text, int start, int limit) 指示此Font是否可以显示指定text中从start开始到limit结束的字符。intcanDisplayUpTo(String str) 指示此Font是否可以显示指定的String。intcanDisplayUpTo(CharacterIterator iter, int start, int limit) 指示此Font是否可以显示由iter指定的文本,从start开始到limit结束。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的姓氏,针对指定的locale进行了本地化。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 代码点的字形时使用的字形代码。getName()返回此Font的逻辑名称。int返回此Font中的字形数。返回此Font的后记名称。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对象的样式是否为粗体。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) 如果指定文本的任何部分来自复杂脚本,则在使用drawString(String,int,int)和其他文本呈现方法时,实现需要调用布局处理才能正确呈现,则返回 true。toString()将此Font对象转换为String表示。
-
字段详细信息
-
DIALOG
逻辑字体“Dialog”的规范系列名称的字符串常量。在 Font 构造中提供名称的编译时验证很有用。- 自从:
- 1.6
- 参见:
-
DIALOG_INPUT
逻辑字体“DialogInput”的规范系列名称的字符串常量。在 Font 构造中提供名称的编译时验证很有用。- 自从:
- 1.6
- 参见:
-
SANS_SERIF
逻辑字体“SansSerif”的规范系列名称的字符串常量。在 Font 构造中提供名称的编译时验证很有用。- 自从:
- 1.6
- 参见:
-
SERIF
逻辑字体“Serif”的规范系列名称的字符串常量。在 Font 构造中提供名称的编译时验证很有用。- 自从:
- 1.6
- 参见:
-
MONOSPACED
逻辑字体“Monospaced”的规范系列名称的字符串常量。在 Font 构造中提供名称的编译时验证很有用。- 自从:
- 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_FONT标识类型为 TRUETYPE 的字体资源。用于为createFont(int, java.io.InputStream)方法指定 TrueType 字体资源。 TrueType 格式被扩展成为 OpenType 格式,它增加了对带有 Postscript 轮廓的字体的支持,因此这个标签引用这些字体,以及那些带有 TrueType 轮廓的字体。- 自从:
- 1.3
- 参见:
-
TYPE1_FONT
public static final int TYPE1_FONT标识 TYPE1 类型的字体资源。用于向createFont(int, java.io.InputStream)方法指定Type1字体资源。- 自从:
- 1.5
- 参见:
-
name
传递给构造函数的此Font的逻辑名称。- 自从:
- 1.0
- 参见:
-
style
protected int style传递给构造函数的Font的样式。这种样式可以是 PLAIN、BOLD、ITALIC 或 BOLD+ITALIC。- 自从:
- 1.0
- 参见:
-
size
protected int size此Font的磅值,四舍五入为整数。- 自从:
- 1.0
- 参见:
-
pointSize
protected float pointSizeFont在float中的磅值。- 参见:
-
LAYOUT_LEFT_TO_RIGHT
public static final int LAYOUT_LEFT_TO_RIGHTlayoutGlyphVector 的标志,指示文本是从左到右的,由 Bidi 分析确定。- 参见:
-
LAYOUT_RIGHT_TO_LEFT
public static final int LAYOUT_RIGHT_TO_LEFTlayoutGlyphVector 的标志,指示文本是从右到左的,由 Bidi 分析确定。- 参见:
-
LAYOUT_NO_START_CONTEXT
public static final int LAYOUT_NO_START_CONTEXTlayoutGlyphVector 的标志,指示不应检查指定开始之前的字符数组中的文本。- 参见:
-
LAYOUT_NO_LIMIT_CONTEXT
public static final int LAYOUT_NO_LIMIT_CONTEXTlayoutGlyphVector 的标志,指示不应检查指定限制之后的 char 数组中的文本。- 参见:
-
-
构造方法详细信息
-
Font
根据指定的名称、样式和磅值创建一个新的Font。字体名称可以是字体名称或字体系列名称。它与样式一起使用以找到合适的字体。指定字体系列名称时,样式参数用于从系列中选择最合适的字体。指定字体名称时,将合并字体的样式和样式参数以从同一系列中找到最匹配的字体。例如,如果使用样式
Font.ITALIC指定字体名称“Arial Bold”,则字体系统会在“Arial”系列中查找粗体和斜体的字体,并且可能会将字体实例与物理字体“Arial Bold Italic”相关联.样式参数与指定面的样式合并,而不是添加或减去。这意味着,指定粗体和粗体样式不会使字体加粗,指定粗体和普通样式不会使字体变亮。如果找不到所请求样式的字体,字体系统可以应用算法样式来实现所需样式。例如,如果请求
ITALIC,但没有可用的斜体字形,则普通字形中的字形可能会在算法上倾斜(倾斜)。字体名称查找不区分大小写,使用美国locale的大小写折叠规则。
如果
name参数表示逻辑字体以外的其他内容,即被解释为物理字体或系列,并且无法通过实现将其映射到物理字体或兼容的替代字体,则字体系统会将 Font 实例映射到“Dialog”,例如,getFamily报告的系列将是“Dialog”。- 参数:
name- 字体名称。这可以是字体名称或字体系列名称,并且可以表示在此GraphicsEnvironment中找到的逻辑字体或物理字体。逻辑字体的系列名称是:Dialog、DialogInput、Monospaced、Serif 或 SansSerif。所有这些名称都存在预定义的字符串常量,例如DIALOG。如果name是null,则getName()返回的新Font的 logical font name 设置为名称“默认”。style-Font的样式常量样式参数是一个整数位掩码,可以是PLAIN或BOLD和/或ITALIC的按位并集(例如,ITALIC或BOLD|ITALIC)。如果样式参数不符合预期的整数位掩码之一,则样式设置为PLAIN。size-Font的磅值- 自从:
- 1.0
- 参见:
-
Font
创建具有指定属性的新Font。仅识别TextAttribute中定义的键。此外,此构造函数无法识别 FONT 属性(请参阅getAvailableAttributes())。只有具有有效类型值的属性才会影响新的Font。如果
attributes为null,则使用默认值初始化新的Font。- 参数:
attributes- 分配给新的Font或null的属性- 参见:
-
Font
从指定的font创建一个新的Font。此构造函数旨在供子类使用。- 参数:
font- 从中创建这个Font。- 抛出:
NullPointerException- 如果font为空- 自从:
- 1.6
-
-
方法详情
-
textRequiresLayout
public static boolean textRequiresLayout(char[] chars, int start, int end) 如果指定文本的任何部分来自复杂脚本,则在使用drawString(String,int,int)和其他文本呈现方法时,实现需要调用布局处理才能正确呈现,则返回 true。文本的测量可能同样需要相同的额外处理。提供了start和end索引,以便应用程序可以请求仅考虑文本的一个子集。最后检查的 char 索引位于"end-1",即检查整个数组的请求将是
应用程序可能会发现此信息对性能敏感代码很有帮助。Font.textRequiresLayout(chars, 0, chars.length);请注意,即使此方法返回
false,在与任何Font一起使用时仍可能调用布局处理,其中hasLayoutAttributes()返回true,因此需要针对特定字体咨询该方法,以获得说明此类字体的答案属性。- 参数:
chars- 正文。start- 要检查的第一个字符的索引。end- 结束索引,独占。- 返回:
true如果指定文本需要特殊布局。- 抛出:
NullPointerException- 如果chars为空。ArrayIndexOutOfBoundsException- 如果start为负数或end大于chars数组的长度。- 自从:
- 9
-
getFont
- 参数:
attributes- 分配给新的Font的属性- 返回:
-
使用指定属性创建的新
Font - 抛出:
NullPointerException- 如果attributes为空。- 自从:
- 1.2
- 参见:
-
createFonts
返回从指定流解码的新数组Font。返回的Font[]将至少有一个元素。createFont(int, InputStream)方法的这种变体的明确目的是支持表示 TrueType/OpenType 字体集合的字体源,并能够返回该集合中的所有单个字体。因此,如果数据源不包含至少一种 TrueType/OpenType 字体,此方法将抛出FontFormatException。如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。“至少一个”条件允许流表示单个 OpenType/TrueType 字体。也就是说,它不一定是一个集合。返回数组的每个
Font元素都是用 1 点大小和PLAIN样式创建的。然后可以将此基本字体与此类中的deriveFont方法一起使用,以派生具有不同大小、样式、转换和字体特征的新Font对象。此方法不会关闭
InputStream。要使每个
Font可用于 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可用于 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可用于字体构造函数,返回的Font必须通过调用registerFont(Font)在GraphicsEnvironment中注册。- 参数:
fontFormat-Font的类型,如果指定了 TrueType 资源,则为TRUETYPE_FONT。或者TYPE1_FONT如果指定了 Type 1 资源。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可用于字体构造函数,返回的Font必须通过调用registerFont(Font)在GraphicsEnvironment中注册。fontFile- 代表字体输入数据的File对象。- 返回:
-
使用指定字体类型创建的新
Font。 - 抛出:
IllegalArgumentException- 如果fontFormat不是TRUETYPE_FONT或TYPE1_FONT。NullPointerException- 如果fontFile为空。IOException- 如果无法读取fontFile。FontFormatException- 如果fontFile不包含指定格式所需的字体表。SecurityException- 如果执行代码没有读取文件的权限。- 自从:
- 1.5
- 参见:
-
getTransform
返回与此Font关联的转换副本。此转换不一定是用于构建字体的转换。如果字体有算法上标或宽度调整,这将被合并到返回的AffineTransform中。通常,不会转换字体。客户端一般应先调用
isTransformed(),只有在isTransformed返回true时才调用此方法。- 返回:
-
表示此
Font对象的转换属性的AffineTransform对象。
-
getFamily
返回此Font的姓氏。字体的系列名称是特定于字体的。 Helvetica Italic 和 Helvetica Bold 等两种字体具有相同的家族名称,黑体字,而他们的字体名称是Helvetica 粗体和Helvetica 斜体.可以使用
GraphicsEnvironment.getAvailableFontFamilyNames()方法获取可用姓氏列表。使用
getName获取字体的逻辑名称。使用getFontName获取字体的字体名称。- 返回:
String是这个Font的姓氏。- 自从:
- 1.1
- 参见:
-
getFamily
返回此Font的姓氏,针对指定的locale进行了本地化。字体的系列名称是特定于字体的。 Helvetica Italic 和 Helvetica Bold 等两种字体具有相同的家族名称,黑体字,而他们的字体名称是Helvetica 粗体和Helvetica 斜体.可以使用
GraphicsEnvironment.getAvailableFontFamilyNames()方法获取可用姓氏列表。使用
getFontName获取字体的字体名称。- 参数:
l- 获取姓氏的locale- 返回:
-
一个
String表示字体的系列名称,针对指定的locale进行了本地化。 - 自从:
- 1.2
- 参见:
-
getPSName
返回此Font的后记名称。使用getFamily获取字体的系列名称。使用getFontName获取字体的字体名称。- 返回:
-
一个
String代表这个Font的后记名称。 - 自从:
- 1.2
-
getName
返回此Font的逻辑名称。使用getFamily获取字体的系列名称。使用getFontName获取字体的字体名称。- 返回:
-
一个
String表示这个Font的逻辑名称。 - 自从:
- 1.0
- 参见:
-
getFontName
返回此Font的字体名称。例如,Helvetica Bold 可以作为字体名称返回。使用getFamily获取字体的系列名称。使用getName获取字体的逻辑名称。- 返回:
-
一个
String表示这个Font的字体名称。 - 自从:
- 1.2
- 参见:
-
getFontName
返回Font的字体名称,针对指定区域进行了本地化。例如,Helvetica Fett 可以作为字体名称返回。使用getFamily获取字体的系列名称。- 参数:
l- 获取字体名称的locale- 返回:
-
一个
String表示字体名称,针对指定的locale进行了本地化。 - 参见:
-
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。- 返回:
true如果此Font具有 PLAIN 样式;false否则。- 自从:
- 1.0
- 参见:
-
isBold
public boolean isBold()指示此Font对象的样式是否为粗体。- 返回:
true如果此Font对象的样式为粗体;false否则。- 自从:
- 1.0
- 参见:
-
isItalic
public boolean isItalic()指示此Font对象的样式是否为 ITALIC。- 返回:
true如果这个Font对象的样式是斜体;false否则。- 自从:
- 1.0
- 参见:
-
isTransformed
public boolean isTransformed()指示此Font对象是否具有影响其大小的变换以及 Size 属性。- 返回:
true如果此Font对象具有非身份 AffineTransform 属性。false否则。- 自从:
- 1.4
- 参见:
-
hasLayoutAttributes
public boolean hasLayoutAttributes()如果此 Font 包含需要额外布局处理的属性,则返回 true。- 返回:
- 如果字体具有布局属性,则为真
- 自从:
- 1.6
-
getFont
从系统属性列表中返回一个Font对象。nm被视为要获取的系统属性的名称。然后根据Font.decode(String)的规范将此属性的String值解释为Font对象。如果未找到指定的属性,或者执行代码没有读取该属性的权限,则返回 null。- 参数:
nm- 属性名称- 返回:
-
属性名称描述的
Font对象,如果不存在此类属性,则为 null。 - 抛出:
NullPointerException- 如果 nm 为空。- 自从:
- 1.2
- 参见:
-
decode
返回str参数描述的Font。为确保此方法返回所需的字体,请使用以下方式之一格式化str参数- fontname-style-pointsize
- fontname-pointsize
- fontname-style
- fontname
- fontname style pointsize
- fontname pointsize
- fontname style
- fontname
"PLAIN"、"BOLD"、"BOLDITALIC"或"ITALIC",pointsize 是点大小的正十进制整数表示形式。例如,如果您想要字体为 Arial、粗体、点大小为 18,则可以使用“Arial-BOLD-18”调用此方法。这等效于调用 Font 构造函数:new Font("Arial", Font.BOLD, 18);并且值被解释为该构造函数指定的值。有效的尾随小数字段始终被解释为点数。因此,不应在 fontname only 形式中使用包含尾随十进制值的 fontname。
如果样式名称字段不是有效样式字符串之一,则将其解释为字体名称的一部分,并使用默认样式。
只能使用 ' ' 或 '-' 之一来分隔输入中的字段。标识的分隔符是最接近字符串末尾的分隔符,它将有效磅值或有效样式名称与字符串的其余部分分开。 Null(空)pointsize 和 style 字段被视为具有该字段默认值的有效字段。
某些字体名称可能包含分隔符“”或“-”。如果
str不是由 3 个组件组成的,例如style或pointsize字段不存在于str中,并且fontname还包含一个被确定为分隔符的字符,那么这些字符可能是fontname的一部分解释为分隔符,因此可能无法正确识别字体名称。默认大小为 12,默认样式为 PLAIN。如果
str未指定有效大小,则返回的Font的大小为 12。如果str未指定有效的样式,则返回的 Font 的样式为 PLAIN。如果您没有在str参数中指定有效的字体名称,则此方法将返回具有系列名称“Dialog”的字体。要确定系统上可用的字体系列名称,请使用GraphicsEnvironment.getAvailableFontFamilyNames()方法。如果str是null,则返回一个新的Font,其姓氏为“Dialog”,大小为 12,样式为 PLAIN。- 参数:
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 为空。- 参见:
-
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- 需要字形的字符- 返回:
true如果这个Font有这个字符的字形;false否则。- 自从:
- 1.2
-
canDisplay
public boolean canDisplay(int codePoint) 检查此Font是否具有指定字符的字形。- 参数:
codePoint- 需要字形的字符(Unicode 代码点)。- 返回:
true如果这个Font有字符的字形;false否则。- 抛出:
IllegalArgumentException- 如果代码点不是有效的 Unicode 代码点。- 自从:
- 1.5
- 参见:
-
canDisplayUpTo
指示此Font是否可以显示指定的String。对于使用 Unicode 编码的字符串,了解特定字体是否可以显示该字符串很重要。此方法返回Stringstr的偏移量,这是Font在不使用缺失字形代码的情况下无法显示的第一个字符。如果Font可以显示所有字符,则返回-1。- 参数:
str- 一个String对象- 返回:
str的偏移量指向str中的第一个字符,该Font无法显示;或-1如果此Font可以显示str中的所有字符。- 自从:
- 1.2
-
canDisplayUpTo
public int canDisplayUpTo(char[] text, int start, int limit) 指示此Font是否可以显示指定text中从start开始到limit结束的字符。这个方法是一个方便的重载。- 参数:
text- 指定的char值数组start- 指定的起始偏移量(在chars 中)到指定的char值数组limit- 指定的结束偏移量(在chars 中)到指定的char值数组- 返回:
text的偏移量指向text中的第一个字符,该Font无法显示;或者-1如果这个Font可以显示text中的所有字符。- 自从:
- 1.2
-
canDisplayUpTo
指示此Font是否可以显示由iter指定的文本,从start开始到limit结束。- 参数:
iter- 一个CharacterIterator对象start- 指定的起始偏移量到指定的CharacterIterator。limit- 指定的结束偏移到指定的CharacterIterator中。- 返回:
iter的偏移量指向iter中的第一个字符,该Font无法显示;或-1如果此Font可以显示iter中的所有字符。- 自从:
- 1.2
-
getItalicAngle
public float getItalicAngle()返回此Font的斜体角度。斜体角是插入符的反斜率,它最符合这个Font的姿势。- 返回:
-
这个
Font的 ITALIC 样式的角度。 - 参见:
-
hasUniformLineMetrics
public boolean hasUniformLineMetrics()检查此Font是否具有统一的线度量。逻辑Font可能是复合字体,这意味着它由不同的物理字体组成以覆盖不同的代码范围。这些字体中的每一种都可能有不同的LineMetrics。如果逻辑Font是单一字体,那么指标将是统一的。- 返回:
true如果此Font具有统一的线度量;false否则。
-
getLineMetrics
- 参数:
str- 指定的Stringfrc- 指定的FontRenderContext- 返回:
-
使用指定的
String和FontRenderContext创建的LineMetrics对象。
-
getLineMetrics
返回使用指定参数创建的LineMetrics对象。- 参数:
str- 指定的StringbeginIndex-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- 指定的CharacterIteratorbeginIndex-ci中的初始偏移量limit-ci的结束偏移量frc- 指定的FontRenderContext- 返回:
-
使用指定参数创建的
LineMetrics对象。
-
getStringBounds
返回指定FontRenderContext中指定String的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括前导。逻辑边界并不总是包含所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获得包含所有文本的视觉边界框,请使用TextLayout的getBounds方法。注意:返回的边界在基线相对坐标中(参见
class notes)。- 参数:
str- 指定的Stringfrc- 指定的FontRenderContext- 返回:
Rectangle2D是指定FontRenderContext中指定String的边界框。- 自从:
- 1.2
- 参见:
-
getStringBounds
返回指定FontRenderContext中指定String的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括前导。逻辑边界并不总是包含所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获得包含所有文本的视觉边界框,请使用TextLayout的getBounds方法。注意:返回的边界在基线相对坐标中(参见
class notes)。- 参数:
str- 指定的StringbeginIndex-str的初始偏移量limit-str的结束偏移量frc- 指定的FontRenderContext- 返回:
-
一个
Rectangle2D是指定FontRenderContext中指定String的边界框。 - 抛出:
IndexOutOfBoundsException- 如果beginIndex小于零,或者limit大于str的长度,或者beginIndex大于limit。- 自从:
- 1.2
- 参见:
-
getStringBounds
返回指定FontRenderContext中指定字符数组的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括前导。逻辑边界并不总是包含所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获得包含所有文本的视觉边界框,请使用TextLayout的getBounds方法。注意:返回的边界在基线相对坐标中(参见
class notes)。- 参数:
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) 返回指定FontRenderContext中指定CharacterIterator中索引的字符的逻辑边界。逻辑边界包含原点、上升、前进和高度,其中包括前导。逻辑边界并不总是包含所有文本。例如,在某些语言和某些字体中,重音符号可以位于上升线上方或下降线下方。要获得包含所有文本的视觉边界框,请使用TextLayout的getBounds方法。注意:返回的边界在基线相对坐标中(参见
class notes)。- 参数:
ci- 指定的CharacterIteratorbeginIndex-ci中的初始偏移量limit-ci中的结束偏移量frc- 指定的FontRenderContext- 返回:
-
一个
Rectangle2D是在指定的FontRenderContext中指定的CharacterIterator中索引的字符的边界框。 - 抛出:
IndexOutOfBoundsException- 如果beginIndex小于ci的起始索引,或者limit大于ci的结束索引,或者beginIndex大于limit- 自从:
- 1.2
- 参见:
-
getMaxCharBounds
返回具有指定FontRenderContext中定义的最大边界的字符的边界。注意:返回的边界在基线相对坐标中(参见
class notes)。- 参数:
frc- 指定的FontRenderContext- 返回:
Rectangle2D是具有最大边界的字符的边界框。
-
createGlyphVector
根据此Font中的 Unicode cmap,通过将字符一对一映射到字形来创建GlyphVector。除了将字形映射到字符之外,此方法不执行其他处理。这意味着此方法对某些需要重新排序、整形或连字替换的脚本(例如阿拉伯语、希伯来语、泰语和印度语)没有用。- 参数:
frc- 指定的FontRenderContextstr- 指定的String- 返回:
-
使用指定的
String和指定的FontRenderContext创建的新GlyphVector。
-
createGlyphVector
根据此Font中的 Unicode cmap,通过将字符一对一映射到字形来创建GlyphVector。除了将字形映射到字符之外,此方法不执行其他处理。这意味着此方法对某些需要重新排序、整形或连字替换的脚本(例如阿拉伯语、希伯来语、泰语和印度语)没有用。- 参数:
frc- 指定的FontRenderContextchars- 指定的字符数组- 返回:
-
使用指定的字符数组和指定的
FontRenderContext创建的新GlyphVector。
-
createGlyphVector
根据此Font中的 Unicode cmap,通过将指定字符一对一映射到字形来创建GlyphVector。除了将字形映射到字符之外,此方法不执行其他处理。这意味着此方法对某些需要重新排序、整形或连字替换的脚本(例如阿拉伯语、希伯来语、泰语和印度语)没有用。- 参数:
frc- 指定的FontRenderContextci- 指定的CharacterIterator- 返回:
-
使用指定的
CharacterIterator和指定的FontRenderContext创建的新GlyphVector。
-
createGlyphVector
根据此Font中的 Unicode cmap,通过将字符一对一映射到字形来创建GlyphVector。除了将字形映射到字符之外,此方法不执行其他处理。这意味着此方法对某些需要重新排序、整形或连字替换的脚本(例如阿拉伯语、希伯来语、泰语和印度语)没有用。- 参数:
frc- 指定的FontRenderContextglyphCodes- 指定的整数数组- 返回:
-
使用指定的整数数组和指定的
FontRenderContext创建的新GlyphVector。
-
layoutGlyphVector
public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 返回一个新的GlyphVector对象,如果可能的话执行文本的完整布局。复杂文本需要完整布局,例如阿拉伯语或印地语。对不同脚本的支持取决于字体和实现。布局需要 bidi 分析,由
Bidi执行,并且只应在具有统一方向的文本上执行。方向在标志参数中指示,通过使用 LAYOUT_RIGHT_TO_LEFT 指示从右到左(阿拉伯语和希伯来语)的运行方向,或使用 LAYOUT_LEFT_TO_RIGHT 指示从左到右(英语)的运行方向。此外,一些操作,如阿拉伯语整形,需要上下文,以便开始和限制处的字符可以具有适当的形状。有时缓冲区中超出提供范围的数据没有有效数据。可以将值 LAYOUT_NO_START_CONTEXT 和 LAYOUT_NO_LIMIT_CONTEXT 添加到 flags 参数以分别指示不应检查开始之前或限制之后的文本的上下文。
flags 参数的所有其他值均保留。
- 参数:
frc- 指定的FontRenderContexttext- 要布局的文本start- 用于GlyphVector的文本的开头limit- 用于GlyphVector的文本限制flags- 如上所述的控制标志- 返回:
-
一个新的
GlyphVector表示开始和限制之间的文本,选择和定位字形以最好地表示文本 - 抛出:
ArrayIndexOutOfBoundsException- 如果开始或限制超出范围- 自从:
- 1.4
- 参见:
-