9 Текст

У наступних розділах обговорюються питання структурування тексту. Елементи представлення тексту (елементи вирівнювання, шрифту, таблиці стилів і т.д.) обговорюються в інших частинах цієї специфікації. Інформацію про символах см. В розділі про наборі символів документа.

9.1 не відображаються символи

Набір символів документа включає безліч різних не відображаються символів. Багато з них є друкарськими елементами, що використовуються в деяких додатках для досягнення спеціальних візуальних ефектів відображення. У мові HTML тільки такі символи визначаються як не відображаються :

  • пробіл набору символів ASCII (& # x0020;)
  • табуляція набору символів ASCII (& # x0009;)
  • ASCII form feed (& # x000C;)
  • пробіл нульової ширини (& # x200B;)

Символи перекладу рядка також є не відображаються. Пам'ятайте, що хоча символи & # x2028; і & # x2029; визначені в специфікації [ISO10646] як роздільники рядків і абзаців відповідно, це не визначає символи перекладу рядка в HTML, а також в цій специфікації вони не включені в більш загальну категорію не відображаються символів.

У цій специфікації не визначається поведінка, відображення та ін. Символів пробілів, якщо вони явно не визначені як не відображаються символи. З цієї причини для досягнення візуальних ефектів форматування, що використовують не відображаються символи замість пробілів, авторам слід використовувати відповідні елементи і таблиці стилів.

Для всіх елементів HTML, крім послідовностей не відображаються слово (ми використовуємо термін "слово" для позначення "послідовності відображуваних символів") в тезі PRE . При форматуванні текст агенти користувачів повинні ідентифікувати ці слова і обробляти їх відповідно до угод щодо певної мови і цільового носія.

Форматування може включати прогалини між словами (звані межсловних пробілами), але угоди щодо межсловних прогалин змінюються в залежності від сценарію. Наприклад, в латинських сценаріях міжсловних пробіл зазвичай відображається як пробіл набору символів ASCII (& # x0020;), в той час як в таїландської кодуванні це роздільник слів нульовий ширини (& # x200B;). У японській і китайській кодуванні міжсловних пробіл зазвичай взагалі не генерується.

Пам'ятайте, що послідовність не відображаються символів між словами в вихідному документі може викликати відображення абсолютно іншого межсловного пробілу (крім елемента PRE ). Зокрема, агенти користувачів повинні припиняти введення послідовностей не відображаються символів при виведенні межсловного пробілу. Це можна і потрібно робити, навіть при відсутності інформації про мову (з атрибута lang , полях заголовка HTTP "Content-Language" (див. [RFC2068] , раздел14.13), налаштувань агента користувача і т.д.).

Елемент PRE використовується для тексту фіксованої , в якому не відображаються символи мають важливе значення.

Для того, щоб уникнути проблем з правилами переносу рядків SGML і невідповідності між існуючими застосуваннями, автори не повинні покладатися на агенти користувачів при генерації не відображаються символів безпосередньо після початкового тега або безпосередньо перед кінцевим тегом. Таким чином, автори і особливо засоби розробки , повинні писати, наприклад:

  <P> Ми пропонуємо безкоштовну <A> технічну підтримку </A> для зареєстрованих користувачів. </ P>

і не повинні писати:

  <P> Ми пропонуємо безкоштовну <A> технічну підтримку </A> для зареєстрованих користувачів. </ 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, радар і т.д.).

Елементи EM і STRONG використовуються для виділення. Інші фразові елементи мають певне значення в технічних документах. У наступних прикладах показано використання деяких фразових елементів:

  Як сказав <CITE> Гарі Трумен </ CITE>,
 <Q lang = "en-US"> The buck stops here. </ Q>
 Детальніше див. <CITE> [ISO-0000] </ CITE>.
 Надалі використовуйте наступний номер посилання: <STRONG> 1-234-55 </ STRONG>

Подання фразових елементів залежить від агента користувача. Зазвичай візуальні агенти користувачів представляють текст елемента EM курсивом, а текст елемента STRONG напівжирним шрифтом. Синтезатори мови можуть змінювати параметри синтезу, наприклад, гучність, підвищення тону і швидкості відповідно.

Елементи ABBR і ACRONYM дозволяють авторам явно показувати використання абревіатур і акронімів. Західні мови широко використовують акроніми, такі як "GmbH", "НАТО" і "ФБР", а також абревіатури типу "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>

Пам'ятайте, що абревіатури і акроніми часто мають різне вимова. Наприклад, якщо слова "США" і "BBC" зазвичай вимовляються побуквенно, слова "НАТО" і "ЮНЕСКО" вимовляються фонетично. Інші форми абревіатур (наприклад, "URI" і "SQL") деякими людьми вимовляються побуквенно, а іншими - як слова. При необхідності авторам слід використовувати таблиці стилів для вказівки вимови абревіатур.

9.2.2 Лапки: Елементи BLOCKQUOTE і Q

 <! ELEMENT BLOCKQUOTE - - ( % block; | SCRIPT) + - довга цитата -> <! ATTLIST BLOCKQUOTE % attrs;
  - % Coreattrs , % i18n , % events - cite % URI;
  #IMPLIED - Адреса URI документа або повідомлення -> <! ELEMENT Q - - ( % inline; ) * - коротка вбудована цитата -> <! ATTLIST Q % attrs;
  - % Coreattrs , % i18n , % events - cite % URI;
  #IMPLIED - Адреса URI документа або повідомлення -> 

Початковий тег: обов'язковий, кінцевий тег: обов'язковий

визначення атрибутів

cite = uri [CT]
Значення цього атрибута є URI, який визначає джерело документа або повідомлення. Цей атрибут призначений для надання інформації про джерело, з якого запозичена цитат.

Ці два елементи визначають текст в лапках. Елемент BLOCKQUOTE призначений для довгих цитат (вміст рівня блоку) і Q призначений для коротких цитат (вбудоване вміст), в яких не потрібно розбиття на абзаци.

У цьому прикладі цитата з книги "Дві твердині" Дж. Р. Р. Толкієна відформатована за допомогою елемента blockquote.

  <BLOCKQUOTE cite = "http://www.mycom.com/tolkien/twotowers.shtml">
 <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"> I saw Lucy at lunch, she says <Q lang = "en"> 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;), переклад рядка (& # x00OA;) або пара повернення каретки / переведення рядка. Всі переходи на інший рядок є нецензурними символами.

Детальніше про перехід на інший рядок в специфікації SGML см. В розділі зауважень про перехід на новий рядок в додатку.

Примусовий перехід на новий рядок: елемент BR  

  <! ELEMENT BR - O EMPTY - примусовий перехід на новий рядок ->
 <! ATTLIST BR
  % coreattrs;
  - Id , class , style , title -
  >

Початковий тег: обов'язковий, Кінцевий тег: заборонений

Елемент BR примусово розбиває (закінчує) поточний рядок тексту.

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

З використанням двонаправленого форматування , елемент BR повинен діяти так само, як діє символ роздільник РЯДКИ [ISO10646] в двунаправленном алгоритмі.

Заборона переходу на новий рядок  

Іноді авторам потрібно уникнути переходу на новий рядок між двома певними словами. Комбінація символів & 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 см. В розділі зауважень про перехід на новий рядок в додатку.

У наведеному вище фрагменті DTD вказується, які елементи не можуть перебувати в оголошенні PRE . Те ж саме виконується в HTML 3.2; це можна зберігати постійного міжрядкового інтервалу і вирівнювання стовпців для тексту, що генерується з використанням шрифту з символами рівної ширини. Авторам не рекомендується змінювати таку обробку за допомогою таблиць стилів.

У наступному прикладі показана відформатована строфа з вірша Шеллі 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 традиційно генерують абзаци з нецензурним символом перед абзацом і після нього, наприклад,

  Одночасно почали формуватися система нумерації,
  календар, ієрогліфічне письмо і технічно розвинене
  мистецтво, все, що пізніше вплинуло на інших людей.
  В рамках цього розвитку або культурного прогресу
  Предклассического епоха поділяється на Ранній,
  Середній і Пізній періоди, до яких можна додати 
  перехідний або протоклассіческій період, деякі риси
  якого будуть потім притаманні цивілізаціям Америки.

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

  Одночасно почали формуватися система нумерації,
  календар, ієрогліфічне письмо і технічно розвинене
  мистецтво, все, що пізніше вплинуло на інших людей.
  В рамках цього розвитку або культурного прогресу
  Предклассического епоха поділяється на Ранній,
  Середній і Пізній періоди, до яких можна додати
  перехідний або протоклассіческій період, деякі риси
  якого будуть потім притаманні цивілізаціям Америки.
 

Слідуючи настановам браузера NCSA Mosaic, створеного в 1993 році, агенти користувачів зазвичай не вирівнюють обидва поля, частково через складність цього процесу при відсутності спеціальних процедур розстановки переносів. Використання таблиць стилів і шрифтів без псевдонімів з субпіксельних позиціонуванням обіцяє авторам текстів на мові HTML ширші можливості.

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

За угодою візуальні агенти HTML розбивають текстові рядки так, щоб вони входили в межі використовуваних полів. Алгоритми розбиття залежать від сценарію форматування.

У західних сценаріях, наприклад, текст повинен розбиватися тільки в позиції, де стоїть не відображаються символ. Ранні версії агентів користувачів некоректно розбивали рядки відразу ж після початкового тега або перед кінцевим тегом елемента, що призводило до порушення пунктуації. Наприклад, розгляньте пропозицію:

  Статуя <a href="cih78"> Свободи </a>, яка є ...

Розбиття рядка відразу перед кінцевим тегом елемента A призведе до того, що кома буде поміщена в початок наступного рядка:

  Статуя Свободи
  , Яка є ...

Це помилка, оскільки в розмітці в цій позиції немає не відображаються символу.

9.4 Розмітка змін в документі: Елементи INS і DEL

  <! - INS / DEL are handled by inclusion on BODY ->
 <! ELEMENT ( INS | DEL ) - - ( % flow; ) * - вставлений текст, віддалений текст ->
 <! ATTLIST (INS | DEL)
  % attrs;
  - % Coreattrs , % i18n , % events -
  cite % URI;
  #IMPLIED - Інформація про причини зміни -
  datetime % Datetime;
  #IMPLIED - Дата і час зміни -
  >

Початковий тег: обов'язковий, Кінцевий тег: обов'язковий

визначення атрибутів

cite = uri [CT]
Значення цього атрибута є адреса URI, що визначає джерело документа або повідомлення. Цей атрибут вказує на інформацію, яка пояснює причини зміни документа.
datetime = datetime [CS]
Значення цього атрибута вказує дату і час виконання зміни.

Елементи INS і DEL використовуються для розмітки вставлених або віддалених розділів документа по відношенню до іншої версії документа (наприклад, в чернетці законопроекту, куди юристи повинні вносити поправки).

Ці два елементи незвичайні для HTML, оскільки вони можуть служити елементами рівня блоку або вбудованими елементами (але не тим і іншим одночасно). Вони можуть містити одне або кілька слів у абзаці або один або кілька елементів рівня блоку - абзаців, списків і таблиць.

Це приклад законопроекту про кількість депутатів у окружного шерифа - 3 виправлено на 5.

 <P>
  У шерифа може бути <DEL> 3 </ DEL> <INS> 5 </ INS> депутатів.
 </ P>

Елементи INS і DEL не повинні включати вміст рівня блоку, якщо вони є вбудованими елементами.

ПРИКЛАД неприпустимість використання:
Нижче показаний неприпустимий код HTML.

  <P>
 <INS> <DIV> ... вміст рівня блоку ... </ DIV> </ INS>
 </ P>

Агенти користувачів повинні генерувати вставлений і віддалений текст так, щоб зміни були очевидні. Наприклад, вставлений текст може відображатися спеціальним шрифтом, віддалений текст може взагалі не з'явитися, відображатися перекресленим або зі спеціальними позначками і т.д.

Обидва приклади нижче відповідають 5 листопада 1994 року, 20 год. 15 хв. 30 з по стандартним східним часом США.

  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.shtml">
 Більш того, останні цифри з відділу маркетингу говорять про те, що це корисна практика.
 </ INS>

У документі "http://www.foo.org/mydoc/comments.shtml" повинні міститися коментарі про те, чому ця інформація поміщена в документ.

Автори також можуть коментувати про вставлений або віддаленому тексті для елементів INS і DEL за допомогою атрибута title . Агенти користувачів можуть представляти цю інформацію користувачеві (наприклад, у вигляді спливаючого повідомлення). наприклад:

  <INS datetime = "1994-11-05T08: 15: 30-05: 00"
  title = "Змінено в результаті коментарів Михайла А. про зустріч.">
 Більш того, останні цифри з відділу маркетингу говорять про те, що це корисна практика.
 </ INS>