Формат распространения растровых изображений глифов - Glyph Bitmap Distribution Format

В Формат распространения растровых изображений глифов (BDF) пользователя Adobe это формат файла для хранения растровые шрифты. Содержимое принимает форму текстового файла, предназначенного для чтения человеком и компьютером. BDF обычно используется в Unix X Window среды. Он был в значительной степени заменен PCF формат шрифта, который несколько более эффективен, и масштабируемыми шрифтами, такими как OpenType и TrueType шрифты.

Обзор

По состоянию на 2013 год текущая версия BDF - 2.2. Никаких изменений в будущем не ожидается. Более ранние версии назывались форматом распределения символьных битовых карт.

В 1988 г. X Консорциум принял BDF 2.1 в качестве стандарта для экранных шрифтов X Window,[1] но X Windows в значительной степени перешла на другие стандарты шрифтов, такие как PCF, Opentype, и Истинный тип.

В версии 2.2 добавлена ​​поддержка незападного письма. Например, глифы в определении шрифта BDF 2.2 может указывать рендеринг сверху вниз, а не просто слева направо.

Файл шрифта BDF состоит из трех разделов:

  1. глобальный раздел, который применяется ко всем глифам в шрифте;
  2. раздел с отдельной записью для каждого глифа; и
  3. оператор ENDFONT.

Пример

Это пример шрифта, содержащего один глиф для заглавной буквы ASCII «A». Этот глиф взят из GNU Unifont.

STARTFONT 2.1FONT -gnu-unifont-medium-r-normal - 16-160-75-75-c-80-iso10646-1SIZE 16 75 75FONTBOUNDINGBOX 16 16 0 -2STARTPROPERTIES 2FONT_ASCENT 14FONT_DESCENT 2ENDP 0BD 0WRTENCHARS 1STROPERTIESCHARS 65 + 0WARTTENCHARS 1START 8 16 0 -2BITMAP0000000018242442427E424242420000ENDCHARENDFONT

В приведенном выше примере глобальные объявления начинаются со строки «STARTFONT» и заканчиваются строкой «CHARS».

«STARTFONT 2.1» определяет версию этого файла BDF как версию 2.1.

"FONT -gnu-unifont-medium-r-normal - 16-160-75-75-c-80-iso10646-1" определяет семейство шрифтов и названия начертаний как X логическое описание шрифта.

«РАЗМЕР 16 75 75» определяет это как шрифт размером 16 пунктов с разрешением по оси X 75 точек на дюйм (dpi) и разрешением по оси Y 75 dpi. Это норма для X Window.

«FONTBOUNDINGBOX 16 16 0 -2» определяет ограничивающую рамку для шрифта шириной 16 пикселей и высотой 16 пикселей, при этом нижний левый угол начинается с x = 0, y = -2. Обратите внимание, что хотя ограничивающая рамка определена как ячейка 16 на 16, ее можно переопределить для отдельных глифов. Например, глиф «A» имеет ширину всего 8 пикселей.

"STARTPROPERTIES 2" заявляет, что за ним последуют два особых свойства. "STARTPROPERTIES" не является обязательным в спецификации BDF. X Window позволяет свойствам FONT_ASCENT и FONT_DESCENT отображать высоту выше и ниже базовой линии, соответственно, для всех глифов. «FONT_ASCENT 14» объявляет, что 14 из 16 пикселей по высоте находятся выше базовой линии. «FONT_DESCENT 2» объявляет, что 2 из 16 пикселей по высоте ниже базовой линии. «КОНЕЧНЫЕ СВОЙСТВА» появляется в конце раздела «ЗВЕЗДНЫЕ СВОЙСТВА».

«CHARS 1» объявляет, что за ним последует один символ. Хотя Adobe теперь называет этот формат файла Glyph BDF, они сохранили ключевое слово «СИМВОЛЫ» в окончательной версии спецификации.

