java.lang.Object
java.awt.font.GlyphMetrics
GlyphMetrics
类表示单个字形的信息。字形是一个或多个字符的视觉表示。许多不同的字形可用于表示单个字符或字符组合。 GlyphMetrics
实例由 Font
生成,适用于特定 Font
中的特定字形。
字形可以是 STANDARD、LIGATURE、COMBINING 或 COMPONENT。
- 标准字形通常用于表示单个字符。
- LIGATURE 字形用于表示字符序列。
GlyphVector
中的 COMPONENT 字形不对应于文本模型中的特定字符。相反,COMPONENT 字形是出于印刷原因添加的,例如阿拉伯语对齐。- COMBINING 字形修饰 STANDARD 或 LIGATURE 字形,例如重音符号。插入符号不会出现在 COMBINING 字形之前。
通过 GlyphMetrics
可用的其他指标是前进的组件、视觉边界以及左侧和右侧轴承。
旋转字体的字形,或从已对字形应用旋转的 GlyphVector
获得的字形,可以具有同时包含 X 和 Y 组件的改进。通常预付款只有一个组成部分。
一个字形的前进是从字形的原点到下一个字形的原点沿基线的距离,基线可以是垂直的也可以是水平的。请注意,在 GlyphVector
中,由于字距调整或其他定位调整,从字形到其后续字形的距离可能不是字形的前进。
边界是完全包含字形轮廓的最小矩形。边界矩形是相对于字形的原点的。左侧方位角是从字形原点到其边界矩形左侧的距离。如果左侧方位角为负,则将部分字形绘制到其原点的左侧。右侧方位角是从边界矩形的右侧到下一个字形原点(原点加上前进)的距离。如果为负,则将部分字形绘制到下一个字形原点的右侧。请注意,由于光栅化和像素调整效果,边界不一定包含渲染字形时受影响的所有像素。
尽管可以直接构造 GlyphMetrics
的实例,但它们几乎总是从 GlyphVector
获得的。一旦构建,GlyphMetrics
对象是不可变的。
Example :
查询 Font
以获取字形信息
Font font = ...; int glyphIndex = ...; GlyphMetrics metrics = GlyphVector.getGlyphMetrics(glyphIndex); int isStandard = metrics.isStandard(); float glyphAdvance = metrics.getAdvance();
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final byte
指示表示组合字符(例如元音变音)的字形。static final byte
指示后备存储中没有对应字符的字形。static final byte
指示将多个字符表示为连字的字形,例如“fi”或“ffi”。static final byte
指示表示单个标准字符的字形。static final byte
指示没有视觉表示的字形。 -
构造方法总结
构造方法构造方法描述GlyphMetrics
(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。GlyphMetrics
(float advance, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。 -
方法总结
修饰符和类型方法描述float
返回字形沿基线(水平或垂直)的前进。float
返回字形前进的 x 组件。float
返回字形前进的 y 组件。返回字形的边界。float
getLSB()
返回字形的左侧(顶部)方位。float
getRSB()
返回字形的右侧(底部)方位。int
getType()
返回原始字形类型代码。boolean
如果这是一个组合字形,则返回true
。boolean
如果这是一个组件字形,则返回true
。boolean
如果这是连字字形,则返回true
。boolean
如果这是标准字形,则返回true
。boolean
如果这是一个空白字形,则返回true
。
-
字段详细信息
-
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指示后备存储中没有对应字符的字形。该字形与逻辑上前面的非组件字形所表示的字符相关联。这用于 kashida 对齐或对现有字形的其他视觉修改。此字形与前一个字形之间没有插入符位置。- 参见:
-
WHITESPACE
public static final byte WHITESPACE指示没有视觉表示的字形。它可以添加到其他代码值以指示不可见的字形。- 参见:
-
-
构造方法详细信息
-
GlyphMetrics
构造一个GlyphMetrics
对象。- 参数:
advance
- 字形的前进宽度bounds
- 字形的黑框边界glyphType
- 字形的类型
-
GlyphMetrics
public GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType) 构造一个GlyphMetrics
对象。- 参数:
horizontal
- 如果为真,则指标用于水平基线,否则它们用于垂直基线advanceX
- 字形前进的 X 组件advanceY
- 字形前进的 Y 组件bounds
- 字形的视觉边界glyphType
- 字形的类型- 自从:
- 1.4
-
-
方法详情
-
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()返回字形的右侧(底部)方位。这是从字形边界的右侧(底部)到前进的距离。如果字形的边界在 advance 的右侧(下方),则 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
否则。
-