Spec-Zone.ru › OpenJDK 24

Класс FontMetrics

java.lang.Object
java.awt.FontMetrics
Все реализованные интерфейсы:
Serializable
public abstract class FontMetrics extends Object implements Serializable
Класс FontMetrics определяет объект метрик шрифта, который содержит информацию о представлении определенного шрифта на определённом экране.

Примечание для разработчиков подклассов: Поскольку многие из этих методов образуют замкнутые, взаимно рекурсивные циклы, вам необходимо позаботиться о том, чтобы реализовать хотя бы один метод в каждом таком цикле, чтобы предотвратить бесконечную рекурсию при использовании вашего подкласса. В частности, следующим является минимальный рекомендуемый набор методов для переопределения, чтобы гарантировать корректность и предотвратить бесконечную рекурсию (хотя другие подмножества также возможны):

  • getAscent()
  • getLeading()
  • getMaxAdvance()
  • charWidth(char)
  • charsWidth(char[], int, int)

The letter 'p' showing its 'reference point' Обратите внимание, что реализации этих методов неэффективны, поэтому они обычно переопределяются более эффективными реализациями, специфичными для инструментария.

Когда приложение запрашивает размещение символа в позиции (x, y), символ размещается таким образом, что его точка отсчёта (показана точкой на сопровождающей картинке) устанавливается в этой позиции. Точка отсчёта определяет горизонтальную линию, называемую базовой линией символа. При обычном наборе символы должны выравниваться по базовым линиям.

Кроме того, каждый символ в шрифте имеет восхождение, спуск и ширину продвижения. Восхождение — это величина, на которую символ поднимается над базовой линией. Спуск — это величина, на которую символ опускается ниже базовой линии. Ширина продвижения указывает положение, в котором AWT должен разместить следующий символ.

Массив символов или строка также могут иметь восхождение, спуск и ширину продвижения. Восхождение массива — это максимальное восхождение любого символа в массиве. Спуск — это максимальный спуск любого символа в массиве. Ширина продвижения — это сумма ширин продвижения каждого символа в массиве символов. Продвижение String — это расстояние вдоль базовой линии String. Это расстояние является шириной, которая должна использоваться для центрирования или выравнивания по правому краю String.

Обратите внимание, что продвижение String не обязательно является суммой продвижений его символов, измеренных изолированно, поскольку ширина символа может изменяться в зависимости от контекста. Например, в арабском тексте форма символа может изменяться для соединения с другими символами. Кроме того, в некоторых системах письма определённые последовательности символов могут быть представлены одной формой, называемой лигатурой. Измерение символов по отдельности не учитывает эти преобразования.

Метрики шрифта относятся к базовой линии, что означает, что они, как правило, независимы от поворота шрифта (за исключением возможных эффектов сетки наводки). См. Font.

С:
1.0
См. также:
  • Font
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
protected Font font
Фактический шрифт Font, на основе которого созданы метрики шрифта.

Краткое описание конструкторов

FontMetrics(Font font)
Модификатор Конструктор Описание
protected
Создаёт новый объект FontMetrics для определения высоты и ширины указанного Font и конкретных глифов символов в этом Font.

Краткое описание методов

Модификатор и тип Метод Описание
int bytesWidth(byte[] data, int off, int len)
Возвращает общую ширину вывода указанного массива байтов в этом Font.
int charsWidth(char[] data, int off, int len)
Возвращает общую ширину вывода указанного массива символов в этом Font.
int charWidth(char ch)
Возвращает ширину вывода указанного символа в этом Font.
int charWidth(int codePoint)
Возвращает ширину вывода указанного символа в этом 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(char[] chars, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного массива символов в заданном контексте Graphics.
LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного String в заданном контексте Graphics.
LineMetrics getLineMetrics(String str, Graphics context)
Возвращает объект LineMetrics для указанного String в заданном контексте Graphics.
LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного CharacterIterator в заданном контексте Graphics.
int getMaxAdvance()
Возвращает оценку максимальной ширины вывода любого символа в Font, описанного этим объектом FontMetrics, с важными оговорками, перечисленными ниже.
int getMaxAscent()
Определяет максимальную восходящую высоту Font, описанного этим объектом FontMetrics.
Rectangle2D getMaxCharBounds(Graphics context)
Возвращает границы символа с максимальными границами в заданном контексте Graphics.
int getMaxDecent()
Устарело.
С версии JDK 1.1.1 заменено на getMaxDescent().
int getMaxDescent()
Определяет максимальную нисходящую высоту Font, описанного этим объектом FontMetrics.
Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context)
Возвращает границы указанного массива символов в заданном контексте Graphics.
Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context)
Возвращает границы указанного String в заданном контексте Graphics.
Rectangle2D getStringBounds(String str, Graphics context)
Возвращает границы указанного String в заданном контексте Graphics.
Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context)
Возвращает границы символов, индексированных в указанном CharacterIterator, в заданном контексте Graphics.
int[] getWidths()
Возвращает ширины вывода первых 256 символов в Font.
boolean hasUniformLineMetrics()
Проверяет, имеет ли Font равномерные метрики строк.
int stringWidth(String str)
Возвращает общую ширину вывода указанного String в этом Font.
String toString()
Возвращает представление значений этого объекта FontMetrics в виде String.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание полей

