9  Текст

Содержание

  1. Пробелы
  2. Структурированный текст
  3. Строки и параграфы
  4. Маркировка изменений документа: элементы INS и DEL

В этом разделе рассматриваются вопросы структурирования текста. Элементы, представляющие текст (элементы выравнивания, элементы шрифта, таблицы стилей и т.д.), обсуждаются по всей спецификации. Информацию о символах см. в разделе  Набор символов документа.


9.1
  Пробелы

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

Переносы строк также являются пробельными символами. Обратите внимание, что, хотя 
 и 
 недвусмысленно определены в [ISO10646] как разделители строк и параграфов соответственно, они не образуют переносов строк в HTML, и данная спецификация не включает их в более общую категорию пробельных символов.

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

Для всех элементов HTML за исключением PRE, последовательности пробелов разделяют "слова" (мы используем здесь термин "слово" для обозначения "последовательности непробельных символов"). При форматировании текста, ПА (пользовательские агенты) должны идентифицировать эти слова и отделять их в соответствии с соглашениями конкретного языка (скрипта) и целевого носителя.

Такой вывод может включать пробелы между словами (называемые межсловное пространство), но соглашения по межсловному пространству варьируются от языка к языку. Например, в языках с латиницей, межсловное пространство обычно представлено как пробел ASCII ( ), а в тайских - это  нулевой пробел (​). В японском и китайском межсловное пространство обычно вообще не представляется.

Обратите внимание, что последовательность межсловных пробелов между словами в документе-источнике может давать совершенно другое представление межсловного пространства (за исключением тех случаев, когда используется элемент PRE). Обычно ПА сжимают полученные на вводе последовательности пробелов при создании межсловного пространства на выходе. Это может и должно делаться даже при отсутствии информации о языке (в атрибуте lang, в поле "шапки" HTTP "Content-Language" (см. [RFC2616], раздел 14.12), в установках ПА и т.д.).

Элемент PRE используется для форматирования текста, когда пробелы являются значащими.

Чтобы избежать проблем с правилами обрыва строк SGML и несоответствий с сохранившимися ещё программами, авторы не должны доверять ПА отображать пробелы непосредственно после начального тега или непосредственно перед конечным тегом. Таким образом, авторы, и в особенности - авторские утилиты, должны записать:

  <P>We offer free <A>technical support</A> for subscribers.</P>

а не:

  <P>We offer free<A> technical support </A>for subscribers.</P>

9.2 Структурированный текст

9.2.1  Элементы абзаца: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Атрибуты, определённые в другом месте

Элементы абзаца добавляют структурную информацию к фрагментам текста. Обычно значение элементов абзаца таково:

EM:
Курсив.
STRONG:
Полужирный.
CITE:
Содержит цитату или ссылку на другой ресурс.
DFN:
Определение термина.
CODE:
Обозначает фрагмент компьютерного кода.
SAMP:
Образец вывода программ, скриптов и т.п.
KBD:
Обозначает текст, введённый пользователем.
VAR:
Аргумент переменной или программы.
ABBR:
Сокращённая форма (напр., WWW, HTTP, URI, Mass. и т.д.).
ACRONYM:
Акроним (напр., WAC, radar и т.п.).

EM и STRONG используются для выделения текста. Другие элементы параграфа имеют специальные значения в технической документации. Вот примеры использования некоторых элементов абзаца:

As <CITE>Harry S. Truman</CITE> said,
<Q lang="en-us">The buck stops here.</Q>

More information can be found in <CITE>[ISO-0000]</CITE>.

Please refer to the following reference number in future
correspondence: <STRONG>1-234-55</STRONG>

Представление элементов абзаца зависит от ПА. Обычно визуальные ПА представляют EM текст курсивом, а STRONG текст полужирным шрифтом. ПА с голосовым синтезом могут менять параметры синтеза, такие как уровень громкости, высота и диапазон.

Элементы ABBR и ACRONYM позволяют авторам точно обозначить появления аббревиатур и акронимов.
В западных языках акронимы широко используются: "GmbH", "NATO" и "F.B.I.", также как и аббревиатуры: "M.", "Inc.", "et al.", "etc.".
В китайском и японском используется аналогичный механизм сокращений, когда на полное имя ссылаются последовательностью символов набора Han. Разметка таких конструкций предоставляет полезную информацию для ПА и утилит, таких как проверка правописания, голосовые синтезаторы, системы перевода и индексирующие программы в поисковых машинах.

