воскресенье, 29 января 2012 г.

2.4.8 Никогда не начинайте страницу с последней строки многострочного параграфа

“Последняя строка из параграфа, перенесенная на новую страницу, называется вдовой. У нее есть буде, но нет прошлого, и она выглядит укороченной и несчастной”.

В CSS 2 был введен всесторонний контроль разрыва страниц, однако поддержки браузеров ограничиваются пока только одной лишь Opera 9. Единственные страничные свойства, которые поддерживают Internet Explorer 7, Safari 3 и Firefox 2 – это ‘page-break-before’ и ‘page-break-after’ (это также относится к IE8 и Firefox 3 beta в момент написания статьи).

Свойства ‘page-break-before’ и ‘page-break-after ' позволяют сказать, когда должен произойти разрыв страницы - до или после указанного элемента. Следующий пример запускает новую страницу каждый раз, когда встречается заголовок ‘h1’ и после каждого раздела.

h1 {
   page-break-before:always }
.section {
   page-break-after:always }

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

.dontsplit {
   page-break-before:always }

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

Будущее.

В сущности, контроль вдов и сирот в настоящее время невозможен для подавляющего большинства людей. Однако поддержка CSS 2 будет со временем возрастать, так что если вы пишете в печатном стиле, то стоит учесть свойства, которые указаны в CSS 2. Родственное свойство к 'page-break-after', указанному ранее, свойство 'page-break-inside', которое останавливает элементы промежуточных страниц. Например вы можете применить это правило ко все рубрикам:

h1, h2, h3, h4, h5, h6 {
   page-break-inside:never }

Точные вдовы и сироты также доступны через свойства ‘вдова’ и 'сирота'. Значение свойства – минимальное количество линий, которым позволено быть вдовами или сиротами. Например, вы можете оставить менее четырех строк параграфа позади или разрешить к печати на новой странице, используя следующее:

p {
   widows:4;
   orphans:4 }

2.4.6 Короткие цифровые или математические выражения с жестким пробелом

“Жесткие пробелы полезны для предотвращения разрывов строк в пределах фраз таких как, ‘6,2 мм’, ‘3 дюйма’, ‘4 × 4’, или фразы типа ‘стр. 3’ и ‘глава 5’”.

В HTML жесткий пробел известен как неразрывный пробел и вставляется с помощью кода  , например:

1 inch is equivalent to 2.54 cm.

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

$search = '/([0-9]) ([a-zA-Z])/';
$replace = '$1 $2';
$text = preg_replace($search,$replace,$text);

Эта функция ищет последовательности из цифр, ставит после них пробел и букву, а затем заменяет пробел неразрывным пробелом. Это будет касаться случаев, таких как ‘2,54 см’. Для такой фразы, как ‘глава 5’ было бы лучше создать набор лозунгов, а не присоединять любое число к предыдущей строке. Кроме того, правила должны быть созданы для обработки общих математических операций, таких как ‘4×4’.

2.4.5 Перенос в соответствии с конвенцией языка

“В английском языке разрешены такие переносы ‘cab-ri-o-let’, а во французском только такие ‘ca-brio-let’. Конвенции каждого отдельного языка должны быть соблюдены, в идеале, даже при использовании одного иностранного слова или краткой цитаты”.

Эта рекомендация легко может быть достигнута, при расстановке переносов вручную. См. § 2.4.1 для получения дополнительной информации по ручной расстановке переносов.

Будущее.

Переносы будут включены в текстовый модуль CSS 3, но на момент написания статьи, функция определения переносов еще не готова. В настоящее время страничный модуль CSS 3 первоначально предлагают более подробную информацию о свойствах переноса. Выбор словаря переносов должен автоматически зависеть от языка документа. Язык документа должен быть указан в заголовке HTTP, но также может быть отождествлен с заметки:

<html lang="en"> ... </html>

У текстового модуля CSS 3 также есть свойство ‘hyphenate-dictionary’, указывающее какой словарь переносов использовать. Например:

html[lang=en] {
  hyphenate-dictionary:url(hyph_en.dic) }