Строки, начинающиеся со слова «КОММЕНТАРИЙ», могут быть вставлены в файл BDF. Все, что следует за ключевым словом "COMMENT" в строке, игнорируется.

Следуя приведенным выше глобальным объявлениям, следующие записи могут повторяться для каждого глифа.

«STARTCHAR U + 0041» определяет начало символа в версии 2.1 и ранее или глифа в версии 2.2. Строковое имя этого конкретного символа - «U + 0041», выражающееся в Unicode по соглашению шестнадцатеричный код 41 (десятичный 65, символ ASCII «A»). В версии 2.1 и ранее длина строки имени персонажа была ограничена 14 символами. В версии 2.2 строка имени глифа может содержать до 65 535 символов.

«ENCODING 65» объявляет десятичную кодовую точку для этого глифа в шрифте.

«SWIDTH 500 0» объявляет масштабируемую ширину 500 по оси X и 0 (по умолчанию) по оси Y. Это приведет к смещению оси X к следующему глифу, но не к смещению оси Y к следующему глифу (т. Е. Глифы отображаются прямо на линии). Масштабируемая ширина в 1000 раз больше фактического размера символа в пунктах - такая же единица измерения используется в Adobe Font Metric (AFM) файл. Количество пикселей, рассчитанное как

пикселей = (масштабируемая_ширина / 1000) * (разрешение / 72),

где масштабируемая_ширина в этом примере равна 500, а разрешение для этого шрифта составляет 75 точек на дюйм. Поскольку 75 примерно равно 72, количество пикселей равно полной ширине глифа (определяемой глобально как 16 пикселей), умноженной на 500/1000, или, другими словами, ширина этого глифа составляет 8 пикселей.

«DWIDTH 8 0» объявляет ширину устройства глифа. В этом случае после визуализации глифа начало следующего глифа смещается на 8 пикселей по оси X и 0 пикселей по оси Y от текущего начала координат глифа. Обратите внимание, что ширина устройства не обязательно равна ширине глифа. Это просто смещение по оси X для перемещения текущей точки в начало следующего глифа.

Масштабируемая ширина используется для расчета ширины глифа с высоким разрешением на принтере, тогда как ширина устройства используется для расчета ширины глифа на устройстве отображения. Таким образом, масштабируемая ширина указана с большей точностью, чем ширина устройства.

«BBX 8 16 0 -2» объявляет ограничивающую рамку шириной 8 пикселей и высотой 16 пикселей. Нижний левый угол символа смещен на 0 пикселей по оси X и -2 пикселя по оси Y.

«BITMAP» начинает растровое изображение для текущего глифа. За этой линией должна следовать одна линия на пиксель по оси Y. В этом примере высота глифа составляет 16 пикселей, поэтому следуют 16 строк. Каждая строка содержит шестнадцатеричное представление пикселей в строке. Бит «1» указывает пиксель визуализации. Каждая строка округляется до 8-битной (одного байта) границы, справа дополняется нулями. В этом примере глиф имеет ширину ровно 8 пикселей и поэтому занимает ровно 8 бит (один байт) на строку, поэтому заполнение отсутствует. Самый старший бит строки растровых данных представляет крайний левый пиксель.

«ENDCHAR» завершает текущий глиф.

Объявления от "STARTCHAR" до "ENDCHAR" повторяются для каждого глифа в шрифте.

«ENDFONT» отображается как последняя строка в файле после того, как все глифы шрифта были пронумерованы.

Версия 2.2 Расширения

Версия 2.2 спецификации BDF добавляет поддержку незападных шрифтов. Эти дополнения позволяют перемещать исходную точку положительным или отрицательным перемещением по осям X и Y. Это позволяет не только писать справа налево, но и сверху вниз (например, для китайского). Следующие значения обеспечивают поддержку многонациональных шрифтов:

METRICSET: установлено в 0 для направления письма 0, 1 для направления письма 1 или 2 (в начальной глобальной области) для обоих направлений письма в пределах одного шрифта. В традиционных западных скриптах с письмом слева направо используется «METRICSET 0».

