java.lang.Object
java.awt.font.GlyphMetrics
GlyphMetrics
类表示单个字形的信息。字形是一个或多个字符的视觉表示。许多不同的字形可以用来表示单个字符或字符组合。 GlyphMetrics
实例由Font
生成,并适用于特定字体中的特定字形。
字形可以是标准(STANDARD)、连字(LIGATURE)、组合(COMBINING)或组件(COMPONENT)。
- 标准(STANDARD)字形通常用于表示单个字符。
- 连字(LIGATURE)字形用于表示字符序列。
- 在
GlyphVector
中的组件(COMPONENT)字形不对应文本模型中的特定字符。相反,组件(COMPONENT)字形是出于排版原因而添加的,例如阿拉伯语调整。 - 组合(COMBINING)字形装饰标准(STANDARD)或连字(LIGATURE)字形,例如重音符号。插入符号不会出现在组合(COMBINING)字形之前。
通过GlyphMetrics
可获得的其他度量包括前进量的组件、视觉边界以及左右边距。
对于旋转字体的字形,或者从应用旋转到字形的GlyphVector
中获得的字形,前进量可能包含X和Y组件。通常,前进量只有一个组件。
字形的前进量是从字形原点到沿着基线的下一个字形的原点的距离,基线可以是垂直的或水平的。请注意,在GlyphVector
中,从一个字形到其后续字形的距离可能不是字形的前进量,这是因为字距或其他定位调整。
边界是完全包含字形轮廓的最小矩形。边界矩形相对于字形原点。左边距是从字形原点到其边界矩形的左侧的距离。如果左边距为负,则部分字形将绘制在其原点的左侧。右边距是从边界矩形的右侧到下一个字形原点(原点加前进量)的距离。如果为负,则部分字形将绘制在下一个字形原点的右侧。请注意,边界不一定包围渲染字形时受影响的所有像素,这是由于栅格化和像素调整效果。
虽然可以直接构造GlyphMetrics
的实例,但它们几乎总是从GlyphVector
中获得。一旦构造,GlyphMetrics
对象就是不可变的。
示例:
查询Font
的字形信息
Font font = ...; int glyphIndex = ...; GlyphMetrics metrics = GlyphVector.getGlyphMetrics(glyphIndex); int isStandard = metrics.isStandard(); float glyphAdvance = metrics.getAdvance();
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final byte
表示表示组合字符(如变音符号)的字形。static final byte
表示在后备存储中没有对应字符的字形。static final byte
表示将多个字符表示为连字的字形,例如 'fi' 或 'ffi'。static final byte
表示表示单个标准字符的字形。static final byte
表示没有视觉表示的字形。 -
Constructor Summary
ConstructorDescriptionGlyphMetrics
(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。GlyphMetrics
(float advance, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。 -
Method Summary
Modifier and TypeMethodDescriptionfloat
返回沿基线(水平或垂直)的字形前进量。float
返回字形前进量的X分量。float
返回字形前进量的Y分量。返回字形的边界。float
getLSB()
返回字形的左(顶部)边距。float
getRSB()
返回字形的右(底部)边距。int
getType()
返回原始字形类型代码。boolean
如果这是一个组合字形,则返回true
。boolean
如果这是一个组件字形,则返回true
。boolean
如果这是一个连字字形,则返回true
。boolean
如果这是一个标准字形,则返回true
。boolean
如果这是一个空格字形,则返回true
。
-
Field Details
-
STANDARD
public static final byte STANDARD表示表示单个标准字符的字形。- 参见:
-
LIGATURE
public static final byte LIGATURE表示将多个字符表示为连字的字形,例如 'fi' 或 'ffi'。后面跟随填充字形以表示剩余字符。填充和组合字形可以混合使用以控制在逻辑上前面的连字上的重音符号的定位。- 参见:
-
COMBINING
public static final byte COMBINING表示表示组合字符(如变音符号)的字形。在此字形和前面的字形之间没有插入符号位置。- 参见:
-
COMPONENT
public static final byte COMPONENT表示在后备存储中没有对应字符的字形。该字形与逻辑上前面的非组件字形所代表的字符相关联。这用于卡希达调整或对现有字形进行其他视觉修改。在此字形和前面的字形之间没有插入符号位置。- 参见:
-
WHITESPACE
public static final byte WHITESPACE表示没有视觉表示的字形。可以将其添加到其他代码值中以指示不可见字形。- 参见:
-
-
Constructor Details
-
GlyphMetrics
构造一个GlyphMetrics
对象。- 参数:
-
advance
- 字形的前进宽度 -
bounds
- 字形的黑盒边界 -
glyphType
- 字形的类型
-
GlyphMetrics
public GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。- 参数:
-
horizontal
- 如果为true,则度量是基于水平基线的,否则是基于垂直基线的 -
advanceX
- 字形前进量的X分量 -
advanceY
- 字形前进量的Y分量 -
bounds
- 字形的视觉边界 -
glyphType
- 字形的类型 - 自版本:
- 1.4
-
-
Method Details
-
getAdvance
public float getAdvance()返回沿基线(水平或垂直)的字形前进量。- 返回:
- 字形的前进量
-
getAdvanceX
public float getAdvanceX()返回字形前进量的X分量。- 返回:
- 字形前进量的X分量
- 自版本:
- 1.4
-
getAdvanceY
public float getAdvanceY()返回字形前进量的Y分量。- 返回:
- 字形前进量的Y分量
- 自版本:
- 1.4
-
getBounds2D
返回字形的边界。这是字形轮廓的边界框。由于栅格化和像素对齐效果,它不一定包围在渲染字形时受影响的像素。- 返回:
-
一个
Rectangle2D
,表示字形的边界。
-
getLSB
public float getLSB()返回字形的左(顶部)边距。这是从0,0到字形边界的左(顶部)的距离。如果字形的边界在原点的左侧(上方),则LSB为负。
- 返回:
- 字形的左边距。
-
getRSB
public float getRSB()返回字形的右(底部)边距。这是从字形边界的右(底部)到前进量的距离。如果字形的边界在前进量的右侧(下方),则RSB为负。
- 返回:
- 字形的右边距。
-
getType
public int getType()返回原始字形类型代码。- 返回:
- 原始字形类型代码。
-
isStandard
public boolean isStandard()如果这是一个标准字形,则返回true
。- 返回:
-
如果这是一个标准字形,则返回
true
;否则返回false
。
-
isLigature
public boolean isLigature()如果这是一个连字字形,则返回true
。- 返回:
-
如果这是一个连字字形,则返回
true
;否则返回false
。
-
isCombining
public boolean isCombining()如果这是一个组合字形,则返回true
。- 返回:
-
如果这是一个组合字形,则返回
true
;否则返回false
。
-
isComponent
public boolean isComponent()如果这是一个组件字形,则返回true
。- 返回:
-
如果这是一个组件字形,则返回
true
;否则返回false
。
-
isWhitespace
public boolean isWhitespace()如果这是一个空格字形,则返回true
。- 返回:
-
如果这是一个空格字形,则返回
true
;否则返回false
。
-