Иллюстрирование. Расстояние между буквами и словами

Выравнивание по заданному расстоянию

Рассмотрим вертикальное выравнивание на заданное расстояние. Свойство vertical align очень простое: оно перемещает элемент вверх или вниз на указанное расстояние. Таким образом, выражение verti cal align: 5px; сдвинет элемент вверх на пять пикселов относительно исходного положения. Отрицательные значения длины сдвигают эле мент вниз. Этой простой формы выравнивания не было в CSS1, но она добавлена в CSS2.

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

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

Рис. 6.18. Вертикальное выравнивание может привести к увеличению высоты строк

Расстояние между буквами и словами

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

Расстояния между словами

Свойство word spacing допускает положительные или отрицательные значения длины. Это значение добавляется к стандартному расстоя нию между словами. В сущности, word spacing служит дляизменения расстояния между словами. Поэтому применяемое по умолчанию зна чение normal аналогично нулевому значению (0).

Если задать положительное значение длины, расстояние между слова ми увеличится. А если задать отрицательное значение для word spac ing, то слова сдвинутся ближе друг к другу:

174 Глава 6. Свойства текста

p.spread {word spacing: 0.5em;} p.tight {word spacing: 0.5em;} p.base {word spacing: normal;} p.norm {word spacing: 0;}

The spaces between words in this paragraph will be increased by 0.5em.

The spaces between words in this paragraph will be decreased by 0.5em.

The spaces between words in this paragraph will be normal.

Эффект, оказываемый этими настройками, показан на рис. 6.19.

Рис. 6.19. Изменение расстояния между словами

До сих пор я не дал точного определения термину «слово». В термино логии CSS «слово» – это любая строка, не содержащая символов разде лителей и ограниченная такими символами с обеих сторон. Это опреде ление не относится к семантике, оно просто предполагает, что доку мент содержит слова, окруженные одним или несколькими символа ми разделителями. Нельзя ожидать от поддерживающего CSS агента пользователя, что он сможет во всех случаях отличить слово от не сло ва в данном языке. Это определение, каким бы оно ни было, означает, что word spacing вряд ли будет работать в языках, основанных на пик тографии или на нероманских стилях написания. Это свойство позво ляет создавать совершенно нечитаемые документы, что ясно видно на рис. 6.20. Следует с осторожностью применять word spacing.

Рис. 6.20. Действительно большие расстояния между словами

Расстояние между буквами

Многие проблемы, встречающиеся при работе с word spacing, имеют место в случае применения letter spacing. Единственное отличие меж ду ними состоит в том, что свойство letter spacing изменяет расстоя ния между символами или буквами.

Как и для свойства word spacing, допустимым значением letter spacing является любая длина. По умолчанию указывается ключевое слово normal (что аналогично letter spacing: 0). Любое вводимое значение длины будет увеличивать или уменьшать расстояние между буквами на эту величину. На рис. 6.21 показаны результаты применения сле дующей разметки:

p {letter spacing: 0;} /* идентично "normal" */

p.spacious {letter spacing: 0.25em;} p.tight {letter spacing: 0.25em;}

The letters in this paragraph are spaced as normal.

The letters in this paragraph are spread out a bit.

The letters in this paragraph are a bit smashed together.

Рис. 6.21. Разные расстояния между буквами

Рис. 6.22. Применение свойства letter%spacing для увеличения выразительности выделенного текста

Применение letter spacing для повышения выразительности выделе ния – это методика, освященная временем. Можно было бы написать следующее объявление и получить эффект, показанный на рис. 6.22:

strong {letter spacing: 0.2em;}

This paragraph contains strongly emphasized text that is spread out for extra emphasis.

Расстояние между словами и буквами и выравнивание

На значение word spacing может оказывать влияние значение свойства text align. Если элемент выровнен по ширине, пробелы между буква ми и словами корректируются так, чтобы текст занимал всю строку. Это может в свою очередь изменить параметры, определяющие рас стояние между словами и буквами, объявленные автором в свойствах word spacing. Если задано значение letter spacing, оно не может быть изменено text align, но если letter spacing имеет значение normal, рас стояние между символами может меняться для обеспечения выравни вания текста по ширине. CSS не указывает, как должны вычисляться пробелы, поэтому агент пользователя просто создает их.

Дочерний элемент, как обычно, наследует вычисленное значение сво его родителя. Нельзя сделать так, чтобы вместо вычисленного значе ния свойств word spacing или letter spacing наследовался коэффициент масштабирования (как это происходит в случае с line height). В ре зультате можно столкнуться с проблемой, показанной на рис. 6.23:

p {letter spacing: 0.25em; font size: 20px;} small {font size: 50%;}

This spacious paragraph features tiny text that is just as spacious, even though the author probably wanted the spacing to be in proportion to the size of the text.

Рис. 6.23. Унаследованный пробел между буквами

Работая со стилем для текста, вы можете устанавливать необходимые расстояния между символами, словами и строками. Задаются такие расстояния в любых единицах измерения CSS, будь-то px , pt , em или другое. Исключением являются проценты – с их помощью можно задать расстояние между строками (интерлиньяж), но они не работают при установке интервала между символами или словами.