html[lang=fr] {
  hyphenate-dictionary:url(hyph_fr.dic) }

Значение авто будет означать, что должны быть использованы встроенные словари, если таковые имеются.

2.4.3 Избегать более трех последовательных строк с переносами

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

Будущее.

Переносы будут включены в текстовый модуль CSS 3, но на момент написания статьи, функция определения переносов еще не готова. В настоящее время страничный модуль CSS 3 первоначально предложил более подробную информацию о свойствах переноса, среди которых есть свойство 'hyphenate-lines', которое определяет максимальное число строк с последовательными переносами. Например:

p {
  hyphenate: auto;
  hyphenate-lines: 3; }

Не проставленное значение означает, что нет ограничений на количество строк с переносами.

2.4.1 В строках с переносами оставлять, по крайней мере, 2 знака до и 3 знака после

“’Fi-nally’ является условной пригодной формой для окончания строки, а ‘final-ly’ – нет, поскольку на перенос остается слишком мало знаков”.

В отличии от обработки текстов и верстки программного обеспечения, до сих пор нет какой-либо автоматической расстановки переносов, встроенной в браузеры. Лучший метод для вставки переносов – вручную.

Плавающие макеты и возможность изменения текста означают что в Вебе никто не знает какое слово придется на конец строки. Чтобы справится с этим в HTML есть два типа переносов – простой дефис и мягкий дефис. Браузеры относятся к простому дефису также как и ко всем остальным знакам. Мягкий дефис показывают браузеру в каком месте слова перенос может быть удачным и должен быть отображен когда слово разбивается на две строки.

Мягкий дефис существует с HTML 3.2, и объясняется также в рекомендации HTML 4.0. Его код - ­ or ­ который используется следующим образом:

anti&shy;dis&shy;est&shy;ab&shy;lish&shy;ment&shy;arian&shy;ism

Который оказывается в вашем браузере таким: anti¬dis¬est¬ab¬lish¬ment¬arian¬ism anti¬dis¬est¬ab¬lish-ment¬arian¬ism anti¬dis¬est¬ab¬lish¬ment¬arian¬ism.

По определению, мягкий дефис должен быть использован только тогда, когда слово переносится. Поддержка браузеров была различная, но ситуация улучшилась в последнее время. Internet Explorer 6 трактует мягкий дефис правильно, как и Opera, Safari 2 и Firefox 3. Однако старшие Gecko-браузеры, такие как Firefox 2 скрывают все мягкие дефисы и не выполняют никаких переносов. В отличие от Safari 1 отображает все мягкие переносы независимо от того, переносится ли слово.

Будущее.

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

p {
  hyphenate: auto; }

На момент написания последнего рабочего проекта, в марте 2007 года, говорится, что функция определения переноса еще не готова, но вполне вероятно, что будут введены современные средства управления переносов. CSS 3 страничный модуль Медиа первоначально предлагал более подробную информацию о свойствах переноса, среди них свойства дефис-до и дефис-после, которые определяют минимальное количество символов в переносимом слове и количество символов после переноса. Например:

p {
  hyphenate-before:2;
  hyphenate-after:3; }

2.3.3 Добавление разрыва до или после блока цитат

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

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

blockquote {
   margin:1.5em }

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

2.3.2 В непрерывном тексте отметьте все параграфы после первого, с отступом не менее 1 em

“Орнаменты [...], снижение строк [...], снижение [...] и все остальное имеют свои области применения, но самое простой, безошибочный и ненавязчивый способ маркировки отступов – это простой отступ”.

Отступ первой строки абзаца, или любого блочного элемента достигается в CSS через свойство 'text-indent':

p {
   text-indent:1em }

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

p + p {
   text-indent:1em }

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

p {
   margin-bottom:0 }
p + p {
   text-indent:1em;
   margin-top:0 }

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

Следует отметить, что Интернет Експлорер не поддерживает смежный селектор. В предыдущих примерах, ИЕ6 не сделает отступа ни перед каким параграфом, кроме тех параграфов, которые будут отмечены строкой.

