Размер маркера вычисляется как номинальный размер, умно­женный на масштаб маркера. Этот размер преобразуется станци­ей в ближайший реально доступный размер. Маркер типа 1 всегда изображается в виде наименьшей отображаемой точки. Маркер видим только тогда, когда позиция маркера находится внутри пря­моугольника, по которому проводится отсечение (прямоугольник отсечения). Характер отсечения частично видимых маркеров за­висит от реализации.

  1. Атрибуты примитива ТЕКСТ

    1. Текст имеет геометрические атрибуты ВЫСОТА ЛИ­ТЕРЫ, ВЕРТИКАЛЬ ЛИТЕРЫ, НАПРАВЛЕНИЕ ТЕКСТА, ВЫ­РАВНИВАНИЕ ТЕКСТА.

Примитив ТЕКСТ имеет также два неявно задаваемых атрибу­та; ШИРИНА ЛИТЕРЫ и ГОРИЗОНТАЛЬ ЛИТЕРЫ. Они неяв­но определяются функциями ЗАДАТЬ ВЫСОТУ ЛИТЕРЫ и ЗА­ДАТЬ ВЕРТИКАЛЬ ЛИТЕРЫ соответственно. Эти атрибуты от­личны от обычных геометрических атрибутов — их значения свя­зываются с примитивами ТЕКСТ в момент создания этих прими­тивов, они не могут быть изменены впоследствии и их значения подвергаются тем же преобразованиям, что и другие геометриче­ские данные, содержащиеся в описании примитива.

  1. Представлением текста на станции управляет ИН­ДЕКС ТЕКСТА или набор индивидуально задаваемых атрибутов текста (ШРИФТ и ТОЧНОСТЬ ТЕКСТА, МАСШТАБ РАСШИ­РЕНИЯ ЛИТЕРЫ, МЕЖЛИТЕРНЫЙ ПРОСВЕТ, и ИНДЕКС ЦВЕТА ТЕКСТА) или некоторая комбинация этих двух способов в зависимости от значений ФВА для шрифта и точности текста, масштаба расширения литер, межлитерного просвета и индекса цвета текста. ИНДЕКС ТЕКСТА является указателем в таблице связок текста, каждое поле которой содержит значения для шриф­та и точности представления текста, масштаба расширения лите­ры, межлитерного просвета и индекса цвета текста.

  2. Точное управление визуальным представлением ТЕКС­ТА на станции обеспечивается следующими характеристиками: ВЫСОТА ЛИТЕРЫ, ШИРИНА ЛИТЕРЫ, МАСШТАБ РАСШИ­РЕНИЯ ЛИТЕРЫ, НАПРАВЛЕНИЕ ТЕКСТА, ВЕРТИКАЛЬ ЛИТЕРЫ, ГОРИЗОНТАЛЬ ЛИТЕРЫ, МЕЖЛИТЕРНЫЙ ПРО­СВЕТ и ВЫРАВНИВАНИЕ ТЕКСТА.

Использование этих значений в отображаемом тексте опреде­ляется установленным значением атрибута шрифта и точности представления текста (шрифт и точность представления текста являются компонентами одного и того же атрибута). ВЫСОТА ЛИТЕРЫ определяет номинальную ширину литеры, реальная ширина определяется отношением ширины литеры к ее высоте, которое установлено разработчиком шрифта и может меняться от литеры к литере. Масштаб расширения литеры определяет откло­нение отношения ширины к высоте литеры от отношения, указан­ного разработчиком шрифта. ВЕРТИКАЛЬ ЛИТЕРЫ задает вер­тикальное направление литеры. ГОРИЗОНТАЛЬ ЛИТЕРЫ оп­ределяет направление основания литеры. Имеют значение только направления, но не длины этих векторов.

