# font

Создание шрифтов и контроль за ними.

## СИНТАКСИС

          font параметр арг арг ...

## ОПИСАНИЕ

Команда font обеспечивает работу со шрифтами: определение поименованных шрифтов и запрос фактических параметров шрифтов. У команды несколько различных форм, которые задаются первым аргументом. В настоящее время поддерживаются следующие формы команды:

font actual шрифт -displayof окно параметр
  Возвращает информацию о фактических значениях параметров шрифта, выводимого на экран. Фактические параметры могут отличаться от запрошенных благодаря ограничениям, накладываемым платформами (например, доступность различных семейств шрифтов или различных кеглей). Аргумент шрифт представляет собой описатель шрифта ниже (см. "Описание шрифта"). Если аргумент окно опущен, то по умолчанию команда относится к главному окну. Если задан аргумент параметр, то команда возвращает значение указанного параметра. Если этот аргумент опущен, то возвращаемое значение представляет собой список всех атрибутов и их значений. Список возможных атрибутов приведен ниже (см. "Параметры шрифтов").
font configure имяшрифта параметр значение параметр значение ...
  Запрашивает значения параметров конфигурации примитива или изменяет их. Если параметр не указан, то возвращает список, содержащий значения всех параметров шрифта имя шрифта . Если параметр задан, а его новое значение нет, то команда возвращает текущее значение указанного параметра . Если заданы одна или несколько пар параметр-значение, то указанным параметрам шрифта присваиваются новые значения, а содержимое всех примитивов, использующих данный шрифт меняется в соответствии с новыми значениями параметров. Список возможных атрибутов приведен ниже (см. "Параметры шрифтов").
font create имяшрифта параметр значение ...
  Создает новый поименованный шрифт и возвращает его имя. Аргумент имяшрифта задает имя шрифта; если этот аргумент опущен, то Tk генерирует новое имя вида font x, где x целое число. Число пар параметр-значение может быть произвольным, они задают значения соответствующих параметров нового поименованного шрифта. Список возможных атрибутов приведен ниже (см. "Параметры шрифтов").
font delete имя_шрифта имя_шрифта ...
  Удаляет указанные поименованные шрифты. В случае, если удаляемый шрифт используется в одном из примитивов, фактическое удаление не происходит пока не будет вычеркнуто последнее вхождение шрифта в примитив. Если удаленный поименованный шрифт впоследствии создается вновь повторным вызовом команды font create, то в примитивах будет использоваться новый поименованный шрифт с новыми значениями параметров.
font families -displayof окно
  Возвращает список имен всех семейств шрифтов (без различения верхнего и нижнего регистров), существующих на дисплее заданного окна. Если аргумент окно опущен, то его значением по умолчанию является главное окно.
font measure шрифт -displayof окно текст
  Подсчитывает протяженность текстовой строки при выводе ее на экран в данном шрифте. Аргумент шрифт задает описатель текста (см. "Описание шрифта"). Возвращает общую ширину текста в пикселах без учета сильно искаженных символов (как, например, " f " курсивного). Если в строке есть символы табуляции или перевода строки, то они не влияют на результат подсчета.
