Данный файл является частью Руководства по TADS для авторов игр.
Copyright © 1987 - 2016 Майкл Дж. Робертс (Michael J. Roberts). Все права защищены.
Руководство было преобразовано в формат HTML Н. К. Гайем (N. K. Guy), компания tela design.

Перевод руководства на русский язык - Валентин Коптельцев


Приложение I


Отличия Multimedia TADS от стандартного языка HTML

 

Введение

Данный документ описывает различия между Multimedia TADS (другое название - HTML TADS) и стандартными версиями HTML.

Примечание переводчика: поддержка HTML в TADS реализовывалась где-то в начале двухтысячных, поэтому за основу была взята актуальная на тот момент версия этого языка. Насколько понимаю, адаптация TADS к более современным спецификациям HTML в обозримом будущем не планируется (да и смысла в этом большого нет).

Средства HTML, реализованные в Multimedia TADS, основаны на спецификации HTML 3.2, представляющей собой свод рекомендаций Консорциума Всемирной паутины; найти ее можно по ссылке http://www.w3.org/pub/WWW/TR/.

Основной причиной, по которой я взял за основу именно HTML 3.2, является то, что это широкораспространенный формат, имеющий все необходимые средства разметки (кроме того, на момент "рождения" Multimedia TADS он еще был и достаточно новым). За счет того, что документация по HTML обширна и легкодоступна, у авторов игр не должно возникнуть проблем с обучением использованию мультимедийных возможностей в TADS.

Хотя я пытался по максимуму соблюдать стандарт HTML 3.2, чтобы облегчить пользователям применение уже имеющихся у них знаний по HTML, тем не менее при обычном просмотре контента в Интернете Multimedia TADS наверняка имел бы проблемы со многими страницами. HTML - очень своеобразный и не всегда четко определенный язык, в ряде случаев неодинаково интерпретируемый разными браузерами, поэтому обеспечить совместимость конкретного браузера со всеми без исключения страницами достаточно сложно. Впрочем, для TADS это в общем-то и не требуется.

Почти одновременно со спецификацией HTML 3.2 предлагалась также версия 3.0. Как ни странно, HTML 3.2, будучи более новой версией языка, не является надмножеством HTML 3.0; даже наоборот, в версии 3.0 реализовано гораздо больше возможностей, чем в версии 3.2. Это идет вразрез с обычными представлениями о том, что версия стандарта с бОльшим номером должна обеспечивать обратную совместимость с предыдущими версиями. В данном случае это объясняется тем, что версия 3.0 так и не была принята в качестве стандарта и, соответственно, не получила широкого распространения; пока шла работа над предложением по HTML 3.0, параллельно разрабатывалась и спецификация HTML 3.2 на основе более старого стандарта 2.0.

Тем не менее, поскольку в версии 3.0 предусмотрен ряд удобных и полезных возможностей, я включил поддержку части функционала этой версии в Multimedia TADS. Эти возможности не затрагивают стандартное "поведение", характерное для HTML 3.2, поэтому человек, знакомый с форматом HTML 3.2, сразу сможет использовать мультимедийные возможности TADS, дополнительно изучать HTML 3.0 для этого необязательно. Подробнее см. ниже.

Помимо этого, в TADS реализованы некоторые возможности, характерные только для него. Эти расширения облегчают реализацию именно текстовых квестов и потому в стандартном HTML отсутствуют.

Мультимедийный TADS не поддерживает расширенные возможности HTML 4.0, каскадные таблицы стилей, а также какие-либо варианты DHTML.


Не поддерживаемые теги HTML 3.2

Следующие теги стандарта HTML 3.2 не реализованы в HTML TADS:

  HEAD
  BASE
  ISINDEX
  STYLE
  SCRIPT
  LINK
  META
  NXTID
  FORM
  INPUT
  SELECT
  OPTION
  TEXTAREA

