java.awt.font

接口
java.lang.Object
  继承者 java.awt.font.GlyphVector
所有已实现的接口:
Cloneable

public abstract class GlyphVector
     
extends Object
implements Cloneable

GlyphVector 对象是一个字形的集合,包含在转换坐标空间中放置每个字形的几何信息,该坐标空间对应于最终要显示 GlyphVector 的设备。

GlyphVector 不尝试对它包含的字形序列进行任何解释。序列中相邻字形之间的关系只用于确定在可视坐标空间中的字形放置。

GlyphVector 的实例由 Font 创建。

在一个可以对文本的中间表示形式进行缓存的文本处理应用程序中,将字符的可视化表示形式呈现给用户最快的方法是,创建并随后缓存在呈现期间使用的 GlyphVector

GlyphVector 只与一个 Font 关联,可以提供仅与此 Font 相关的有用数据。另外,从 GlyphVector 获得的规格通常不是几何上可缩放的,因为像素化和间隔与 Font 中的网格适应算法相关。为了便于精确测量 GlyphVector 及其分量字形,在创建 GlyphVector 时必须指定缩放转换、anti-alias 模式和 fractional metrics 模式。这些特性可以从目标设备派生得到。

对于 GlyphVector 中的每个字形,您可以获得:

  • 该字形的位置
  • 与该字形关联的转换
  • GlyphVector 上下文中的字形规格。在不同的转换、具有指定呈现提示的应用程序和 GlyphVector 内字形的具体实例情况下,字形的规格可能也不相同。

改变创建 GlyphVector 所使用的数据不会改变 GlyphVector 的状态。

该类提供了一些方法来调整 GlyphVector 内字形位置。这些方法最适合为显示字形而正在执行调整操作的应用程序。

该类提供了一些方法来转换 GlyphVector 中各个字形。这些方法主要用于特殊效果。

该类提供了一些方法来返回整个 GlyphVectorGlyphVector 中各个字形的可视的、逻辑的和像素的边界。

该类还提供了一些方法来返回 GlyphVectorGlyphVector 中各个字形的 Shape

另请参见:
Font, GlyphMetrics, TextLayout

字段摘要
static int FLAG_COMPLEX_GLYPHS
          与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 具有从字形到字符的复杂映射关系(此映射并非严格按照与排列方向匹配的升序或降序顺序将字形一一映射到字符)。
static int FLAG_HAS_POSITION_ADJUSTMENTS
          与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 调整了位置。
static int FLAG_HAS_TRANSFORMS
          与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 的每个字形都有转换。
static int FLAG_MASK
          getLayoutFlags 支持标志的掩码。
static int FLAG_RUN_RTL
          与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 具有从右到左的排列方向。
 
构造方法摘要
GlyphVector()
           
 
方法摘要
abstract  boolean equals(GlyphVector set)
          测试指定的 GlyphVector 是否恰好等于此 GlyphVector
abstract  Font getFont()
          返回与此 GlyphVector 关联的 Font
abstract  FontRenderContext getFontRenderContext()
          返回与此 GlyphVector 关联的 FontRenderContext
 int getGlyphCharIndex(int glyphIndex)
          返回指定字形的字符索引。
 int[] getGlyphCharIndices(int beginGlyphIndex, int numEntries, int[] codeReturn)
          返回指定字形的字符索引。
abstract  int getGlyphCode(int glyphIndex)
          返回指定字形的 glyphcode。
abstract  int[] getGlyphCodes(int beginGlyphIndex, int numEntries, int[] codeReturn)
          返回指定字形的 glyphcode 数组。
abstract  GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex)
          返回此 GlyphVector 中指定索引处的字形调整信息。
abstract  Shape getGlyphLogicalBounds(int glyphIndex)
          返回此 GlyphVector 中指定字形的逻辑边界。
abstract  GlyphMetrics getGlyphMetrics(int glyphIndex)
          返回此 GlyphVector 中指定索引处的字形规格。
abstract  Shape getGlyphOutline(int glyphIndex)
          返回其内部区域与此 GlyphVector 中指定字形的可视表示形式对应的 Shape
 Shape getGlyphOutline(int glyphIndex, float x, float y)
          返回一个 Shape,其内部区域与此 GlyphVector 中指定字形的可视表示形式对应,并偏移到 x、y。
 Rectangle getGlyphPixelBounds(int index, FontRenderContext renderFRC, float x, float y)
          返回当此 GlyphVectorGraphics 中以给定 FontRenderContext 在给定位置呈现时,index 处字形的像素边界。