font

protected Font font
Фактический Font, из которого создаются метрики шрифта. Не может быть null.
См. также:
  • getFont()

Подробное описание конструкторов

FontMetrics

protected FontMetrics(Font font)
Создаёт новый объект FontMetrics для определения высоты и ширины указанного Font и конкретных глифов символов в этом 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. Стандартное ведущее значение, или межстрочный интервал, представляет собой логическое количество пространства, отводимого между спуском одной строки текста и восходом следующей строки. Метрика высоты вычисляется с учётом этого дополнительного пространства.
Возвращает:
стандартное ведущее значение шрифта.
См. также:
  • getHeight()
  • getAscent()
  • getDescent()

getAscent

public int getAscent()
Определяет восходящую часть шрифта шрифта, описанного этим объектом FontMetrics. Восходящая часть шрифта — это расстояние от базовой линии шрифта до верхней части большинства букв и цифр. Некоторые символы в этом Font могут выходить за пределы линии восходящей части шрифта.
Возвращает:
восходящую часть шрифта.
См. также:
  • getMaxAscent()

getDescent

public int getDescent()
Определяет нисходящую часть шрифта шрифта, описанного этим объектом FontMetrics. Нисходящая часть шрифта — это расстояние от базовой линии шрифта до нижней части большинства букв и цифр с нисходящими элементами. Некоторые символы в этом Font могут выходить за пределы линии нисходящей части шрифта.
Возвращает:
нисходящую часть шрифта.
См. также:
  • getMaxDescent()

getHeight

public int getHeight()
Возвращает стандартную высоту строки текста в этом шрифте. Это расстояние между базовыми линиями соседних строк текста. Оно равно сумме ведущего, восходящей и нисходящей частей. Из-за округления это значение может отличаться от getAscent() + getDescent() + getLeading(). Нет гарантии, что строки текста, расположенные на этом расстоянии, не пересекаются; такие строки могут перекрываться, если некоторые символы выходят за пределы стандартной восходящей или стандартной нисходящей метрики.
Возвращает:
стандартную высоту шрифта.
См. также:
  • getLeading()
  • getAscent()
  • getDescent()

getMaxAscent

public int getMaxAscent()
Определяет максимальную восходящую часть шрифта, описанного этим объектом FontMetrics. Ни один символ не выходит за пределы базовой линии шрифта, превышая эту высоту.
Возвращает:
максимальную восходящую часть любого символа в шрифте.
См. также:
  • getAscent()

getMaxDescent

public int getMaxDescent()
Определяет максимальную нисходящую часть шрифта, описанного этим объектом FontMetrics. Ни один символ не выходит за пределы базовой линии шрифта, опустившись ниже этой высоты.
Возвращает:
максимальную нисходящую часть любого символа в шрифте.
См. также:
  • getDescent()

getMaxDecent

@Deprecated public int getMaxDecent()
Устарело.
Начиная с JDK версии 1.1.1, заменено на getMaxDescent().
Только для обратной совместимости.
Возвращает:
максимальную нисходящую часть любого символа в шрифте.
См. также:
  • 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:
  • charsWidth(char[], int, int)
  • stringWidth(String)

charWidth

public int charWidth(char ch)
Возвращает ширину продвижения указанного символа в этом Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов.

Примечание: Этот метод не поддерживает дополнительные символы. Для поддержки всех символов Unicode, включая дополнительные символы, используйте метод charWidth(int).

