Класс 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. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии. Финализация признана устаревшей и подлежит удалению в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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 есть корректировки позиций. Если значение этого флага равно true, позиции глифов не совпадают с накопленными значениями перемещения по умолчанию для глифов (например, если применён кернинг).- Начиная с:
- 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.