Класс 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()
FontMetrics.- Возвращает:
- шрифт, описанный этим объектом
FontMetrics.
getFontRenderContext
public FontRenderContext getFontRenderContext()
FontRenderContext, используемый этим объектом FontMetrics для измерения текста. Обратите внимание, что методы в этом классе, принимающие параметр Graphics, измеряют текст, используя FontRenderContext этого объекта Graphics, а не этого объекта FontRenderContext
- Возвращает:
FontRenderContext, используемый этим объектомFontMetrics.- С:
- 1.6
getLeading
public int getLeading()
FontMetrics. Стандартное ведущее значение, или межстрочный интервал, представляет собой логическое количество пространства, отводимого между спуском одной строки текста и восходом следующей строки. Метрика высоты вычисляется с учётом этого дополнительного пространства.- Возвращает:
- стандартное ведущее значение шрифта.
- См. также:
getAscent
public int getAscent()
FontMetrics. Восходящая часть шрифта — это расстояние от базовой линии шрифта до верхней части большинства букв и цифр. Некоторые символы в этом Font могут выходить за пределы линии восходящей части шрифта.- Возвращает:
- восходящую часть шрифта.
- См. также:
getDescent
public int getDescent()
FontMetrics. Нисходящая часть шрифта — это расстояние от базовой линии шрифта до нижней части большинства букв и цифр с нисходящими элементами. Некоторые символы в этом Font могут выходить за пределы линии нисходящей части шрифта.- Возвращает:
- нисходящую часть шрифта.
- См. также:
getHeight
public int getHeight()
- Возвращает:
- стандартную высоту шрифта.
- См. также:
getMaxAscent
public int getMaxAscent()
FontMetrics. Ни один символ не выходит за пределы базовой линии шрифта, превышая эту высоту.- Возвращает:
- максимальную восходящую часть любого символа в шрифте.
- См. также:
getMaxDescent
public int getMaxDescent()
FontMetrics. Ни один символ не выходит за пределы базовой линии шрифта, опустившись ниже этой высоты.- Возвращает:
- максимальную нисходящую часть любого символа в шрифте.
- См. также:
getMaxDecent
@Deprecated public int getMaxDecent()
getMaxDescent().- Возвращает:
- максимальную нисходящую часть любого символа в шрифте.
- См. также:
getMaxAdvance
public int getMaxAdvance()
FontMetrics, с важными оговорками, перечисленными ниже. Расширение — это расстояние от самой левой точки, используемой для позиционирования символа, до самой правой точки вдоль базовой линии. Это не то же самое, что видимая ширина изображения глифа, представляющего символ.
Расширение символа не обязательно равно сумме расширений его составляющих символов. Оно может существенно отличаться, если для правильного отображения требуется сложная компоновка текста.
К оговоркам по поводу полученного значения относятся:
- Возвращаемое значение зависит от информации, полученной от системного шрифта, и корректность этой информации не контролируется AWT.
- Когда конкретные символы отображаются в виде глифов в определённом контексте отображения, инструкции в самом шрифте вместе с процессом растрирования могут привести к тому, что некоторым глифам будет присвоено большее расширение, чем указано.
- Когда шрифт запрашивается с определённым стилем, например,
Font.BOLD, для которого нет точного соответствия, методы для удовлетворения запроса отображения могут аналогичным образом привести к глифам, которые шире, чем указано. - В зависимости от реализации, логическому шрифту или физическому шрифту AWT может потребоваться найти некоторые символы из одного или нескольких "резервных" шрифтов, если основной физический шрифт не поддерживает этот символ. Эти шрифты могут быть неизвестны или не учитываются при расчёте указанного максимального расширения. Часто в центре проектирования таких резервных шрифтов используется другой алфавит, чем в центре проектирования основного шрифта, поэтому их расширения могут сильно отличаться. Это также может привести к непредвиденному результату, что шрифт, например,
Font.MONOSPACED, может отображать глифы, которые не имеют одинаковой ширины.
В заключение, этот метод не даёт никаких абсолютных гарантий, и даже не может гарантировать правильность с каким-либо порогом ошибки. Поэтому его следует использовать в лучшем случае только для оценки общего пространства, достаточного для отображения некоторого количества пока неизвестных символов из шрифта. И это может быть как переоценка, так и недооценка, в зависимости от конкретного текста и контекста отображения.
- Возвращает:
- приблизительная максимальная ширина продвижения любого символа в шрифте, или
-1, если максимальная ширина продвижения неизвестна.
charWidth
public int charWidth(int codePoint)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов. Этот метод не проверяет, является ли указанный символ допустимым кодовым точкой Unicode. Вызывающий метод должен проверить значение символа, используя Character.isValidCodePoint, если это необходимо.
- Parameters:
-
codePoint- символ (кодовая точка Unicode), подлежащий измерению - Returns:
- ширина продвижения указанного символа в
Font, описанном этим объектомFontMetrics. - See Also:
charWidth
public int charWidth(char ch)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов. Примечание: Этот метод не поддерживает дополнительные символы. Для поддержки всех символов Unicode, включая дополнительные символы, используйте метод charWidth(int).
- Parameters:
-
ch- символ, подлежащий измерению - Returns:
- ширина продвижения указанного символа в
Font, описанном этим объектомFontMetrics. - See Also:
stringWidth
public int stringWidth(String str)
String в этом Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов.
- Parameters:
-
str- измеряемаяString - Returns:
- ширина продвижения указанной
StringвFont, описанном этим объектомFontMetrics. - Throws:
-
NullPointerException- если str равно null. - See Also:
charsWidth
public int charsWidth(char[] data, int off, int len)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению String символов в указанном диапазоне.- Parameters:
-
data- массив символов, подлежащий измерению -
off- начальный смещение символов в массиве -
len- количество символов, подлежащих измерению в массиве - Returns:
- ширина продвижения подмассива указанного массива
charв шрифте, описанном этим объектомFontMetrics. - Throws:
-
NullPointerException- еслиdataравно null. -
IndexOutOfBoundsException- если аргументыoffиlenиндексируют символы за пределами границ массиваdata. - See Also:
bytesWidth
public int bytesWidth(byte[] data, int off, int len)
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению String символов в указанном диапазоне.- Parameters:
-
data- массив байтов, подлежащий измерению -
off- начальный смещение байтов в массиве -
len- количество байтов, подлежащих измерению в массиве - Returns:
- ширина продвижения подмассива указанного массива
byteвFont, описанном этим объектомFontMetrics. - Throws:
-
NullPointerException- еслиdataравно null. -
IndexOutOfBoundsException- если аргументыoffиlenиндексируют байты за пределами границ массиваdata. - See Also:
getWidths
public int[] getWidths()
Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов.- Returns:
- массив, хранящий ширины продвижения символов в
Font, описанном этим объектомFontMetrics.
hasUniformLineMetrics
public boolean hasUniformLineMetrics()
Font унифицированными метриками строк. Композитный шрифт может состоять из нескольких различных шрифтов для покрытия различных наборов символов. В таких случаях объекты FontLineMetrics не являются унифицированными. Разные шрифты могут иметь различный подъем, спуск, метрики и т. д. Эта информация иногда необходима для измерения строк и разбиения строк на строки.- Returns:
-
true, если шрифт имеет унифицированные метрики строк;falseв противном случае. - See Also:
getLineMetrics
public LineMetrics getLineMetrics(String str, Graphics context)
- Parameters:
-
str- указаннаяString -
context- указанный контекстGraphics - Returns:
- объект
LineMetrics, созданный с указаннойStringи контекстомGraphics. - See Also:
getLineMetrics
public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
- Parameters:
-
str- указаннаяString -
beginIndex- начальный смещениеstr -
limit- конечный смещениеstr -
context- указанный контекстGraphics - Returns:
- объект
LineMetrics, созданный с указаннойStringи контекстомGraphics. - See Also:
getLineMetrics
public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
LineMetrics для указанного массива символов в указанном контексте Graphics.- Parameters:
-
chars- указанный массив символов -
beginIndex- начальный смещениеchars -
limit- конечное смещениеchars -
context- указанный контекстGraphics - Returns:
- объект
LineMetrics, созданный с указанным массивом символов и контекстомGraphics. - See Also:
getLineMetrics
public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
- Parameters:
-
ci- указанныйCharacterIterator -
beginIndex- начальное смещение вci -
limit- конечный индексci -
context- указанный контекстGraphics - Returns:
- объект
LineMetrics, созданный со указанными аргументами. - See Also:
getStringBounds
public Rectangle2D getStringBounds(String str, Graphics context)
String в указанном контексте Graphics. Область используется для выравнивания String. Примечание: Возвращаемая область находится в координатах, относительных к базовой линии (см. class notes).
- Parameters:
-
str- заданнаяString -
context- указанный контекстGraphics - Returns:
- объект
Rectangle2D— прямоугольник, являющийся ограничивающей областью указаннойStringв заданном контекстеGraphics. - See Also:
getStringBounds
public Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
String в указанном контексте Graphics. Область используется для выравнивания String. Примечание: Возвращаемая область находится в координатах, относительных к базовой линии (см. class notes).
- Parameters:
-
str- заданнаяString -
beginIndex- смещение началаstr -
limit- конечное смещениеstr -
context- указанный контекстGraphics - Returns:
- объект
Rectangle2D— прямоугольник, являющийся ограничивающей областью указаннойStringв заданном контекстеGraphics. - See Also:
getStringBounds
public Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
Graphics. Область используется для выравнивания String, созданного с заданным массивом символов, beginIndex и limit. Примечание: Возвращаемая область находится в координатах, относительных к базовой линии (см. class notes).
- Parameters:
-
chars- массив символов -
beginIndex- начальное смещение массива символов -
limit- конечное смещение массива символов -
context- указанный контекстGraphics - Returns:
- объект
Rectangle2D— прямоугольник, являющийся ограничивающей областью заданного массива символов в указанном контекстеGraphics. - See Also:
getStringBounds
public Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
CharacterIterator в указанном контексте Graphics. Примечание: Возвращаемая область находится в координатах, относительных к базовой линии (см. class notes).
- Parameters:
-
ci- указанныйCharacterIterator -
beginIndex- начальное смещение вci -
limit- конечный индексci -
context- указанный контекстGraphics - Returns:
- объект
Rectangle2D— прямоугольник, являющийся ограничивающей областью символов, индексируемых в указанномCharacterIteratorв заданном контекстеGraphics. - See Also:
getMaxCharBounds
public Rectangle2D getMaxCharBounds(Graphics context)
Graphics.- Parameters:
-
context- указанный контекстGraphics - Returns:
- объект
Rectangle2D— прямоугольник, являющийся ограничивающей областью для символа с максимальной областью. - See Also:
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/FontMetrics.html
getMaxDescent().