font metrics шрифт -displayof окно параметр
  Возвращает информацию о метрических характеристиках шрифта при его выводе на экран. Аргумент шрифт задает описатель шрифта, (см. "Описание шрифта"). Если аргумент окно опущен, то его значением по умолчанию является главное окно. Если задан аргумент параметр, то команда возвращает значение указанной метрической характеристики; если этот аргумент опущен, то возвращается список значений всех метрических характеристик шрифта. Список метрических характеристик приведен ниже (см. Метрические характеристики шрифтов").
font names
  Возвращает список всех поименованных на текущий момент шрифтов.

## ОПИСАНИЕ ШРИФТА

В качестве описателя шрифта в любой из приведенных выше команд принимаются следующие данные; те же самые форматы допустимы и в качестве значения параметра -font в описателе примитива.

[1] имя_шрифта
  Имя поименованного шрифта, созданного командой font create. Использование поименованного шрифта не может привести к ошибке вне зависимости от того, насколько потенциально ошибочны или бессмысленны значения параметров этого шрифта. Если вывод символов в поименованном шрифте невозможен, то для их вывода используется автоматически подбираемый шрифт с близкими значениями параметров.
[2] сист_шрифт
  Имя (зависящее от используемой платформы) шрифта, интерпретируемого графическим сервером. Сюда входит также (под X) шрифтXLFD (см. [4]), в котором используется единственный символ предназначенный для забивки нескольких полей в середине имени. Список системных шрифтов приведен в части текста, описывающей особенности данной платформы.
[3] семейство размер стиль стиль ...
  Список, первым элементом которого является требуемое семейство шрифтов, а вторым, необязательным, элементом требуемый размер. Параметр размер интерпретируется по тем же правилам, что и параметр -size (см. "Параметры шрифтов"). Все остальные необязательные аргументы, следующие за параметром размер, представляют собой стили шрифтов. Они могут иметь следующие значения: normal, bold, roman, italic, underline, overstrike.
[4] X-шрифт имена (XLFD)

  Имя шрифта для Unix-машин, представленное в виде:

  -заливка-семейство-шрифт-наклон-устширина-добстиль-пиксель-точка-разрешx-разрешy-промежуток-ширина-наборсимволов-кодирование

  -foundry-family-weight-slant-setwidth-addstyle-pixel-point-resx-resy-spacing-width-charset-encoding.

  Поля, содержимое которых пользователю безразлично, можно пропустить, заменив символом " * ". Каждому пропущенному полю должен соответствовать ровно один символ " * ", а символ " * " в конце XLFD приводит к пропуску всех оставшихся полей; кратчайшая форма имеет вид просто " * ", что означает, что значения всех полей берутся по умолчанию. Всем пропущенным полям присваиваются значения по умолчанию. В целях совместимости XLFD всегда выбирает шрифт заданного размера в пикселах (а не в точках). Несмотря на некоторую некорректность выбранного подхода, все приложения, использующие XLFD, предполагают, что "точка" в действительности совпадает с одним пикселем, и при использовании корректного размера шрифта могут привести к неправильному выводу шрифта (обычно с более крупными символами).

[5] параметр значение параметр значение ...
  Правильно сформированный список пар параметр-значение, задающих атрибуты шрифта, в том же формате, что и при определении поименованного шрифта (см. "Параметры шрифтов"). При использовании описателя шрифта система пытается проанализировать описание в соответствии с приведенными выше пятью правилами в указанном порядке. В случаях [1] и [2] имя шрифта должно соответствовать существующему поименованному шрифту или системному шрифту. Случаи [3], [4] и [5] принимаются на всех платформах и в них будет использоваться шрифт, по параметрам ближайший к требуемому. В некоторых ситуациях оказывается невозможно найти близкий шрифт (например, имя семейства оказалось испорченным); в этом случае выбирается один из системно-зависимых шрифтов по умолчанию. Если описатель шрифта не подходит ни под один из приведенных выше образцов, то возникает ошибка.

## МЕТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ ШРИФТОВ

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

-ascent
  Высота в пикселах самой высокой буквы шрифта над основой плюс дополнительное пустое пространство, добавленное разработчиком шрифта
-descent
  Наибольшая протяженность в пикселях буквы шрифта под основой плюс дополнительное пустое пространство, добавленное разработчиком шрифта.
-linespace
  Возвращает расстояние между строками текста, использующими один и тот же шрифт, необходимое для того, чтобы символы верхней строки не перекрывались с символами нижней. Обычно это сумма зазора под верхней и над нижней строкой.
-fixed
  Возвращает булевское значение, равное " 1 " для шрифта постоянной ширины, в котором ширина всех обычных символов одинакова, и равное " 0 " для пропорционального шрифта, разные буквы которого имеют различную ширину. Ширина управляющих символов, символов табуляции и других непечатаемых символов при вычислении этого значения не учитывается.

## ПАРАМЕТРЫ ШРИФТОВ

Следующие параметры поддерживаются на всех платформах и используются для конструирования поименованного шрифта или при задании шрифта с помощью стиля [5] выше:

-family имя
  Имя семейства шрифтов (нечувствительное к регистру). Tk обязательно поддерживает семейства с именами Courier (моноширинный шрифт "пишущей машинки"), Times ("газетный" шрифт с засечками) и Helvetica (рубленый "европейский" шрифт). При использовании одного из этих семейств шрифтов оно автоматически заменяется наиболее подходящим "родным" шрифтом. Имя семейства также может быть именем одного из "родных" шрифтов, зависящих от платформы; в этом случае семейство будет работать на своей платформе, как положено, однако при переходе к другой платформе могут возникнуть неприятности. Если имя семейства не задано или не опознано, то будет выбран шрифт по умолчанию для данной платформы.
-size размер
  Требуемый кегль (размер) шрифта. Если значением аргумента является положительное число, то оно интерпретируется как размер символов в точках. Если значение отрицательно, то его абсолютная величина интерпретируется как размер в пикселах. Если шрифт указанного кегля нельзя вывести, то берется ближайший доступный размер. Если размер не задан или его значение равно нулю, то будет выбран размер по умолчанию для данной платформы. Как правило, размер шрифта следует указывать в точках; тогда приложение будет иметь один и тот же размер на экране даже на мониторах различного разрешения или при переносе скриптов на другие платформы. Однако использование пикселей оправдано, например, в ситуациях, когда строчка текста должна соответствовать по длине двуцветному изображению фиксированного размера. Коэффициент перехода от точек к пикселам и обратно устанавливается при запуске приложения на основе параметров используемого монитора, однако его можно изменить при помощи команды Tk scaling.
-weight вес
  Условная толщина символов в шрифте. Значение normal задает шрифт нормальной толщины, bold жирный шрифт. Выбирается доступная толщина, ближайшая к заданной. По умолчанию параметр имеет значение normal.
-slant наклон
  Величина, на которую символы шрифта отклоняются по вертикали. Допустимы значения roman и italic. Шрифт с наклоном roman это обычный прямой шрифт, а символы шрифта с наклоном italic отклоняются от вертикали на несколько градусов. Выбирается доступный наклон, ближайший к заданному. По умолчанию параметр имеет значение roman.
-underline булевское
  Значением параметра является булевский флажок, указывающий, следует ли подчеркивать символы шрифта. По умолчанию параметр имеет значение ложь.
-overstrike булевское
  Значением параметра является булевский флажок, указывающий, следует ли перечеркивать символы шрифта (горизонтальной прямой посреди символа). По умолчанию параметр имеет значение ложь.

## ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ

Различные платформы поддерживают следующие поименованные системные шрифты:

X-Windows:
  Все допустимые имена X шрифтов, включая перечисляемые выводятся командой xlsfonts(1).
MS Windows:
  system, ansi, device, systemfixed, ansifixed, oemfixed
Apple Macintosh
  system, application

См. также options.