Отступы – это не единственный путь идентификации параграфа. Есть много альтернатив: простые блочные параграфы, орнаментированные отступы, орнамент в виде неразрывного потока или опущенная строка.

Блочные параграфы.

Как отмечалось ранее, блочные параграфы – это параграфы разделенные строкой – метод используется браузерами по умолчанию. Как объяснялось в § 2.2.2, поля разделения параграфов должны быть установлены в том же значение, что и высота строки, для того, чтобы сохранялся ритм текста.

Уменьшение

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

p {
   margin-bottom: 0 }
p + p {
   text-indent:-1.5em;
   margin-top:0 }

Орнаменты

Орнаментальные отступы, в отличие от стандартных отступов, не обязательно требуют использования свойства ‘text-indent’ для достижения основного эффекта (хотя оно может помочь ясности). Ключом к достижению этого эффекта является использование CSS 2.1: до псевдо-элемента указать орнамент. Следующий пример вставляет цветочные сердца в начале последующего параграфов:

p {
   margin-bottom: 0 }
p + p:before { 
  content: "2767"; 
  padding-right: 0.4em;
  margin-top:0 }

В приведенном выше примере, применяя ‘text-indent’ к параграфу приведет к возникновению орнамента в первой строке параграфа; чтобы отделить орнамент от контента нужно применить ‘padding-right’ к основному контенту.