Содержимое элементов ABBR и ACRONYM определяет само сокращённое выражение так, как оно нормально выглядит в тексте. Атрибут title этих элементов может использоваться для предоставления полной формы этих выражений.

Вот образцы использования ABBR:

  <P>
  <ABBR title="World Wide Web">WWW</ABBR>
  <ABBR lang="fr" 
        title="Soci&eacute;t&eacute; Nationale des Chemins de Fer">
     SNCF
  </ABBR>
  <ABBR lang="es" title="Do&ntilde;a">Do&ntilde;a</ABBR>
  <ABBR title="Abbreviation">abbr.</ABBR>

Заметьте, что аббревиатуры и акронимы часто имеют варианты произнесения. Например, если "IRS" и "BBC" обычно произносятся буква за буквой, то "NATO" и "UNESCO" произносятся фонетически (как слова).
К тому же, некоторые сокращённые формы (напр., "URI" и "SQL") произносятся некоторыми побуквенно, а другими - как слова. При необходимости, авторы должны использовать таблицы стилей для спецификации произношения сокращённых форм.


9.2.2
Кавычки: элементы BLOCKQUOTE и Q

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- полная форма ("закавычивания") -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- URI документа-источника или msg --
  >
<!ELEMENT Q - - (%inline;)*            -- сокращённая инлайн-форма ("закавычивания") -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- URI документа-источника или msg --
  >

Начальный тег: необходим, Конечный тег: необходим

Определение атрибута

cite = uri [CT]
Значением этого атрибута является URI, обозначающий источник документа или сообщения. Этот атрибут предназначается для сообщения информации о источнике, из которого заимствованы кавычки.

Атрибуты, определённые в другом месте

Эти два элемента обозначают текст в кавычках. BLOCKQUOTE предназначен для полной формы (содержимое уровня блока), а Q - для краткой формы (инлайн содержимое), которая не требует разрывов параграфов.

Это пример форматирует отрывок из "The Two Towers", J.R.R. Tolkien, блок в кавычках.

<BLOCKQUOTE cite="http://www.mycom.com/tolkien/twotowers.html">
<P>They went in single file, running like hounds on a strong scent,
and an eager light was in their eyes. Nearly due west the broad
swath of the marching Orcs tramped its ugly slot; the sweet grass
of Rohan had been bruised and blackened as they passed.</P>
</BLOCKQUOTE>

Представление кавычек 

Визуальные ПА обычно отображают BLOCKQUOTE как блок текста с отступом.

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

ПА должны отображать кавычки в манере, свойственной соответствующему языку (см. атрибут lang). Многие языки применяют знаки различных стилей для внешних и внутренних (вложенных) кавычек, что должно учитываться ПА.

Следующий пример иллюстрирует использование вложенных кавычек элемента Q:

John said, <Q lang="en-us">I saw Lucy at lunch, she told me
<Q lang="en-us">Mary wants you
to get some ice cream on your way home.</Q> I think I will get
some at Ben and Jerry's, on Gloucester Road.</Q>

Поскольку язык обоих блоков в кавычках - американский английский, ПА должен отображать их соответствующим образом, например, одиночными кавычками - внутренний блок и двойными кавычками - внешний блок:

  John said, "I saw Lucy at lunch, she told me 'Mary wants you
  to get some ice cream on your way home.' I think I will get some
  at Ben and Jerry's, on Gloucester Road."

Примечание. Мы рекомендуем, чтобы разработки таблиц стилей предоставляли механизм вставки знаков кавычек до и после ограничителей BLOCKQUOTE в манере, свойственной контексту конкретного языка и степени вложенности блоков.

Однако, поскольку многие авторы используют BLOCKQUOTE лишь как способ задания отступов, для сохранения замысла авторов ПА не должны вставлять знаки кавычек в стиле "по умолчанию".

Использование BLOCKQUOTE для задания отступов не рекомендуется. Вместо этого следует использовать таблицы стилей.


9.2.3
  Подиндекс и надиндекс: элементы  SUB  и   SUP

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- подиндекс, надиндекс -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Атрибуты, определённые в другом месте

Многие скрипты (напр., на французском) требуют над- или подиндексов для соответствующего представления. Элементы SUB и SUP должны использоваться для разметки текста в этих случаях.

      H<sub>2</sub>O
      E = mc<sup>2</sup>
      <SPAN lang="fr">M<sup>lle</sup> Dupont</SPAN>

