Официальная спецификация технологии встраивания шрифтов (font embedding), разработанная Консорциумом W3, является частью спецификации CSS уровня 2 (стр. 40). CSS не задается вопросом о том, как технология встраивания будет реализована в броузерах; спецификация лишь определяет синтаксис, позволяющий автору страницы описывать (или просто ссылаться на) нужный шрифт с помощью богатого набора свойств и шрифтовых дескрипторов. Эта информация (включенная либо в сам документ, либо в относящийся к нему стилевой файл) позволит броузеру выбрать, в зависимости от условий, один из следующих вариантов поведения:
• выбор заказанного шрифта (exact matching), если он уже присутствует на данном компьютере;
• выбор близкого по характеру шрифта (intelligent matching) на основе информации шрифтовых дескрипторов — высоты строчных и заглавных, характера засечек, наклона букв и т. п.;
• синтез нужного шрифта (font synthesis), для чего кроме перечисленных выше общих свойств шрифта нужна также метрическая информация о габаритах каждой буквы. Броузер может, к примеру, воспользоваться технологией Multiple Masters фирмы Adobe, позволяющей плавно менять ширину, насыщенность и другие параметры шрифта, и подогнать более-менее подходящий исходный шрифт под метрику требуемого;
• только в том случае, если все три предыдущих варианта не дали результата и если один из дескрипторов содержит URL файла шрифта, броузер может попытаться сгрузить его из сети и использовать для вывода текста.
Разумеется, выбор одного из этих вариантов поведения зависит как от возможностей броузера (так, в ближайшее время вряд ли можно ожидать появления броузеров, умеющих синтезировать шрифты), так и от замысла автора страницы (который может, например, запретить все варианты, кроме последнего — загрузки шрифтового файла из сети).
В то же время оба главных визуальных броузера — MSIE и NC — начиная с четвертых версий также поддерживают встраивание шрифтов. Технологии, используемые для этого извечными конкурентами, если можно так выразиться, гармонически дополняют недостатки друг друга. Броузер Microsoft использует синтаксис CSS2 для связывания шрифтов с HTML-документом, однако может работать только со шрифтами в специально созданном для этого формате «шрифтовых объектов» (основанный на TrueType, этот формат позволяет, в частности, вырезать для отправки только используемые в документе символы, содержит средства сжатия шрифтовых данных и предотвращения нелегального копирования распространяемых шрифтов). Привязка к «фирменному» формату не только закрывает эту технологию от посягательств конкурентов, но и ограничивает ее применимость операционными системами Windows и Macintosh.
Ненамного лучше обстоят дела с открытостью и у технологии встраивания шрифтов, разработанной Netscape. Так называемые «динамические шрифты», почему-то рекламируемые этой компанией как часть ее версии «динамического HTML», не привязаны к какой-то операционной системе, однако накрепко привязаны к броузеру Netscape Communicator, который один только может использовать для вывода на экран шрифты в формате TrueDoc (лицензированном Netscape у фирмы Bitstream). Более того, привязка шрифта к HTML-документу у Netscape производится совершенно ни с чем не совместимым способом — через расширение тега LINK. Если бы броузеры-конкуренты были совместимы друг с другом хотя бы по синтаксису вызова шрифтов, различия в шрифтовых форматах были бы не столь существенны.
Осторожно: кириллица
Любая попытка изменить шрифт, которым выводится текст, осложняет и без того непростую ситуацию с поддержкой в HTML русского алфавита. Даже без какого бы то ни было переключения шрифтов русский текст может оказаться для какой-то части вашей аудитории нечитабельным; очевидно, что любые эксперименты в шрифтовой области способны только повысить вероятность этого печального исхода.
Собственно говоря, из описанных выше технологий только встраивание шрифта в документ способно гарантировать соответствие кодировок текста и шрифта (что и понятно —
ведь только в этом случае и текст, и шрифт готовятся одним человеком). Однако сами технологии встраивания, о которых мы только что говорили, пока что мало распространены даже среди пользователей графических броузеров. Не говоря уж о том, что полагаться на соответствие кодировки текста кодировке встроенного шрифта очень опасно — при этом можно ненароком лишить доступа к тексту многочисленных пользователей, не желающих или не имеющих возможности использовать какие бы то ни было шрифты (те же программы-роботы и владельцы речевых броузеров, стр. 34).
Сейчас на русскоязычных сайтах изредка применяется лишь самое простое из всех шрифтовых решений — переключение в рубленый шрифт, для чего можно написать FONT face="arial cyr,arial". Однако даже этот простейший вариант почти наверняка доставит неприятности многим вашим пользователям, так что лучше всего не искушать судьбу и обойтись для русского текста шрифтом по умолчанию.
Цвет
Цвета текста и фона играют в HTML особую роль — эти параметры указываются в атрибутах тега BODY и потому относятся скорее к свойствам всего документа, чем к параметрам набора текста. А поскольку ошибка в этих параметрах может запросто привести к нечитабельности текста (если цвет букв совпадает с цветом фона или близок к нему), пользователь любого визуального броузера имеет возможность выбрать свои собственные значения для цвета фона, текста и ссылок и запретить броузеру обращать внимание на цветовые атрибуты тега BODY. Одним из следствий этого является то, что в этом теге нужно либо не указывать ни одного цветового атрибута, либо обязательно перечислить все три; любая частичная спецификация (например, указание цвета текста без упоминания о цвете фона) может конфликтовать с цветами, установленными по умолчанию в броузере пользователя.
Если на странице используется фоновое изображение, указываемый в теге BODY цвет фона должен соответствовать цвету «среднестатистического» пиксела фонового изображения. Только при этом условии пользователи, отключившие загрузку графики, не будут испытывать затруднений с чтением текста, а те, у кого фоновое изображение еще не докачалось, не будут шокированы резким перескоком
цветов в тот момент, когда фон внезапно подстилается под уже видимые элементы переднего плана.
Цвета, указываемые в атрибуте color тега FONT, перекрывают как цвет из атрибута text тега BODY, так и цветовые установки броузера. Можно даже менять цвет ссылок, вставив тег FONT с атрибутом color внутрь тега A. CSS, в свою очередь, позволяет менять не только цвет букв, но и фоновый цвет любого элемента, в том числе и фоновый цвет отдельных символов и фрагментов текста. Если часть текста закрашена одним цветом, а часть другим (что обычно бывает, когда фон состоит из сильно различающихся по цвету областей — например, светлой центральной части и темной полосы вдоль границы экрана), фоновый цвет в теге BODY должен быть таким, чтобы на нем были легко различимы оба цвета текста.
Как и цвета в графических вставках, указываемые в HTML цвета текста, фона страницы и фона ячеек таблиц подвергаются искажениям на 256-цветных мониторах. Однако ничего похожего на «безопасную палитру» (стр. 248) для этих HTML-цветов, к сожалению, не предусмотрено: броузер просто сводит эти цвета к ближайшим цветам текущей палитры экрана, что может давать самые непредсказуемые результаты (например, указанный в теге BODY фоновый цвет может далеко разойтись с тем же самым цветом, использованным в изображении).
Выбрав для текста чисто белый текст на не-белом фоне, имейте в виду, что броузер не станет воспроизводить фоновый цвет при печати страницы на принтере. MSIE поступит при этом вполне разумно, самостоятельно заменив перед посылкой на печать цвет текста на черный, но в броузере Netscape для этого нужно будет установить (по умолчанию сброшенный) флажок Black Text в настройках печати (точнее, вам как автору страницы нужно будет напомнить сделать это вашему читателю), — иначе из принтера вылезет белый лист без каких-либо следов текста страницы. Об этом нужно помнить при выборе цветовой схемы для страниц, которые пользователь с большой вероятностью захочет распечатать (счетов, инструкций и т.п.).
Ссылки
Гипертекстовые ссылки — элемент, не имеющий прямых аналогов в других жанрах дизайна и требующий поэтому особого внимания создателя сайта. Так же как плотность размещения и тщательная взаимная подгонка графических элементов есть признак хорошего качества визуального дизайна (стр. 84), о качестве подготовки текста на веб-сайте можно довольно быстро составить впечатление по тому, насколько этот текст насыщен ссылками. Если в этой книге мое стремление отследить все связи глав и разделов сдерживалось нежеланием загромождать текст бесконечными «стр. такая-то», то на веб-сайте можно дать себе полную волю — ведь гипертекстовые ссылки почти не мешают чтению.
С другой стороны, разумеется, добавление ссылки не может пройти бесследно для звучания, интонации и, в каком-то отношении, даже для смысла фразы. Если считать ссылку разновидностью текстового выделения, то можно сформулировать несколько практических советов. Прежде всего, точно так же как курсивом не стоит выделять целое предложение, длину ссылки нужно ограничивать необходимым минимумом — например, ссылкой на архив с программой достаточно сделать ее название или слово «download», а не всю фразу целиком. Ссылочным лучше всего делать то слово или словосочетание, которое допускает, с учетом смысла всего предложения, произнесение с логическим ударением (эмфазисом), пусть и не сильно выраженным. И наконец, следует избегать разметки ссылок поверх курсива, полужирного и других традиционных средств текстового выделения. Кстати, довольно-таки странно выглядит ссылка во внутритекстовом заголовке (если только вы не решите снабжать ссылками — например, на список разделов вверху страницы — все заголовки подряд).
Общепринятые визуальные атрибуты ссылки — измененный по отношению к основному тексту цвет (о принципах выбора которого мы говорили на стр. 113) и подчеркивание — явно дублируют друг друга. И хотя такое двойное акцентирование помогает ориентироваться в текстовых ссылках быстро и почти подсознательно, подчеркивание все же не стало в массовом сознании обязательным признаком гипертекстовой ссылки. Косвенным подтверждением этому может служить тот факт, что в графических ссылках (например, на кнопках навигации) текст почти никогда не снабжается подчеркиванием. Поэтому в последнее время появляется все больше сайтов, отключающих с помощью CSS подчеркивание и для текстовых ссылок (для этого в стилевой спецификации достаточно написать A {text-decoration: none}).
Другие параметры
Почти все остальные параметры набора текста пока что поддаются регулировке только с помощью CSS (со всеми оговорками о применимости этой технологии, стр. 40). HTML не позволяет ни изменять межстрочные, межбуквенные и межсловные расстояния, ни как-либо влиять на переносы текста, ни поворачивать или масштабировать текстовые объекты. (Можно, правда, изменять выравнивание текста по левому краю на противоположное, — однако выключка текста по ширине возможна, опять-таки, только с помощью CSS.) Судя по всему, еще очень далек тот день, когда визуальные броузеры смогут обеспечить такой же контроль над текстовыми блоками, как даже самый примитивный из графических редакторов.
Стоит сказать пару слов об оформлении абзацев. По традиции броузеры не делают отступов красной строки, отделяя абзацы друг от друга вертикальными отступами (как в этой книге). Не прибегая к помощи CSS, можно имитировать более традиционное (с точки зрения книжной верстки) оформление, заменив тег Р между абзацами на BR со следующей за ним горизонтальной распоркой — невидимой графической вставкой или несколькими подряд неразрываемыми пробелами (стр. 238). Если, однако, учесть, что того же видимого результата можно добиться с помощью CSS (обнулив значение margin и указав отступ красной строки text-indent для тега Р) уже в четвертых версиях обоих броузеров, от подобных искусственных приемов лучше воздержаться: членение на абзацы очень важно для информационной целостности текста, и неразумно жертвовать структурной разметкой этого аспекта ради сиюминутных визуальных выгод.
Здесь же нужно обсудить особенности оформления табличного текста. Как вы уже наверняка знаете, таблицы в HTML есть основной и почти единственный инструмент для размещения материала на двумерной плоскости страницы (мы будем подробно говорить об этом ниже, стр. 234). Однако не так уж редко на веб-страницах встречается и собственно табличный материал, организация которого в строки и столбцы несет информационную, а не визуальную нагрузку.
Для больших по объему таблиц нужны визуальные средства, подчеркивающие их табличную структуру и помогающие взгляду скользить по строкам и столбцам. К сожалению, предлагаемая для этого стандартным HTML разлиновка ячеек (атрибут border) имеет два больших недостатка. Во-первых, линейки невозможно провести выборочно — либо в таблице нет ни одной линейки, либо каждая ее ячейка заключена в рамку со всех четырех сторон. И во-вторых, сами эти линейки в визуальных броузерах, так же как и разделители HR и границы фреймов, имеют вид псевдотрехмерных бороздок, о неприемлемости которых в серьезном дизайне уже достаточно говорилось на стр. 203.
Отказавшись от громоздкой и вызывающей приступы клаустрофобии разлиновки по умолчанию, дизайнер может воспользоваться тем, что для каждой ячейки таблицы можно задать свой цвет фона, отличный от фона всей страницы и даже закрывающий на территории этой ячейки фоновое
изображение (если оно есть). Заливкой фона можно выделять заголовки и боковики в таблицах; популярен также прием подсветки через одну строк с основными данными (такие полосатые таблицы, например, используются для списков книг на сайте books.ru, пример 15). Кроме того, с помощью изменения цвета фона можно имитировать и частичную разлиновку — например, вставив после боковика узкую ячейку, простирающуюся по всей высоте таблицы, и закрасив ее каким-то цветом, мы получим вертикальную линейку, избавленную от обоих упомянутых выше недостатков стандартной разлиновки.
Спецификация HTML 4.0, принятая в начале 1998 года, значительно расширила, по сравнению с предыдущими версиями, набор средств для разметки таблиц. Большинство новых тегов и атрибутов предназначены для более адекватной структурной разметки таблиц и для более гибкого представления табличной информации в невизуальных броузерах. Есть, однако, и усовершенствования в средствах визуального форматирования — в частности, атрибуты frame и rules позволяют выборочно проводить линейки между ячейками и вокруг таблицы.
When all else fails
Неразвитость инструментов работы с текстом в современных веб-технологиях нередко заставляет авторов переносить свой текст в графические вставки. Такой «текст» может наслаждаться абсолютной свободой в выборе шрифта, параметров набора и графических эффектов. В большинстве случаев, впрочем, никаких особенных эффектов не применяется — сплошь и рядом текст «отливается в GIF» только ради включения нужного шрифта, точной подгонки межстрочного расстояния, наложения текста на графическую подложку и тому подобных базовых операций, которые вполне можно было бы реализовать, скажем, в CSS (если бы существовала достаточно надежная и распространенная реализация этой технологии).
Многие дизайнеры относятся с недоверием (вполне, надо признать, обоснованным) ко всем технологиям, выходящим за пределы HTML и GIF, не желая подвергать свое хрупкое творение «капризам погоды» на компьютере пользователя и пользуясь графикой для передачи любого текста, чье оформление небезразлично для производимого страницей художественного впечатления. С точки зрения таких авторов, идеальным форматом для распространения информации в Интернете является не HTML (с этим, впрочем, вряд ли кто-то будет спорить) и не XML, a PDF (стр. 58), у которого нет нескольких конкурирующих программ просмотра,
но зато есть полная свобода в использовании шрифтов и оформлении текстовых элементов.
Чаще всего графические вставки применяются для заголовков (о них мы уже говорили на стр. 200), кнопок на панелях навигации, а также для выделенных фрагментов текста, таких как рекламные лозунги, вводные абзацы статей или «выдернутые» цитаты (англ. pull-out quotes, пример 7). Эстетическое воздействие аккуратно сверстанного графического текста, к сожалению, бывает сильно подпорчено конфликтом с расположенным рядом обычным текстом, почти всегда имеющим на компьютере пользователя не тот кегль, на который рассчитывал дизайнер. Но безусловно самое ужасное, что только может сделать дизайнер в этой ситуации, — это отлить в графику текст с ошибками или даже просто с опечатками: по вполне объяснимым причинам неаккуратность в подготовке «кускового» текста раздражает во много раз сильнее, чем огрехи в обычном тексте «россыпью».
Перенос текста в графику откровенно противоречит идеологии открытости информации, принятой в HTML и особенно в XML. Тем не менее нельзя сказать, что такой «окаменевший» текст навсегда потерян для неграфических броузеров и автоматических сборщиков информации: специально для текстового эквивалента графического изображения предназначен атрибут alt тега IMG, в котором вы обязаны дословно воспроизвести весь зашитый в графику текст (стр. 35).