java.awt
类 Font
java.lang.Object java.awt.Font
-
所有已实现的接口:
- Serializable
-
直接已知子类:
- FontUIResource
public class Font extends Object implements Serializable
Font
类表示字体,可以使用它以可见方式呈现文本。字体提供将字符 序列映射到字形 序列所需要的信息,以便在 Graphics
对象和 Component
对象上呈现字形序列。
字符和字形
字符 是表示项的符号(如字母、数字或具有抽象意义的标点)。例如,'g'
(
G 的拉丁小写字母)是一个字符。
字形 是用来呈现字符或字符序列的一种形状。在简单的书写系统(如拉丁文)中,通常一个字形就表示一个字符。但在一般情况下,字符和字形并没有一对一的对应关系。例如,字符 'á' A 的带重音符号的拉丁小写字母 可以由两个字形表示:一个是 'a',一个是 '´'。另一方面,两字符的字符串 "fi" 可以由单个字形 "fi" 连字表示。在复杂的书写系统(如阿拉伯语或南亚和东南亚语言)中,字符与字形之间的关系可能更复杂,涉及到依赖于上下文的字形选择以及字形重排序。字体封装了呈现所选择的字符集所需的字形集,还封装了将字符序列映射到相应的字形序列所需的表。
物理字体和逻辑字体
Java Platform 可以区分两种字体: 物理 字体和 逻辑 字体。物理 字体是实际的字体库,包含字形数据和表,这些数据和表使用字体技术(如 TrueType 或 PostScript Type 1)将字符序列映射到字形序列。Java Platform 的所有实现都支持 TrueType 字体;对其他字体技术的支持是与实现相关的。物理字体可以使用字体名称,如 Helvetica、Palatino、HonMincho 或任意数量的其他字体名称。通常,每种物理字体只支持有限的书写系统集合,例如,只支持拉丁文字符,或者只支持日文和基本拉丁文。可用的物理字体集合随配置的不同而有所不同。要求特定字体的应用程序可以使用 createFont 方法来捆绑这些字体,并对其进行实例化。
逻辑 字体是由必须受所有 Java 运行时环境支持的 Java 平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput。这些逻辑字体不是实际的字体库。此外,由 Java 运行时环境将逻辑字体名称映射到物理字体。映射关系与实现和通常语言环境相关,因此它们提供的外观和规格各不相同。通常,为了覆盖庞大的字符范围,每种逻辑字体名称都映射到几种物理字体。
同级的 AWT 组件(如 Label 和 TextField)只可以使用逻辑字体。
有关使用物理字体或逻辑字体的相对优势和劣势的讨论,请参阅 Internationalization FAQ 文档。
字体外观和名称
Font
可以有多个外观,如 heavy、medium、oblique、gothic 和 regular。所有这些外观都有相似的排字设计。
可以从 Font
对象获得三种不同的名称。逻辑字体名称 只是用来构造字体的名称。字体外观名称,或外观名称 是特定字体外观的名称,如 Helvetica Bold。系列名称 是字体系列的名称,用来确定多种外观(如 Helvetica)的排字设计。
Font
类表示字体外观集合中字体外观的实例,字体外观集合位于主机系统的系统资源中。例如,Arial Bold 和 Courier Bold Italic 是字体外观。有几个 Font
对象与字体外观相关,每个对象在大小、样式、变换和字体特征上都有所不同。
GraphicsEnvironment
类的 getAllFonts 方法返回系统中所有可用字体外观组成的数组。这些字体外观被作为 Font
对象返回,对象的大小为 1,具有恒等变换和默认字体特征。这些基本字体可以用来派生新的 Font
对象,使之具有变化的大小、样式、变换和字体特征,这些可以通过此类中的 deriveFont
方法实现。
Font 和 TextAttribute
Font
支持大多数 TextAttribute
。这使得一些操作(如呈现带下划线的文本)变得更方便,因为没必要再显式构造一个 TextLayout
对象。通过使用 TextAttribute
值的 Map
来构造或派生属性,可以在 Font 上设置属性。
一些 TextAttributes
值是不可序列化的,因此尝试序列化具有这样的值的 Font
实例不会使它们获得序列化。这意味着从这样一个流实现序列化的 Font 不会等同于包含不可序列化属性的原始 Font。这应该是很少出现的一个问题,因为这些属性通常只使用在特殊情况下并且不可能被序列化。
FOREGROUND
和BACKGROUND
使用Paint
值。子类Color
是可序列化的,而GradientPaint
和TexturePaint
是不可序列化的。CHAR_REPLACEMENT
使用GraphicAttribute
值。子类ShapeGraphicAttribute
和ImageGraphicAttribute
是不可序列化的。INPUT_METHOD_HIGHLIGHT
使用InputMethodHighlight
值,它是不可序列化的。请参阅 InputMethodHighlight。
Paint
和
GraphicAttribute
的自定义子类的客户机可以使它们可序列化并避免此问题。使用输入方法高亮显示的客户机可以将这些转换为特定于平台的属性,以便在当前平台上高亮显示它们并在 Font 上设置它们,以此作为解决方法。
基于 Map
的构造方法和 deriveFont
API 忽略了 FONT 属性,并且没有通过 Font 保留它;如果 FONT 属性可能存在,则应该使用 static getFont(java.util.Map) 方法。有关更多信息,请参阅 TextAttribute.FONT。
一些属性会带来额外的呈现开销,并且可能调用布局。如果某一 Font
具有这样的属性,那么 hasLayoutAttributes
方法将返回 true。
注:字体旋转可能导致文本基线也跟着旋转。为了应对这种(很少见的)可能性,可以指定字体 API 返回字体规格,并使参数“位于相对于基线的坐标中”。这将 'x' 坐标映射到沿基线的某段距离处(正 x 表示沿基线的正方向),将 'y' 坐标映射到位于 'x' 坐标的基线垂直方向的某段距离处(正 y 表示从基线向量顺时针旋转 90 度)。用于实现这些的 API 特别重要,它们被调出,就像具有“相对于基线的坐标”一样。
-
另请参见:
- 序列化表格
字段摘要 | |
---|---|
static int | BOLD 粗体样式常量。 |
static int | CENTER_BASELINE 布置文本时,在表意文字的脚本(如中文、日文和韩文)中使用的基线。 |
static String | DIALOG 逻辑字体 "Dialog" 的规范系列名称的 String 常量。 |
static String | DIALOG_INPUT 逻辑字体 "DialogInput" 的规范系列名称的 String 常量。 |
static int | HANGING_BASELINE 布置文本时,在 Devanigiri 和类似脚本中使用的基线。 |
static int | ITALIC 斜体样式常量。 |
static int | LAYOUT_LEFT_TO_RIGHT layoutGlyphVector 的标志,指示文本是从左到右的,这由 Bidi 分析确定。 |
static int | LAYOUT_NO_LIMIT_CONTEXT layoutGlyphVector 的标志,指示不应该检查指定 limit 之后的 char 数组中的文本。 |
static int | LAYOUT_NO_START_CONTEXT layoutGlyphVector 的标志,指示不应该检查指定 start 之前的 char 数组中的文本。 |
static int | LAYOUT_RIGHT_TO_LEFT layoutGlyphVector 的标志,指示文本是从右到左的,这由 Bidi 分析确定。 |
static String | MONOSPACED 逻辑字体 "Monospaced" 的规范系列名称的 String 常量。 |
protected String | name Font 的逻辑名称,它被传递到构造方法中。 |
static int | PLAIN 普通样式常量。 |
protected float | pointSize 以 float 形式表示的 Font 的磅值大小。 |
static int | ROMAN_BASELINE 布置文本时,在大多数 Roman 脚本中使用的基线。 |
static String | SANS_SERIF 逻辑字体 "SansSerif" 的规范系列名称的 String 常量。 |
static String | SERIF 逻辑字体 "Serif" 的规范系列名称的 String 常量。 |
protected int | size Font 的磅值大小,舍入为整数。 |
protected int | style Font 的样式,它被传递到构造方法中。 |
static int | TRUETYPE_FONT 标识 TRUETYPE 类型的字体资源。 |
static int | TYPE1_FONT 标识 TYPE1 类型的字体资源。 |
构造方法摘要 | |
---|---|
protected | Font(Font font) 根据指定 font 创建一个新 Font 。 |
| Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes) 创建一个具有指定属性的新 Font 。 |
| Font(String name, int style, int size) 根据指定名称、样式和磅值大小,创建一个新 Font 。 |
方法摘要 | |
---|---|
boolean | canDisplay(char c) 检查此 Font 是否具有指定字符的字形。 |
boolean | canDisplay(int codePoint) 检查此 Font 是否具有指定字符的字形。 |
int | canDisplayUpTo(char[] text, int start, int limit) 指示此 Font 是否可以显示指定 text 中从 start 开始至 limit 结束的所有字符。 |
int | canDisplayUpTo(CharacterIterator iter, int start, int limit) 指示此 Font 是否可以显示由 iter 指定的文本(从 start 开始至 limit 结束)。 |
int | canDisplayUpTo(String str) 指示此 Font 是否可以显示指定的 String 。 |
static Font | createFont(int fontFormat, File fontFile) 返回一个使用指定字体类型和指定字体文件的新 Font 。 |
static Font | createFont(int fontFormat, InputStream fontStream) 返回一个使用指定字体类型和输入数据的新 Font 。 |
GlyphVector | createGlyphVector(FontRenderContext frc, char[] chars) 根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。 |
GlyphVector | createGlyphVector(FontRenderContext frc, CharacterIterator ci) 根据此 Font 中的 Unicode cmap 将指定字符一一映射到字形,从而创建一个 GlyphVector。 |
GlyphVector | createGlyphVector(FontRenderContext frc, int[] glyphCodes) 根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。 |
GlyphVector | createGlyphVector(FontRenderContext frc, String str) 根据此 Font 中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。 |
static Font | decode(String str) 返回 str 参数所描述的 Font 。 |
Font | deriveFont(AffineTransform trans) 通过复制当前 Font 对象并应用新的变换,创建一个新 Font 对象。 |
Font | deriveFont(float size) 通过复制当前 Font 对象并应用新的大小,创建一个新 Font 对象。 |
Font | deriveFont(int style) 通过复制当前的 Font 对象,并应用新的样式,创建一个新 Font 对象。 |
Font | deriveFont(int style, AffineTransform trans) 通过复制此 Font 对象并应用新样式和变换,创建一个新 Font 对象。 |
Font | deriveFont(int style, float size) 通过复制此 Font 对象并应用新样式和大小,创建一个新 Font 对象。 |
Font | deriveFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes) 通过复制当前 Font 对象并应用新的字体属性集,创建一个新 Font 对象。 |
boolean | equals(Object obj) 将此 Font 对象与指定 Object 进行比较。 |
protected void | finalize() 移除本机 Font 对象。 |
Map<TextAttribute,?> | getAttributes() 返回此 Font 中可用的字体属性的映射。 |
AttributedCharacterIterator.Attribute[] | getAvailableAttributes() 返回由此 Font 支持的所有属性的键。 |
byte | getBaselineFor(char c) 返回适合用来显示此字符的基线。 |
String | getFamily() 返回此 Font 的系列名称。 |
String | getFamily(Locale l) 返回此 Font 的系列名称(已经针对指定语言环境进行了本地化)。 |
static Font | getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes) 返回适合于这些属性的 Font 。 |
static Font | getFont(String nm) 从系统属性列表返回一个 Font 对象。 |
static Font | getFont(String nm, Font font) 从系统属性列表获取指定的 Font 。 |
String | getFontName() 返回此 Font 的字体外观名称。 |
String | getFontName(Locale l) 返回此 Font 的字体外观名称(已经针对指定语言环境进行了本地化)。 |
float | getItalicAngle() 返回此 Font 的斜角。 |
LineMetrics | getLineMetrics(char[] chars, int beginIndex, int limit, FontRenderContext frc) 返回使用指定参数创建的 LineMetrics 对象。 |
LineMetrics | getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 返回使用指定参数创建的 LineMetrics 对象。 |
LineMetrics | getLineMetrics(String str, FontRenderContext frc) 返回一个使用指定 String 和 FontRenderContext 创建的 LineMetrics 对象。 |
LineMetrics | getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc) 返回使用指定参数创建的 LineMetrics 对象。 |
Rectangle2D | getMaxCharBounds(FontRenderContext frc) 返回最大边界定义在 FontRenderContext 中的字符的边界。 |
int | getMissingGlyphCode() 返回此 Font 不具有指定的 unicode 字形时所使用的 glyphCode 代码点。 |
String | getName() 返回此 Font 的逻辑名称。 |
int | getNumGlyphs() 返回此 Font 中的字形数量。 |
java.awt.peer.FontPeer | getPeer() 已过时。 现在,字体呈现与平台无关。 |
String | getPSName() 返回此 Font 的 postscript 名称。 |
int | getSize() 返回此 Font 的磅值大小,舍入为整数。 |
float | getSize2D() 返回此 Font 的磅值大小(以 float 值表示)。 |
Rectangle2D | getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc) 返回指定 FontRenderContext 指定字符数组的逻辑边界。 |
Rectangle2D | getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc) 返回指定 FontRenderContext 中针对指定 CharacterIterator 进行索引的字符的逻辑边界。 |
Rectangle2D | getStringBounds(String str, FontRenderContext frc) 返回指定 FontRenderContext 中指定 String 的逻辑边界。 |
Rectangle2D | getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc) 返回指定 FontRenderContext 中指定 String 的逻辑边界。 |
int | getStyle() 返回此 Font 的样式。 |
AffineTransform | getTransform() 返回与此 Font 相关的变换的副本。 |
int | hashCode() 返回此 Font 的哈希码。 |
boolean | hasLayoutAttributes() 如果此 Font 包含需要额外布局处理的属性,则返回 true。 |
boolean | hasUniformLineMetrics() 检查此 Font 是否具有统一的行规格。 |
boolean | isBold() 指示此 Font 对象的样式是否为 BOLD。 |
boolean | isItalic() 指示此 Font 对象的样式是否为 ITALIC。 |
boolean | isPlain() 指示此 Font 对象的样式是否为 PLAIN。 |
boolean | isTransformed() 指示此 Font 对象是否具有影响其大小以及 Size 属性的变换。 |
GlyphVector | layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 返回一个新 GlyphVector 对象,执行完整的文本布局(如有可能)。 |
String | toString() 将此 Font 对象转换为 String 表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
DIALOG
public static final String DIALOG
-
逻辑字体 "Dialog" 的规范系列名称的 String 常量。它在 Font 构造中很有用,可提供该名称的编译时验证。
-
从以下版本开始:
- 1.6 另请参见:
- 常量字段值
DIALOG_INPUT
public static final String DIALOG_INPUT
-
逻辑字体 "DialogInput" 的规范系列名称的 String 常量。它在 Font 构造中很有用,可提供该名称的编译时验证。
-
从以下版本开始:
- 1.6 另请参见:
- 常量字段值
SANS_SERIF
public static final String SANS_SERIF
-
逻辑字体 "SansSerif" 的规范系列名称的 String 常量。它在 Font 构造中很有用,可提供该名称的编译时验证。
-
从以下版本开始:
- 1.6 另请参见:
- 常量字段值
SERIF
public static final String SERIF
-
逻辑字体 "Serif" 的规范系列名称的 String 常量。它在 Font 构造中很有用,可提供该名称的编译时验证。
-
从以下版本开始:
- 1.6 另请参见:
- 常量字段值
MONOSPACED
public static final String MONOSPACED
-
逻辑字体 "Monospaced" 的规范系列名称的 String 常量。它在 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
-
布置文本时,在大多数 Roman 脚本中使用的基线。
-
另请参见:
- 常量字段值
CENTER_BASELINE
public static final int CENTER_BASELINE
-
布置文本时,在表意文字的脚本(如中文、日文和韩文)中使用的基线。
-
另请参见:
- 常量字段值
HANGING_BASELINE
public static final int HANGING_BASELINE
-
布置文本时,在 Devanigiri 和类似脚本中使用的基线。
-
另请参见:
- 常量字段值
TRUETYPE_FONT
public static final int TRUETYPE_FONT
-
标识 TRUETYPE 类型的字体资源。可用它为 createFont(int, java.io.InputStream) 方法指定一个 TrueType 字体资源。
-
从以下版本开始:
- 1.3 另请参见:
- 常量字段值
TYPE1_FONT
public static final int TYPE1_FONT
-
标识 TYPE1 类型的字体资源。可用它为 createFont(int, java.io.InputStream) 方法指定一个 Type1 字体资源。
-
从以下版本开始:
- 1.5 另请参见:
- 常量字段值
name
protected String name
-
Font
的逻辑名称,它被传递到构造方法中。-
从以下版本开始:
- JDK1.0 另请参见:
- getName()
style
protected int style
-
Font
的样式,它被传递到构造方法中。此样式可以为 PLAIN、BOLD、ITALIC 或 BOLD+ITALIC。-
从以下版本开始:
- JDK1.0 另请参见:
- getStyle()
size
protected int size
-
Font
的磅值大小,舍入为整数。-
从以下版本开始:
- JDK1.0 另请参见:
- getSize()
pointSize
protected float pointSize
-
以
float
形式表示的Font
的磅值大小。-
另请参见:
- getSize(), getSize2D()
LAYOUT_LEFT_TO_RIGHT
public static final int LAYOUT_LEFT_TO_RIGHT
-
layoutGlyphVector 的标志,指示文本是从左到右的,这由 Bidi 分析确定。
-
另请参见:
- 常量字段值
LAYOUT_RIGHT_TO_LEFT
public static final int LAYOUT_RIGHT_TO_LEFT
-
layoutGlyphVector 的标志,指示文本是从右到左的,这由 Bidi 分析确定。
-
另请参见:
- 常量字段值
LAYOUT_NO_START_CONTEXT
public static final int LAYOUT_NO_START_CONTEXT
-
layoutGlyphVector 的标志,指示不应该检查指定 start 之前的 char 数组中的文本。
-
另请参见:
- 常量字段值
LAYOUT_NO_LIMIT_CONTEXT
public static final int LAYOUT_NO_LIMIT_CONTEXT
-
layoutGlyphVector 的标志,指示不应该检查指定 limit 之后的 char 数组中的文本。
-
另请参见:
- 常量字段值
构造方法详细信息 |
---|
Font
public Font(String name, int style, int size)
-
根据指定名称、样式和磅值大小,创建一个新
Font
。字体名称可以是字体外观名称或字体系列名称。它与样式一起使用,以查找合适的字体外观。如果指定了字体系列名称,则使用样式参数从系列中选择最合适的外观。如果指定了字体外观名称,则合并外观的样式和样式参数,以便从同一个系列查找最匹配的字体。例如,如果指定外观名称 "Arial Bold" 及样式
Font.ITALIC
,则字体系统在 "Arial" 系列中寻找既是粗体又是斜体的外观,可以将字体实例与物理字体外观 "Arial Bold Italic" 相关联。将样式参数与指定外观的样式合并,而不是执行添加或减去操作。这意味着,指定粗体外观和粗体样式并不会双倍加粗字体,而指定粗体外观和普通样式也不会变细字体。如果无法找到所要求样式的外观,则字体系统可以应用样式设计算法来获得所需的样式。例如,如果要求
ITALIC
,但是没有可用的斜体外观,则可以通过算法使普通外观倾斜。字体名称查找是区分大小写的,可以使用 US 语言环境的大小写转换规则。
如果
name
参数表示逻辑字体以外的事物,例如表示为物理字体外观或系列名称,并且无法通过实现物理字体或可兼容的替代物映射它,则字体系统会将 Font 实例映射到 "Dialog",因此,通过 getFamily 报告的字体系列名称将是 "Dialog"。-
参数:
-
name
- 字体名称。可以是字体外观名称或字体系列名称,并且可表示此GraphicsEnvironment
中找到的逻辑字体或物理字体。逻辑字体的系列名称有:Dialog、DialogInput、Monospaced、Serif 或 SansSerif。预定义 String 常量是为所有这些名称(如 DIALOG)而存在。如果name
为null
,则将新Font
的 逻辑字体名称(由getName()
返回)设置为 "Default"。 -
style
-Font
的样式常量。样式参数是整数位掩码,可以为 PLAIN,或 BOLD 和 ITALIC 的按位或(例如,ITALIC 或 BOLD|ITALIC)。如果样式参数不符合任何一个期望的整数位掩码,则将样式设置为 PLAIN。 -
size
-Font
的磅值大小
从以下版本开始:
- JDK1.0 另请参见:
- GraphicsEnvironment.getAllFonts(), GraphicsEnvironment.getAvailableFontFamilyNames()
-
Font
public Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
-
创建一个具有指定属性的新
Font
。只有 TextAttribute 中定义的键被识别。此外,FONT 属性也没有被此构造方法识别(请参阅 getAvailableAttributes())。只有具有有效类型值的属性会影响新的Font
。如果
attributes
为null
,则使用默认值初始化新Font
。-
参数:
-
attributes
- 分配给新Font
的属性,或null
另请参见:
- TextAttribute
-
Font
protected Font(Font font)
-
根据指定
font
创建一个新Font
。此构造方法由子类使用。-
参数:
-
font
- 用来创建此Font
的字体。
抛出:
-
NullPointerException
- 如果font
为 null
从以下版本开始:
- 1.6
-
方法详细信息 |
---|
getPeer
@Deprecated
public java.awt.peer.FontPeer getPeer()
- 已过时。 现在,字体呈现与平台无关。
-
获取此
Font
的同位体。 -
-
-
返回:
-
Font
的同位体。
从以下版本开始:
- JDK1.1
-
getFont
public static Font getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
-
返回适合于这些属性的
Font
。如果attributes
包含一个使用有效Font
作为其值的FONT
属性,那么它将与其余所有属性合并。有关更多信息,请参阅 TextAttribute.FONT。 -
-
-
参数:
-
attributes
- 分配给新Font
的属性
返回:
-
使用指定属性创建的新
Font
抛出:
-
NullPointerException
- 如果attributes
为 null。
从以下版本开始:
- 1.2 另请参见:
- TextAttribute
-
createFont
public static Font createFont(int fontFormat, InputStream fontStream) throws FontFormatException, IOException
-
返回一个使用指定字体类型和输入数据的新
Font
。创建的新Font
的磅值大小为 1,样式为 PLAIN。然后,基本字体可以与此类中的deriveFont
方法一起使用,从而派生出新的Font
对象,这些对象具有变化的大小、样式、变换和字体特征。此方法不会关闭 InputStream。为了使
Font
可用于 Font 构造方法,必须通过调用 registerFont(Font) 在GraphicsEnviroment
中注册返回的Font
。 -
-
-
参数:
-
fontFormat
-Font
的类型,如果指定了 TrueType 资源,则类型为 TRUETYPE_FONT,如果指定了 Type 1 资源,则类型为 TYPE1_FONT。 -
fontStream
-InputStream
对象,表示字体的输入数据。
返回:
-
使用指定字体类型创建的新
Font
。
抛出:
-
IllegalArgumentException
- 如果fontFormat
不为TRUETYPE_FONT
或TYPE1_FONT
。 -
FontFormatException
- 如果fontStream
数据不包含指定格式所需的字体表。 -
IOException
- 如果无法完全读取fontStream
。
从以下版本开始:
- 1.3 另请参见:
- GraphicsEnvironment.registerFont(Font)
-
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) 在GraphicsEnviroment
中注册返回的Font
。 -
fontFile
-File
对象,表示字体的输入数据。
返回:
-
使用指定字体类型创建的新
Font
。
抛出:
-
IllegalArgumentException
- 如果fontFormat
不为TRUETYPE_FONT
orTYPE1_FONT
。 -
NullPointerException
- 如果fontFile
为 null。 -
IOException
- 如果无法读取fontFile
。 -
FontFormatException
- 如果fontFile
不包含指定格式所需的字体表。 -
SecurityException
- 如果正在执行的代码没有从文件中读取的权限。
从以下版本开始:
- 1.5 另请参见:
- GraphicsEnvironment.registerFont(Font)
-
getTransform
public AffineTransform getTransform()
-
返回与此
Font
相关的变换的副本。此转换对于用于构造字体的方法而言是没必要的。如果字体具有算法上标(algorithmic superscripting)或宽度调整,那么这将合并到返回的AffineTransform
中。通常不会转换字体。客户机通常应该先调用 isTransformed(),如果
isTransformed
返回 true,则只调用此方法。 -
-
-
返回:
-
AffineTransform 对象,表示此
Font
对象的变换属性。
-
AffineTransform 对象,表示此
getFamily
public String getFamily()
-
返回此
Font
的系列名称。字体的系列名称是特定于字体的。两个字体 Helvetica Italic 和 Helvetica Bold 具有相同的系列名称 Helvetica,但它们的字体外观名称是 Helvetica Bold 和 Helvetica Italic。可用的系列名称列表可以通过使用 GraphicsEnvironment.getAvailableFontFamilyNames() 方法得到。
使用
getName
可以获取字体的逻辑名称。使用getFontName
可以获取字体的字体外观名称。 -
-
-
返回:
-
一个
String
,此Font
的系列名称。
从以下版本开始:
- JDK1.1 另请参见:
- getName(), getFontName()
-
一个
getFamily
public String getFamily(Locale l)
-
返回此
Font
的系列名称(已经针对指定语言环境进行了本地化)。字体的系列名称是特定于字体的。两个字体 Helvetica Italic 和 Helvetica Bold 具有相同的系列名称 Helvetica,但它们的字体外观名称是 Helvetica Bold 和 Helvetica Italic。可用的系列名称列表可以通过使用 GraphicsEnvironment.getAvailableFontFamilyNames() 方法得到。
使用
getFontName
可以获取字体的字体外观名称。 -
-
-
参数:
-
l
- 语言环境,要获得该语言环境的系列名称
返回:
-
一个
String
,表示字体的系列名称(已经针对指定语言环境进行了本地化)。
从以下版本开始:
- 1.2 另请参见:
- getFontName(), Locale
-
getPSName
public String getPSName()
-
返回此
Font
的 postscript 名称。使用getFamily
可以获取字体的系列名称。使用getFontName
可以获取字体的字体外观名称。 -
-
-
返回:
-
一个
String
,表示此Font
的 postscript 名称。
从以下版本开始:
- 1.2
-
一个
getName
public String getName()
-
返回此
Font
的逻辑名称。使用getFamily
可以获取字体的系列名称。使用getFontName
可以获取字体的字体外观名称。 -
-
-
返回:
-
一个
String
,表示此Font
的逻辑名称。
从以下版本开始:
- JDK1.0 另请参见:
- getFamily(), getFontName()
-
一个
getFontName
public String getFontName()
-
返回此
Font
的字体外观名称。例如,Helvetica Bold 可以作为字体外观名称返回。使用getFamily
可以获取字体的系列名称。使用getName
可以获取字体的逻辑名称。 -
-
-
返回:
-
一个
String
,表示此Font
的字体外观名称。
从以下版本开始:
- 1.2 另请参见:
- getFamily(), getName()
-
一个
getFontName
public String getFontName(Locale l)
-
返回此
Font
的字体外观名称(已经针对指定语言环境进行了本地化)。例如,Helvetica Fett 可以作为字体外观名称返回。使用getFamily
可以获取字体的系列名称。 -
-
-
参数:
-
l
- 语言环境,要获得该语言环境的字体外观名称
返回:
-
一个
String
,表示字体外观名称(已经针对指定语言环境进行了本地化)。
另请参见:
- getFamily(), Locale
-
getStyle
public int getStyle()
-
返回此
Font
的样式。样式可以为 PLAIN、BOLD、ITALIC 或 BOLD+ITALIC。 -
-
-
返回:
-
此
Font
的样式
从以下版本开始:
- JDK1.0 另请参见:
- isPlain(), isBold(), isItalic()
-
此
getSize
public int getSize()
-
返回此
Font
的磅值大小,舍入为整数。大多数用户都熟悉使用 磅值大小 的概念,它用于指定字体中字形的大小。磅值大小定义了单间距文本文档中某行的基线到下一行的基线之间的测量。磅值大小是基于 排字磅值 的,大约为 1/72 英寸。Java(tm)2D API 规定:1 磅等于用户坐标中的 1 个单位。当使用规范化变换将用户空间坐标转换为设备空间坐标时,72 个用户空间单位等于设备空间中的 1 英寸。在这种情况下,1 磅就是 1/72 英寸。
-
-
-
返回:
-
Font
的磅值大小(以 1/72 英寸为单位)。
从以下版本开始:
- JDK1.0 另请参见:
- getSize2D(), GraphicsConfiguration.getDefaultTransform(), GraphicsConfiguration.getNormalizingTransform()
-
getSize2D
public float getSize2D()
-
返回此
Font
的磅值大小(以float
值表示)。 -
-
-
返回:
-
Font
的磅值大小(以float
值表示)。
从以下版本开始:
- 1.2 另请参见:
- getSize()
-
isPlain
public boolean isPlain()
-
指示此
Font
对象的样式是否为 PLAIN。 -
-
-
返回:
-
如果此
Font
样式为 PLAIN,则返回true
;否则返回false
。
从以下版本开始:
- JDK1.0 另请参见:
- getStyle()
-
如果此
isBold
public boolean isBold()
-
指示此
Font
对象的样式是否为 BOLD。 -
-
-
返回:
-
如果此
Font
对象的样式为 BOLD,则返回true
;否则返回false
。
从以下版本开始:
- JDK1.0 另请参见:
- getStyle()
-
如果此
isItalic
public boolean isItalic()
-
指示此
Font
对象的样式是否为 ITALIC。 -
-
-
返回:
-
如果此
Font
对象的样式为 ITALIC,则返回true
;否则返回false
。
从以下版本开始:
- JDK1.0 另请参见:
- getStyle()
-
如果此
isTransformed
public boolean isTransformed()
-
指示此
Font
对象是否具有影响其大小以及 Size 属性的变换。 -
-
-
返回:
-
如果此
Font
对象具有无标识的 AffineTransform 属性,则返回true
;否则返回false
。
从以下版本开始:
- 1.4 另请参见:
- getTransform()
-
如果此
hasLayoutAttributes
public boolean hasLayoutAttributes()
- 如果此 Font 包含需要额外布局处理的属性,则返回 true。
-
-
-
返回:
- 如果该字体已经具有布局属性,则返回 true 从以下版本开始:
- 1.6
getFont
public static Font getFont(String nm)
-
从系统属性列表返回一个
Font
对象。nm
被视为要获得的系统属性的名称。然后,根据Font.decode(String)
规范,将此属性的String
值解释为一个Font
对象。如果无法找到指定属性,或者执行代码没有读取该属性的权限,则返回 null。 -
-
-
参数:
-
nm
- 属性名称
返回:
-
属性名称描述的
Font
对象,如果没有这样的属性存在,则返回 null。
抛出:
-
NullPointerException
- 如果 nm 为 null。
从以下版本开始:
- 1.2 另请参见:
- decode(String)
-
decode
public static Font decode(String str)
-
返回
str
参数所描述的Font
。为了确保此方法返回所需的 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);
,值被解释为构造方法所指定的形式。有效的尾部十进制字段总是被解释为 pointsize。因此,后跟十进制值的 fontname 不应该在只在 fontname 的格式中使用。
如果样式名称字段不是有效的样式字符串,则它被解释为样式名称的一部分,并且使用默认样式。
只有 ' ' 或 '-' 可以用来分隔输入中的字段。所标识的分隔符是最接近字符串末尾的字符,它将有效的 pointsize 或有效的样式名称与字符串的其余部分分隔开来。Null(空)pointsize 和样式字段被视为有效字段,具有该字段的默认值。
有些字体名称可以包括分隔符 ' ' 或 '-'。如果
str
不是由三部分构成,例如,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
。
从以下版本开始:
- JDK1.1 另请参见:
- getFamily()
-
getFont
public static Font getFont(String nm, Font font)
-
从系统属性列表获取指定的
Font
。在System
的getProperty
方法中,第一个参数被视为要获取的系统属性的名称。接着将此属性的String
值解释为Font
对象。属性值应该是
Font.decode(String)
所接受的形式之一。如果无法找到指定属性,或者执行代码没有读取该属性的权限,则返回font
参数。 -
-
-
参数:
-
nm
- 不区分大小写的属性名称 -
font
- 如果没有定义属性nm
,则为要返回的默认Font
返回:
-
属性的
Font
值。
抛出:
-
NullPointerException
- 如果 nm 为 null。
另请参见:
- decode(String)
-
hashCode
public int hashCode()
-
返回此
Font
的哈希码。 -
-
覆盖:
-
类
Object
中的hashCode
-
类
-
-
返回:
-
此
Font
的哈希码值。
从以下版本开始:
- JDK1.0 另请参见:
- Object.equals(java.lang.Object), Hashtable
-
此
equals
public boolean equals(Object obj)
-
将此
Font
对象与指定Object
进行比较。 -
-
覆盖:
-
类
Object
中的equals
-
类
-
-
参数:
-
obj
- 要比较的Object
返回:
-
如果对象相同,或参数是
Font
对象,且描述的字体与此对象相同,则返回true
;否则,返回false
。
从以下版本开始:
- JDK1.0 另请参见:
- Object.hashCode(), Hashtable
-
toString
public String toString()
-
将此
Font
对象转换为String
表示形式。 -
-
覆盖:
-
类
Object
中的toString
-
类
-
-
返回:
-
此
Font
对象的String
表示形式。
从以下版本开始:
- JDK1.0
-
此
getNumGlyphs
public int getNumGlyphs()
-
返回此
Font
中的字形数量。此Font
的字形代码,范围从 0 到getNumGlyphs()
- 1。 -
-
-
返回:
-
此
Font
的字形数量。
从以下版本开始:
- 1.2
-
此
getMissingGlyphCode
public int getMissingGlyphCode()
-
返回此
Font
不具有指定的 unicode 字形时所使用的 glyphCode 代码点。 -
-
-
返回:
-
此
Font
的 glyphCode。
从以下版本开始:
- 1.2
-
此
getBaselineFor
public byte getBaselineFor(char c)
-
返回适合用来显示此字符的基线。
大字体可以支持不同的书写系统,并且每个系统都可以使用不同的基线。字符参数确定要使用的书写系统。客户不应该假定所有字符都使用相同的基线。
-
-
-
参数:
-
c
- 用来标识书写系统的字符
返回:
- 适合于指定字符的基线。 从以下版本开始:
- 1.2 另请参见:
- LineMetrics.getBaselineOffsets(), ROMAN_BASELINE, CENTER_BASELINE, HANGING_BASELINE
-
getAttributes
public Map<TextAttribute,?> getAttributes()
-
返回此
Font
中可用的字体属性的映射。属性包括诸如连字和字形替换之类的事情。 -
-
-
返回:
-
此
Font
的属性映射。
-
此
getAvailableAttributes
public AttributedCharacterIterator.Attribute[] getAvailableAttributes()
-
返回由此
Font
支持的所有属性的键。这些属性可以用来派生其他字体。 -
-
-
返回:
-
一个数组,包含受此
Font
支持的所有属性的键。
从以下版本开始:
- 1.2
-
一个数组,包含受此
deriveFont
public Font deriveFont(int style, float size)
-
通过复制此
Font
对象并应用新样式和大小,创建一个新Font
对象。 -
-
-
参数:
-
style
- 新Font
的样式 -
size
- 新Font
的大小
返回:
-
新
Font
对象。
从以下版本开始:
- 1.2
-
deriveFont
public Font deriveFont(int style, AffineTransform trans)
-
通过复制此
Font
对象并应用新样式和变换,创建一个新Font
对象。 -
-
-
参数:
-
style
- 新Font
的样式 -
trans
- 与新Font
相关的AffineTransform
返回:
-
一个新
Font
对象。
抛出:
-
IllegalArgumentException
- 如果trans
为null
从以下版本开始:
- 1.2
-
deriveFont
public Font deriveFont(float size)
-
通过复制当前
Font
对象并应用新的大小,创建一个新Font
对象。 -
-
-
参数:
-
size
- 新Font
的大小。
返回:
-
新
Font
对象。
从以下版本开始:
- 1.2
-
deriveFont
public Font deriveFont(AffineTransform trans)
-
通过复制当前
Font
对象并应用新的变换,创建一个新Font
对象。 -
-
-
参数:
-
trans
- 与新Font
相关的AffineTransform
返回:
-
一个新的
Font
对象。
抛出:
-
IllegalArgumentException
- 如果trans
为null
从以下版本开始:
- 1.2
-
deriveFont
public Font deriveFont(int style)
-
通过复制当前的
Font
对象,并应用新的样式,创建一个新Font
对象。 -
-
-
参数:
-
style
- 新Font
的样式
返回:
-
新
Font
对象。
从以下版本开始:
- 1.2
-
deriveFont
public Font deriveFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
-
通过复制当前
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 另请参见:
- Character.isValidCodePoint(int)
-
canDisplayUpTo
public int canDisplayUpTo(String str)
-
指示此
Font
是否可以显示指定的String
。对于使用 Unicode 编码的字符串,知道特定字体是否可以显示该字符串是很重要的。此方法返回String
str
中的一个偏移量,这是此Font
不使用缺少的字形代码就无法显示的第一个字符。如果Font
可以显示所有字符,则返回 -1。 -
-
-
参数:
-
str
- 一个String
对象
返回:
-
str
中的一个偏移量,指向str
中此Font
无法显示的第一个字符;如果此Font
可以显示str
中的所有字符,则返回-1
。
从以下版本开始:
- 1.2
-
canDisplayUpTo
public int canDisplayUpTo(char[] text, int start, int limit)
-
指示此
Font
是否可以显示指定text
中从start
开始至limit
结束的所有字符。此方法是一次方便的重载。 -
-
-
参数:
-
text
- 指定char
值的数组 -
start
- 指定char
值数组中的指定起始偏移量 (inchar
) -
limit
- 指定char
值数组中的指定结束偏移量 (inchar
)
返回:
-
text
中的偏移量,指向此Font
无法显示的text
中的第一个字符;如果此Font
可以显示text
中的所有字符,则返回-1
。
从以下版本开始:
- 1.2
-
canDisplayUpTo
public int canDisplayUpTo(CharacterIterator iter, int start, int limit)
-
指示此
Font
是否可以显示由iter
指定的文本(从start
开始至limit
结束)。 -
-
-
参数:
-
iter
- CharacterIterator 对象 -
start
- 指定CharacterIterator
中的指定起始偏移量。 -
limit
- 指定CharacterIterator
中的指定结束偏移量。
返回:
-
iter
中的偏移量,它指向iter
中此Font
无法显示的第一个字符;如果此Font
可以显示iter
中的所有字符,则返回-1
。
从以下版本开始:
- 1.2
-
getItalicAngle
public float getItalicAngle()
-
返回此
Font
的斜角。斜角是与此Font
的动作最匹配的 caret 的反斜面。 -
-
-
返回:
-
此
Font
的 ITALIC 样式的角度
另请参见:
- TextAttribute.POSTURE
-
此
hasUniformLineMetrics
public boolean hasUniformLineMetrics()
-
检查此
Font
是否具有统一的行规格。逻辑Font
可以是复合字体,这意味着它由不同的物理字体组成,可以覆盖不同的代码范围。其中每一种字体都可能有不同的LineMetrics
。如果逻辑Font
是单一字体,则规格将是统一的。 -
-
-
返回:
-
如果此
Font
具有统一的行规格,则返回true
;否则返回false
。
-
如果此
getLineMetrics
public LineMetrics getLineMetrics(String str, FontRenderContext frc)
-
返回一个使用指定
String
和 FontRenderContext 创建的 LineMetrics 对象。 -
-
-
参数:
-
str
- 指定的String
-
frc
- 指定的FontRenderContext
返回:
-
使用指定
String
和 FontRenderContext 创建的LineMetrics
对象。
-
getLineMetrics
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc)
-
返回使用指定参数创建的
LineMetrics
对象。 -
-
-
参数:
-
str
- 指定的String
-
beginIndex
-str
的初始偏移量 -
limit
-str
的结束偏移量 -
frc
- 指定的FontRenderContext
返回:
-
使用指定参数创建的
LineMetrics
对象。
-
getLineMetrics
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, FontRenderContext frc)
-
返回使用指定参数创建的
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
public Rectangle2D getStringBounds(String str, FontRenderContext frc)
-
返回指定
FontRenderContext
中指定String
的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用TextLayout
的 getBounds 方法。注:返回的边界在相对于基线的坐标中(请参阅 class notes)。
-
-
-
参数:
-
str
- 指定的String
-
frc
- 指定的FontRenderContext
返回:
-
一个 Rectangle2D,它是指定
FontRenderContext
中指定String
的边界框。
从以下版本开始:
- 1.2 另请参见:
- FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
-
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc)
-
返回指定
FontRenderContext
中指定String
的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用TextLayout
的 getBounds 方法。注:返回的边界在相对于基线的坐标中(请参阅 class notes)。
-
-
-
参数:
-
str
- 指定的String
-
beginIndex
-str
的初始偏移量 -
limit
-str
的结束偏移量 -
frc
- 指定的FontRenderContext
返回:
-
一个
Rectangle2D
,它是指定FontRenderContext
中指定String
的边界框。
抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于零,或limit
大于str
的长度,或beginIndex
大于limit
。
从以下版本开始:
- 1.2 另请参见:
- FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
-
getStringBounds
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc)
-
返回指定
FontRenderContext
指定字符数组的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用TextLayout
的 getBounds 方法。注:返回的边界在相对于基线的坐标中(请参阅 class notes)。
-
-
-
参数:
-
chars
- 字符数组 -
beginIndex
- 字符数组的初始偏移量 -
limit
- 字符数组的结束偏移量 -
frc
- 指定的FontRenderContext
返回:
-
一个
Rectangle2D
,它是指定FontRenderContext
中指定字符数组的边界框。
抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于零,或limit
大于chars
的长度,或beginIndex
大于limit
。
从以下版本开始:
- 1.2 另请参见:
- FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
-
getStringBounds
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
-
返回指定
FontRenderContext
中针对指定 CharacterIterator 进行索引的字符的逻辑边界。逻辑边界包含 origin、ascent、advance 和 height,其中包括了 leading。逻辑边界并不总是包围所有文本。例如,在某些语言和字体中,accent 标记可以位于 ascent 之上,或 descent 之下。要得到可视的边界框(它包围了所有文本),可以使用TextLayout
的 getBounds 方法。注:返回的边界在相对于基线的坐标中(请参阅 class notes)。
-
-
-
参数:
-
ci
- 指定的CharacterIterator
-
beginIndex
-ci
中的初始偏移量 -
limit
-ci
中的结束偏移量 -
frc
- 指定的FontRenderContext
返回:
-
一个
Rectangle2D
,它是指定FontRenderContext
中针对指定CharacterIterator
进行索引的字符的边界框。
抛出:
-
IndexOutOfBoundsException
- 如果beginIndex
小于ci
的起始索引,或limit
大于ci
的结束索引,或beginIndex
大于limit
从以下版本开始:
- 1.2 另请参见:
- FontRenderContext, createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
-
getMaxCharBounds
public Rectangle2D getMaxCharBounds(FontRenderContext frc)
-
返回最大边界定义在
FontRenderContext
中的字符的边界。注:返回的边界在相对于基线的坐标中(请参阅 class notes)。
-
-
-
参数:
-
frc
- 指定的FontRenderContext
返回:
-
一个
Rectangle2D
,它是具有最大边界的字符的边界框。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, String str)
-
根据此
Font
中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。 -
-
-
参数:
-
frc
- 指定的FontRenderContext
-
str
- 指定的String
返回:
-
使用指定
String
和指定FontRenderContext
创建的新GlyphVector
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, char[] chars)
-
根据此
Font
中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。 -
-
-
参数:
-
frc
- 指定的FontRenderContext
-
chars
- 指定的字符数组
返回:
-
使用指定字符数组和指定
FontRenderContext
创建的GlyphVector
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, CharacterIterator ci)
-
根据此
Font
中的 Unicode cmap 将指定字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。 -
-
-
参数:
-
frc
- 指定的FontRenderContext
-
ci
- 指定的CharacterIterator
返回:
-
使用指定
CharacterIterator
和指定FontRenderContext
创建的GlyphVector
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, int[] glyphCodes)
-
根据此
Font
中的 Unicode cmap 将字符一一映射到字形,从而创建一个 GlyphVector。除了字形到字符的映射之外,此方法不做任何其他处理。这意味着,此方法对于某些脚本是无用的,如 Arabic、Hebrew、Thai 和 Indic,它们要求进行重排序、整形或连字替换。 -
-
-
参数:
-
frc
- 指定的FontRenderContext
-
glyphCodes
- 指定的整数数组
返回:
-
使用指定整数数组和指定
FontRenderContext
创建的GlyphVector
。
-
layoutGlyphVector
public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags)
-
返回一个新
GlyphVector
对象,执行完整的文本布局(如有可能)。复杂文本要求有完整布局,如 Arabic 或 Hindi。对不同脚本的支持取决于字体和实现。Layout requires bidi analysis, as performed by
Bidi
只应该在具有统一方向的文本上执行。用 flags 参数来指示方向,通过使用 LAYOUT_RIGHT_TO_LEFT 来指示从右到左(Arabic 和 Hebrew)的运行方向,或通过使用 LAYOUT_LEFT_TO_RIGHT 来指示从左到右 (English) 的运行方向。此外,有些操作(比如 Arabic 整形)需要上下文,这样在开始和结束处的字符才会有合适的形状。有时,在所提供范围之外的缓冲区中的数据并不是有效数据。可以将值 LAYOUT_NO_START_CONTEXT 和 LAYOUT_NO_LIMIT_CONTEXT 添加到 flags 参数中,分别指示在 start 之前或 limit 之后的文本不应该作为上下文进行检查。
flags 参数的所有其他值均被保留。
-
-
-
参数:
-
frc
- 指定的FontRenderContext
-
text
- 要布局的文本 -
start
-GlyphVector
所要使用的文本的起始处 -
limit
-GlyphVector
所要使用的文本的结束处 -
flags
- 如上所述的控制标志
返回:
-
一个新
GlyphVector
,表示 start 和 limit 之间的文本,具有经过选择和定位的字形,以便以最佳方式表示文本
抛出:
-
ArrayIndexOutOfBoundsException
- 如果 start 或 limit 超出了边界
从以下版本开始:
- 1.4 另请参见:
- Bidi, LAYOUT_LEFT_TO_RIGHT, LAYOUT_RIGHT_TO_LEFT, LAYOUT_NO_START_CONTEXT, LAYOUT_NO_LIMIT_CONTEXT
-
finalize
protected void finalize() throws Throwable
-
移除本机
Font
对象。 -
-
覆盖:
-
类
Object
中的finalize
-
类
-
-
抛出:
-
Throwable
- 此方法抛出的Exception
-