abstract  Point2D getGlyphPosition(int glyphIndex)
          返回与此 GlyphVector 原点对应的指定字形的位置。
abstract  float[] getGlyphPositions(int beginGlyphIndex, int numEntries, float[] positionReturn)
          返回包含指定字形位置的数组。
abstract  AffineTransform getGlyphTransform(int glyphIndex)
          返回此 GlyphVector 中指定字形的转换。
abstract  Shape getGlyphVisualBounds(int glyphIndex)
          返回 GlyphVector 中指定字形的可视边界。
 int getLayoutFlags()
          返回描述该 GlyphVector 全局状态的标志。
abstract  Rectangle2D getLogicalBounds()
          返回此 GlyphVector 的逻辑边界。
abstract  int getNumGlyphs()
          返回此 GlyphVector 中的字形数。
abstract  Shape getOutline()
          返回其内部区域与此 GlyphVector 的可视表示形式对应的 Shape
abstract  Shape getOutline(float x, float y)
          返回在 x、y 处呈现时,其内部区域与此 GlyphVector 的可视表示形式对应的 Shape
 Rectangle getPixelBounds(FontRenderContext renderFRC, float x, float y)
          返回此 GlyphVector 在图形中以给定 FontRenderContext 在给定位置处呈现时的像素边界。
abstract  Rectangle2D getVisualBounds()
          返回此 GlyphVector 的可视边界,可视边界是此 GlyphVector 轮廓的边界框。
abstract  void performDefaultLayout()
          为此 GlyphVector 中的每个字形分配默认位置。
abstract  void setGlyphPosition(int glyphIndex, Point2D newPos)
          设置此 GlyphVector 中的指定字形位置。
abstract  void setGlyphTransform(int glyphIndex, AffineTransform newTX)
          设置此 GlyphVector 中指定字形的转换。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

FLAG_HAS_TRANSFORMS

public static final int FLAG_HAS_TRANSFORMS
与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 的每个字形都有转换。

从以下版本开始:
1.4
另请参见:
常量字段值

FLAG_HAS_POSITION_ADJUSTMENTS

public static final int FLAG_HAS_POSITION_ADJUSTMENTS
与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 调整了位置。该标志为 true 时,字形位置与该字形累加的默认 advance 不匹配(例如,已完成字距调整)。

从以下版本开始:
1.4
另请参见:
常量字段值

FLAG_RUN_RTL

public static final int FLAG_RUN_RTL
与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 具有从右到左的排列方向。这是指字形到字符的映射关系,并不意味着该字形的可视位置一定要按此顺序,但通常如此。

从以下版本开始:
1.4
另请参见:
常量字段值

FLAG_COMPLEX_GLYPHS

public static final int FLAG_COMPLEX_GLYPHS
与 getLayoutFlags 一起使用的标志,指示此 GlyphVector 具有从字形到字符的复杂映射关系(此映射并非严格按照与排列方向匹配的升序或降序顺序将字形一一映射到字符)。

从以下版本开始:
1.4
另请参见:
常量字段值

FLAG_MASK

public static final int FLAG_MASK
getLayoutFlags 支持标志的掩码。只应测试该掩码包含的位。

从以下版本开始:
1.4
另请参见:
常量字段值
构造方法详细信息

GlyphVector

public GlyphVector()
方法详细信息

getFont

public abstract Font getFont()
返回与此 GlyphVector 关联的 Font

返回:
用于创建此 GlyphVectorFont
另请参见:
Font

getFontRenderContext

public abstract FontRenderContext getFontRenderContext()
返回与此 GlyphVector 关联的 FontRenderContext

返回:
用于创建此 GlyphVectorFontRenderContext
另请参见:
FontRenderContext, Font

performDefaultLayout

public abstract void performDefaultLayout()
为此 GlyphVector 中的每个字形分配默认位置。这会破坏此 GlyphVector 初始布局期间所生成的信息。


getNumGlyphs

public abstract int getNumGlyphs()
返回此 GlyphVector 中的字形数。

