Spec-Zone.ru › OpenJDK 17

Класс 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 не обязательно равно сумме продвижений его символов.

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

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

charWidth

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

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

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

stringWidth

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

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

Параметры:
str - измеряемая String
Возвращает:
ширину продвижения указанной String в Font, описываемом этим объектом FontMetrics.
Исключения:
NullPointerException - если str равно null.
См. также:
  • bytesWidth(byte[], int, int)
  • charsWidth(char[], int, int)
  • getStringBounds(String, Graphics)

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 массива.
См. также:
  • charWidth(int)
  • charWidth(char)
  • bytesWidth(byte[], int, int)
  • stringWidth(String)

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 массива.
См. также:
  • charsWidth(char[], int, int)
  • stringWidth(String)

getWidths

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

hasUniformLineMetrics

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

getLineMetrics

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

getLineMetrics

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

getLineMetrics

public LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного массива символов в указанном контексте Graphics.
Параметры:
chars - указанный массив символов
beginIndex - начальный смещение chars
limit - конечный смещение chars
context - указанный Graphics контекст
Возвращает:
объект LineMetrics созданный с указанным массивом символов и Graphics контекстом.
См. также:
  • Font.getLineMetrics(char[], int, int, FontRenderContext)

getLineMetrics

public LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context)
Возвращает объект LineMetrics для указанного CharacterIterator в указанном контексте Graphics контексте.
Параметры:
ci - указанный CharacterIterator
beginIndex - начальный смещение в ci
limit - конечный индекс ci
context - указанный Graphics контекст
Возвращает:
объект LineMetrics созданный с указанными аргументами.
См. также:
  • 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, 2021, 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/17/docs/api/java.desktop/java/awt/FontMetrics.html

Spec-Zone.ru

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