Для атрибута НАПРАВЛЕНИЕ ТЕКСТА возможными значе­ниями являются ВПРАВО, ВЛЕВО, ВВЕРХ и ВНИЗ. Этот атри­бут определяет направление вычерчивания строки текста. Для значения ВПРАВО строка текста пишется вдоль линии основания литеры в направлении, указываемом атрибутом ГОРИЗОНТАЛЬ ЛИТЕРЫ. Для значения ВЛЕВО направление текста противо­положно направлению, указываемому атрибутом ГОРИЗОН­ТАЛЬ ЛИТЕРЫ. Для значения ВВЕРХ направление текста сов­падает с направлением, определяемым атрибутом ВЕРТИКАЛЬ ЛИТЕРЫ. При значении ВНИЗ направление текста противопо­ложно направлению, указываемому атрибутом ВЕРТИКАЛЬ ЛИ­ТЕРЫ. При значениях ВВЕРХ и ВНИЗ литеры располагаются так, что их центры лежат на прямой линии в направлении, определяе­мом атрибутом ВЕРТИКАЛЬ ЛИТЕРЫ.

  1. Значение межлитерного просвета определяет размер дополнительного промежутка между двумя соседними литерами. Если значение этого атрибута равняется нулю, литеры распола­гаются одна за другой вдоль направления, указываемого атрибу­том НАПРАВЛЕНИЕ ТЕКСТА, без какого-либо дополнительного промежутка между ними. Отрицательное значение межлитерного просвета приведет к перекрытию соседних литер. Межлитерный просвет определяется как дробный множитель к номинальной вы­соте литер для данного типа шрифта.

  2. Действие атрибутов ВЫСОТА ЛИТЕРЫ, ШИРИНА ЛИТЕРЫ, МАСШТАБ РАСШИРЕНИЯ ЛИТЕРЫ, НАПРАВЛЕ­НИЕ ТЕКСТА, МЕЖЛИТЕРНЫЙ ПРОСВЕТ и ШРИФТ ТЕКСТА заключается в определении (воображаемого) прямоугольника со сторонами, параллельными осям координат, внутри которого рас­положен текст. Граничные стороны прямоугольника строятся следующим образом. Если значение атрибута НАПРАВЛЕНИЕ ТЕКСТА равно ВЛЕВО или ВПРАВО, то высота прямоугольника совпадает с высотой литеры выбранного шрифта, левая сторона прямоугольника совпадает с левой стороной самой левой литеры текста, а правая сторона прямоугольника — с правой стороной самой правой литеры текста и, аналогично, нижняя сторона пря­моугольника совпадает с нижней стороной самой нижней литеры текста; ширина прямоугольника равна ширине самой широкой ли­теры выбранного шрифта.

  3. Действие атрибутов ВЕРТИКАЛЬ ЛИТЕРЫ и ГОРИ­ЗОНТАЛЬ ЛИТЕРЫ заключается в преобразовании прямоуголь­ника, в результате чего получается параллелограмм (результат поворота и сдвига прямоугольника) — граничный параллелограмм текста.

ЛИНИЙ


правая линия


Атрибут ВЫРАВНИВАНИЕ ТЕКСТА управляет рас­положением граничного параллелограмма относительно задан­ной позиции текста. Для простоты атрибут ВЫРАВНИВАНИЕ ТЕКСТА определяется, исходя из стандартных значений по умол­чанию для ВЕРТИКАЛИ ЛИТЕРЫ и ГОРИЗОНТАЛИ ЛИТЕ­РЫ, когда граничный параллелограмм представляет собой прямоугольник. Горизонтальный компонент атрибута ВЫРАВ­НИВАНИЕ ТЕКСТА имеет четыре значения: ЛЕВОЕ, ЦЕНТ­РАЛЬНОЕ, ПРАВОЕ и ОБЫЧНОЕ. Если значение горизонталь­ного компонента ЛЕВОЕ, то левая сторона граничного паралле­лограмма текста проходит через заданную позицию текста. Ес­ли значение горизонтального компонента ЦЕНТРАЛЬНОЕ, по-



