java.lang.Object java.awt.font.GlyphMetrics
public final class GlyphMetrics
GlyphMetrics
类表示单个字形的信息。字形是一个或多个字符的可视化表示形式。可以使用多个不同的字形来表示单个字符或字符组合。GlyphMetrics
实例由 Font
生成,并可应用于特定 Font
中的具体字形。
字形可以是 STANDARD、LIGATURE、COMBINING 或 COMPONENT。
GlyphVector
中的 COMPONENT 字形不对应文本模型中的特定字符。取而代之的是,由于印刷原因(如阿拉伯语调整)添加 COMPONENT 字形。 通过 GlyphMetrics
可使用的其他规格是 advance、可视边界以及左跨距和右跨距分量。
对于旋转字体的字形或从已对字形应用旋转的 GlyphVector
获得的字形,可以具有包含 X 和 Y 分量的 advance。advance 通常仅有一个分量。
字形的 advance 是从该字形原点沿基线(可以是垂直的,也可以是水平的)到下一个字形原点的距离。注意,在 GlyphVector
中,由于字距调整和其他位置调整,所以从一个字形到其下一个字形之间的距离可能不是该字形的 advance。
边界是完全包含该字形轮廓的最小矩形。边界矩形是相对于该字形原点的。左跨距是从字形原点到其边界矩形左边的距离。如果左跨距为负,则将该字形的一部分绘制到其原点的左边。右跨距是从该边界矩形的右边到下一个字形原点的距离(原点加上 advance)。如果为负,则将该字形的一部分绘制到下一个字形原点的右边。注意,当呈现该字形时,由于光栅化和像素调整效果,该边界不一定包括受到影响的所有像素。
虽然可以直接构造 GlyphMetrics
的实例,但是几乎总是从 GlyphVector
获得它们。一旦构造 GlyphMetrics
对象之后,它就是不可变的。
示例:
查询 Font
,了解字形信息
Font font = ...; int glyphIndex = ...; GlyphMetrics metrics = GlyphVector.getGlyphMetrics(glyphIndex); int isStandard = metrics.isStandard(); float glyphAdvance = metrics.getAdvance();
Font
,
GlyphVector
字段摘要 | |
---|---|
static byte |
COMBINING 指示表示组合字符的字形,例如元音变音。 |
static byte |
COMPONENT 指示在内部存储中没有相应字符的字形。 |
static byte |
LIGATURE 指示将多个字符表示成连字(例如,'fi' 或 'ffi')的字形。 |
static byte |
STANDARD 指示表示单个标准字符的字形。 |
static byte |
WHITESPACE 指示一个无可视化表示形式的字形。 |
构造方法摘要 | |
---|---|
GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType) 构造一个 GlyphMetrics 对象。 |
|
GlyphMetrics(float advance, Rectangle2D bounds, byte glyphType) 构造一个 GlyphMetrics 对象。 |
方法摘要 | |
---|---|
float |
getAdvance() 返回沿基线(水平基线或垂直基线)的字形 advance。 |
float |
getAdvanceX() 返回字形 advance 的 x 分量。 |
float |
getAdvanceY() 返回字形 advance 的 y 分量。 |
Rectangle2D |
getBounds2D() 返回该字形的边界。 |
float |
getLSB() 返回该字形的左(上)跨距。 |
float |
getRSB() 返回该字形的右(底)跨距。 |
int |
getType() 返回原始字形类型代码。 |
boolean |
isCombining() 如果这是一个组合字形,则返回 true 。 |
boolean |
isComponent() 如果这是一个分量字形,则返回 true 。 |
boolean |
isLigature() 如果这是一个连字字形,则返回 true 。 |
boolean |
isStandard() 如果这是一个标准字形,则返回 true 。 |
boolean |
isWhitespace() 如果这是一个空白字形,则返回 true 。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final byte STANDARD
public static final byte LIGATURE
public static final byte COMBINING
public static final byte COMPONENT
public static final byte WHITESPACE
构造方法详细信息 |
---|
public GlyphMetrics(float advance, Rectangle2D bounds, byte glyphType)
GlyphMetrics
对象。
advance
- 该字形的 advance 宽度
bounds
- 该字形的黑框边界
glyphType
- 该字形的类型
public GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType)
GlyphMetrics
对象。
horizontal
- 如果为 true,则规格用于水平基线;否则用于垂直基线
advanceX
- 该字形的 advance 的 X 分量
advanceY
- 该字形的 advance 的 Y 分量
bounds
- 该字形的可视化边界
glyphType
- 该字形的类型
方法详细信息 |
---|
public float getAdvance()
public float getAdvanceX()
public float getAdvanceY()
public Rectangle2D getBounds2D()
Rectangle2D
。
public float getLSB()
这是从 0, 0 到该字形边界的左(上)边的距离。如果该字形的边界在原点的左(上)边,则 LSB 为负。
public float getRSB()
这是从该字形边界的右(底)边到该 advance 的距离。如果该字形的边界在 advance 的右(下)边,则 RSB 为负。
public int getType()
public boolean isStandard()
true
。
true
;否则返回
false
。
public boolean isLigature()
true
。
true
;否则返回
false
。
public boolean isCombining()
true
。
true
;否则返回
false
。
public boolean isComponent()
true
。
true
;否则返回
false
。
public boolean isWhitespace()
true
。
true
;否则返回
false
。