В общем и целом, не поддерживается всё, что так или иначе связано с формами. Вряд ли это большая потеря, так как формы не особенно применимы в большинстве парсерных текстовых игр. Теги же, определяющие структуру гипертекста, такие как HEAD, ISINDEX и NXTID, просто неприменимы для нестандартной модели HTML-страницы, используемой в Multimedia TADS. Не поддерживаются также таблицы стилей (на самом деле они не поддерживаются и в HTML 3.2 - тег STYLE там представляет собой "пустышку", функциональное наполнение которой будет осуществляться в последующих версиях стандарта). Наконец, скрипты и апплеты также не имеют смысла, поскольку Multimedia TADS не является приложением типа "клиент-сервер".

Кроме того, в TADS не поддерживаются теги FRAMESET и FRAME. (Эти теги на самом деле не определены в HTML 3.2, однако их стоит упомянуть здесь, поскольку ряд браузеров, использующих HTML 3.2, поддерживают фреймы, вследствие чего многие пишущие на HTML авторы считают, что фреймы - это часть стандарта HTML 3.2). Однако в Multimedia TADS имеется собственный тег BANNER, реализующий в целом тот же функционал, что и фреймы.


Отличия от стандарта HTML 3.2

Как уже говорилось выше, при разработке Multimedia TADS ставилась задача максимальной совместимости с HTML 3.2. Однако поскольку TADS - несколько иное приложение, чем те, для которых разрабатывался HTML, мне пришлось позволить себе некоторые вольности в отношении языка, чтобы адаптировать его к использованию в квестах. В целом верно следующее - теги, непосредственно связанные с форматированием, полностью соответствуют стандарту; большинство исключений из этого правила связаны с разницей в структуре между выводом текста в квесте и стандартном документе HTML.

Элемент BODY

В отличие от документов HTML, предназначенных для обычных браузеров, элемент BODY может использоваться многократно. При каждом появлении тега <BODY> все указанные в нем атрибуты (как то цвет фона или текста) заменяют предыдущие значения для этих атрибутов; данные установки применяются ко всему окну.

Обратите внимание, что завершающего тега для BODY не существует.

Элемент TITLE

Элемент TITLE является необязательным и может использоваться многократно (в то время как стандарт HTML 3.2 требует включать один и только один элемент TITLE в каждый документ). Текст, заданный в элементе TITLE, применяется в момент, когда соответствующий тег встречается в первый раз в процессе формирования страницы. Таким образом, заголовки (которые и формируются данным элементом) не обновляются; скажем, при обратной прокрутке участка страницы с ранее заданным тегом <TITLE> в зону видимости окна каждый новый заголовок просто заменяет предыдущий.

Элементы PRE, LISTING, XMP

Атрибут WIDTH для этих тегов не поддерживается; если быть точным, TADS его распознает, но игнорирует. (На самом деле это не отклонение от стандарта, поскольку WIDTH представляет собой просто параметр, передаваемый браузеру, а конкретная реакция на него определяется самим браузером).

Теги OL и UL

Атрибут COMPACT распознается, но не оказывает никакого действия. (Поскольку обработка COMPACT зависит от конкретного браузера, данная особенность не является отклонением от стандарта).

Элемент <A>

Атрибуты NAME, REL и REV распознаются, но игнорируются. Атрибут HREF интерпретируется не в качестве URL-адреса (как в обычном браузере), а в качестве команды, передаваемой синтаксическому анализатору при клике на ссылку (подробнее см. ниже).

Элемент IMG

Атрибут ISMAP распознается, но игнорируется. (В обычных браузерах этот атрибут предназначен для использования с серверами, работающими по интерфейсу CGI; Multimedia TADS с такими серверами не работает в принципе).