зиция текста лежит посредине между левой и правой сторонами граничного паоаллелограмма текста. Таким образом, если значе­ние атрибута НАПРАВЛЕНИЕ ТЕКСТА ВВЕРХ или ВНИЗ, то прямая линия, проходящая через центральные линии литер, так­же проходит через позицию текста. Вертикальный компонент ат­рибута ВЫРАВНИВАНИЕ ТЕКСТА имеет шесть значений: ПО ВЕРХУ, ПО ЗАГЛАВНОЙ, ПО ЦЕНТРУ, ПО ОСНОВАНИЮ, ПО НИЗУ и ОБЫЧНОЕ. Каждое из этих значений относится к одной из специфических шрифтовых горизонтальных линий в определе­нии литеры, как показано на черт. 3. При значении ПО ВЕРХУ верхняя сторона граничного параллелограмма текста проходит через позицию текста. При значении ПО ЗАГЛАВНОЙ позиция текста лежит на линии заглавной всей строки (НАПРАВЛЕНИЕ ТЕКСТА равно ВЛЕВО или ВПРАВО) или на линии заглавной самой высокой литеры в строке (НАПРАВЛЕНИЕ ТЕКСТА рав­но ВЛЕВО или ВПРАВО), или на линии, равноотстоящей от цент­ральных линий верхней и нижней литер (НАПРАВЛЕНИЕ ТЕКСТА равно ВВЕРХ или ВНИЗ). При значении ПО ОСНОВАНИЮ по­зиция текста лежит на линии основания всей строки (НАПРАВ­ЛЕНИЕ ТЕКСТА равно ВЛЕВО или ВПРАВО) или на базовой линии нижней литеры строки (НАПРАВЛЕНИЕ ТЕКСТА равно ВВЕРХ или ВНИЗ).

При значении ПО НИЗУ нижняя сторона граничного паралле­лограмма проходит через позицию текста.

В общем случае ориентация, называемая горизонтальной, определяется направлением вектора ГОРИЗОНТАЛЬ ЛИТЕРЫ при значении ВПРАВО и противоположно ему при значении ВЛЕ­ВО. Аналогично ориентация, которую называем вертикальной, оп­ределяется направлением вектора ВЕРТИКАЛЬ ЛИТЕРЫ при значении ВВЕРХ и противоположному ему при значении ВНИЗ.

  1. Каждый компонент ВЫРАВНИВАНИЕ ТЕКСТА может иметь значение ОБЫЧНОЕ. Для каждого значения атрибута НАПРАВЛЕНИЕ ТЕКСТА действие определенного компонента, имеющего значение ОБЫЧНОЕ, эквивалентно одному из других значений этого компонента. В каждом случае значение эквивалент­ного выравнивания выбирается так, чтобы добиться естественно­го выравнивания для этого значения атрибута НАПРАВЛЕ­НИЕ ТЕКСТА. Полный список эквивалентных значений приведен в табл. 1.

Таблица 1

НАПРАВЛЕНИЕ ТЕКСТА

Значение ОБЫЧЛОЕ для горизонтального и вертикального выравниваний

ВПРАВО ВЛЕВО ВВЕРХ ВНИЗ

(ЛЕВОЕ, ПО ОСНОВАНИЮ) (ПРАВОЕ, ПО ОСНОВАНИЮ) (ЦЕНТРАЛЬНОЕ, ПО ОСНОВАНИЮ) (ЦЕНТРАЛЬНОЕ, ПО ВЕРХУ)



Начальные значения геометрических атрибутов текста следу­ющие: ВЫСОТА ЛИТЕРЫ МК — 0,01 (т. е. 1 % высоты окна, принятого по умолчанию);

ВЕРТИКАЛЬ ЛИТЕРЫ МК — (0,1);

НАПРАВЛЕНИЕ ТЕКСТА — ВПРАВО;

ВЫРАВНИВАНИЕ ТЕКСТА — (ОБЫЧНОЕ, ОБЫЧНОЕ).

Начальные значения неявно задаваемых геометрических атри­бутов текста следующие:

ШИРИНА ЛИТЕРЫ МК — 0,01 (т. е. то же значение, что и ВЫСОТА ЛИТЕРЫ);

ГОРИЗОНТАЛЬ ЛИТЕРЫ МК — (1,0).

  1. Шрифт и точность представления текста вместе состав­ляют единый атрибут текста. Значение номера шрифта текста ис­пользуется для выбора определенного шрифта на станции. Каж­дая станция должна обеспечивать не менее одного шрифта, кото­рый позволял бы генерировать графическое представление литер, определенных в СТ СЭВ 359—76. Такой шрифт должен иметь но­мер 1. Номера шрифтов, большие 1, резервируются для будущей стандартизации. Номера шрифтов меньше нуля зависят от реа­лизации.

  2. Значение точности представления текста использует­ся для выбора «степени близости» представления текста на гра- фической станции к представлению текста, задаваемому атрибу­тами текста, не зависящими от станции, а также применяемыми в данный момент преобразованием и отсечением. Точность пред­ставления текста имеет следующие возможные значения:

ДО СТРОКИ — строка литер генерируется с заданным шриф­том и располагается в заданной позиции текста. ВЫСОТА ЛИ­ТЕРЫ, ШИРИНА ЛИТЕРЫ и масштаб расширения литеры учи­тываются в зависимости от возможностей станции. Атрибуты ВЕР­ТИКАЛЬ ЛИТЕРЫ, ГОРИЗОНТАЛЬ ЛИТЕРЫ, НАПРАВ­ЛЕНИЕ ТЕКСТА, ВЫРАВНИВАНИЕ ТЕКСТА и межлитерный просвет нет необходимости использовать. Отсечение выполняется методом зависящим от реализации и от графической станции;

ДО ЛИТЕРЫ — строка литер генерируется с заданным шриф­том. Для представления каждой отдельной литеры характеристи­ки ВЫСОТА ЛИТЕРЫ, ШИРИНА ЛИТЕРЫ, направление вер­тикали ВЕРТИКАЛЬ ЛИТЕРЫ и масштаб расширения литеры определяются способом, зависящим от станции. Расстояние между литерами вычисляется точно, причем для этой цели используются идеальные литеры, точно вычисленные с учетом характеристик текста и размеров шрифта. Положение результирующего гранич­ного параллелограмма определяется атрибутом ВЫРАВНИВА­НИЕ ТЕКСТА и позицией текста. Отсечение выполняется, как ми­нимум, с точностью до одной литеры;

ДО ШТРИХА — строка литер заданного шрифта изобража­ется в позиции текста с использованием всех атрибутов текста. Строка литер усекается точно по границе прямоугольника отсече­ния. Точность представления текста ДО ШТРИХА не обязатель­но означает, что изображение строится из коротких вектор-штри- хов; при условии, что шрифт удовлетворяет правилам, определя­ющим точность ДО ШТРИХА, он может быть реализован в лю­бом виде, например в виде растрового представления.

  1. Реализация ЯГС уровня вывода нуль должна поддер­живать точность представления текста ДО СТРОКИ и ДО ЛИ­ТЕРЫ. Если уровень вывода реализации выше чем нуль, то точ­ности представления текста поддерживаются следующим образом. Станция может использовать точность представления текста бо­лее высокую, чем от нее требуется, т. е. если в конкретном шриф­те поддерживается точность ДО ШТРИХА, то подразумевается, что точности ДО СТРОКИ и ДО ЛИТЕРЫ также доступны для этого шрифта, хотя графическая станция не обязательно должна поддерживать все точности данного шрифта (т. е. для заданного шрифта может отсутствовать точность ДО ШТРИХА или обе точ­ности ДО ШТРИХА и ДО ЛИТЕРЫ). Шрифт текста и точность должны быть обязательно реализованы на станции. То есть для любого уровня ЯГС, поддерживающего шрифт точности ДО ШТРИХА, каждая станция, реализованная на конкретном обору­довании, должна поддерживать не менее одного текстового шриф­та точности ДО ШТРИХА. Это должен быть шрифт с номером 1, содержащий набор литер в соответствии со СТ СЭВ 359—76. Это означает, что для тех реализаций, которые имеют недостаточно развитую аппаратную часть, для текста точности ДО ШТРИХА потребуется программный генератор литер. Не обязательно, что­бы все станции дюддерживали все шрифты, но для тех из них, ко­торые имеют такую возможность, для выбора одинаковых шриф­тов следует использовать один и тот же номер шрифта.

  2. Шрифты определяются только в реализации ЯГС. Разработчик шрифта задает форму каждой литеры, описывая ее в локальной двумерной декартовой системе координат шрифта. Шрифт может быть равномерным или пропорциональным. Для каждой литеры в системе координат шрифта определяются пря­моугольник литеры, линия основания шрифта, средняя линия шрифта, линия заглавной и центральная линия (черт. 3).

Для равномерных шрифтов прямоугольники всех литер име-, ют одинаковый размер. Для пропорциональных шрифтов шири­на прямоугольников литер может быть различной для разных литер. Границы прямоугольника литеры должны быть парал­лельны осям системы координат шрифта. Линия основания шриф­та, средняя линия и линия заглавной должны быть параллельны оси X и находиться в пределах, ограниченных вертикальными ли­ниями прямоугольника литеры. Положение средней линии шриф­та задается разработчиком шрифта с целью выравнивания строк текста. Центральная линия параллельна оси Y и делит литеру пополам. Точное положение центральных линий для всех литер определяется разработчиком шрифта.

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