Межсимвольный интервал CSS: letter-spacing

Задать межсимвольный интервал можно с помощью свойства CSS letter-spacing. Помимо обычных значений (положительных и отрицательных) также можно использовать значения inherit (чтобы наследовать значение у родителя) и normal (если необходимо вернуть нормальное расстояние между символами).

Пример записи межсимвольного интервала:

P { letter-spacing: 2em; }

Интервал между словами: word-spacing

Свойство CSS word-spacing отличается от предыдущего тем, что устанавливает расстояние между словами, а не между символами. Для данного свойства тоже предусмотрены значения normal и inherit . Можно задавать отрицательные значения. Ниже показан пример записи стиля:

P { word-spacing: 6px; }

Межстрочный интервал: line-height

С помощью свойства CSS line-height можно задавать расстояние между строками текста. Как было сказано в начале темы, для установки интерлиньяжа, помимо других единиц измерения, допускается использовать проценты. Также разрешено записывать значение в виде множителя (числа больше 0): для вычисления расстояния браузер умножит размер шрифта на заданное число. Отрицательные значения не работают. Доступны значения normal и inherit .

Ниже – пример, как сделать межстрочный интервал CSS:

P { line-height: 180%; }

На скриншоте можно увидеть, как выглядит текст со всеми тремя свойствами:

Скриншот: интервалы в CSS

Итоги

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


Как правило, для каждого шрифта определенного размера заранее установлены величины пробелов между словами , расстояние между буквами внутри слова и визуальная высота строки . Следует отметить, что расстояние между разными буквами в моноширинных шрифтах, таких как Courier New, всегда одинаковое. В других типах шрифтов межбуквенное расстояние зависит от буквосочетаний - в большинстве случаев оно фиксировано, но между некоторыми парами букв оно намеренно уменьшается, чтобы визуально сделать текст более "ровным" и равномерно распределенным. Например, между буквами АУ расстояние меньше, чем между буквами НП, так как буквы Н и П по своей форме прямые, а буквы А и У со скосами, причем направленными в одну сторону. При одинаковом расстоянии между буквами, А и У будут казаться стоящими дальше друг от друга, чем Н и П. Для того чтобы смягчить этот эффект, расстояние между ними чуть-чуть уменьшается, в результате чего визуально строка текста выравнивается. Это явление - одно из ярких проявлений обмана зрения.

В CSS для текстовых блоков можно регулировать размеры расстояний между словами в тексте, т.е., по сути, менять размер пробела. Также можно менять расстояния между буквами внутри слова (т.е. создавать уплотненный или разреженный текст) и управлять высотой текстовой строки. Высота строки - это расстояние между базовыми линиями двух соседних строк.

Аналогов таких свойств в HTML нет. Интервалы можно задавать только средствами CSS .

Свойство word-spacing

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

Рассмотрим пример:

Свойство letter-spacing

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

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

Оба свойства word-spacing и letter-spacing можно использовать совместно, так как при увеличении расстояния между буквами, для того чтобы сохранить читаемость и разделить слова, может потребоваться одновременно увеличить и расстояние между словами. Вот типичный пример оформления заголовка:

Н1 { word-spacing: 2 ex; letter-spacing: 0.3ех }

Обработка пробелов между буквами и словами

1. Расстояние между словами word-spacing

Устанавливает интервалы между словами. Можно использовать положительные и отрицательные значения. При отрицательном значении слова могут накладываться друг на друга.

На значение word-spacing оказывает влияние значение свойства text-align в случае выравнивания текста по ширине. Наследуется.

Синтаксис

P {word-spacing: normal;} p {word-spacing: 2px;}
Рис. 1. Расстояние между словами

2. Расстояние между буквами letter-spacing

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

Синтаксис

P {letter-spacing: normal;} p {letter-spacing: 2px;}
Рис. 2. Изменение расстояния между буквами с помощью свойства letter-spacing

3. Обработка пробелов white-space

Свойство обрабатывает пробелы между словами и переносы строк внутри элемента. Не наследуется.

white-space
Значения:
normal Значение по умолчанию. Между словами вставляется только по одному пробелу, дополнительные пробелы отбрасываются. Текст переносится только в случае необходимости.
nowrap Запрещает переносы строк, за исключением применения
.
pre Пробелы в тексте не игнорируются, браузер отображает дополнительные пробелы и переносы строк.
pre-wrap Сохраняет пробелы в тексте, делая разрывы строк там, где это необходимо.
pre-line Удаляет лишние пробелы, за исключением случаев
.
initial Устанавливает значение свойства в значение по умолчанию.
inherit Наследует значение свойства от родительского элемента.

Синтаксис

P {white-space: normal;} p {white-space: nowrap;} p {white-space: pre;} p {white-space: pre-wrap;} p {white-space: pre-line;}

4. Настройка табуляции tab-size

Для изменения величины отступа, получаемого с помощью клавиши ТAB, используется свойство tab-size . Значения свойства игнорируются, когда установлено одно из трёх значений pre-line , normal или nowrap свойства white-space .

Работает только для элементов