Класс GlyphVector
- Все реализованные интерфейсы:
Cloneable
public abstract class GlyphVector extends Object implements Cloneable
GlyphVector представляет собой коллекцию глифов, содержащую геометрическую информацию для размещения каждого глифа в преобразованном координатном пространстве, соответствующем устройству, на котором в конечном итоге отображается GlyphVector. GlyphVector не пытается интерпретировать последовательность содержащихся в нём глифов. Взаимное расположение соседних глифов в последовательности используется исключительно для определения размещения глифов в визуальном координатном пространстве.
Экземпляры GlyphVector создаются с помощью Font.
В приложении для обработки текста, способном кэшировать промежуточные представления текста, создание и последующее кэширование GlyphVector для использования при отрисовке — самый быстрый способ представить пользователю визуальное отображение символов.
GlyphVector связан ровно с одним Font и может предоставлять данные, полезные только в отношении этого Font. Кроме того, метрики, полученные из GlyphVector, обычно нельзя геометрически масштабировать, поскольку пикселизация и интервалы зависят от алгоритмов подгонки к сетке в Font. Чтобы точно измерить GlyphVector и входящие в него глифы, при создании GlyphVector необходимо указать преобразование масштабирования, режим сглаживания и режим дробных метрик. Эти характеристики можно получить из целевого устройства.
Для каждого глифа в GlyphVector можно получить:
- позицию глифа
- преобразование, связанное с глифом
- метрики глифа в контексте
GlyphVector. Метрики глифа могут различаться при разных преобразованиях, заданных приложением подсказках отрисовки и для разных экземпляров глифа вGlyphVector.
Изменение данных, использованных для создания GlyphVector, не изменяет состояние GlyphVector.
Предусмотрены методы для изменения позиций глифов внутри GlyphVector. Эти методы наиболее подходят для приложений, выполняющих выравнивание при отображении глифов.
Предусмотрены методы для преобразования отдельных глифов внутри GlyphVector. Эти методы в основном полезны для создания специальных эффектов.
Предусмотрены методы для получения визуальных, логических и пиксельных границ всего GlyphVector или отдельных глифов внутри GlyphVector.
Предусмотрены методы для получения Shape для GlyphVector и отдельных глифов внутри GlyphVector.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
FLAG_COMPLEX_GLYPHS |
Флаг, используемый с getLayoutFlags, который указывает, что для этого GlyphVector задано сложное соответствие глифов символам (то есть глифы сопоставляются символам не один к одному в строго возрастающем или убывающем порядке, соответствующем направлению текста). |
static final int |
FLAG_HAS_POSITION_ADJUSTMENTS |
Флаг, используемый с getLayoutFlags, который указывает, что для этого GlyphVector заданы поправки позиций. |
static final int |
FLAG_HAS_TRANSFORMS |
Флаг, используемый с getLayoutFlags, который указывает, что для этого GlyphVector заданы преобразования отдельных глифов. |
static final int |
FLAG_MASK |
Маска поддерживаемых флагов из getLayoutFlags. |
static final int |
FLAG_RUN_RTL |
Флаг, используемый с getLayoutFlags, который указывает, что для этого GlyphVector задано направление текста справа налево. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор, предназначенный для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean |
equals |
Проверяет, в точности ли указанный GlyphVector равен этому GlyphVector. |
abstract Font |
getFont() |
Возвращает Font, связанный с этим GlyphVector. |
abstract FontRenderContext |
getFontRenderContext() |
Возвращает FontRenderContext, связанный с этим GlyphVector. |
int |
getGlyphCharIndex |
Возвращает индекс символа для указанного глифа. |
int[] |
getGlyphCharIndices |
Возвращает индексы символов для указанных глифов. |
abstract int |
getGlyphCode |
Возвращает код указанного глифа. |
abstract int[] |
getGlyphCodes |
Возвращает массив кодов указанных глифов. |
abstract GlyphJustificationInfo |
getGlyphJustificationInfo |
Возвращает информацию о выравнивании для глифа с указанным индексом в этом GlyphVector. |
abstract Shape |
getGlyphLogicalBounds |
Возвращает логические границы указанного глифа в этом GlyphVector. |
abstract GlyphMetrics |
getGlyphMetrics |
Возвращает метрики глифа с указанным индексом в этом GlyphVector. |
abstract Shape |
getGlyphOutline |
Возвращает Shape, внутренняя область которой соответствует визуальному представлению указанного глифа в этом GlyphVector. |
Shape |
getGlyphOutline |
Возвращает Shape, внутренняя область которой соответствует визуальному представлению указанного глифа в этом GlyphVector, со смещением на x, y. |
Rectangle |
getGlyphPixelBounds |
Возвращает пиксельные границы глифа с указанным индексом при отрисовке этого GlyphVector в Graphics с заданным FontRenderContext в указанном месте. |
abstract Point2D |
getGlyphPosition |
Возвращает позицию указанного глифа относительно начала координат этого GlyphVector. |
abstract float[] |
getGlyphPositions |
Возвращает массив позиций указанных глифов. |
abstract AffineTransform |
getGlyphTransform |
Возвращает преобразование указанного глифа в этом GlyphVector. |
abstract Shape |
getGlyphVisualBounds |
Возвращает визуальные границы указанного глифа в GlyphVector. |
int |
getLayoutFlags() |
Возвращает флаги, описывающие глобальное состояние GlyphVector. |
abstract Rectangle2D |
getLogicalBounds() |
Возвращает логические границы этого GlyphVector. |
abstract int |
getNumGlyphs() |
Возвращает количество глифов в этом GlyphVector. |
abstract Shape |
getOutline() |
Возвращает Shape, внутренняя область которой соответствует визуальному представлению этого GlyphVector. |
abstract Shape |
getOutline |
Возвращает Shape, внутренняя область которой соответствует визуальному представлению этого GlyphVector при отрисовке в точке x, y. |
Rectangle |
getPixelBounds |
Возвращает пиксельные границы этого GlyphVector при отрисовке в графическом контексте с заданным FontRenderContext в указанном месте. |
abstract Rectangle2D |
getVisualBounds() |
Возвращает визуальные границы этого GlyphVector. Визуальные границы представляют собой ограничивающий прямоугольник контура этого GlyphVector. |
abstract void |
performDefaultLayout() |
Назначает каждому глифу в этом GlyphVector позицию по умолчанию. |
abstract void |
setGlyphPosition |
Задаёт позицию указанного глифа в этом GlyphVector. |
abstract void |
setGlyphTransform |
Задаёт преобразование указанного глифа в этом GlyphVector. |
Подробное описание полей
FLAG_HAS_TRANSFORMS
public static final int FLAG_HAS_TRANSFORMS
GlyphVector содержит преобразования отдельных глифов.- Начиная с:
- 1.4
- См. также:
FLAG_HAS_POSITION_ADJUSTMENTS
public static final int FLAG_HAS_POSITION_ADJUSTMENTS
GlyphVector содержит корректировки позиций. Если он установлен, позиции глифов не совпадают с накопленными значениями стандартных смещений глифов (например, если было выполнено кернинг-выравнивание).- Начиная с:
- 1.4
- См. также:
FLAG_RUN_RTL
public static final int FLAG_RUN_RTL
GlyphVector — справа налево. Это относится к сопоставлению глифов символам и не означает, что визуальное расположение глифов обязательно соответствует этому порядку, хотя обычно так и бывает.- Начиная с:
- 1.4
- См. также:
FLAG_COMPLEX_GLYPHS
public static final int FLAG_COMPLEX_GLYPHS
GlyphVector имеет сложное сопоставление глифов символам (то есть глифы не сопоставляются символам взаимно однозначно в строго возрастающем или убывающем порядке, соответствующем направлению записи).- Начиная с:
- 1.4
- См. также:
FLAG_MASK
public static final int FLAG_MASK
- Начиная с:
- 1.4
- См. также:
Подробное описание конструкторов
GlyphVector
protected GlyphVector()
Подробное описание методов
getFont
public abstract Font getFont()
Font, связанный с этим GlyphVector.- Возвращает:
-
Font, использованный для создания этогоGlyphVector. - См. также:
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
FontRenderContext, связанный с этим GlyphVector.- Возвращает:
-
FontRenderContext, использованный для создания этогоGlyphVector. - См. также:
performDefaultLayout
public abstract void performDefaultLayout()
GlyphVector. Это может привести к потере информации, полученной при первоначальной компоновке этого GlyphVector.getNumGlyphs
public abstract int getNumGlyphs()
GlyphVector.- Возвращает:
- количество глифов в этом
GlyphVector.
getGlyphCode
public abstract int getGlyphCode(int glyphIndex)
Font, создавшего этот GlyphVector.- Параметры:
-
glyphIndex— индекс в этомGlyphVector, соответствующий глифу, код которого требуется получить. - Возвращает:
- код глифа по указанному
glyphIndex. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector
getGlyphCodes
public abstract int[] getGlyphCodes(int beginGlyphIndex, int numEntries, int[] codeReturn)
Font, использованного для создания этого GlyphVector. Этот метод предназначен для удобства и повышения производительности при обработке кодов глифов. Если массив не передан, создаётся новый.- Параметры:
-
beginGlyphIndex— индекс в этомGlyphVector, с которого начинается получение кодов глифов -
numEntries— количество кодов глифов для получения -
codeReturn— массив, в который записываются коды глифов и который затем возвращается - Возвращает:
- массив кодов указанных глифов.
- Вызывает исключение:
-
IllegalArgumentException— еслиnumEntriesменьше 0 -
IndexOutOfBoundsException— еслиbeginGlyphIndexменьше 0 -
IndexOutOfBoundsException— если суммаbeginGlyphIndexиnumEntriesбольше количества глифов в этомGlyphVector
getGlyphCharIndex
public int getGlyphCharIndex(int glyphIndex)
- Параметры:
-
glyphIndex— индекс глифа - Возвращает:
- индекс первого символа, представленного глифом
- Начиная с:
- 1.4
getGlyphCharIndices
public int[] getGlyphCharIndices(int beginGlyphIndex, int numEntries, int[] codeReturn)
- Параметры:
-
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 не обязательно должен совпадать с FontRenderContext этого GlyphVector и может иметь значение null. Если он равен null, используется FontRenderContext этого GlyphVector. Реализация по умолчанию возвращает визуальные границы со смещением на x и y и округлением наружу до следующего целого значения (то есть возвращает целочисленный прямоугольник, охватывающий визуальные границы), не учитывая FRC. Подклассам следует переопределить этот метод.- Параметры:
-
renderFRC—FontRenderContextдляGraphics. -
x— координата x, в которой требуется отрисовать этотGlyphVector. -
y— координата y, в которой требуется отрисовать этотGlyphVector. - Возвращает:
- объект
Rectangle, охватывающий пиксели, которые могли бы быть затронуты. - Начиная с:
- 1.4
getOutline
public abstract Shape getOutline()
Shape, внутренняя область которого соответствует визуальному представлению этого GlyphVector.- Возвращает:
- объект
Shape, представляющий контур этогоGlyphVector.
getOutline
public abstract Shape getOutline(float x, float y)
Shape, внутренняя область которого соответствует визуальному представлению этого GlyphVector при отрисовке в точке x, y.- Параметры:
-
x— координата X этогоGlyphVector. -
y— координата Y этогоGlyphVector. - Возвращает:
- объект
Shape, представляющий контур этогоGlyphVectorпри отрисовке в указанных координатах.
getGlyphOutline
public abstract Shape getGlyphOutline(int glyphIndex)
Shape, внутренняя область которого соответствует визуальному представлению указанного глифа в этом GlyphVector. Контур, возвращаемый этим методом, расположен относительно начала координат каждого отдельного глифа.- Параметры:
-
glyphIndex— индекс в этомGlyphVector - Возвращает:
- объект
Shape, представляющий контур глифа по указанномуglyphIndexэтогоGlyphVector. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector
getGlyphOutline
public Shape getGlyphOutline(int glyphIndex, float x, float y)
Shape, внутренняя область которого соответствует визуальному представлению указанного глифа в этом GlyphVector, смещённому на x, y. Контур, возвращаемый этим методом, расположен относительно начала координат каждого отдельного глифа.- Параметры:
-
glyphIndex— индекс в этомGlyphVector -
x— координата X положения этогоGlyphVector -
y— координата Y положения этогоGlyphVector - Возвращает:
- объект
Shape, представляющий контур глифа по указанномуglyphIndexэтогоGlyphVectorпри отрисовке в заданных координатах. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector - Начиная с:
- 1.4
getGlyphPosition
public abstract Point2D getGlyphPosition(int glyphIndex)
GlyphVector. Если glyphIndex равно количеству глифов в этом GlyphVector, метод возвращает позицию после последнего глифа. Эта позиция используется для определения смещения всего GlyphVector.- Параметры:
-
glyphIndex— индекс в этомGlyphVector - Возвращает:
- объект
Point2D, представляющий позицию глифа по указанномуglyphIndex. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше количества глифов в этомGlyphVector - См. также:
setGlyphPosition
public abstract void setGlyphPosition(int glyphIndex, Point2D newPos)
GlyphVector. Если glyphIndex равно количеству глифов в этом GlyphVector, метод задаёт позицию после последнего глифа. Эта позиция используется для определения смещения всего GlyphVector.- Параметры:
-
glyphIndex— индекс в этомGlyphVector -
newPos—Point2D, в которой следует расположить глиф по указанномуglyphIndex - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше количества глифов в этомGlyphVector - См. также:
getGlyphTransform
public abstract AffineTransform getGlyphTransform(int glyphIndex)
GlyphVector. Преобразование задаётся относительно позиции глифа. Если специальное преобразование не применялось, может быть возвращено null. Возвращаемое значение null указывает на тождественное преобразование.- Параметры:
-
glyphIndex— индекс в этомGlyphVector - Возвращает:
- объект
AffineTransform, представляющий преобразование глифа по указанномуglyphIndex. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector - См. также:
setGlyphTransform
public abstract void setGlyphTransform(int glyphIndex, AffineTransform newTX)
GlyphVector. Преобразование задаётся относительно позиции глифа. Аргумент null со значением newTX указывает, что для указанного глифа специальное преобразование не применяется. Этот метод можно использовать для поворота, отражения, перемещения и масштабирования глифа. Добавление преобразования может существенно повлиять на производительность.- Параметры:
-
glyphIndex— индекс в этомGlyphVector -
newTX— новое преобразование глифа в позицииglyphIndex - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector - См. также:
getLayoutFlags
public int getLayoutFlags()
- Возвращает:
- значение int, содержащее флаги, описывающие состояние
- Начиная с:
- 1.4
- См. также:
getGlyphPositions
public abstract float[] getGlyphPositions(int beginGlyphIndex, int numEntries, float[] positionReturn)
beginGlyphIndex + position/2. Элементы массива с нечётными номерами, начиная с позиции один, содержат координаты Y глифа с номером beginGlyphIndex + (position-1)/2. Если beginGlyphIndex равно количеству глифов в этом GlyphVector, метод получает позицию после последнего глифа; эта позиция используется для определения смещения всего GlyphVector.- Параметры:
-
beginGlyphIndex— индекс, с которого начинается получение позиций глифов -
numEntries— количество глифов для получения -
positionReturn— массив, в который записываются позиции глифов и который затем возвращается. - Возвращает:
- массив позиций глифов, указанных параметрами
beginGlyphIndexиnumEntries. - Вызывает исключение:
-
IllegalArgumentException— еслиnumEntriesменьше 0 -
IndexOutOfBoundsException— еслиbeginGlyphIndexменьше 0 -
IndexOutOfBoundsException— если суммаbeginGlyphIndexиnumEntriesбольше количества глифов в этомGlyphVectorплюс один
getGlyphLogicalBounds
public abstract Shape getGlyphLogicalBounds(int glyphIndex)
GlyphVector. Эти логические границы имеют в общей сложности четыре стороны: две стороны параллельны базовой линии с учётом преобразования глифа, а две другие являются общими с соседними глифами, если они есть. Этот метод полезен для проверки попадания в указанный глиф, размещения курсора у начального или конечного края глифа, а также для рисования области выделения вокруг указанного глифа.- Параметры:
-
glyphIndex— индекс в этомGlyphVector, соответствующий глифу, логические границы которого требуется получить - Возвращает:
- объект
Shape, представляющий логические границы глифа по указанномуglyphIndex. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector - См. также:
getGlyphVisualBounds
public abstract Shape getGlyphVisualBounds(int glyphIndex)
GlyphVector. Границы, возвращаемые этим методом, расположены относительно начала координат каждого отдельного глифа.- Параметры:
-
glyphIndex— индекс в этомGlyphVector, соответствующий глифу, визуальные границы которого требуется получить - Возвращает:
- объект
Shape, представляющий визуальные границы глифа по указанномуglyphIndex. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector - См. также:
getGlyphPixelBounds
public Rectangle getGlyphPixelBounds(int index, FontRenderContext renderFRC, float x, float y)
GlyphVector в Graphics с указанным FontRenderContext в заданной точке. renderFRC не обязательно должен совпадать с FontRenderContext этого GlyphVector и может иметь значение null. Если он равен null, используется FontRenderContext этого GlyphVector. Реализация по умолчанию возвращает визуальные границы глифа со смещением на x и y и округлением наружу до следующего целого значения, не учитывая FRC. Подклассам следует переопределить этот метод.- Параметры:
-
index— индекс глифа. -
renderFRC—FontRenderContextдляGraphics. -
x— позиция X, в которой требуется отрисовать этотGlyphVector. -
y— позиция Y, в которой требуется отрисовать этотGlyphVector. - Возвращает:
- объект
Rectangle, охватывающий пиксели, которые могли бы быть затронуты. - Начиная с:
- 1.4
getGlyphMetrics
public abstract GlyphMetrics getGlyphMetrics(int glyphIndex)
GlyphVector.- Параметры:
-
glyphIndex— индекс в этомGlyphVector, соответствующий глифу, метрики которого требуется получить - Возвращает:
- объект
GlyphMetrics, представляющий метрики глифа по указанномуglyphIndexв этомGlyphVector. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector
getGlyphJustificationInfo
public abstract GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex)
GlyphVector.- Параметры:
-
glyphIndex— индекс в этомGlyphVector, соответствующий глифу, свойства выравнивания которого требуется получить - Возвращает:
- объект
GlyphJustificationInfo, представляющий свойства выравнивания глифа по указанномуglyphIndexв этомGlyphVector. - Вызывает исключение:
-
IndexOutOfBoundsException— еслиglyphIndexменьше 0 или больше либо равен количеству глифов в этомGlyphVector
equals
public abstract boolean equals(GlyphVector set)
GlyphVector равен этому GlyphVector.- Параметры:
-
set— указанныйGlyphVectorдля проверки - Возвращает:
-
true, если указанныйGlyphVectorравен этомуGlyphVector; в противном случае —false.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/font/GlyphVector.html