Module java.desktop
Package java.awt.font

Class GlyphMetrics

java.lang.Object
java.awt.font.GlyphMetrics

public final class GlyphMetrics extends Object
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

    Fields
    Modifier and Type
    Field
    Description
    static final byte
    表示表示组合字符(如变音符号)的字形。
    static final byte
    表示在后备存储中没有对应字符的字形。
    static final byte
    表示将多个字符表示为连字的字形,例如 'fi' 或 'ffi'。
    static final byte
    表示表示单个标准字符的字形。
    static final byte
    表示没有视觉表示的字形。
  • Constructor Summary

    Constructors
    Constructor
    Description
    GlyphMetrics(boolean horizontal, float advanceX, float advanceY, Rectangle2D bounds, byte glyphType)
    构造一个GlyphMetrics对象。
    GlyphMetrics(float advance, Rectangle2D bounds, byte glyphType)
    构造一个GlyphMetrics对象。
  • Method Summary

    Modifier and Type
    Method
    Description
    float
    返回沿基线(水平或垂直)的字形前进量。
    float
    返回字形前进量的X分量。
    float
    返回字形前进量的Y分量。
    返回字形的边界。
    float
    getLSB()
    返回字形的左(顶部)边距。
    float
    getRSB()
    返回字形的右(底部)边距。
    int
    返回原始字形类型代码。
    boolean
    如果这是一个组合字形,则返回true
    boolean
    如果这是一个组件字形,则返回true
    boolean
    如果这是一个连字字形,则返回true
    boolean
    如果这是一个标准字形,则返回true
    boolean
    如果这是一个空格字形,则返回true

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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

      public GlyphMetrics(float advance, Rectangle2D bounds, byte glyphType)
      构造一个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

      public Rectangle2D 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