- java.lang.Object
-
- java.awt.Font
-
- 实现的所有接口
-
Serializable
- 已知直接子类:
-
FontUIResource
public class Fontextends Objectimplements Serializable
Font
类表示字体,用于以可见方式呈现文本。 字体提供将字符序列映射到字形序列以及在Graphics
和Component
对象上呈现字形序列所需的信息。字符和字形
字符是以抽象方式表示诸如字母,数字或标点符号之类的项的符号。 例如,'g'
,LATIN SMALL LETTER G,是一个角色。字形是用于渲染字符或字符序列的形状。 在简单的书写系统中,例如拉丁语,通常一个字形代表一个字符。 但是,一般而言,字符和字形不具有一对一的对应关系。 例如,角色'¡¡拉丁小写字母A有急性,可用两个字形表示:一个用于'a',一个用于'''。 另一方面,双字符串“fi”可以用单个字形表示,即“fi”连字。 在复杂的书写系统中,例如阿拉伯语或南亚和东南亚书写系统,字符和字形之间的关系可能更复杂,并且涉及字形依赖的字形选择以及字形重新排序。 字体封装了渲染选定字符集所需的字形集合,以及将字符序列映射到相应字形序列所需的表格。
物理和逻辑字体
Java平台区分两种字体: 物理字体和逻辑字体。物理字体是包含字形数据和表格的实际字体库,使用字体技术(如TrueType或PostScript Type 1)从字符序列映射到字形序列。所有Java平台实现都必须支持TrueType字体。 对其他字体技术的支持取决于实现。 物理字体可以使用诸如Helvetica,Palatino,HonMincho或任何数量的其他字体名称之类的名称。 通常,每种物理字体仅支持一组有限的书写系统,例如,仅拉丁字符或仅支持日语和基本拉丁语。 可用物理字体集在配置之间有所不同。 需要特定字体的应用程序可以捆绑它们并使用
createFont
方法对它们进行实例化。逻辑字体是Java平台定义的五个字体系列,任何Java运行时环境都必须支持这些字体系列:Serif,SansSerif,Monospaced,Dialog和DialogInput。 这些逻辑字体不是实际的字体库。 而是由Java运行时环境将逻辑字体名称映射到物理字体。 映射是实现,通常依赖于语言环境,因此它们提供的外观和指标会有所不同。 通常,每个逻辑字体名称映射到多个物理字体以覆盖大范围的字符。
对等AWT组件(例如
Label
和TextField
)只能使用逻辑字体。为相对的优点和使用物理或逻辑字体的缺点的讨论,请参阅Physical and Logical Fonts在The Java Tutorials文档。
字体面和名称
Font
可以有很多面孔,例如重,中,斜,哥特和常规。 所有这些面孔都有类似的排版设计。您可以从
Font
对象获得三个不同的名称。 逻辑字体名称只是用于构造字体的名称。 字体名称或简称字体名称是特定字体的名称,如Helvetica Bold。 系列名称是字体系列的名称,用于确定多个面的排版设计,例如Helvetica。Font
类表示来自主机系统的系统资源中存在的字体面集合的字体面的实例。 例如,Arial Bold和Courier Bold Italic是字体。 可以有几个与字体相关联的Font
对象,每个对象的大小,样式,变换和字体特征都不同。由于平台限制(例如缺少用于实现逻辑字体的合适平台字体),字形可能不总是使用所请求的属性(例如,字体和样式)来呈现。
GraphicsEnvironment
类的getAllFonts
方法返回系统中可用的所有字体面的数组。 这些字体面将返回为Font
对象,大小为1,标识转换和默认字体功能。 这些基本字体可以被用来导出新Font
经由变化的大小,样式,变换和字体特征的对象deriveFont
在此类的方法。Font和TextAttribute
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
客户端可以使它们可序列化并避免此问题。 使用输入法高亮显示的客户端可以将这些属性转换为当前平台上该突出显示的特定于平台的属性,并将其设置为Font作为变通方法。基于
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被称为具有“基线相对坐标”。
- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 static int
BOLD
大胆的风格不变。static int
CENTER_BASELINE
布局文本时,在表意文字脚本中使用的基线,如中文,日文和韩文。static String
DIALOG
逻辑字体“Dialog”的规范系列名称的String常量。static String
DIALOG_INPUT
逻辑字体“DialogInput”的规范系列名称的String常量。static int
HANGING_BASELINE
在布置文本时,梵文和类似脚本中使用的基线。static int
ITALIC
斜体样式常量。static int
LAYOUT_LEFT_TO_RIGHT
layoutGlyphVector的标志,指示由Bidi分析确定的文本是从左到右。static int
LAYOUT_NO_LIMIT_CONTEXT
layoutGlyphVector的标志,指示不应检查指定限制之后的char数组中的文本。static int
LAYOUT_NO_START_CONTEXT
layoutGlyphVector的标志,指示不应检查指示的开始之前的char数组中的文本。static int
LAYOUT_RIGHT_TO_LEFT
layoutGlyphVector的标志,指示Bidi分析确定的文本是从右到左。static String
MONOSPACED
逻辑字体“Monospaced”的规范系列名称的String常量。protected String
name
传递给构造函数的此Font
的逻辑名称。static int
PLAIN
朴素的风格常数。protected float
pointSize
Font
的点大小在float
。static int
ROMAN_BASELINE
布局文本时大多数罗马脚本中使用的基线。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类型的字体资源。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
canDisplay(char c)
检查此Font
是否具有指定字符的字形。boolean
canDisplay(int codePoint)
检查此Font
是否具有指定字符的字形。int
canDisplayUpTo(char[] text, int start, int limit)
指示此是否Font
可以显示在指定的字符text
开始start
,并在结束limit
。int
canDisplayUpTo(String str)
指示此Font
是否可以显示指定的String
。int
canDisplayUpTo(CharacterIterator iter, int start, int limit)
指示此是否Font
可以显示由指定的文本iter
开始start
在结束limit
。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
。GlyphVector
createGlyphVector(FontRenderContext frc, char[] chars)
通过在此Font
基于Unicode cmap将字符一对一地映射到字形来创建Font
。GlyphVector
createGlyphVector(FontRenderContext frc, int[] glyphCodes)
通过在此Font
基于Unicode cmap将字符一对一地映射到字形来创建Font
。GlyphVector
createGlyphVector(FontRenderContext frc, String str)
通过在此Font
基于Unicode cmap将字符一对一地映射到字形来创建Font
。GlyphVector
createGlyphVector(FontRenderContext frc, CharacterIterator ci)
static Font
decode(String str)
返回Font
,该str
参数描述。Font
deriveFont(float size)
通过复制当前的Font
对象并对其应用新大小来创建新的Font
对象。Font
deriveFont(int style)
通过复制当前的Font
对象并对其应用新样式来创建新的Font
对象。Font
deriveFont(int style, float size)
通过复制此Font
对象并应用新的样式和大小来创建新的Font
对象。Font
deriveFont(int style, AffineTransform trans)
通过复制此Font
对象并应用新样式和变换来创建新的Font
对象。Font
deriveFont(AffineTransform trans)
通过复制当前的Font
对象并对其应用新变换来创建新的Font
对象。Font
deriveFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
通过复制当前的Font
对象并对其应用一组新的字体属性来创建新的Font
对象。boolean
equals(Object obj)
将此Font
对象与指定的Object
。Map<TextAttribute,?>
getAttributes()
返回此Font
可用的字体属性的映射。AttributedCharacterIterator.Attribute[]
getAvailableAttributes()
返回此Font
支持的所有属性的键。byte
getBaselineFor(char c)
返回适合显示此字符的基线。String
getFamily()
返回此Font
的系列名称。String
getFamily(Locale l)
返回此Font
的系列名称,已针对指定的语言环境进行了本地化。static Font
getFont(String nm)
从系统属性列表中返回Font
对象。static Font
getFont(String nm, Font font)
从系统属性列表中获取指定的Font
。static Font
getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
返回适合于属性的Font
。String
getFontName()
返回此Font
的字体名称。String
getFontName(Locale l)
返回Font
的字体Font
名称,已针对指定的区域设置进行了本地化。float
getItalicAngle()
返回此Font
的斜体角度。LineMetrics
getLineMetrics(char[] chars, int beginIndex, int limit, FontRenderContext frc)
返回使用指定参数创建的LineMetrics
对象。LineMetrics
getLineMetrics(String str, int beginIndex, int limit, FontRenderContext frc)
返回使用指定参数创建的LineMetrics
对象。LineMetrics
getLineMetrics(String str, FontRenderContext frc)
返回使用指定的String
和FontRenderContext
创建的LineMetrics
对象。LineMetrics
getLineMetrics(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
返回使用指定参数创建的LineMetrics
对象。Rectangle2D
getMaxCharBounds(FontRenderContext frc)
返回具有指定的FontRenderContext
定义的最大边界的字符的边界。int
getMissingGlyphCode()
返回当此Font
没有指定unicode代码点的字形时使用的Font
。String
getName()
返回此Font
的逻辑名称。int
getNumGlyphs()
返回此Font
的字形数。String
getPSName()
返回此Font
的postscript名称。int
getSize()
返回此Font
,舍入为整数。float
getSize2D()
以float
值返回此Font
的float
值。Rectangle2D
getStringBounds(char[] chars, int beginIndex, int limit, FontRenderContext frc)
返回指定的FontRenderContext
中指定字符数组的逻辑边界。Rectangle2D
getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc)
返回指定的String
中指定的FontRenderContext
的逻辑边界。Rectangle2D
getStringBounds(String str, FontRenderContext frc)
返回指定的String
中指定的FontRenderContext
的逻辑边界。Rectangle2D
getStringBounds(CharacterIterator ci, int beginIndex, int limit, FontRenderContext frc)
返回指定索引的字符的逻辑边界CharacterIterator
指定FontRenderContext
。int
getStyle()
返回此Font
的样式。AffineTransform
getTransform()
返回与此Font
关联的转换的副本。int
hashCode()
返回此Font
的哈希Font
。boolean
hasLayoutAttributes()
如果此Font包含需要额外布局处理的属性,则返回true。boolean
hasUniformLineMetrics()
检查此Font
是否具有统一的行指标。boolean
isBold()
指示此Font
对象的样式是否为BOLD。boolean
isItalic()
指示此Font
对象的样式是否为ITALIC。boolean
isPlain()
指示此Font
对象的样式是否为PLAIN。boolean
isTransformed()
指示除了Size属性之外,此Font
对象是否具有影响其大小的转换。GlyphVector
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)
和其他文本呈现方法时正确呈现。String
toString()
将此Font
对象转换为String
表示形式。
-
-
-
字段详细信息
-
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
布局文本时大多数罗马脚本中使用的基线。- 另请参见:
- 常数字段值
-
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
- 另请参见:
- 常数字段值
-
style
protected int style
这个Font
的样式,传递给构造函数。 此款式可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。- 从以下版本开始:
- 1.0
- 另请参见:
-
getStyle()
-
size
protected int size
此点的大小为Font
,四舍五入为整数。- 从以下版本开始:
- 1.0
- 另请参见:
-
getSize()
-
pointSize
protected float pointSize
Font
的点大小在float
。- 另请参见:
-
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的标志,指示不应检查指示的开始之前的char数组中的文本。- 另请参见:
- 常数字段值
-
LAYOUT_NO_LIMIT_CONTEXT
public static final int LAYOUT_NO_LIMIT_CONTEXT
layoutGlyphVector的标志,指示不应检查指定限制之后的char数组中的文本。- 另请参见:
- 常数字段值
-
-
构造方法详细信息
-
Font
public Font(String name, int style, int size)
从指定的名称,样式和Font
创建新的Font
。字体名称可以是字体名称或字体系列名称。 它与样式一起使用以查找适当的字体。 指定字体系列名称时,样式参数用于从族中选择最合适的面。 指定字体外观名称时,将合并面部样式和样式参数,以找到同一族中最佳匹配字体。 例如,如果使用样式
Font.ITALIC
指定了面部名称“Arial Bold”,则字体系统会在“Arial”系列中查找粗体和斜体的面,并且可以将字体实例与物理字体“Arial Bold Italic”相关联。 。 style参数与指定的face的样式合并,而不是添加或减去。 这意味着,指定粗体和粗体样式不会使字体双重加粗,并且指定粗体和普通样式不会使字体变亮。如果找不到所请求样式的面,则字体系统可以应用算法样式以实现期望的样式。 例如,如果请求了
ITALIC
,但没有可用的斜体面,则可以通过算法方式对倾斜面上的字形进行倾斜(倾斜)。字体名称查找不区分大小写,使用美国语言环境的大小写折叠规则。
如果
name
参数表示逻辑字体以外的其他内容,即被解释为物理字体或族,并且实现无法将其映射到物理字体或兼容替代,则字体系统会将Font实例映射到“对话”,例如,getFamily
报告的家庭将是“对话”。- 参数
-
name
- 字体名称。 这可以是字体名称或字体系列名称,可以表示此GraphicsEnvironment
的逻辑字体或物理字体。 逻辑字体的系列名称为:Dialog,DialogInput,Monospaced,Serif或SansSerif。 所有这些名称都存在预定义的字符串常量,例如,DIALOG
。 如果name
为null
,新的逻辑字体名称Font
由返回getName()
设置为名称为“默认”。 -
style
-为对风格恒定Font
风格参数是一个整数位掩码可以是PLAIN
,或按位联盟BOLD
和/或ITALIC
(例如ITALIC
或BOLD|ITALIC
)。 如果style参数不符合预期的整数位掩码之一,则样式设置为PLAIN
。 -
size
-Font
- 从以下版本开始:
- 1.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
为空 - 从以下版本开始:
- 1.6
-
-
方法详细信息
-
textRequiresLayout
public static boolean textRequiresLayout(char[] chars, int start, int end)
如果指定文本的任何部分来自复杂脚本,则返回true,实现将需要调用布局处理以便在使用drawString(String,int,int)
和其他文本呈现方法时正确呈现。 文本的测量可能同样需要相同的额外处理。 提供了start
和end
索引,以便应用程序可以仅请求考虑的文本的子集。 检查的最后一个char索引是"end-1"
,即检查整个数组的请求将是Font.textRequiresLayout(chars, 0, chars.length);
请注意,即使此方法返回
false
,当与hasLayoutAttributes()
返回true
任何Font
一起使用时,仍可以调用布局处理,因此需要查询特定字体的方法,以获得考虑此类字体的答案属性。- 参数
-
chars
- 文字。 -
start
- 要检查的第一个char的索引。 -
end
- 结束索引,独占。 - 结果
-
true
如果指定的文本需要特殊布局。 - 异常
-
NullPointerException
- 如果chars
为空。 -
ArrayIndexOutOfBoundsException
- 如果start
为负数或end
大于chars
数组的长度。 - 从以下版本开始:
- 9
-
getFont
public static Font getFont(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
- 参数
-
attributes
- 要分配给新Font
的属性 - 结果
- 使用指定的属性创建的新
Font
- 异常
-
NullPointerException
- 如果attributes
为空。 - 从以下版本开始:
- 1.2
- 另请参见:
-
TextAttribute
-
createFonts
public static Font[] createFonts(InputStream fontStream) throws FontFormatException, IOException
返回从指定流解码的新数组Font
。 返回的Font[]
将至少包含一个元素。createFont(int, InputStream)
方法的此变体的明确目的是支持表示TrueType / OpenType字体集合的字体源,并能够返回该集合中的所有单个字体。 因此,如果数据源不包含至少一个TrueType / OpenType字体,则此方法将抛出FontFormatException
。 如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。条件“至少一个”允许流表示单个OpenType / TrueType字体。 也就是说,它不一定是一个集合。 返回数组的每个
Font
元素的点大小为1,样式为PLAIN
。 然后,可以将此基本字体与deriveFont
中的deriveFont
方法一起使用,以派生具有不同大小,样式,变换和字体功能的新对象Font
。此方法不会关闭
InputStream
。要使每个
Font
可用于Font构造函数,必须通过调用registerFont(Font)
在GraphicsEnvironment
注册。- 参数
-
fontStream
- 表示字体或字体集合的输入数据的InputStream
对象。 - 结果
- 一个新的
Font[]
。 - 异常
-
FontFormatException
- 如果fontStream
数据不包含集合的任何元素所需的字体表,或者它根本不包含任何字体。 -
IOException
- 如果fontStream
无法完全读取。 - 从以下版本开始:
- 9
- 另请参见:
-
GraphicsEnvironment.registerFont(Font)
-
createFonts
public static Font[] createFonts(File fontFile) throws FontFormatException, IOException
返回从指定文件解码的新数组Font
。 返回的Font[]
将至少包含一个元素。createFont(int, File)
方法的此变体的明确目的是支持表示TrueType / OpenType字体集合的字体源,并能够返回该集合中的所有单个字体。 因此,如果数据源不包含至少一个TrueType / OpenType字体,则此方法将抛出FontFormatException
。 如果集合中的任何字体不包含所需的字体表,也会抛出相同的异常。条件“至少一个”允许流表示单个OpenType / TrueType字体。 也就是说,它不一定是一个集合。 返回数组的每个
Font
元素的点大小为1,样式为PLAIN
。 然后,此基本字体可与deriveFont
中的deriveFont
方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font
对象。要使每个
Font
可用于Font构造函数,必须通过调用registerFont(Font)
在GraphicsEnvironment
注册。- 参数
-
fontFile
- 包含字体或字体集合的输入数据的File
对象。 - 结果
- 一个新的
Font[]
。 - 异常
-
FontFormatException
- 如果File
不包含集合的任何元素所需的字体表,或者它根本不包含任何字体。 -
IOException
- 如果fontFile
无法读取。 - 从以下版本开始:
- 9
- 另请参见:
-
GraphicsEnvironment.registerFont(Font)
-
createFont
public static Font createFont(int fontFormat, InputStream fontStream) throws FontFormatException, IOException
使用指定的字体类型和输入数据返回新的Font
。 创建新的Font
其Font
值为1,样式为PLAIN
。 然后,此基本字体可与deriveFont
中的deriveFont
方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font
对象。 此方法不会关闭InputStream
。为了使
Font
提供给字体构造函数返回Font
必须在登记GraphicsEnvironment
拨打registerFont(Font)
。- 参数
-
fontFormat
-该类型Font
,这是TRUETYPE_FONT
如果指定一个TrueType资源。 如果指定了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
其Font
值为1,样式为PLAIN
。 然后,此基本字体可与deriveFont
中的deriveFont
方法一起使用,以派生具有不同大小,样式,变换和字体功能的新Font
对象。- 参数
-
fontFormat
-该类型Font
,这是TRUETYPE_FONT
如果指定或者一个TrueType资源TYPE1_FONT
如果指定了类型1资源。 只要引用返回的字体或其派生字体,实现可以继续访问fontFile
以检索字体数据。 因此,如果文件被更改或变得不可访问,则结果是不确定的。为了使
Font
提供给字体构造函数返回Font
必须在登记GraphicsEnvironment
拨打registerFont(Font)
。 -
fontFile
- 表示字体输入数据的File
对象。 - 结果
- 使用指定的字体类型创建的新
Font
。 - 异常
-
IllegalArgumentException
- 如果fontFormat
不是TRUETYPE_FONT
或TYPE1_FONT
。 -
NullPointerException
- 如果fontFile
为空。 -
IOException
- 如果fontFile
无法读取。 -
FontFormatException
- 如果fontFile
不包含指定格式的必需字体表。 -
SecurityException
- 如果执行代码没有从文件中读取的权限。 - 从以下版本开始:
- 1.5
- 另请参见:
-
GraphicsEnvironment.registerFont(Font)
-
getTransform
public AffineTransform getTransform()
返回与此Font
关联的转换的副本。 此转换不一定是用于构造字体的转换。 如果字体具有算法上标或宽度调整,则将其合并到返回的AffineTransform
。通常,不会转换字体。 客户端通常应首先调用
isTransformed()
,并且只有在isTransformed
返回true时才调用此方法。- 结果
- 一个
AffineTransform
对象表示此的变换属性Font
对象。
-
getFamily
public String getFamily()
返回此Font
的系列名称。字体的系列名称是特定于字体的。 两种字体如Helvetica Italic和Helvetica Bold具有相同的姓氏Helvetica ,而其字体名称为Helvetica Bold和Helvetica Italic 。 可以使用
GraphicsEnvironment.getAvailableFontFamilyNames()
方法获得可用系列名称列表。使用
getName
获取字体的逻辑名称。 使用getFontName
获取字体的字体名称。- 结果
-
String
是这个Font
的系列名称。 - 从以下版本开始:
- 1.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
的逻辑名称。 - 从以下版本开始:
- 1.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
的字体Font
名称,已针对指定的区域设置进行了本地化。 例如,Helvetica Fett可以作为字体名称返回。 使用getFamily
获取字体的系列名称。- 参数
-
l
- 要获取字体名称的语言环境 - 结果
- 表示字体
String
名称的String
,已针对指定的区域设置进行了本地化。 - 另请参见:
-
getFamily()
,Locale
-
getStyle
public int getStyle()
返回此Font
的样式。 风格可以是PLAIN,BOLD,ITALIC或BOLD + ITALIC。- 结果
- 这款
Font
的风格 - 从以下版本开始:
- 1.0
- 另请参见:
-
isPlain()
,isBold()
,isItalic()
-
getSize
public int getSize()
返回此Font
,舍入为整数。 大多数用户都熟悉使用磅值来指定字体中字形的大小。 此点大小定义单个间隔文本文档中一行基线与后一行基线之间的度量。 点大小基于印刷点 ,大约1/72英寸。Java(tm)2D API采用以下约定:一个点相当于用户坐标中的一个单元。 当使用归一化变换将用户空间坐标转换为设备空间坐标时,72个用户空间单位在设备空间中等于1英寸。 在这种情况下,一个点是1/72英寸。
- 结果
- 这个
Font
是1/72英寸单位。 - 从以下版本开始:
- 1.0
- 另请参见:
-
getSize2D()
,GraphicsConfiguration.getDefaultTransform()
,GraphicsConfiguration.getNormalizingTransform()
-
getSize2D
public float getSize2D()
以float
值返回此Font
的float
值。- 结果
- 此
Font
的点大小为float
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getSize()
-
isPlain
public boolean isPlain()
指示此Font
对象的样式是否为PLAIN。- 结果
-
true
如果这Font
具有PLAIN风格; 否则为false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
getStyle()
-
isBold
public boolean isBold()
指示此Font
对象的样式是否为BOLD。- 结果
-
true
若Font
对象的风格大胆 否则为false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
getStyle()
-
isItalic
public boolean isItalic()
指示此Font
对象的样式是否为ITALIC。- 结果
-
true
若Font
对象的风格是ITALIC的话; 否则为false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
getStyle()
-
isTransformed
public boolean isTransformed()
指示除了Size属性之外,此Font
对象是否具有影响其大小的变换。- 结果
-
true
如果此Font
对象具有非标识AffineTransform属性。 否则为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)
返回Font
,该str
参数描述。 要确保此方法返回所需的Font,请使用以下方法之一格式化str
参数- 字体名-风格的pointsize
- 字体名-的pointsize
- 字体名风格
- 字体名
- fontname style pointsize
- fontname pointsize
- fontname样式
- 字体名
"PLAIN"
,"BOLD"
,"BOLDITALIC"
,或"ITALIC"
,和的pointsize是点大小的正十进制整数表示。 例如,如果您希望字体为Arial,粗体,点大小为18,则可以使用以下方法调用此方法:“Arial-BOLD-18”。 这相当于调用Font构造函数:new Font("Arial", Font.BOLD, 18);
,并且值被解释为该构造函数指定的值。有效的尾随十进制字段始终被解释为pointsize。 因此,不应在仅字体名表单中使用包含尾随小数值的fontname。
如果样式名称字段不是有效样式字符串之一,则将其解释为字体名称的一部分,并使用默认样式。
只有一个''或' - '可用于分隔输入中的字段。 标识的分隔符是最接近字符串末尾的分隔符,它将有效的pointsize或有效的样式名称与字符串的其余部分分开。 Null(空)pointsize和样式字段被视为有效字段,具有该字段的默认值。
某些字体名称可能包含分隔符“'或” - “。 如果
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
- 结果
- 该
Font
对象str
描述,或一个新的默认Font
如果str
为null
。 - 从以下版本开始:
- 1.1
- 另请参见:
-
getFamily()
-
getFont
public static Font getFont(String nm, Font font)
从系统属性列表中获取指定的Font
。 与getProperty
方法System
,第一个参数被视为要获取的系统属性的名称。 然后,此属性的String
值被解释为Font
对象。属性值应为
Font.decode(String)
接受的格式之一。如果未找到指定的属性,或者执行代码没有读取属性的权限,则返回font
参数。- 参数
-
nm
- 不区分大小写的属性名称 -
font
- 如果未定义属性nm
则返回默认值Font
- 结果
- 该
Font
价值Font
。 - 异常
-
NullPointerException
- 如果nm为null。 - 另请参见:
-
decode(String)
-
hashCode
public int hashCode()
返回此Font
的哈希Font
。- 重写:
-
hashCode
在类Object
- 结果
- 此
Font
的哈希码值。 - 从以下版本开始:
- 1.0
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
将此Font
对象与指定的Object
。- 重写:
-
equals
类Object
- 参数
-
obj
- 比较Object
- 结果
-
true
如果对象相同或参数是描述与此对象相同的字体的Font
对象; 否则为false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
Object.hashCode()
,HashMap
-
toString
public String toString()
将此Font
对象转换为String
表示形式。
-
getNumGlyphs
public int getNumGlyphs()
返回此Font
的字形数。Font
字形代码范围为0至getNumGlyphs()
- 1。- 结果
- 此
Font
的字形数。 - 从以下版本开始:
- 1.2
-
getMissingGlyphCode
public int getMissingGlyphCode()
返回当此Font
没有指定unicode代码点的字形时使用的Font
。- 结果
- 这个Font的
Font
。 - 从以下版本开始:
- 1.2
-
getBaselineFor
public byte getBaselineFor(char c)
返回适合显示此字符的基线。大字体可以支持不同的书写系统,每个系统可以使用不同的基线。 character参数决定了要使用的书写系统。 客户端不应假设所有字符都使用相同的基线。
- 参数
-
c
- 用于标识书写系统的字符 - 结果
- 适合指定字符的基线。
- 从以下版本开始:
- 1.2
- 另请参见:
-
LineMetrics.getBaselineOffsets()
,ROMAN_BASELINE
,CENTER_BASELINE
,HANGING_BASELINE
-
getAttributes
public Map<TextAttribute,?> getAttributes()
返回此Font
可用的字体属性的映射。 属性包括连字和字形替换之类的东西。- 结果
- 这个
Font
的属性map。
-
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
- 与新的AffineTransform
相关联的Font
- 结果
- 一个新的
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
- 与新的AffineTransform
相关联的Font
- 结果
- 一个新的
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
应用一组新的字体属性来创建新的Font
对象。- 参数
-
attributes
- 为新Font
启用的属性Font
- 结果
- 一个新的
Font
对象。 - 从以下版本开始:
- 1.2
-
canDisplay
public boolean canDisplay(char c)
检查此Font
是否具有指定字符的字形。注意:此方法无法处理supplementary characters 。 要支持所有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
- 另请参见:
-
Character.isValidCodePoint(int)
-
canDisplayUpTo
public int canDisplayUpTo(String str)
指示此Font
是否可以显示指定的String
。 对于具有Unicode编码的字符串,了解特定字体是否可以显示字符串非常重要。 此方法将偏移量返回到String
str
,这是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
- 指定的起始偏移量(在char
s内)到指定的char
数组值 -
limit
- 指定的结束偏移量(在char
)到指定的char
值数组中 - 结果
- 的偏移量
text
指向的第一个字符text
,这Font
不能显示; 或-1
如果Font
可以显示所有字符text
。 - 从以下版本开始:
- 1.2
-
canDisplayUpTo
public int canDisplayUpTo(CharacterIterator iter, int start, int limit)
指示此是否Font
可以显示由指定的文本iter
开始start
在结束limit
。- 参数
-
iter
-CharacterIterator
对象 -
start
- 指定的起始偏移量为指定的CharacterIterator
。 -
limit
- 指定的结束偏移量到指定的CharacterIterator
。 - 结果
- 偏移到
iter
,指向此Font
无法显示的iter
中的第一个字符; 或-1
如果Font
可以显示所有字符iter
。 - 从以下版本开始:
- 1.2
-
getItalicAngle
public float getItalicAngle()
返回此Font
的斜体角度。 斜体角度是插入符号的倒斜率,最符合此Font
的姿势。- 结果
- 这个
Font
的ITALIC风格的Font
。 - 另请参见:
-
TextAttribute.POSTURE
-
hasUniformLineMetrics
public boolean hasUniformLineMetrics()
检查此Font
是否具有统一的线路指标。 逻辑Font
可能是复合字体,这意味着它由不同的物理字体组成,以涵盖不同的代码范围。 这些字体中的每一种都可能有不同的LineMetrics
。 如果逻辑Font
是单个字体,则指标将是统一的。- 结果
-
true
若Font
拥有统一的Font
指标; 否则为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)
返回指定的String
中指定的FontRenderContext
的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds
方法TextLayout
。注意:返回的边界位于基线相对坐标中(请参阅
class notes
)。- 参数
-
str
- 指定的String
-
frc
- 指定的FontRenderContext
- 结果
- a
Rectangle2D
,它是指定的String
中指定的FontRenderContext
的边界框。 - 从以下版本开始:
- 1.2
- 另请参见:
-
FontRenderContext
,createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
-
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, FontRenderContext frc)
返回指定的String
中指定的FontRenderContext
的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获取包含所有文本的可视边界框,请使用getBounds
方法TextLayout
。注意:返回的边界位于基线相对坐标中(请参阅
class notes
)。- 参数
-
str
- 指定的String
-
beginIndex
- 初始偏移量为str
-
limit
- 结束偏移量为str
-
frc
- 指定的FontRenderContext
- 结果
- a
Rectangle2D
,它是指定的String
中指定的FontRenderContext
的边界框。 - 异常
-
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
中指定字符数组的逻辑边界。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds
方法TextLayout
。注意:返回的边界位于基线相对坐标中(请参阅
class notes
)。- 参数
-
chars
- 一组字符 -
beginIndex
- 字符数组中的初始偏移量 -
limit
- 字符数组中的结束偏移量 -
frc
- 指定的FontRenderContext
- 结果
- a
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)
返回指定索引的字符的逻辑边界CharacterIterator
指定FontRenderContext
。 逻辑边界包含原点,上升,前进和高度,其中包括前导。 逻辑边界并不总是包含所有文本。 例如,在某些语言和某些字体中,重音符号可以位于上升或下降之上。 要获得包含所有文本的可视边界框,请使用getBounds
方法TextLayout
。注意:返回的边界位于基线相对坐标(参见
class notes
)。- 参数
-
ci
- 指定的CharacterIterator
-
beginIndex
-初始偏移ci
-
limit
- 结束偏移量在ci
-
frc
- 指定的FontRenderContext
- 结果
- 一个
Rectangle2D
即在指定的索引的字符的边界框CharacterIterator
在指定FontRenderContext
。 - 异常
-
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将字符一对一地映射到字形来创建Font
。 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。- 参数
-
frc
- 指定的FontRenderContext
-
str
- 指定的String
- 结果
- 新
GlyphVector
使用指定的创建String
和指定FontRenderContext
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, char[] chars)
通过在此Font
基于Unicode cmap将字符一对一地映射到字形来创建Font
。 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。- 参数
-
frc
- 指定的FontRenderContext
-
chars
- 指定的字符数组 - 结果
- 新
GlyphVector
与指定的字符数组和指定创建FontRenderContext
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, CharacterIterator ci)
通过在Font中基于Unicode cmap将指定字符一对一地映射到字形来创建Font
。 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。- 参数
-
frc
- 指定的FontRenderContext
-
ci
- 指定的CharacterIterator
- 结果
- 新
GlyphVector
使用指定的创建CharacterIterator
和指定FontRenderContext
。
-
createGlyphVector
public GlyphVector createGlyphVector(FontRenderContext frc, int[] glyphCodes)
通过在此Font
基于Unicode cmap将字符一对一地映射到字形来创建Font
。 除了将字形映射到字符之外,此方法不执行任何其他处理。 这意味着此方法对于需要重新排序,整形或连字替换的某些脚本(例如阿拉伯语,希伯来语,泰语和印度语)无用。- 参数
-
frc
- 指定的FontRenderContext
-
glyphCodes
- 指定的整数数组 - 结果
- 新
GlyphVector
带有指定整数数组和指定创建FontRenderContext
。
-
layoutGlyphVector
public GlyphVector layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags)
返回一个新的GlyphVector
对象,如果可能,执行文本的完整布局。 复杂文本需要完整布局,例如阿拉伯语或印地语。 对不同脚本的支持取决于字体和实现。布局需要双向分析,由
Bidi
执行,并且只应对具有统一方向的文本执行。 方向在flags参数中指示,使用LAYOUT_RIGHT_TO_LEFT指示从右到左(阿拉伯语和希伯来语)运行方向,或LAYOUT_LEFT_TO_RIGHT指示从左到右(英语)运行方向。此外,某些操作(例如阿拉伯语整形)需要上下文,因此开始和限制处的字符可以具有适当的形状。 有时,提供范围之外的缓冲区中的数据没有有效数据。 可以将值LAYOUT_NO_START_CONTEXT和LAYOUT_NO_LIMIT_CONTEXT添加到flags参数,以指示不应分别检查开始前或限制后的文本的上下文。
flags参数的所有其他值都是保留的。
- 参数
-
frc
- 指定的FontRenderContext
-
text
- 要布局的文本 -
start
- 用于GlyphVector
的文本的GlyphVector
-
limit
- 用于GlyphVector
的文本的限制 -
flags
- 如上所述的控制标志 - 结果
- 新的
GlyphVector
表示开始和限制之间的文本,选择和定位字形以便最好地表示文本 - 异常
-
ArrayIndexOutOfBoundsException
- 如果开始或限制超出范围 - 从以下版本开始:
- 1.4
- 另请参见:
-
Bidi
,LAYOUT_LEFT_TO_RIGHT
,LAYOUT_RIGHT_TO_LEFT
,LAYOUT_NO_START_CONTEXT
,LAYOUT_NO_LIMIT_CONTEXT
-
-