Parameters:
ch - символ, подлежащий измерению
Returns:
ширина продвижения указанного символа в Font, описанном этим объектом FontMetrics.
See Also:
  • charsWidth(char[], int, int)
  • stringWidth(String)

stringWidth

public int stringWidth(String str)
Возвращает общую ширину продвижения для отображения указанной String в этом Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки.

Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов.

Parameters:
str - измеряемая String
Returns:
ширина продвижения указанной String в Font, описанном этим объектом FontMetrics.
Throws:
NullPointerException - если str равно null.
See Also:
  • bytesWidth(byte[], int, int)
  • charsWidth(char[], int, int)
  • getStringBounds(String, Graphics)

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:
  • charWidth(int)
  • charWidth(char)
  • bytesWidth(byte[], int, int)
  • stringWidth(String)

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:
  • charsWidth(char[], int, int)
  • stringWidth(String)

getWidths

public int[] getWidths()
Получает ширины продвижения первых 256 символов в Font. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии символа. Обратите внимание, что продвижение String не обязательно равно сумме продвижений его символов.
Returns:
массив, хранящий ширины продвижения символов в Font, описанном этим объектом FontMetrics.

hasUniformLineMetrics

public boolean hasUniformLineMetrics()
Проверяет, обладает ли Font унифицированными метриками строк. Композитный шрифт может состоять из нескольких различных шрифтов для покрытия различных наборов символов. В таких случаях объекты FontLineMetrics не являются унифицированными. Разные шрифты могут иметь различный подъем, спуск, метрики и т. д. Эта информация иногда необходима для измерения строк и разбиения строк на строки.
Returns:
true, если шрифт имеет унифицированные метрики строк; false в противном случае.
See Also:
  • Font.hasUniformLineMetrics()

getLineMetrics

public LineMetrics getLineMetrics(String str, Graphics context)
Возвращает объект LineMetrics для указанной String в заданном контексте Graphics.
Parameters:
str - указанная String
context - указанный контекст Graphics
Returns:
объект LineMetrics, созданный с указанной String и контекстом Graphics.
See Also:
  • Font.getLineMetrics(String, FontRenderContext)

getLineMetrics

public LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанной String в заданном контексте Graphics.
Parameters:
str - указанная String
beginIndex - начальный смещение str
limit - конечный смещение str
context - указанный контекст Graphics
Returns:
объект LineMetrics, созданный с указанной String и контекстом Graphics.
See Also:
  • Font.getLineMetrics(String, int, int, FontRenderContext)

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:
  • Font.getLineMetrics(char[], int, int, FontRenderContext)

getLineMetrics

public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного CharacterIterator в указанном контексте Graphics.
Parameters:
ci - указанный CharacterIterator
beginIndex - начальное смещение в ci
limit - конечный индекс ci
context - указанный контекст Graphics
Returns:
объект LineMetrics, созданный со указанными аргументами.
See Also:
  • Font.getLineMetrics(CharacterIterator, int, int, FontRenderContext)

getStringBounds

public Rectangle2D getStringBounds(String str, Graphics context)
Возвращает область заданной String в указанном контексте Graphics. Область используется для выравнивания String.

Примечание: Возвращаемая область находится в координатах, относительных к базовой линии (см. class notes).

Parameters:
str - заданная String
context - указанный контекст Graphics
Returns:
объект Rectangle2D — прямоугольник, являющийся ограничивающей областью указанной String в заданном контексте Graphics.
See Also:
  • Font.getStringBounds(String, FontRenderContext)

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:
  • Font.getStringBounds(String, int, int, FontRenderContext)

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:
  • Font.getStringBounds(char[], int, int, FontRenderContext)

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:
  • Font.getStringBounds(CharacterIterator, int, int, FontRenderContext)

getMaxCharBounds

public Rectangle2D getMaxCharBounds(Graphics context)
Возвращает область для символа с максимальной областью в указанном контексте Graphics.
Parameters:
context - указанный контекст Graphics
Returns:
объект Rectangle2D — прямоугольник, являющийся ограничивающей областью для символа с максимальной областью.
See Also:
  • Font.getMaxCharBounds(FontRenderContext)

toString

public String toString()
Возвращает строковое представление значений этого объекта FontMetrics.
Overrides:
toString в классе Object
Returns:
строковое представление этого объекта FontMetrics.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API