Класс 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. |
Подробное описание полей
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/FontMetrics.html
getMaxDescent().