Атрибут USEMAP работает только с локальными картами-изображениями; иначе говоря, название карты-изображения не может быть URL-адресом, ссылающимся на другой документ, а должно быть ресурсом, выводимым игрой на экран. В частности, это означает, что значение данного атрибута должно начинаться с решетки (#):

    <IMG SRC="images/navbar.jpg" USEMAP="#navmap">
    <MAP NAME="navmap">
     ... и т. д. ...

Обратите внимание, что Multimedia TADS всегда подставляет решетку в качестве первого символа значения атрибута, даже если это значение начинается с другого символа; иначе говоря, все адреса интерпретируются как локальные. Тем не менее, авторам настоятельно рекомендуется всегда указывать решетку в явном виде, чтобы обеспечить совместимость игры с будущими версиями интерпретатора.

Наконец, следует упомянуть еще об одной особенности (хотя она, строго говоря, не имеет отношения к совместимости с HTML): TADS поддерживает только графические форматы JPEG и PNG. Изображения GIF не поддерживаются.

Элемент MAP

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

Элемент AREA

Параметр SHAPE=POLY тега AREA в настоящее время распознается, но игнорируется. Область, заданная тегом AREA с параметром SHAPE=POLY, будет иметь нулевую площадь (т. е. использовать ее не получится). В настоящее время рекомендуется использовать комбинацию тегов AREA=RECT и/или AREA=CIRCLE для аппроксимации требуемого многоугольника.

Атрибуты APPEND и NOENTER, описанные в разделе, посвященном тегу <A HREF>, аналогичным образом работают и для тега AREA.


Нереализованные теги, атрибуты и элементы разметки HTML 3.0

Поскольку Multimedia TADS в основном основывается на спецификации HTML 3.2, теги, элементы разметки и атрибуты, не упомянутые далее в данном документе в качестве реализованных, не поддерживаются. Однако в целях полноты документации в данном подразделе перечислены основные средства HTML 3.0, отсутствующие в Multimedia TADS. Следует иметь в виду, что этот список необязательно является исчерпывающим.

Следующие теги HTML 3.0 не реализованы:

  LANG
  AU
  PERSON
  ACRONYM
  ABBREV
  INS
  DEL
  FIG
  FN

Не поддерживаются никакие теги и элементы разметки, связанные с математическими функциями.

Атрибуты ID, STYLE и CLASS, которые могут использоваться практически в любом теге HTML 3.0, не поддерживаются (за исключением случаев, специально оговоренных далее в документации).


Поддерживаемые теги, атрибуты и элементы разметки HTML 3.0

Оставшаяся часть данного раздела посвящена средствам HTML 3.0, реализованным в Multimedia TADS.

BQ

BQ является синонимом тега BLOCKQUOTE.

CREDIT

Тег CREDIT может размещаться в конце содержимого последовательности BLOCKQUOTE (или BQ). Данный тег является контейнерным и требует завершающего тега; всё, что размещено между начальным и конечным тегами, считается источником цитаты.

   <BQ>Гномон - это остров
      <CREDIT>Trinity</CREDIT></BQ>

NOBR

(Данный тег лишь упоминается в предлагаемой спецификации HTML 3.0 в качестве расширения, реализованного в нескольких популярных браузерах; остается неясным, является ли NOBR частью спецификации HTML 3.0).

Данный тег является контейнерным, для текста между <NOBR> и соответствующим ему </NOBR> не будет автоматически выполняться перенос на новую строку; иначе говоря, все переносы строки необходимо задать явно тегами <BR>.

<P NOWRAP>

Атрибут NOWRAP можно использовать для отмены автоматического переноса строк текста внутри конкретного параграфа. Перенос строк будет выполняться только при явном указании тегов <BR>. Иначе говоря, использование данного атрибута полностью эквивалентно "обертыванию" текста в теги <NOBR> и </NOBR>.

Атрибут NOWRAP можно использовать с большинством тегов, служащих для выделения блоков текста; наряду с тегом <P>, этот атрибут применим для DIV, UL, OL, DL, тегов выделения заголовков (H1...H6), ADDRESS и BLOCKQUOTE.

BANNER

Тег BANNER позволяет добавлять в окно непрокручиваемые участки. В Multimedia TADS этот тег используется, в частности, для реализации строки состояния в привычном для текстовых игр виде (область в верхней части окна, куда выводится необходимая оперативная информация по игре - чаще всего название текущей локации и число сделанных ходов/набранных очков). Хотя тег BANNER в спецификации HTML 3.0 предназначен для несколько иных целей, его "поведение" практически идеально подходит для реализации строки состояния текстовый игры. В связи с этим и было принято решение использовать данный тег вместо того, чтобы изобретать новый. Тем не менее, в TADS данный тег имеет ряд особенностей (в частности, некоторые новые атрибуты); подробнее см. в соответствующей главе.

TAB

Тег TAB обеспечивает базовые средства для выравнивания текста без использования сложной структуры тега TABLE. Определение <TAB ID=abc> создает позицию табулятора с именем "abc" в текущей горизонтальной позиции строки; его можно указать внутри обычного текста, чтобы создать отметку для позиционирования, которую можно будет использовать в следующих строках. Определение <TAB TO=abc> заполняет текущую строку пробелами вплоть до ранее определенной позиции табулятора "abc".

Атрибут ALIGN может использоваться внутри тега <TAB> для указания способа выравнивания. Данный атрибут можно указать как в определении позиции табулятора (<TAB ID=abc>), так и при каждом применении (<TAB TO=abc>). Если в теге TAB TO атрибут ALIGN не указан, берется его значения из соответствующего тега TAB ID; если и там этот атрибут не указан, принимается значение LEFT. При ALIGN=LEFT текст, начиная с содержащей тег <TAB TO> строки, выравнивается левым краем по табулятору; ALIGN=RIGHT выравнивает область текста после <TAB TO> вплоть до следующего <TAB TO> либо до конца строки (в зависимости от того, что встретится раньше) правым краем по табулятору. ALIGN=CENTER центрирует относительно позиции табулятора текст вплоть до следующего <TAB TO>. ALIGN=DP осуществляет выравнивание по десятичной точке (либо по другому исполняющему функции десятичной точки символу, если таковой назначен тегом DECIMAL="символ").

Если атрибуты <TAB ALIGN=CENTER> или <TAB ALIGN=RIGHT> заданы в отсутствие атрибута TO, выравнивание текста происходит относительно правого поля. Это обеспечивает простой механизм выравнивания текста по правому полю либо по центру пространства между концом текста, предшествующего тегу <TAB>, и правым полем.

Тег <TAB INDENT=n> где n - это число) делает отступ на n символов (точнее, типографских единиц) от начала строки (или, проще говоря, заполняет строку заданным числом пробелов). <TAB MULTIPLE=n> обеспечивает отступ до позиции, соответствующей ближайшему кратному указанному в теге числу количеству типографских единиц. Использование данного тега позволяет достичь эффекта установки нескольких табуляторов.