Другое использование орнаментов, в качестве абзаца, должно иметь непрерывный поток текста с параграфами, разделенными орнаментом. Чтобы добиться этого, параграфы должны быть установлены для отображения в качестве встроенных элементов, с орнаментом установленным как показано раньше (в данном случае декоративные 'pilcrow’ используются вместо цветочных сердец):

p { display: inline }
p + p:before { 
  content: "2761"; 
  padding-right: 0.1em;
  padding-left: 0.4em }

Следует отметить, что упомянутые правила орнамента не будут работать в Internet Explorer (до версии 7 на момент написания статьи), так как он не поддерживает содержание свойства CSS. Кроме того, Firefox на Windows (проверено на XP SP2 на момент написания статьи) будут отображаться только те орнаменты, которые содержатся в текущем шрифте. По существу, эти ограничения означают, что вышеупомянутая техника не может полагаться на работу на машинах Windows, в настоящее время. Альтернативный метод – это использование фоновых изображений, или включение реальных изображений в код, который, в случае калибровки в EMS, изменялись бы в размере в пропорции к тексту.

Droplines.

Такие параграфы начинаются на одну строку ниже относительно конца предыдущего параграфа. В отличие от других упоминающихся стилей, таких параграфов в длинных текстах невозможно последовательно достичь в CSS без непомерно длинных файлов CSS или (предпочтительно) помощи JavaScript.

Техника, которая может быть применена, похожа на технику, используемую для непрерывного потока текста, который использует дисплей: встроенная для достижения горизонтального позиционирования. Как только параграфы позиционированы горизонтально, относительная высота эквивалентная высоте строки, применимая к последующим параграфам. Может создать желаемое вертикальное положение (и, следовательно, полный эффект снижения)

p {
  display: inline; 
  position: relative }
p + p {top: 1.3em }

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

p {
  display: inline; 
  position: relative }
p + p {top: 1.3em }
p + p + p {top: 2.6em }
p + p + p + p {top: 3.9em }

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

2.3.1 Установка открытых параграфов по левому краю

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

Параграфы и другие блочные уровневые элементы предназначены для использования свойства 'text-indent'. Для обеспечения параграфа, установленного по левому краю, 'text-indent' должен быть установлен на ноль:

p {
  text-indent:0 }

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

суббота, 28 января 2012 г.

2.1.6 ‘letter-spacing’ всех строк с большой или маленькой буквы. Длина строки цифр

"Сокращения такие, как ЦРУ и ООП часто встречаются в некоторых текстах. Также сокращения, такие как CE и BCE или AD и BC. Нормальное значение ‘letter-spacing’ для этих последовательностей с маленькой или большой буквы составляет от 5% до 10% от размера шрифта. Многим типографам нравится расставлять ‘letter-spacing’ во все строки, в том числе и с цифрами. Пробел имеет важное значение для быстрого чтения длинных, принципиально бессмысленных строк, таких как серийные номера и полезен даже в коротких строках, таких как номера телефонов и даты”.

‘letter-spacing’ в CSS достигается с применением свойства под одноименным названием. Чтобы сократить такие пробелы на 10% от размера шрифта нужно обернуть аббревиатуры в теги и применить правило CSS, такое как:

ABBR {letter-spacing:0.1em}

Если вы создали статическую страницу для вашего сайта, то вставки и в случае необходимости могут быть немного утомительными, но, вероятно, возможными. Работа с текстом предоставлена менеджерской системе контента, однако, это другое дело, и потребует какой-то автоматизации. На данный момент ваш CMS разработчик, вероятно, обратиться к регулярным выражениям. Я не собираюсь объяснять здесь очередные выражения - есть много ресурсов, в других местах в Интернете, - но в виде функции PHP здесь есть выражение для начала:

$search = '/\b([A-Z][A-Z0-9]{2,})\b/';
$replace = '<abbr>$1</abbr>';
$text = preg_replace($search,$replace,$text);

Эта функция ищет последовательность из 3 или более заглавных букв или цифр, такие как CSS, HTML и W3C, и заключает теги вокруг них.

2.1.5 Добавить маленький пробел или вовсе не добавлять в строках с инициалами

“Такие имена как В.Б.Йетс и Й.С.Л. Прилвитс нуждаются в ‘hair space'. ‘thin spaces’ или отсутствие пробелов – после среднего периода [точка]. Нормальный пробел следует за последним периодом в строке”.

‘hair spaces’ или ‘thin spaces’ являются двумя из многих других символов, доступных в Unicode. Даже если сам символ не включен в текущий шрифт Unicode браузеры будут отображать его в хорошем масштабе. Вот как можно использовать 'hair space' и ‘thin space’, соответственно:

W.&#8202;B. Yeats
J.&#8201;C.&#8201;L. Prillwitz

Которые отображаются как В. Б. Йейтс и Дж. С. Л. Прилвитс. К сожалению, некоторые браузеры, которые не поддерживают Unicode, покажут квадратные символы-заполнители вместо требуемого пробела, так что пока поддержка не улучшится, не употреблять пробелы, вероятно, лучший выход в данном случае.

суббота, 21 января 2012 г.

2.1.4 Использовать единичный пробел между предложениями

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

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

  • &#8194; en space
  • &#8195; em space
  • &#8196; 3-per-em space
  • &#8197; 4-per-em space
  • &#8198; 6-per-em space
  • &#8199; figure space
  • &#8200; punctuation space
  • &#8201; thin space
  • &#8202; hair space

Есть еще один метод, применимый к пробелам: предварительное свойство в CSS, сохранение форматирования пробела. Однако, если вы используете пробелы для форматирования какого-либо фрагмента текста, например, компьютерный код или фрагмент поэзии, то вы должны предварительно заключить доступ в этот элемент, так как это более семантический способ сохранить пробелы предварительного форматирования.

воскресенье, 15 января 2012 г.

2.1.3 Установить рваный край, если он подходит тексту и странице

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

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

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

Настройка выравнивания текста или неровного края осуществляется в CSS через свойство выравнивания текста, а именно:


p {
  text-align: left;  /* правый край */ 
  }

p {
  text-align: right;  /* левый край */ 
  }

p {
  text-align: justify; /* по ширине */
  }

Эффективность выравнивания текста может быть достигнута, только если длинные слова написаны через дефис. HTML и CSS 2 не имеют какого-либо положения для автоматической расстановки переносов, а поддержки существующих веб-браузеров даже для ручного переноса, оставляет желать лучшего. Так что не устанавливайте автоматическое выравнивание текста в web.

Будущие соображения.

CSS3 предусматривает дальнейшее совершенствование переносов в тексте. Для европейских языков, свойство выравнивания текста предоставляет два варианта: между словами и между символами.

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

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


p {
  text-align: justify;
  text-justify: inter-character; 
  }

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

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

четверг, 12 января 2012 г.

2.1.2 Выбрать комфортный масштаб

Все, что по ширине от 45 до 75 символов, рассматривается как удовлетворительная длина линии одного столбца на страницу с засечками в размер текста.

Линия в 66 символов (считаются и буквы, и пробелы) считается идеальной по ширине. Для работы с несколькими столбцами лучше в среднем использовать от 40 до 60 символов.

Мера – это количество символов в одной линии одного столбца текста. В HTML нет концепции «столбцов» как таковых, вместо этого текст размещается в боксах. В CSS ширина бокса устанавливается с помощью собственной ширины с любой единицы длины, например:


div#col1 {
  width:400px }

