Класс 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 есть корректировки позиции. Если это значение 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-FontRenderContextGraphics. -
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.- Parameters:
-
x- координата X этогоGlyphVector. -
y- координата Y этогоGlyphVector. - Returns:
Shape, являющееся контуром этогоGlyphVectorпри рендеринге в указанных координатах.
getGlyphOutline
public abstract Shape getGlyphOutline(int glyphIndex)
Shape, внутренняя часть которого соответствует визуальному представлению указанного глифа внутри этого GlyphVector. Контур, возвращаемый этим методом, позиционируется вокруг начала каждого отдельного глифа.- Parameters:
-
glyphIndex- индекс в этомGlyphVector - Returns:
Shape, являющийся контуром глифа в указаннойglyphIndexэтогоGlyphVector.- Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector
getGlyphOutline
public Shape getGlyphOutline(int glyphIndex, float x, float y)
Shape, внутренняя часть которого соответствует визуальному представлению указанного глифа внутри этого GlyphVector, смещенного на x, y. Контур, возвращаемый этим методом, позиционируется вокруг начала каждого отдельного глифа.- Parameters:
-
glyphIndex- индекс в этомGlyphVector -
x- координата X позиции этогоGlyphVector -
y- координата Y позиции этогоGlyphVector - Returns:
Shape, являющийся контуром глифа в указаннойglyphIndexэтогоGlyphVectorпри рендеринге в указанных координатах.- Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector - Since:
- 1.4
getGlyphPosition
public abstract Point2D getGlyphPosition(int glyphIndex)
GlyphVector. Если glyphIndex равно количеству глифов в этом GlyphVector, этот метод возвращает позицию после последнего глифа. Эта позиция используется для определения продвижения всего GlyphVector.- Parameters:
-
glyphIndex- индекс в этомGlyphVector - Returns:
- объект
Point2D, представляющий позицию глифа в указаннойglyphIndex. - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше количества глифов в этомGlyphVector - See Also:
setGlyphPosition
public abstract void setGlyphPosition(int glyphIndex, Point2D newPos)
GlyphVector. Если glyphIndex равно количеству глифов в этом GlyphVector, этот метод устанавливает позицию после последнего глифа. Эта позиция используется для определения продвижения всего GlyphVector.- Parameters:
-
glyphIndex- индекс в этомGlyphVector -
newPos-Point2D, в котором необходимо расположить глиф в указаннойglyphIndex - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше количества глифов в этомGlyphVector - See Also:
getGlyphTransform
public abstract AffineTransform getGlyphTransform(int glyphIndex)
GlyphVector. Преобразование относительно позиции глифа. Если не было применено специального преобразования, может быть возвращено null. Возврат null указывает на тождественное преобразование.- Parameters:
-
glyphIndex- индекс в этомGlyphVector - Returns:
- объект
AffineTransform, являющийся преобразованием глифа в указаннойglyphIndex. - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector - See Also:
setGlyphTransform
public abstract void setGlyphTransform(int glyphIndex, AffineTransform newTX)
GlyphVector. Преобразование относительно позиции глифа. Аргумент null для newTX указывает, что для указанного глифа не применяется специальное преобразование. Этот метод может использоваться для поворота, отражения, перемещения и масштабирования глифа. Добавление преобразования может привести к существенным изменениям производительности.- Parameters:
-
glyphIndex- индекс в этомGlyphVector -
newTX- новое преобразование глифа вglyphIndex - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector - See Also:
getLayoutFlags
public int getLayoutFlags()
- Returns:
- целое число, содержащее флаги, описывающие состояние
- Since:
- 1.4
- See Also:
getGlyphPositions
public abstract float[] getGlyphPositions(int beginGlyphIndex, int numEntries, float[] positionReturn)
beginGlyphIndex + position/2. Нечётные индексы, начиная с единицы, — координаты Y глифа с номером beginGlyphIndex + (position-1)/2. Если beginGlyphIndex равно количеству глифов в этом GlyphVector, этот метод получает позицию после последнего глифа, и эта позиция используется для определения продвижения всего GlyphVector.- Parameters:
-
beginGlyphIndex- индекс, с которого начинать получение позиций глифов -
numEntries- количество глифов для получения -
positionReturn- массив, который получит позиции глифов и будет возвращён. - Returns:
- массив позиций глифов, указанных
beginGlyphIndexиnumEntries. - Throws:
-
IllegalArgumentException- еслиnumEntriesменьше 0 -
IndexOutOfBoundsException- еслиbeginGlyphIndexменьше 0 -
IndexOutOfBoundsException- если суммаbeginGlyphIndexиnumEntriesбольше количества глифов в этомGlyphVectorплюс один
getGlyphLogicalBounds
public abstract Shape getGlyphLogicalBounds(int glyphIndex)
GlyphVector. Эти логические границы имеют четыре грани, при этом две грани параллельны базовой линии под преобразованием глифа, а две другие грани совмещаются с соседними глифами, если они присутствуют. Этот метод полезен для проверки нажатия на указанный глиф, позиционирования курсора в начале или конце глифа и для рисования выделенной области вокруг указанного глифа.- Parameters:
-
glyphIndex- индекс в этомGlyphVector, соответствующий глифу, для которого требуется получить логические границы - Returns:
Shape, являющиеся логическими границами глифа в указаннойglyphIndex.- Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector - See Also:
getGlyphVisualBounds
public abstract Shape getGlyphVisualBounds(int glyphIndex)
GlyphVector. Границы, возвращаемые этим методом, расположены вокруг начала каждого отдельного глифа.- Parameters:
-
glyphIndex- индекс в этомGlyphVector, соответствующий глифу, для которого необходимо получить визуальные границы - Returns:
- a
Shape— визуальные границы глифа по указанномуglyphIndex. - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector - See Also:
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. Подклассы должны переопределять этот метод.- Parameters:
-
index- индекс глифа. -
renderFRC-FontRenderContextGraphics. -
x- позиция X для отрисовки этогоGlyphVector. -
y- позиция Y для отрисовки этогоGlyphVector. - Returns:
- a
Rectangleограничивающий пиксели, которые будут затронуты. - Since:
- 1.4
getGlyphMetrics
public abstract GlyphMetrics getGlyphMetrics(int glyphIndex)
GlyphVector.- Parameters:
-
glyphIndex- индекс в этомGlyphVector, соответствующий глифу, для которого необходимо получить метрики - Returns:
- объект
GlyphMetrics, представляющий метрики глифа по указанномуglyphIndexв этомGlyphVector. - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector
getGlyphJustificationInfo
public abstract GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex)
GlyphVector.- Parameters:
-
glyphIndex- индекс в этомGlyphVector, соответствующий глифу, для получения его свойств выравнивания - Returns:
- объект
GlyphJustificationInfo, представляющий свойства выравнивания глифа по указанномуglyphIndexв этомGlyphVector. - Throws:
-
IndexOutOfBoundsException- еслиglyphIndexменьше 0 или больше или равно количеству глифов в этомGlyphVector
equals
public abstract boolean equals(GlyphVector set)
GlyphVector точным эквивалентом этому GlyphVector.- Parameters:
-
set- указанныйGlyphVectorдля проверки - Returns:
-
trueесли указанныйGlyphVectorравен этомуGlyphVector;falseв противном случае.
© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/font/GlyphVector.html