返回:
GlyphVector 中的字形数。

getGlyphCode

public abstract int getGlyphCode(int glyphIndex)
返回指定字形的 glyphcode。除创建此 GlyphVectorFont 对象之外,此返回值对其他对象均无意义。

参数:
glyphIndex - 此 GlyphVector 中的索引,它与从中检索 glyphcode 的字形对应。
返回:
指定 glyphIndex 处字形的 glyphcode。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数

getGlyphCodes

public abstract int[] getGlyphCodes(int beginGlyphIndex,
                                    int numEntries,
                                    int[] codeReturn)
返回指定字形的 glyphcode 数组。除用来创建此 GlyphVectorFont 之外,此返回值的内容对其他对象均无意义。处理 glyphcode 时,此方法使用便捷,性能优越。如果没有数组传入,则创建新的数组。

参数:
beginGlyphIndex - 此 GlyphVector 中的索引,从此处开始检索 glyphcode
numEntries - 要检索的 glyphcode 数
codeReturn - 接收 glyphcode 然后返回的数组
返回:
指定字形的 glyphcode 数组。
抛出:
IllegalArgumentException - 如果 numEntries 小于 0
IndexOutOfBoundsException - 如果 beginGlyphIndex 小于 0
IndexOutOfBoundsException - 如果 beginGlyphIndexnumEntries 的和大于此 GlyphVector 中的字形数

getGlyphCharIndex

public int getGlyphCharIndex(int glyphIndex)
返回指定字形的字符索引。字符索引是该字形表示的第一个逻辑字符的索引。默认实现假定字形和字符是从左到右一一对应的映射关系。

参数:
glyphIndex - 该字形的索引
返回:
该字形表示的第一个字符索引
从以下版本开始:
1.4

getGlyphCharIndices

public int[] getGlyphCharIndices(int beginGlyphIndex,
                                 int numEntries,
                                 int[] codeReturn)
返回指定字形的字符索引。字符索引是该字形表示的第一个逻辑字符的索引。按字形顺序返回索引。默认实现为每个字形调用 getGlyphCharIndex,出于性能的考虑,子类可能要重写此实现。在处理 glyphcode 时,此方法使用便捷,性能优越。如果没有数组传入,则创建新的数组。

参数:
beginGlyphIndex - 第一个字形的索引
numEntries - 字形索引数
codeReturn - 接收返回字符索引的数组
返回:
字符索引的数组,每个字形一个字符索引。
从以下版本开始:
1.4

getLogicalBounds

public abstract Rectangle2D getLogicalBounds()
返回此 GlyphVector 的逻辑边界。相对于视觉相邻的 GlyphVector 对象定位此 GlyphVector 时使用此方法。

返回:
一个 Rectangle2D,它是此 GlyphVector 的逻辑边界。

getVisualBounds

public abstract Rectangle2D getVisualBounds()
返回此 GlyphVector 的可视边界,可视边界是此 GlyphVector 轮廓的边界框。由于像素的光栅化和对齐方式,此框可能没有包围受呈现此 GlyphVector 影响的所有像素。

返回:
一个 Rectangle2D,它是此 GlyphVector 的边界框。

getPixelBounds

public Rectangle getPixelBounds(FontRenderContext renderFRC,
                                float x,
                                float y)
返回此 GlyphVector 在图形中以给定 FontRenderContext 在给定位置处呈现时的像素边界。renderFRC 无需与此 GlyphVectorFontRenderContext 相同,可以为 null。如果为 null,则使用此 GlyphVectorFontRenderContext。默认实现返回可视边界、x 和 y 的偏移量,并舍入为下一个整数值(即返回包含可视边界的整数矩形),并忽略 FRC。子类应重写此方法。

参数:
renderFRC - GraphicsFontRenderContext
x - 呈现此 GlyphVector 处的 x 坐标。
y - 呈现此 GlyphVector 处的 y 坐标。
返回:
包围受影响像素的 Rectangle
从以下版本开始:
1.4

getOutline

public abstract Shape getOutline()
返回其内部区域与此 GlyphVector 的可视表示形式对应的 Shape

返回:
GlyphVector 轮廓的 Shape

getOutline

public abstract Shape getOutline(float x,
                                 float y)
返回在 x、y 处呈现时,其内部区域与此 GlyphVector 的可视表示形式对应的 Shape