Атрибуты тега FONT

Для тега FONT можно указать атрибут FACE, в котором через запятую перечисляются названия шрифтов. Если первый шрифт в списке доступен в системе, на которой запущен HTML TADS, будет использоваться этот шрифт; далее проверяется на наличие второй шрифт в списке и так далее до тех пор, пока один из шрифтов в списке не будет найден либо список не кончится.

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

Атрибуты тега BASEFONT

Для тега BASEFONT можно задать атрибуты FACE и COLOR; здесь они работают точно так же, как для тега FONT.

Возможность задать CLEAR для большинства тегов блочного уровня

Большинство тегов блочного уровня (DIV, UL, OL, DL, все теги заголовков - от H1 до H6, ADDRESS BLOCKQUOTE) "понимают" атрибут CLEAR; данный атрибут для этих тегов работает так же, как для тега BR.

Расширения тега UL

Для тегов UL и LI можно указать атрибут PLAIN, означающий, что текущий элемент списка (в случае LI) либо все элементы списка (в случае UL) не следует выделять буллитами. Если тегом <LI PLAIN> определяется элемент нумерованного списка, этот элемент выводится без номера. Конструкция <OL PLAIN> также допустима, хотя и не слишком полезна (правда, теоретически ее можно использовать для "безномерного" вывода большинства (но не всех) элементов нумерованного списка (в этом случае для вывода номера у соответствующих элементов необходимо задать атрибут TYPE, чтобы отменить принятый по умолчанию упрощенный стиль вывода).

Тег UL, соответствующий ненумерованному списку, распознает атрибут SRC, в котором можно указать имя файла с изображением, используемым в качестве буллита. Если этот атрибут задан, то атрибут TYPE будет игнорироваться.

Атрибут SRC можно указать и для тега LI; в этом случае изображение будет использовано в качестве буллита только для данного элемента списка.

Расширения тега OL

Для тега OL атрибут SEQNUM эквивалентен атрибуту START.

Атрибут CONTINUE (используется без значения) указывает, что нумерация списка должна быть возобновлена с того места, где ранее она закончилась. Например, если предыдущий список остановился на цифре 5, следующий список начнется с элемента номер 6.

Заголовки списков (LH)

Multimedia TADS поддерживает тег <LH> спецификации HTML 3.0. Этот тег размещается непосредственно после тега UL or OL и перед первым тегом LI в списке. Тег LH является контейнерным; находящийся между открывающим и закрывающим тегом текст считается заголовком списка, выводится полужирным шрифтом с новой строки, с левым выравниванием и с таким же отступом, что и текст, непосредственно предшествующий списку.

Тег LH в неявном виде применяется к любому тексту, размещаемому между открывающим список тегом UL или OL и первом тегом LI; иначе говоря, любой текст, размещенный таким образом, будет считаться заголовком списка и выводиться с соответствующим форматированием. Такое же поведение характерно для большинства обычных браузеров.

Тег HR SRC

Тег HR позволяет задать атрибут SRC, определяющий URL-адрес изображения, используемого для формирования линии. Изображение повторяется столько раз, сколько необходимо для формирования линии на ширину страницы. Если при этом указан атрибут SIZE, он определяет высоту линии; если же нет, то высота линии будет соответствовать высоте изображения, используемого для ее формирования. Преимущество тега <HR SRC> перед тегом <IMG> состоит в том, что он позволяет заполнить страницу по горизонтали выбранным изображением, причем с автоматическим изменением масштаба при увеличении или уменьшении окна программы, в то время как <IMG> просто выводит изображение один раз.


Дополнения, вводимые TADS

Оставшаяся часть данного раздела посвящена расширениям стандарта HTML, вводимым Multimedia TADS.

Синтаксис закрывающих тегов

Multimedia TADS позволячет использовать в закрывающих тегах обратный слеш, в то время как стандартный HTML допускает использование только прямого слеша. Таким образом, в HTML TADS определения <\TABLE> и </TABLE> эквивалентны. (Поскольку в обычном HTML обратный слеш не используется в качестве специального символа, данная особенность не ведет к неоднозначности синтаксиса).

<BANNER>

BANNER - это тег, вводимый HTML 3.0, позволяющий создавать в документе непрокручиваемую область и отображать в ней любую разметку HTML. В Multimedia TADS данный тег (с некоторыми модификациями) используется для реализации строки статуса в стиле, характерном для классических текстовых квестов (полоса вверху экрана с выводом на нее текущей локации и количества сделанных ходов/набранных очков).

Более подробную информацию см. в соответствующем разделе.

<A HREF>

Как описано выше, тег <A HREF> позволяет создать своего рода "гиперссылку". В отличие от обычного браузера, TADS интерпретирует данную ссылку как команду. Когда игрок щелкает по ссылке, HTML TADS подставляет в командную строку текст из атрибута HREF, заменяя при этом текст, который был ранее набран в командной строке. Полученная команда автоматом запускается на исполнение (без ожидания нажатия клавиши Enter).

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

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

Этот способ обработки может быть изменен следующим образом. Во-первых, если для тега <A> определен атрибут APPEND (не требующий значения), система не удаляет уже набранный в командной строке текст, а лишь добавляет к нему текст ссылки HREF. Во-вторых, если в теге определен также не требующий значения атрибут NOENTER, полученная команда не будет автоматически передаваться на исполнение - у игрока будет возможность отредактировать ее.

Обратите внимание, что атрибуты APPEND и NOENTER аналогичным образом могут быть использованы с тегами <AREA>, определяющими ссылки на участках изображений.

<TAB MULTIPLE>

Как описано выше в разделе, посвященном особенностям реализации тега TAB, Multimedia TADS поддерживает определенный в спецификации HTML 3.0 тег <TAB>. Однако обратите внимание, что консструкция <TAB MULTIPLE> является расширением, характерным только для TADS.

Таблицы

Тег <TABLE> позволяет задавать атрибут HEIGHT для явного указания высоты таблицы. (Это расширение поддерживается рядом популярных браузеров, однако не входит ни в спецификацию HTML 3.2, ни в HTML 3.0). Как и для атрибута WIDTH, значение в HEIGHT можно указывать в пикселях или в процентах от вертикального размера окна, в котором отображается таблица; это может быть полезно для реализации специфического выравнивания по высоте.

Обратите внимание, что при указании значения в процентах для атрибута HEIGHT тега TABLE, вложенного в другую таблицу, в качестве расчетной базы для значения все равно берется размер окна программы, а не высота строки внешней таблицы. Это поведение отличается от атрибута WIDTH, где процентное значение для вложенной таблицы определяется исходя из ширины колонки внешней таблицы.

Тег CAPTION позволяет указывать как атрибут ALIGN, так и VALIGN. Если для ALIGN указано TOP или BOTTOM, тег CAPTION работает так, как это предусмотрено HTML 3.2. Однако для этого атрибута также можно задать значения LEFT, CENTER и RIGHT. Если вам необходимо явным образом настроить как горизонтальное, так и вертикальное расположение, дополнительно используйте атрибут VALIGN для выравнивания по вертикали. Значения по умолчанию - ALIGN=CENTER, VALIGN=TOP. Если для ALIGN указать TOP или BOTTOM, эффект будет таким же, как если бы вы привоили соответствующее значение атрибуту VALIGN и одновременно указали ALIGN=CENTER.

Атрибут BGCOLOR можно использовать для задания фонового цвета всей таблицы целиком (при указании в теге TABLE), определенной строки (тег TR) или отдельной ячейки (теги TD или TH). Наивысший приоритет имеет определение атрибута BGCOLOR для отдельной ячейки, затем идет определение для строки, а затем - для всей таблицы.

Звук

Multimedia TADS поддерживает воспроизведение звуковых эффектов и музыки, для чего используется тег <SOUND>, который является расширением стандарта HTML. Подробное описание и инструкции по использованию см. в разделе Звуки и музыка в Multimedia TADS.

Тег ABOUTBOX

Новый тег <ABOUTBOX> позволяет автору определить содержимое окна "Об игре". В большинстве систем с графическим интерфейсом пользователя приложения позволяют создавать пункт меню для вызова информации о приложении - названии, версии и др. (конкретная реализация этого функционала зависит от соглашений, принятых для данной системы).

Чтобы создать такое информационное окно в Multimedia TADS, выведите перед текстом, который хотите отобразить в этом окне, тег <ABOUTBOX>, затем выведите сам текст (можно использовать средства форматирования HTML) и завершите вывод закрывающим тегом </ABOUTBOX>. Обычно эту конструкцию помещают в функцию init, поскольку данную конструкцию достаточно вывести один раз в начале игры.

Ниже приведен пример использования данного тега. Здесь он размещен в функции commonInit, поскольку мы хотим обеспечить отображение этого текста при любом способе загрузки игры - стандартном или из ранее сохраненного состояния. В этом примере предполагается, что функции init и initRestore (одну из них система вызывает при запуске игры в зависимости от способа загрузки) обе обращаются к commonInit; в общем случае это необязательно будет выполняться, хотя в стандартном коде библиотеки stdr.t это так.

    commonInit: function
    {
        /* запуск игры в режиме HTML */
        "\H+";

        /* создание окна с информацией об игре */
        "<AboutBox>
        <body bgcolor=silver>
        <H3 align=center>Демо-игра</H3>
        <center>
        Эта игра демонстрирует ряд интересных новых
        средств Multimedia TADS.
        </center>
        </AboutBox>";
    }

Информация, заключенная внутри тегов ABOUTBOX, не выводится в обычном текстовом окне. Вместо этого TADS запоминает эту информацию с тем, чтобы отобразить ее, когда игрок вызывает окно с информацией об игре. (Для версии HTML TADS под Windows соответствующая команда имеется в меню Help, а в HyperTADS для "Макинтошей" - в меню Apple. Если в игре не инициализируется ABOUTBOX, этот пункт меню будет неактивным).

Дополнительные сущности

В Multimedia TADS определен ряд сущностей, отсутствующих в стандартном наборе HTML 3.2. В то же время эти сущности совместимы с HTML 4.0.

Для многих из этих символов на системах, не поддерживающих типографские символы, подбираются эквиваленты из обычного набора ASCII. В частности, символам &lsquo; и &rsquo; соответствует апостроф, &ldquo; и &rdquo; - двойная кавычка, а &endash; и &emdash; - знак дефиса. Остальные перечисленные символы не имеют прямого эквивалента в ASCII и могут в таких системах не отображаться вовсе или заменяться пробелом.

В дополнение к вышеперечисленным сущностям, Multimedia TADS поддерживает все сущности спецификации HTML в разделе "Мнемоники спец. символов, математических символов и греческих букв". На самом деле, поддерживаются практически все сущности/мнемоники, принятые в HTML 4; едиснтвенными исключениями являются мнемоники символов управления сращиванием (ensp, emsp, thinsp, zwnj, zwj) и маркеры направления текста (lrm, rlm).

Поскольку список сущностей/мнемоник, определенных в HTML 4, довольно пространен, мы не приводим его здесь. Ознакомиться с ним можно непосредственно в тексте спецификации HTML 4.0.

Кроме того, Multimedia TADS поддерживает именованные сущности набора символов ISO Latin-2, предназначенного для языков Восточной и Центральной Европы. Эти сущности не определены в HTML 4, однако поддерживаются некоторыми браузерами. Полный список поддерживаемых HTML TADS сущностей приведен здесь.

Семейства шрифтов

Атрибут FACE тега FONT (являющийся расширением, введенным HTML 3.0) позволяет указывать не только конкретное наименование шрифта, но и некое "семейство" шрифтов. Это позволяет пользователю определить стиль шрифта более точно, чем это можно сделать при помощи любой разметки HTML "верхнего" уровня, и при этом сохранить переносимость.

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

Кроме того, для некоторых операционных систем (в частности, Windows) Multimedia TADS дает возможность контролировать процесс подбора и игроку. Иначе говоря, семейства шрифтов позволяют автору задать некий общий стиль отображения текста, а игроку - указать конкретный шрифт для данного стиля.

Для семейств шрифтов можно указать следующие имена:

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

Обратите внимание, что семейство шрифтов можно указать и в качестве запасного варианта на случай, если указанного явно системного шрифта не окажется на компьютере пользователя. Веб-разработчики часто используют следующую стратегию: указывают в качестве замены для определенного системного шрифта несколько разных других шрифтов, распространенных на разных платформах. Например, шрифт Arial для Windows похож на шрифт Geneva для "Макинтошей", и один из них можно использовать в качестве запасного варианта на случай отсутствия другого. Используя семейства шрифтов, вы можете еще более последовательно воплотить эту стратегию, дополнительно повысив степень вероятности подбора подходящей замены при отсутствии у пользователя нужного вам шрифта. Например, поскольку Arial - это шрифт без засечек, то можно указать в качестве замены для него семейство TADS-Sans - примерно так:

    <font face='Arial,Geneva,TADS-Sans'>

А вот пример подбора замены для рукописного шрифта с использованием этого механизма.

    "Приглашение на свадьбу гласит:
    <p>
    <center>
    <font face='TADS-Script'>
    Господин и госпожа Димвит Флэтхед III
    <br>просят Вас
    <br>почтить мероприятие Вашим присутствием
    (и т. д. и т. п.)
    </font>
    </center>";

Несколько особняком стоит семейство шрифтов TADS-Input. Оно предназначено только для текста, вводимого игроком в командной строке; идея состоит в том, чтобы дать возможность игроку задавать форматирование (цвет, стиль) для этого текста. Обычно это реализуется путем определения функций commandPrompt и commandAfterRead примерно следующим образом:

    commandPrompt: function(code)
    {
        "&gt;<font face='TADS-Input'>";
    }
    commandAfterRead: function(code)
    {
        "</font>"
    }

Функция commandPrompt выводит приглашение на ввод (знак "больше"), используя для этого соответствующую сущность HTML - "&gt;", и устанавливает для шрифта значение TADS-Input, что соответствует использованию настроек для этого шрифта, установленного игроком в плеере. После того, как игрок завершит редактирование команды и нажмет клавишу ввода, функция commandAfterRead закрывает тег <FONT> для возвращения к исходному шрифту.

Обратите внимание, что вышеописанное поведение соответствует стандартным функциям commandPrompt и commandAfterRead, определенным в библиотеке stdr.t.

Параметризованные цвета

Многие теги имеют атрибуты, позволяющие задавать цвет; например, можно указать цвет фрагмента текста при помощи тега FONT с атрибутом COLOR:

    <FONT COLOR=RED>Это красный текст!</FONT>

В стандартном HTML для этого определен ряд названий цветов (BLACK, SILVER, GRAY, WHITE, MAROON, RED, PURPLE, FUCHSIA, GREEN, LIME, OLIVE, YELLOW, NAVY, BLUE, TEAL и AQUA); кроме того, цвета можно задавать при помощи шестнадцатиричных значений RGB (например, COLOR=#203040 определяет цвет с интенсивностью красной компоненты 20 (в шестнадцатиричном представлении), зеленой 30 и голубой 40; для всех компонент шкала допустимых значений составляет от нуля до FF в шестнадцатиричном представлении). Ниже приведены именованные цвета:

Цвета фона
Цвета текста на черном фоне
Цвета текста на белом фоне
black
black
black
silver
silver
silver
gray
gray
gray
white
white
white
maroon
maroon
maroon
red
red
red
purple
purple
purple
fuchsia
fuchsia
fuchsia
green
green
green
lime
lime
lime
olive
olive
olive
yellow
yellow
yellow
navy
navy
navy
blue
blue
blue
teal
teal
teal
aqua
aqua
aqua

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

Multimedia TADS содержит расширение системы определения цветов стандартного HTML, которое позволяет воспринимать настройки игрока и в то же время по-прежнему позволяет автору игры самому задать большую часть экранных настроек. Это так называемые "параметризованные" цвета, именуемые так потому, что ссылаются не на жестко заданные значения RGB, как делают цветовые атрибуты в стандартном HTML, а на определенные параметры, значения которых устанавливаются на этапе выполнения программы.

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

Для использования параметризованных цветов просто используйте их имена в соответствующих атрибутах вместо обычных цветовых определений HTML. Например, формирующий строку статуса код стандартной библиотеки advr.t определяет ее цветовые настройки следующим образом:

    <body bgcolor=statusbg text=statustext>

Имена параметризованных цветов приведены ниже.

Тег <Q>

Multimedia TADS поддерживает определенный в HTML 4.0 тег <Q>, служащий для обрамления фрагмента текста кавычками (открывающие вставляются на месте тега <Q>, а закрывающие - на месте ответного тега </Q>). Если интерпретатор их поддерживает, то используются типографские кавычки (“”); кроме того, для вложенных фрагментов закавыченного текста происходит автоматическое чередование двойных и одинарных кавычек (причем для внешнего фрагмента используются двойные кавычки - в соответствии с правилами, принятыми в Северной Америке и в отличие от обратного порядка, использующегося в Великобритании).

 

 


Так что давайте не будем закрывать глаза на наши различия.
ДЖОН Ф. КЕННЕДИ (JOHN F. KENNEDY), Речь в Американском Университете (1963)

Приложение H Содержание Приложение J