Хотя с текстовыми кодировками мы уже знакомились (стр. 14), теория и практика создания разноязычных HTML-документов — особая тема. Как я уже упоминал, стандартной кодировкой HTML-документов начиная с версии 4 объявлена кодировка Unicode. Однако это совсем не означает, что все HTML-документы
должны создаваться, храниться и передаваться в этой кодировке. Стандарт допускает использование автором страницы любых других кодировок (при условии, разумеется, что набор символов выбранной кодировки соответствует потребностям документа); однако «внутри себя», разбирая синтаксис документа, броузер обязан перекодировать его из внешней, заданной автором кодировки в Unicode.
Для дизайнера это требование имеет, пожалуй, только одно практическое следствие: числовые подстановки (стр. 29) должны ссылаться на Unicode-коды нужных символов, а не на их коды в текущей кодировке документа. Это сделано для того, чтобы не только мнемонические, но и числовые подстановки, во-первых, не зависели от кодировки документа, а во-вторых, давали возможность ссылаться на символы за пределами текущей кодировки. К сожалению, поскольку многие версии броузеров до сих пор не подозревают об этом требовании стандарта, с известной гарантией можно пользоваться только числовыми или мнемоническими кодами из репертуара Latin-1 (которая является подмножеством Unicode).
Согласование кодировок
Веб-сервер, посылая документ по запросу броузера, обязан указывать внешнюю кодировку этого документа в так называемом HTTP-заголовке, предшествующем любому отправляемому с сервера файлу и содержащем служебную информацию о нем. Броузер же по получении такой посылки должен переключиться в эту кодировку, что сводится обычно к замене шрифтов, которыми выводится документ, и/или перекодировке (например, из КОИ8 в СР1251, если предполагается использовать функции вывода операционной системы Windows, для которой эта кодировка «родная»).
К сожалению, этой возможностью пользуются далеко не все серверы русского Интернета. Часто, попав на страницу по ссылке с другого сайта, приходится вручную переключать кодировку отображения командой в меню броузера. (Очевидно, что веб-серверы вряд ли игнорировали бы необходимость указывать кодировку отсылаемых документов, если бы броузеры не позволяли переключать кодировки пользователю.) Автор документа может эмулировать HTTP-заголовок прямо в HTML с помощью тега МЕТА, заставляя броузер переключаться в нужную кодировку без перенастройки сервера.
Согласно стандарту, броузер может перечислять в своем запросе те кодировки, документы в которых он в состоянии отобразить, чтобы сервер мог в ответ выбрать заказанную кодировку из имеющихся или же перекодировать документ «на лету». Распространенные графические броузеры пока что не поддерживают эту возможность.
Среды и доступность
Обеспечение доступа к сайту для любых платформ и любых сред (графической, текстовой, звуковой) — важный аспект веб-дизайна, к сожалению, часто упускаемый из виду практикующими дизайнерами. Не следует думать, что общепринятыми графическими броузерами не может пользоваться только пренебрежимо малый процент чудаков, инвалидов и обладателей текстовых терминалов вместо «настоящих компьютеров». Все больше становится пользователей, по разным причинам предпочитающих слушать, как специальная программа читает текст вслух (например, почему бы не послушать таким образом новости с любимого сайта, сидя за рулем), или владельцев всевозможных переносных устройств для доступа к сети, очень часто с черно-белым, весьма ограниченным по возможностям экраном. Наконец, нельзя забывать о том, что вашу страницу будут читать не только люди, но и всевозможные «роботы» и автоматические сборщики информации, которые очень похожи на «неполноценных» пользователей именно своей ограниченностью текстовым аспектом информации.
Доступность информации в Интернете опирается на два основных принципа, из которых вытекают все остальные, более частные рекомендации. Первый из этих принципов вам уже известен — это преимущественное (или, по крайней мере, хоть какое-то) использование структурной, а не только визуальной разметки. Например, пометив фрагмент текста тегом I, вы тем самым даете команду переключиться в курсивное начертание, — что имеет смысл только в графической среде: речевой броузер, читающий страницу вслух, ничего похожего на «курсив» не имеет и, скорее всего, тег этот просто проигнорирует. Намного разумнее воспользоваться вместо этого тегом ЕМ, который вводит логический элемент эмфазиса (выделения) и который можно интерпретировать соответствующими средствами в разных средах (например, в графике — курсивом, а в речи — интонацией).
Второй главный принцип доступности — это поддержка текстового эквивалента для всей информации страницы.
Это совсем не означает, что вам нужно будет делать копии всех HTML-файлов с тем же текстом, но без графики и таблиц (хотя ссылки на такие текстовые копии до сих пор можно увидеть на некоторых сайтах). К счастью, HTML позволяет хранить в том же файле текстовый «транскрипт» для любых нетекстовых элементов, прежде всего изображений (а также явно помечать те из них, которые вообще не имеют текстового эквивалента). Обычный текст — самый универсальный компьютерный формат данных с самыми широкими возможностями преобразования и отображения, поэтому поддержка текстового плана веб-страницы — лучший способ обеспечить ее доступность для любых потребителей информации.
Доступность: таблицы
Описываемые в гл. III приемы верстки веб-страниц с помощью таблиц хотя и считаются иногда «злоупотреблением», несовместимым с духом и буквой HTML, тем не менее вполне допустимы с точки зрения доступности информации, если только при этом соблюдается одно несложное правило. Поскольку таблица в окне броузера двумерна, а текстовый эквивалент страницы одномерен, нужно следить, чтобы логически связанные фрагменты содержимого располагались либо в одной ячейке, либо в ячейках, соседних по горизонтали. Например, если таблица содержит больше одного столбца, нельзя помещать заголовок в одну ячейку, а относящийся к нему текст — в соседнюю снизу, так как в текстовом эквиваленте страницы заголовок и текст будут при этом разделены содержимым других ячеек.
Как писать alt-тексты
Особого внимания заслуживает атрибут alt тега IMG, предназначенный для записи текстового эквивалента изображения. Значением этого атрибута может быть строка символов, содержащая любые подстановки (например, ), но не содержащая других тегов. (Впрочем, сам тег IMG можно вставить внутрь парного тега логического форматирования — например, HI, — чтобы приписать его alt-тексту соответствующую структурную роль и средства выделения в неграфических броузерах.)
Главный принцип, который нужно при этом иметь в виду, формулируется так: alt-текст должен давать текстовый эквивалент информации, содержащийся в изображении, а не некую метаинформацию о самом этом изображении. С этой точки зрения исключительно неуместно смотрятся
вставляемые иногда в alt-тексты размеры файлов изображений в байтах или же советы типа «Включите загрузку графики, чтобы увидеть эту картинку». В простейшем случае, когда картинка содержит заголовок, надпись на кнопке или другой текст, ее атрибут alt обязан содержать в точности этот самый текст и ни слова больше. Ниже перечислены некоторые распространенные типы изображений и принципы выбора alt-текстов для них:
• Для распорок (стр. 237) и декоративных элементов, не несущих никакой информации, обязательно указывать пустой alt-текст (alt=""). Как ни странно, этот простейший случай не является значением по умолчанию, так что автор должен сам позаботиться об обнулении alt-текста во всех вспомогательных изображениях.
• Для маркеров элементов списка пользуйтесь или последовательными номерами (в текстовых броузерах и особенно при чтении страницы вслух они сильно облегчают восприятие даже тех списков, которые «в графике» лучше смотрятся без нумерации), или же тем символом, который обычно используется для этой цели в текстовых списках — звездочкой (*).
• Для разделителей, аналогичных по функции тегу HR (стр. 203), подходящим alt-текстом будет ряд небуквенных значков — например, "======" или "******".
С другой стороны, такое решение неплохо смотрится только в текстовых броузерах вроде Lynx, тогда как владельцам речевых броузеров, скорее всего, не очень-то понравится слушать монотонное «знак равенства, знак равенства, знак равенства...»
• Для кнопок панелей навигации (стр. 208) и всех прочих изображений-ссылок разумно принять особое правило оформления alt-текстов (например, я рекомендую заключать их в квадратные скобки). Это следует делать не только для того, чтобы ссылки легко было найти в текстовом эквиваленте страницы, но и для отделения alt-текстов друг от друга: дело в том, что, если графические вставки идут одна за другой без пробелов, их alt-тексты также не будут ничем разделены, если только пробелы или другие символы-разделители не предусмотрены в них самих.
Приведенные здесь правила рассчитаны на то, чтобы облегчить доступ к информации на любых платформах и в любых средах — графической, текстовой или звуковой (стр. 34). В последнее время, однако, графические
броузеры несколько переопределили семантику атрибута alt: начиная с четвертых версий броузеры Netscape и Microsoft не только показывают alt-текст на месте отсутствующей графики, но и выводят его в виде «всплывающей подсказки» (floating tip), возникающей при поднесении курсора мыши к изображению. С одной стороны, это нововведение заставит визуальных дизайнеров внимательнее относиться к расстановке alt-текстов на своих страницах — не писать туда что попало и не забывать о пустых alt-текстах у вспомогательных изображений. С другой стороны, непосредственное участие alt-текстов в процессе интерактивного исследования страницы заставляет дизайнера отказаться от дословного воспроизведения в alt-текстах содержимого графических вставок: сейчас не редкость страницы, в которых, например, alt-тексты дают расширенные пояснения для слишком лаконичных или же вообще лишенных текста кнопок навигации.