Класс FontMetrics
- Все реализуемые интерфейсы:
Serializable
public abstract class FontMetrics extends Object implements Serializable
FontMetrics определяет объект метрик шрифта, который содержит информацию об отображении определённого шрифта на определённом экране. Примечание для разработчиков подклассов: Поскольку многие из этих методов образуют замкнутые взаимно рекурсивные циклы, необходимо позаботиться о том, чтобы реализовать хотя бы один метод в каждом таком цикле. Это позволит предотвратить бесконечную рекурсию при использовании вашего подкласса. В частности, для обеспечения корректной работы и предотвращения бесконечной рекурсии рекомендуется переопределить следующий минимальный набор методов (хотя возможны и другие варианты наборов):
Обратите внимание, что реализации этих методов неэффективны, поэтому обычно их переопределяют, используя более эффективные реализации, специфичные для конкретного инструментария.
Когда приложение запрашивает размещение символа в позиции (x, y), символ размещается так, чтобы его опорная точка (обозначенная точкой на сопроводительном изображении) находилась в этой позиции. Опорная точка задаёт горизонтальную линию, называемую базовой линией символа. При обычной печати базовые линии символов должны совпадать.
Кроме того, каждый символ шрифта имеет верхний вынос, нижний вынос и ширину продвижения. Верхний вынос — это расстояние, на которое символ поднимается над базовой линией. Нижний вынос — это расстояние, на которое символ опускается ниже базовой линии. Ширина продвижения указывает позицию, в которой AWT должен разместить следующий символ.
Массив символов или строка также могут иметь верхний вынос, нижний вынос и ширину продвижения. Верхний вынос массива равен максимальному верхнему выносу любого символа в массиве. Нижний вынос равен максимальному нижнему выносу любого символа в массиве. Ширина продвижения равна сумме ширин продвижения всех символов в массиве. Продвижение String — это расстояние вдоль базовой линии String. Это расстояние является шириной, которую следует использовать для центрирования или выравнивания по правому краю String.
Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов, измеренных по отдельности, поскольку ширина символа может меняться в зависимости от контекста. Например, в арабском тексте форма символа может меняться, чтобы соединяться с другими символами. Кроме того, в некоторых письменностях определённые последовательности символов могут отображаться в виде одной формы, называемой лигатурой. Измерение символов по отдельности не учитывает такие преобразования.
Метрики шрифта отсчитываются относительно базовой линии, то есть обычно не зависят от поворота шрифта (за исключением возможных эффектов экранного хинтинга). См. Font.
- Начиная с версии:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Font |
font |
Фактический Font, на основе которого созданы метрики шрифта. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект FontMetrics для получения сведений о высоте и ширине указанного Font и конкретных глифах символов в этом Font. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
bytesWidth |
Возвращает общую ширину продвижения для отображения указанного массива байтов в этом Font. |
int |
charsWidth |
Возвращает общую ширину продвижения для отображения указанного массива символов в этом Font. |
int |
charWidth |
Возвращает ширину продвижения указанного символа в этом Font. |
int |
charWidth |
Возвращает ширину продвижения указанного символа в этом Font. |
int |
getAscent() |
Определяет верхний вынос шрифта для Font, описанного этим объектом FontMetrics. |
int |
getDescent() |
Определяет нижний вынос шрифта для Font, описанного этим объектом FontMetrics. |
Font |
getFont() |
Возвращает Font, описанный этим объектом FontMetrics. |
FontRenderContext |
getFontRenderContext() |
Возвращает FontRenderContext, используемый этим объектом FontMetrics для измерения текста. |
int |
getHeight() |
Возвращает стандартную высоту строки текста в этом шрифте. |
int |
getLeading() |
Определяет стандартный интерлиньяж для Font, описанного этим объектом FontMetrics. |
LineMetrics |
getLineMetrics |
Возвращает объект LineMetrics для указанного массива символов в заданном контексте Graphics. |
LineMetrics |
getLineMetrics |
|
LineMetrics |
getLineMetrics |
|
LineMetrics |
getLineMetrics |
|
int |
getMaxAdvance() |
Возвращает оценку максимальной ширины продвижения любого символа в Font, описанном этим объектом FontMetrics, с важными оговорками, перечисленными ниже. |
int |
getMaxAscent() |
Определяет максимальный верхний вынос для Font, описанного этим объектом FontMetrics. |
Rectangle2D |
getMaxCharBounds |
Возвращает границы символа с максимальными границами в указанном контексте Graphics. |
int |
getMaxDecent() |
Устарел. |
int |
getMaxDescent() |
Определяет максимальный нижний вынос для Font, описанного этим объектом FontMetrics. |
Rectangle2D |
getStringBounds |
Возвращает границы указанного массива символов в заданном контексте Graphics. |
Rectangle2D |
getStringBounds |
Возвращает границы указанного String в заданном контексте Graphics. |
Rectangle2D |
getStringBounds |
Возвращает границы указанного String в заданном контексте Graphics. |
Rectangle2D |
getStringBounds |
Возвращает границы символов с указанными индексами в CharacterIterator в заданном контексте Graphics. |
int[] |
getWidths() |
Возвращает ширины продвижения первых 256 символов в Font. |
boolean |
hasUniformLineMetrics() |
Проверяет, имеет ли Font единообразные метрики строк. |
int |
stringWidth |
Возвращает общую ширину продвижения для отображения указанного String в этом Font. |
String |
toString() |
Возвращает представление значений этого объекта FontMetrics в виде String. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии. Финализация признана устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет пробуждён, обычно посредством уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет пробуждён, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время. |
final void |
wait |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет пробуждён, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время. |
Подробное описание полей
font
protected Font font
Font, на основе которого создаются метрики шрифта. Не может быть равен null.- См. также:
Подробное описание конструкторов
FontMetrics
protected FontMetrics(Font font)
FontMetrics для получения сведений о высоте и ширине указанного Font и отдельных глифов символов в этом Font.- Параметры:
-
font—Font - См. также:
Подробное описание методов
getFont
public Font getFont()
Font, описанный этим объектом FontMetrics.- Возвращает:
Font, описанный этим объектомFontMetrics.
getFontRenderContext
public FontRenderContext getFontRenderContext()
FontRenderContext, используемый этим объектом FontMetrics для измерения текста. Обратите внимание: методы этого класса, принимающие параметр Graphics, измеряют текст с помощью FontRenderContext этого объекта Graphics, а не этого FontRenderContext
- Возвращает:
FontRenderContext, используемый этим объектомFontMetrics.- Начиная с:
- 1.6
getLeading
public int getLeading()
Font, описанного этим объектом FontMetrics. Стандартный интерлиньяж, или межстрочный интервал, — это логическая величина пространства, которое следует резервировать между нижней границей одной строки текста и верхней границей следующей строки. Метрика высоты рассчитывается с учетом этого дополнительного пространства.- Возвращает:
- стандартный интерлиньяж
Font. - См. также:
getAscent
public int getAscent()
Font, описанного этим объектом FontMetrics. Верхний вынос шрифта — это расстояние от базовой линии шрифта до верхней границы большинства буквенно-цифровых символов. Некоторые символы в Font могут выходить выше линии верхнего выноса шрифта.- Возвращает:
- верхний вынос шрифта
Font. - См. также:
getDescent
public int getDescent()
Font, описанного этим объектом FontMetrics. Нижний вынос шрифта — это расстояние от базовой линии шрифта до нижней границы большинства буквенно-цифровых символов с нижними выносными элементами. Некоторые символы в Font могут выходить ниже линии нижнего выноса шрифта.- Возвращает:
- нижний вынос шрифта
Font. - См. также:
getHeight
public int getHeight()
- Возвращает:
- стандартную высоту шрифта.
- См. также:
getMaxAscent
public int getMaxAscent()
Font, описанного этим объектом FontMetrics. Ни один символ не выходит выше базовой линии шрифта больше, чем на эту высоту.- Возвращает:
- максимальный верхний вынос любого символа в
Font. - См. также:
getMaxDescent
public int getMaxDescent()
Font, описанного этим объектом FontMetrics. Ни один символ не выходит ниже базовой линии шрифта больше, чем на эту высоту.- Возвращает:
- максимальный нижний вынос любого символа в
Font. - См. также:
getMaxDecent
@Deprecated public int getMaxDecent()
getMaxDescent().- Возвращает:
- максимальный нижний вынос любого символа в
Font. - См. также:
getMaxAdvance
public int getMaxAdvance()
Font, описанного этим объектом FontMetrics, с важными оговорками, перечисленными ниже. Продвижение — это расстояние от самой левой точки, используемой для размещения символа, до самой правой точки вдоль базовой линии. Оно не совпадает с видимой шириной изображения глифа, представляющего символ.
Продвижение String не обязательно равно сумме продвижений его символов. Оно может существенно отличаться, если для правильного отображения требуется сложная компоновка текста.
К оговоркам, относящимся к возвращаемому значению, относятся следующие:
- Возвращаемое значение основано на сведениях из некоторого системного шрифта, и корректность этих сведений не контролируется AWT.
- При сопоставлении определенных символов с глифами в некотором контексте отображения инструкции самого шрифта вместе с процессом растеризации могут привести к тому, что ширина продвижения некоторых глифов окажется больше указанной.
- Если запрошен шрифт в некотором стиле, например
Font.BOLD, для которого нет точного соответствия, методы, используемые для удовлетворения запроса на отображение, также могут привести к тому, что ширина глифов окажется больше указанного максимума. - В зависимости от реализации логическому или физическому шрифту AWT может потребоваться найти некоторые символы в одном или нескольких резервных шрифтах, если основной физический шрифт не поддерживает эти символы. Эти шрифты могут быть неизвестны или не учитываться при вычислении возвращаемой максимальной ширины продвижения. Часто проектный центр таких резервных шрифтов ориентирован на письменность, отличную от той, на которую ориентирован проектный центр основного шрифта, поэтому ширина продвижения может существенно различаться. Это также может привести к неожиданному результату: шрифт, например
Font.MONOSPACED, может отображать глифы неодинаковой ширины.
String не обязательно равна сумме ширин продвижения, это значение следует использовать с осторожностью. Итак, этот метод не дает безусловных гарантий и даже не гарантирует точность в пределах заданной погрешности. Поэтому его следует использовать только для оценки общего пространства, достаточного для отображения некоторого количества еще неизвестных символов шрифта. В зависимости от конкретного текста и контекста отображения эта оценка может быть как завышенной, так и заниженной.
- Возвращает:
- приблизительную максимальную ширину продвижения любого символа в
Fontили-1, если максимальная ширина продвижения неизвестна.
charWidth
public int charWidth(int codePoint)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание: продвижение String не обязательно равно сумме продвижений его символов. Этот метод не проверяет, является ли указанный символ допустимой кодовой точкой Unicode. При необходимости вызывающий код должен проверить значение символа с помощью Character.isValidCodePoint.
- Параметры:
-
codePoint— символ (кодовая точка Unicode), ширину которого необходимо измерить - Возвращает:
- ширину продвижения указанного символа в
Font, описанном этим объектомFontMetrics. - См. также:
charWidth
public int charWidth(char ch)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание: продвижение String не обязательно равно сумме продвижений его символов. Примечание: этот метод не обрабатывает дополнительные символы. Для поддержки всех символов Unicode, включая дополнительные, используйте метод charWidth(int).
- Параметры:
-
ch— символ, ширину которого необходимо измерить - Возвращает:
- ширину продвижения указанного символа в
Font, описанном этим объектомFontMetrics. - См. также:
stringWidth
public int stringWidth(String str)
String этим Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Обратите внимание: продвижение String не обязательно равно сумме продвижений его символов.
- Параметры:
-
str—String, ширину которого необходимо измерить - Возвращает:
- ширину продвижения указанного
StringвFont, описанном этимFontMetrics. - Выбрасывает:
-
NullPointerException— если str равен null. - См. также:
charsWidth
public int charsWidth(char[] data, int off, int len)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению String символов в указанном диапазоне.- Параметры:
-
data— массив символов, ширину которого необходимо измерить -
off— начальное смещение символов в массиве -
len— количество символов массива, ширину которых необходимо измерить - Возвращает:
- ширину продвижения подмассива указанного массива
charв шрифте, описанном этим объектомFontMetrics. - Выбрасывает:
-
NullPointerException— еслиdataравен null. -
IndexOutOfBoundsException— если аргументыoffиlenуказывают на символы за пределами массиваdata. - См. также:
bytesWidth
public int bytesWidth(byte[] data, int off, int len)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению String символов в указанном диапазоне.- Параметры:
-
data— массив байтов, ширину которого необходимо измерить -
off— начальное смещение байтов в массиве -
len— количество байтов массива, ширину которых необходимо измерить - Возвращает:
- ширину продвижения подмассива указанного массива
byteвFont, описанном этим объектомFontMetrics. - Выбрасывает:
-
NullPointerException— еслиdataравен null. -
IndexOutOfBoundsException— если аргументыoffиlenуказывают на байты за пределами массиваdata. - См. также:
getWidths
public int[] getWidths()
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание: продвижение String не обязательно равно сумме продвижений его символов.- Возвращает:
- массив, содержащий ширину продвижения символов в
Font, описанном этим объектомFontMetrics.
hasUniformLineMetrics
public boolean hasUniformLineMetrics()
Font единообразные метрики строк. Составной шрифт может состоять из нескольких разных шрифтов для поддержки различных наборов символов. В таких случаях объекты FontLineMetrics не являются единообразными. У разных шрифтов могут различаться верхний и нижний выносы, метрики и прочие параметры. Эти сведения иногда необходимы для измерения строк и разбиения текста на строки.- Возвращает:
-
true, если шрифт имеет единообразные метрики строк; в противном случае —false. - См. также:
getLineMetrics
public LineMetrics getLineMetrics(String str, Graphics context)
- Параметры:
-
str— указаннаяString -
context— указанный контекстGraphics - Возвращает:
- объект
LineMetrics, созданный с указаннымиStringи контекстомGraphics. - См. также:
getLineMetrics
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
- Параметры:
-
str— указаннаяString -
beginIndex— начальное смещение вstr -
limit— конечное смещение вstr -
context— указанный контекстGraphics - Возвращает:
- объект
LineMetrics, созданный с указаннымиStringи контекстомGraphics. - См. также:
getLineMetrics
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
LineMetrics для указанного массива символов в указанном контексте Graphics.- Параметры:
-
chars— указанный массив символов -
beginIndex— начальное смещение вchars -
limit— конечное смещение вchars -
context— указанный контекстGraphics - Возвращает:
- объект
LineMetrics, созданный с указанным массивом символов и контекстомGraphics. - См. также:
getLineMetrics
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
- Параметры:
-
ci— указанныйCharacterIterator -
beginIndex— начальное смещение вci -
limit— конечный индексci -
context— указанный контекстGraphics - Возвращает:
- объект
LineMetrics, созданный с указанными аргументами. - См. также:
getStringBounds
public Rectangle2D getStringBounds(String str, Graphics context)
String в указанном контексте Graphics. Границы используются для компоновки String. Примечание: возвращаемые границы заданы относительно базовой линии (см. class notes).
- Параметры:
-
str— указаннаяString -
context— указанный контекстGraphics - Возвращает:
- объект
Rectangle2D, представляющий ограничивающий прямоугольник указаннойStringв указанном контекстеGraphics. - См. также:
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
String в указанном контексте Graphics. Границы используются для компоновки String. Примечание: возвращаемые границы заданы относительно базовой линии (см. class notes).
- Параметры:
-
str— указаннаяString -
beginIndex— смещение началаstr -
limit— конечное смещениеstr -
context— указанный контекстGraphics - Возвращает:
- объект
Rectangle2D, представляющий ограничивающий прямоугольник указаннойStringв указанном контекстеGraphics. - См. также:
getStringBounds
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
Graphics. Границы используются для компоновки String, созданного с помощью указанного массива символов, beginIndex и limit. Примечание: возвращаемые границы заданы относительно базовой линии (см. class notes).
- Параметры:
-
chars— массив символов -
beginIndex— начальное смещение массива символов -
limit— конечное смещение массива символов -
context— указанный контекстGraphics - Возвращает:
- объект
Rectangle2D, представляющий ограничивающий прямоугольник указанного массива символов в указанном контекстеGraphics. - См. также:
getStringBounds
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
CharacterIterator, в указанном контексте Graphics. Примечание: возвращаемые границы заданы относительно базовой линии (см. class notes).
- Параметры:
-
ci— указанныйCharacterIterator -
beginIndex— начальное смещение вci -
limit— конечный индексci -
context— указанный контекстGraphics - Возвращает:
- объект
Rectangle2D, представляющий ограничивающий прямоугольник символов с указанными индексами вCharacterIteratorв указанном контекстеGraphics. - См. также:
getMaxCharBounds
public Rectangle2D getMaxCharBounds(Graphics context)
Graphics.- Параметры:
-
context— указанный контекстGraphics - Возвращает:
- объект
Rectangle2D, представляющий ограничивающий прямоугольник символа с максимальными границами. - См. также:
toString
© 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.
getMaxDescent().