Spec-Zone.ru › OpenJDK 21

Класс 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()
Возвращает 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.
См. также:
  • getHeight()
  • getAscent()
  • getDescent()

getAscent

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

getDescent

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

getHeight

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

getMaxAscent

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

getMaxDescent

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

getMaxDecent

@Deprecated public int getMaxDecent()
Устарело.
С версии JDK 1.1.1 заменено на getMaxDescent().
Только для обеспечения обратной совместимости.
Возвращает:
максимальную нисходящую часть любого символа в Font.
См. также:
  • getMaxDescent()

getMaxAdvance

public int getMaxAdvance()
Возвращает оценку максимальной ширины продвижения любого символа в Font, описываемого этим объектом FontMetrics, с важными оговорками, перечисленными ниже.

Продвижение — это расстояние от самой левой точки, используемой для позиционирования символа, до самой правой точки вдоль базовой линии. Это не то же самое, что видимая ширина глифа, представляющего символ.

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

Некоторые оговорки относительно полученного значения включают

  • Возвращаемое значение зависит от информации из некоторой системной шрифта, и правильность этой информации не контролируется AWT.
  • Когда конкретные символы отображаются в виде глифов в некотором контексте отображения, инструкции в самом шрифте вместе с процессом растрирования могут привести к тому, что некоторый глиф будет иметь более широкое продвижение, чем указано.
  • Когда шрифт запрашивается с некоторым стилем, например Font.BOLD, для которого нет точного соответствия, методы удовлетворения запрошенного отображения аналогичным образом могут привести к глифам, которые шире, чем указанный максимум.
  • В зависимости от реализации, логическому или физическому шрифту AWT может потребоваться найти некоторые символы из одного или нескольких «резервных» шрифтов, когда основной подлежащий физический шрифт не поддерживает символ. Эти шрифты могут быть неизвестны или не учитываться при расчете указанного максимального продвижения. Обычно центр дизайна таких резервных шрифтов относится к другому письму, чем центр дизайна основного шрифта, поэтому их продвижения могут сильно отличаться. Это также может привести к неожиданному результату, что шрифт, такой как Font.MONOSPACED, может отображать глифы, которые не имеют одинаковую ширину.
Никакие из этих оговорок не показаны, так как они являются деталями реализации, и нет практического способа определить, когда они действуют. Приложение, которое нуждается в более точной оценке максимального продвижения и знает подмножество символов, которые оно ожидает отобразить, может запросить продвижение каждого такого символа, чтобы найти самое широкое, однако, как обсуждалось выше, поскольку отображаемая ширина String не обязательно равна сумме продвижений, значение все еще должно использоваться с осторожностью.

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

Возвращает:
оценка максимальной ширины продвижения любого символа в Font, или -1 если максимальная ширина продвижения неизвестна.

charWidth

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

Этот метод не проверяет, является ли указанный символ допустимым кодом Юникода. Вызывающий метод должен проверить значение символа с помощью Character.isValidCodePoint, если это необходимо.

Параметры:
codePoint - символ (код Юникода) для измерения
Возвращает:
ширина продвижения указанного символа в Font, описываемом этим объектом FontMetrics.
См. также:
  • charsWidth(char[], int, int)
  • stringWidth(String)

charWidth

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

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

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

stringWidth

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

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

Parameters:
str - измеряемая строка
Returns:
ширина продвижения указанной строки в шрифте, описанном этим объектом шрифта.
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)
Возвращает общую ширину продвижения для отображения указанного массива символов в этом шрифте. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению продвижения символов в указанном диапазоне.
Parameters:
data - массив символов для измерения
off - начальный смещение символов в массиве
len - количество символов для измерения из массива
Returns:
ширина продвижения подмассива указанного массива символов в шрифте, описанном этим объектом шрифта.
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)
Возвращает общую ширину продвижения для отображения указанного массива байтов в этом шрифте. Продвижение — это расстояние от самой левой до самой правой точки на базовой линии строки. Продвижение String не обязательно равно сумме продвижений его символов. Это эквивалентно измерению продвижения символов в указанном диапазоне.
Parameters:
data - массив байтов для измерения
off - начальный смещение байтов в массиве
len - количество байтов для измерения из массива
Returns:
ширина продвижения подмассива указанного массива байтов в шрифте, описанном этим объектом шрифта.
Throws:
NullPointerException - если data равно null.
IndexOutOfBoundsException - если аргументы off и len индексируют байты за пределами границ массива data.
See Also:
  • charsWidth(char[], int, int)
  • stringWidth(String)

getWidths

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

hasUniformLineMetrics

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

getLineMetrics

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

getLineMetrics

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

getStringBounds

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

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

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

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 контексте.
См. также:
  • Font.getStringBounds(String, int, int, FontRenderContext)

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 контексте.
См. также:
  • Font.getStringBounds(char[], int, int, FontRenderContext)

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 контексте.
См. также:
  • Font.getStringBounds(CharacterIterator, int, int, FontRenderContext)

getMaxCharBounds

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

toString

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

© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/FontMetrics.html

Spec-Zone.ru

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