SWIDTH1, DWIDTH1: имеют те же параметры, что и SWIDTH и DWIDTH соответственно. DWIDTH1 должен присутствовать для символа METRICSET 1. Его смещения могут быть положительными или отрицательными.

VVECTOR определяет смещение оси X и смещение оси Y для перехода от глифа режима 0 к глифу режима 1. Противоположное смещение применяется во время перехода глифа из режима 1 в режим 0.

Эта схема легко вмещает два направления письма. Исторически у шрифтов было 128 или 256 кодовых точек. Сегодня Unicode позволяет использовать более миллиона кодовых точек. Шрифты могут содержать тысячи глифов, некоторые из которых должны быть написаны слева направо, некоторые - справа налево, а некоторые - сверху вниз. Такое разнонаправленное письмо требует творческого использования DWIDTH1 и SWIDTH1 для каждого глифа.

В дополнение к ключевым словам, добавленным для международной поддержки, версия 2.2 добавляет декларацию «CONTENTVERSION». За этим ключевым словом следует целое число, указывающее номер версии шрифта.

Для получения более подробной информации обратитесь к спецификации версии 2.2.

Свойства X Window

Утилиты шрифтов X Window поддерживают несколько свойств, которые можно указать в разделе STARTPROPERTIES файла BDF.[2] Общий файл BDF находится в ASCII кодирование. Свойства X Window указываются с помощью ISO 8859-1 кодировка, которая является расширением ASCII. Эти свойства включают:

  • Целое число CAP_HEIGHT - высота над базовой линией заглавной буквы (см. Высота крышки ).
  • Строка COPYRIGHT - заявление об авторских правах.
  • DEFAULT_CHAR положительный - символ (глиф) по умолчанию, отображаемый для неопределенного глифа.
  • Строка FACE_NAME - название начертания этого шрифта.
  • FONT string - имя шрифта в X Window.
  • FONT_ASCENT integer - высота над исходный уровень, для расчета межстрочного интервала.
  • FONT_DESCENT целое число - спусковое устройство ниже базовой линии для расчета межстрочного интервала.
  • FONT_VERSION строка - версия шрифта.
  • ЛИТЕЙНАЯ строка
  • FAMILY_NAME string - название семейства шрифтов.
  • Строка NOTICE - общий комментарий.
  • POINT_SIZE integer - см. Point (типографика). Если это не указано отдельно, EMspace = круглый (РАЗМЕР_ТОЧКИ / 10), ENspace = круглое (РАЗМЕР_ТОЧКИ / 20) и THINпространство = округление (РАЗМЕР_ТОЧКИ / 30).
  • RESOLUTION_X положительный
  • RESOLUTION_Y положительно
  • Строка SLANT - «R» - римский, «I» - курсив, «O» - наклонный, «RI» - обратный курсив, «RO» - обратный наклонный, «OT» - другой, а число - возможность полиморфного наклона.
  • Строка WEIGHT_NAME - толщина этого шрифта (типичны «Полужирный» и «Обычный», но нет заданного перечисления).
  • X_HEIGHT integer - высота над базовой линией строчной буквы «x» (см. x-высота ).

... где "целое число" - это натуральное число, "позитив" - это положительное число (значение 1 или выше), а "строка" соответствует стандарту ISO 8859-1. строка символов.

Примечания

  1. ^ «Система X Window, версия 11, выпуск 3». Фонд X.Org. Октябрь 1988 г.. Получено 19 января 2016.
  2. ^ Цветы, Джим (1994) [1988]. «3.2 Свойства шрифта». Соглашения об описании шрифтов X Logical (Версия 1.5 изд.). X Consortium, Inc. стр. 13. Архивировано из оригинал 31 марта 2013 г.. Получено 2009-01-08. Cite имеет пустой неизвестный параметр: | месяц = (помощь)

Рекомендации

внешняя ссылка