参数:
x - 此 GlyphVector 的 X 坐标。
y - 此 GlyphVector 的 Y 坐标。
返回:
在指定坐标位置呈现时,此 GlyphVector 轮廓的 Shape

getGlyphOutline

public abstract Shape getGlyphOutline(int glyphIndex)
返回其内部区域与此 GlyphVector 中指定字形的可视表示形式对应的 Shape。此方法返回的轮廓位于各个字形的原点周围。

参数:
glyphIndex - 此 GlyphVector 的索引
返回:
一个 Shape,它是该 GlyphVector 中指定 glyphIndex 处的字形轮廓。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数

getGlyphOutline

public Shape getGlyphOutline(int glyphIndex,
                             float x,
                             float y)
返回一个 Shape,其内部区域与此 GlyphVector 中指定字形的可视表示形式对应,并偏移到 x、y。此方法返回的轮廓位于各个字形的原点周围。

参数:
glyphIndex - 此 GlyphVector 的索引
x - 此 GlyphVector 的坐标的 X 坐标
y - 此 GlyphVector 的坐标的 Y 坐标
返回:
一个 Shape,它是在指定的坐标处呈现时,此 GlyphVector 中指定 glyphIndex 处的字形轮廓。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数
从以下版本开始:
1.4

getGlyphPosition

public abstract Point2D getGlyphPosition(int glyphIndex)
返回与此 GlyphVector 原点对应的指定字形的位置。如果 glyphIndex 等于此 GlyphVector 中的字形数,则此方法返回最后一个字形后的位置。此位置用于定义整个 GlyphVector 的 advance。

参数:
glyphIndex - 此 GlyphVector 的索引
返回:
表示指定 glyphIndex 处字形位置的 Point2D 对象。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于此 GlyphVector 中的字形数
另请参见:
setGlyphPosition(int, java.awt.geom.Point2D)

setGlyphPosition

public abstract void setGlyphPosition(int glyphIndex,
                                      Point2D newPos)
设置此 GlyphVector 中的指定字形位置。如果 glyphIndex 等于此 GlyphVector 中的字形数,则此方法设置最后一个字形后的位置。此位置用于定义整个 GlyphVector 的 advance。

参数:
glyphIndex - 此 GlyphVector 的索引
newPos - 定位指定 glyphIndex 处字形的 Point2D
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或大于此 GlyphVector 中的字形数
另请参见:
getGlyphPosition(int)

getGlyphTransform

public abstract AffineTransform getGlyphTransform(int glyphIndex)
返回此 GlyphVector 中指定字形的转换。该转换与字形位置相关。如果未应用特殊转换,则返回 null。返回 null 指示恒等转换。

参数:
glyphIndex - 此 GlyphVector 的索引
返回:
转换指定 glyphIndex 处字形的 AffineTransform
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数
另请参见:
setGlyphTransform(int, java.awt.geom.AffineTransform)

setGlyphTransform

public abstract void setGlyphTransform(int glyphIndex,
                                       AffineTransform newTX)
设置此 GlyphVector 中指定字形的转换。该转换与字形位置相关。 newTX 参数为 null 表示对指定字形没有应用特殊转换。此方法可以用于旋转、镜像、平移和缩放字形。添加转换可以明显地影响性能。

参数:
glyphIndex - 此 GlyphVector 的索引
newTX - glyphIndex 处的字形的新转换
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数
另请参见:
getGlyphTransform(int)

getLayoutFlags

public int getLayoutFlags()
返回描述该 GlyphVector 全局状态的标志。下文没有描述的标志是保留的。对于位置调整、转换、rtl 和复杂标志,默认实现返回 0(意味着 false)。子类应重写此方法,并确保它正确地描述 GlyphVector 并与相关调用的结果对应。

返回:
一个 int 值,包含描述该状态的标志
从以下版本开始:
1.4
另请参见:
FLAG_HAS_POSITION_ADJUSTMENTS, FLAG_HAS_TRANSFORMS, FLAG_RUN_RTL, FLAG_COMPLEX_GLYPHS, FLAG_MASK

getGlyphPositions

public abstract float[] getGlyphPositions(int beginGlyphIndex,
                                          int numEntries,
                                          float[] positionReturn)