9.3  Строки и параграфы

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

Разметка HTML, определяющая параграф, проста - это элемент P.

Визуальное представление параграфа - не такое простое. Несколько позиций, стилистических и технических, должно быть определено:

Мы рассмотрим эти вопросы далее. Выравнивание параграфов и всплывающие объекты рассматриваются далее в этом документе.

9.3.1  Параграфы: элемент  P

<!ELEMENT P - O (%inline;)*            -- параграф -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: не обязателен

Атрибуты, определённые в другом месте

Элемент P представляет параграф. Он не может содержать элементы уровня блока (включая сам P).

Мы не советуем авторам использовать пустые элементы P. ПА должны игнорировать пустые элементы P.

9.3.2 Управление обрывом строки

Обрыв строки определён как символ возврата каретки (&#x000D;), символ прогона строки (&#x000A;) или пара символов возврат каретки/прогон строки. Все обрывы строк являются пробелами.

Больше информации о SGML спецификации обрывов строк см. в примечаниях об обрыве строки в приложении.

Форсирование обрыва строки: элемент BR  

<!ELEMENT BR - O EMPTY                 -- принудительный обрыв строки -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

Начальный тег: необходим, Конечный тег: запрещён

Атрибуты, определённые в другом месте

Элемент BR принудительно обрывает (оканчивает) текущую строку текста.

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

В отношении двунаправленного форматирования элемент BR должен вести себя так же, как [ISO10646] символ LINE SEPARATOR в двунаправленном алгоритме.

Запрет обрыва строки 

Иногда необходимо предотвратить обрыв строки между двумя словами. &nbsp; (мнемоники &#160; или &#xA0;) действует как пробел, в котором ПА не может вставить обрыв строки.

9.3.3  Дефисы

В HTML имеются дефисы двух типов: обычный и "мягкий". Обычный дефис должен интерпретироваться в ПА как обычный символ. Мягкий дефис сообщает ПА о том, где может появляться обрыв строки.

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

В HTML обычный дефис представлен символом "-" (&#45; или &#x2D;). Мягкий дефис представляется ссылкой-мнемоникой &shy; (&#173; или &#xAD;)

9.3.4   Форматированный текст:  элемент  PRE

<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- форматированный текст -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: необходим, Конечный тег: необходим

Определение атрибута

width = number [CN]
Не рекомендуется. Этот атрибут подсказывает ПА желаемую ширину форматированного блока. ПА может использовать эту информацию для выбора шрифта подходящего размера или установки соответствующих отступов. Ширина выражается несколькими символами. В данный момент этот атрибут не поддерживается достаточно широко.

Атрибуты, определённые в другом месте

Элемент PRE сообщает визуальным ПА, что текст в этом элементе "форматирован". При обработке форматированного текста ПА:

Невизуальным ПА не нужно учитывать пробелы в содержимом элемента PRE.

Дополнительную информацию о SGML спецификации обрывов строки см. в замечаниях об обрыве строк в приложении.

Предыдущий фрагмент ОТД указывает, какие элементы не могут появляться внутри объявления PRE. Это то же самое, что и в HTML 3.2, и предназначено для сохранения постоянных пробелов между строками и выравнивания колонок текста, отображаемого шрифтом фиксированной ширины. Авторам не рекомендуется изменять такое поведение с помощью таблиц стилей.

Следующий пример показывает версию форматированной поэмы Shelly's "To a Skylark":

<PRE>
       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
</PRE>

А вот как это обычно отображается:

       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.

Символ горизонтальной табуляции.
Символ горизонтальной табуляции (десятеричная 9 в [ISO10646] и [ISO88591] ) интерпретируется обычно визуальными ПА как наименьше ненулевое количество пробелов (8), после которых устанавливаются точки  табуляции. Мы настоятельно не рекомендуем использовать горизонтальную табуляцию в форматированном тексте, поскольку обычно при редактировании устанавливают другие размеры табуляции, что приводит к нарушению выравнивания в документе.


9.3.5
  Визуальное представление параграфов

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

То, как параграфы отображаются, зависит от ПА. Параграфы обычно выравниваются по левому краю с "рваным" правым обрезом. Другие значения по умолчанию предусмотрены для письма справа-налево.

HTML ПА традиционно отображают параграфы с пропусками над и под, например,

  At the same time, there began to take form a system of numbering,
  the calendar, hieroglyphic writing, and a technically advanced
  art, all of which later influenced other peoples.

  Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

Это контрастирует со стилем, где есть отступы в первых строках параграфов и обычные расстояния между последней строкой одного и первой строкой другого параграфа, например,

     At the same time, there began to take form a system of
  numbering, the calendar, hieroglyphic writing, and a technically
  advanced art, all of which later influenced other peoples.
     Within the framework of this gradual evolution or cultural
  progress the Preclassic horizon has been divided into Lower,
  Middle and Upper periods, to which can be added a transitional
  or Protoclassic period with several features that would later
  distinguish the emerging civilizations of Mesoamerica.

Следуя первоначальным установкам браузера NCSA Mosaic browser в 1993 г., ПА обычно не выравнивают оба края, отчасти из-за того, что это трудно сделать эффективно при отсутствии соответствующих шаблонов обработки переноса слов. Появление таблиц стилей и неподставляемых шрифтов с субпикселным позиционированием обещает авторам HTML новые широкие возможности.

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

По соглашению, визуальные ПА HTML переносят строки, заполняя доступное пространство страницы. Алгоритмы переноса зависят от языка форматируемого текста.

В западных языках, например, текст должен переноситься только на пробелах. Ранние ПА некорректно переносили строки или после начального тега, или перед конечным тегом элемента, что приводило к появлению знаков "висячей" пунктуации. Например, рассмотрите это предложение:

   A statue of the <A href="cih78">Cihuateteus</A>, who are patron ...

Перенос строки сразу перед конечным тегом элемента A вызывает появление запятой в начале новой строки:

  A statue of the Cihuateteus
  , who are patron ...

Это ошибка, поскольку в этом месте в разметке не было пробела.


9.4
  Маркировка изменений документа: элементы  INS и DEL

<!-- INS/DEL обрабатываются при включении в  BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удалённый текст -->
<!ATTLIST (INS|DEL)
  %attrs;                                    -- %coreattrs, %i18n, %events --
  cite        %URI;          #ПРЕДПОЛАГАЕТСЯ  -- информация о причинах изменений --
  datetime    %Datetime;     #ПРЕДПОЛАГАЕТСЯ  -- дата и время изменения --
  >

Начальный тег: необходим, Конечный тег: необходим

Определения атрибутов

cite = uri [CT]
Значением данного атрибута является URI, указывающий на документ или сообщение-источник. Предполагается, что этот атрибут указывает на информацию, объясняющую, почему документ был изменён.
datetime = datetime [CS]
Определяет дату и время изменения документа.

Атрибуты, определённые в другом месте

INS и DEL используются для маркировки разделов документа, которые были вставлены или удалены для сравнения с другими версиями документа (например, в проектах законов, где законодателям необходимо просматривать изменения).

Эти два элемента необычны для HTML тем, что могут обрабатывать элементы уровня блока или инлайн-элементы (но не те и другие вместе). Они могут содержать одно или более слов в параграфе или один или более элемент уровня блока, такой как параграфы, списки или таблицы.

Этот пример мог бы быть из билля, изменяющего закон о том, что округ Sheriff может теперь выбирать не 3, а 5 депутатов.

<P>
  A Sheriff can employ <DEL>3</DEL><INS>5</INS> deputies.
</P>

Элементы INS и DEL не должны иметь содержимого уровня блока, если эти элементы действуют как инлайн-элементы.

НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:

<P>
<INS><DIV>...содержимое уровня блока...</DIV></INS>
</P>

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

Оба следующих примера относятся к 5 ноября 1994 г., 8:15:30 утра, US Eastern Standard Time.

     1994-11-05T13:15:30Z
     1994-11-05T08:15:30-05:00

С использованием INS это выглядит так:

<INS datetime="1994-11-05T08:15:30-05:00"
        cite="http://www.foo.org/mydoc/comments.html">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>

Документ "http://www.foo.org/mydoc/comments.html" будет содержать комментарии о том, почему информация была вставлена в документ.

Авторы могут также вводить комментарии во вставленном и удалённом тексте и в значениях атрибута title элементов INS и DEL. ПА могут показывать эту информацию пользователю (как всплывающие подсказки). Например:

<INS datetime="1994-11-05T08:15:30-05:00"
        title="Changed as a result of Steve B's comments in meeting.">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>