div#col2 {
  width:50% }

div#col3 {
  width:33em }

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

В предшествующем примере первый столбец был с установленной шириной – 400 пикселей. С рендерингом текста в 12 пикселей – это приведет к масштабу приблизительно в 66 символов в строке. Если Ваш ридер увеличит размер текста до 16 пикселей, то масштаб снизится до 50 символов. Таким образом, масштаб меняется вместе с изменением размера текста.

Второй столбец имеет плавающую ширину: был установлен в 50% ширины. Предполагается, что ваш читатель, просматривая с окна в 1000 пикселей шириной, видит бокс в 500 пикселей шириной, в результате чего масштаб около 83 символов в строке.

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

Третий столбец имеет эластичную ширину: установлено 33 em в ширину. В среднем один символ занимает 0.5 em, соответственно этот бокс будет иметь масштаб в 66 символов на строку. Если Ваш ридер увеличит размер текста, ширина бокса будет увеличиваться соответственно и поэтому масштаб останется на уровне 66 символов, независимо от размера текста.

С типографской точки зрения, наиболее подходящий метод для установки ширины бокса в ems (эластичный макет), поскольку оно обеспечивает измерение и всегда устанавливается в спецификации типографа. Настройка ширина бокса в процентах (плавающий макет) дает типографу приблизительный контроль над масштабом, но и позволяет читателю настроить раскладку, чтобы удовлетворить его/ее комфорт. Сайт webtypography.net сделан с помощью плавающего макета для предоставления читателям контроля.

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

воскресенье, 8 января 2012 г.

2.1.1 Определить пробел в соответствии с размерами шрифта

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

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

В CSS установлено собственное расстояние между словами, значение которого по умолчанию является нормальным. Пробел по умолчанию эквивалентен приблизительно 0,25 ем, хотя точное значение будет зависеть от информации, закодированной в цифровой файл шрифта. Для того чтобы изменить пробел , Вы должны специфицировать длину ems. Эта длина суммируется с уже существующей длинной пробела; то есть пробел не устанавливает фактическое расстояние между словами, он прибавляется к уже существующему пробелу. Например:


p {
  word-spacing:0.25em
  }
h1 { 
  word-spacing:-0.125em
  }

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

Толкование ems

Ems имеет такое название поскольку оно предполагает приблизительный размер прописной буквы ‘m’ (соответственно и произношение ‘emm’), однако 1 em на самом деле существенно больше. Брингхурст описывает em таким образом:

Em – это скользящая мера. 1 em это расстояние эквивалентное размеру шрифта. В 6 кеглях em имеет значение в 6 пикселей, в 12 кеглях — em = 12 пикселей, в 60 — em = 60 пикселям. Таким образом один em пробел будет пропорционален в любом размере.

Чтобы проиллюстрировать эти принципы в рамках CSS , рассмотрим эти стили:


#box1 {
  font-size:12px;
  width:1em;
  height:1em;
  border:1px solid black; }

#box2 {
  font-size:60px;
  width:1em;
  height:1em;
  border:1px solid black; }

эти стили будут показаны как:

M
M

Обратите внимание на то, что оба бокса имеют одинаковую высоту и ширину — 1 em, но из-за того, что у них разный размер шрифта, один бокс больше другого. Размер шрифта первого бокса — 12 пикселей, соответственно высота и ширина тоже равна 12 пикселям; по такому же принципу установленный размер шрифта второго бокса — 60 пикселей, соответственно высота и ширина его равна 60 пикселям.