返回包含指定字形位置的数组。处理字形位置时,此方法使用便捷,性能优越。如果没有数组传入,则创建新的数组。从位置 0 开始的偶数数组项是编号为 beginGlyphIndex + position/2 的字形 X 坐标。从位置 1 开始的奇数数组项是编号为 beginGlyphIndex + (position-1)/2 的字形 Y 坐标。如果 beginGlyphIndex 等于此 GlyphVector 中的字形数,则此方法会获取最后一个字形后的位置,此位置用于定义整个 GlyphVector 的 advance。

参数:
beginGlyphIndex - 开始检索字形位置的索引
numEntries - 要检索的字形数
positionReturn - 接收字形位置然后返回的数组。
返回:
beginGlyphIndexnumEntries 指定的字形位置的数组。
抛出:
IllegalArgumentException - 如果 numEntries 小于 0
IndexOutOfBoundsException - 如果 beginGlyphIndex 小于 0
IndexOutOfBoundsException - 如果 beginGlyphIndexnumEntries 的和大于此 GlyphVector 中的字形数加 1

getGlyphLogicalBounds

public abstract Shape getGlyphLogicalBounds(int glyphIndex)
返回此 GlyphVector 中指定字形的逻辑边界。这些逻辑边界总共有四个边,两个边平行于该字形转换的基线,另外两个边与相邻字形(如果存在)共用。此方法常用于指定字形的命中测试、插入符在开始边和尾边的定位,以及在指定字形周围绘制一个高亮显示区域。

参数:
glyphIndex - 此 GlyphVector 的索引,它与从中检索其逻辑边界的字形对应
返回:
一个 Shape,表示指定 glyphIndex 处的字形逻辑边界。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数
另请参见:
getGlyphVisualBounds(int)

getGlyphVisualBounds

public abstract Shape getGlyphVisualBounds(int glyphIndex)
返回 GlyphVector 中指定字形的可视边界。此方法返回的边界位于各个字形的原点周围。

参数:
glyphIndex - 此 GlyphVector 的索引,它与从中检索其可视边界的字形对应
返回:
一个 Shape,表示指定 GlyphVector 处的字形可视边界。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数
另请参见:
getGlyphLogicalBounds(int)

getGlyphPixelBounds

public Rectangle getGlyphPixelBounds(int index,
                                     FontRenderContext renderFRC,
                                     float x,
                                     float y)
返回当此 GlyphVectorGraphics 中以给定 FontRenderContext 在给定位置呈现时,index 处字形的像素边界。 renderFRC 无需与此 GlyphVectorFontRenderContext 相同,可以为 null。如果为 null,则使用此 GlyphVectorFontRenderContext。默认的实现会返回该字形的可视边界、x 和 y 的偏移量,以及舍入到下一个整数值,并忽略 FRC。子类应重写此方法。

参数:
index - 该字形的索引。
renderFRC - GraphicsFontRenderContext
x - 呈现此 GlyphVector 的 X 坐标。
y - 呈现此 GlyphVector 的 Y 坐标。
返回:
包围受影响像素的 Rectangle
从以下版本开始:
1.4

getGlyphMetrics

public abstract GlyphMetrics getGlyphMetrics(int glyphIndex)
返回此 GlyphVector 中指定索引处的字形规格。

参数:
glyphIndex - 此 GlyphVector 的索引,它与从中检索其规格的字形对应
返回:
一个 GlyphMetrics 对象,表示此 GlyphVector 中指定 glyphIndex 处的字形规格。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数

getGlyphJustificationInfo

public abstract GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex)
返回此 GlyphVector 中指定索引处的字形调整信息。

参数:
glyphIndex - 此 GlyphVector 的索引,它与从中检索其调整属性的字形对应
返回:
一个 GlyphJustificationInfo 对象,表示此 GlyphVector 中指定 glyphIndex 处的字形调整属性。
抛出:
IndexOutOfBoundsException - 如果 glyphIndex 小于 0,或者大于等于此 GlyphVector 中的字形数

equals

public abstract boolean equals(GlyphVector set)
测试指定的 GlyphVector 是否恰好等于此 GlyphVector

参数:
set - 要测试的指定 GlyphVector
返回:
如果指定的 GlyphVector 等于此 GlyphVector,则返回 true;否则返回 false