java.awt.font

接口
java.lang.Object
  继承者 java.awt.font.GlyphMetrics

public final class GlyphMetrics
     
extends Object

GlyphMetrics 类表示单个字形的信息。字形是一个或多个字符的可视化表示形式。可以使用多个不同的字形来表示单个字符或字符组合。GlyphMetrics 实例由 Font 生成,并可应用于特定 Font 中的具体字形。

字形可以是 STANDARD、LIGATURE、COMBINING 或 COMPONENT。

  • STANDARD 字形通常用于表示单个字符。
  • LIGATURE 字形用于表示字符序列。
  • GlyphVector 中的 COMPONENT 字形不对应文本模型中的特定字符。取而代之的是,由于印刷原因(如阿拉伯语调整)添加 COMPONENT 字形。
  • COMBINING 字形修饰 STANDARD 或 LIGATURE 字形,例如,重音符号。插入符 (caret) 不会出现在 COMBINING 字形的前面。

通过 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
 

字段详细信息

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

public GlyphMetrics(float advance,
                    Rectangle2D bounds,
                    byte glyphType)
构造一个 GlyphMetrics 对象。

参数:
advance - 该字形的 advance 宽度
bounds - 该字形的黑框边界
glyphType - 该字形的类型

GlyphMetrics

public GlyphMetrics(boolean horizontal,
                    float advanceX,
                    float advanceY,
                    Rectangle2D bounds,
                    byte glyphType)
构造一个 GlyphMetrics 对象。

参数:
horizontal - 如果为 true,则规格用于水平基线;否则用于垂直基线
advanceX - 该字形的 advance 的 X 分量
advanceY - 该字形的 advance 的 Y 分量
bounds - 该字形的可视化边界
glyphType - 该字形的类型
从以下版本开始:
1.4
方法详细信息

getAdvance

public float getAdvance()
返回沿基线(水平基线或垂直基线)的字形 advance。

返回:
该字形的 advance

getAdvanceX

public float getAdvanceX()
返回字形 advance 的 x 分量。

返回:
字形 advance 的 x 分量
从以下版本开始:
1.4

getAdvanceY

public float getAdvanceY()
返回字形 advance 的 y 分量。

返回:
字形 advance 的 y 分量
从以下版本开始:
1.4

getBounds2D

public Rectangle2D getBounds2D()
返回该字形的边界。这是该字形轮廓的边界框。因为光栅化和像素对齐的影响,在呈现字形时,它不一定包括受影响的像素。

返回:
该字形边界的 Rectangle2D

getLSB

public float getLSB()
返回该字形的左(上)跨距。

这是从 0, 0 到该字形边界的左(上)边的距离。如果该字形的边界在原点的左(上)边,则 LSB 为负。

返回:
该字形的左跨距。

getRSB

public float getRSB()
返回该字形的右(底)跨距。

这是从该字形边界的右(底)边到该 advance 的距离。如果该字形的边界在 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