Ускоряющая клавиша n предназначена для пропусков при навигации по страницам. Пропуск для перехода на начало контента.

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

Переводчик: World translation (Александр Шлапак)

s_gotoW3cHome Internationalization
 

CSS3 и Международный Текст

Предполагаемая аудитория: авторы HTML/XHTML и CSS контента, которые хотят получить общее представление о том, что их ждет в будущем в связи с внедрением поддержки нелатинского текста в CSS. Статья предусматривает, что читатель имеет базовые знания CSS.

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

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

Ни одна из спецификаций, которые мы будем здесь обсуждать еще не завершена.

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

Списки

Способ нумерации элементов в списке зависит от скрипта. В CSS2 были указаны девять нелатинских систем нумерации. Сюда входят: нижняя греческая, еврейская, армянская, грузинская, CJK (Китай Япония Корея)- идеографическая, хирагана, катакана, хирагана-Ироха, катакана-Ироха. К сожалению, клиентские приложения не применяют все эти системы, и, смотря на часть своей миссии - представлять snapshot (снимок) текущего использования, спецификация CSS 2.1 снижает это число до двух: армянская, грузинская.

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

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

Значение list-style-type в CSS 2 и CSS 2.1

Значение list-style-type в CSS 2 и CSS 2.1.

Модуль Списков CSS3 в настоящее время указывает почти 70 нелатинских схем нумерации списков, и обеспечивает гораздо более точные правила их использования. (однако, если вы хотите избежать сокращения этого числа, то не упускайте возможность, и скажите об этом! Разработчики, как правило, время от времени задают себе вопрос: а нужна ли мне поддержка такого большого количества возможностей?)

list-style-type в CSS3

list-style-type в CSS3

Текст

Направление текста

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

Ключевые параметры здесь это: направление текста в блоке (block-progression), направление встроенного текста, и ориентация глифа.

Свойства направления текста.

Свойства направления текста.

Направление block-progression позволяет указать направление в котором будут распространяться текстовые строки. Для горизонтального текста целесообразно было бы использовать направление сверху вниз, поскольку строки распространяются сверху вниз. Для вертикального Китайского, Японского и Корейского текстов, нормальным будет направление - справа налево, поскольку строки в таких текстах распространяются с правой до левой части страницы или блока. Направление слева направо был бы целесообразным для Монгольского скрипта, который также вертикальный, но в нем вы начинаете читать с верхней левой позиции.

В рамках данной строки должна быть возможность указать направление встроенного текста. Для Арабского скрипта и Иврита было бы целесообразным направление справа налево. Это должно быть интерпретировано в отношении направления текста в блоке.

Свойство writing-mode было предложено в качестве рационального способа, который объединяет в набор общих комбинаций направление текста в блоке и направление встроенного текста.

В этом случае необходимо обеспечить значение для того, чтобы проконтролировать Латинские ли буквы появляются в вертикальном Японском тексте на боку (например, 'Johansson' на изображении), или вертикально (как 'FIFA' на изображении), и как распространяется текст по вертикали (который выравнивается слева направо и справа налево): вверх или вниз.

До более сложных аспектов направления текста принадлежит вопрос: как обеспечить лучший пользовательский способ поддержки встроенного текста в вертикально установленных пунктах. В настоящее время Рабочая Группа CSS обсуждает то, как это должно работать (Май 2006 года).

Разрыв строки

Тип скрипта влияет на ожидаемое поведение тогда, когда строки с текстом переносятся - особенно он влияет на устранение пробелов вокруг разрывов строк в коде.

Китайский и Японский скрипты не разграничивают слова и пробелы, и переносятся по принципу символ-за-символом. Однако, есть некоторые правила (так называемые правила kinsoku в Японском языке), которые запрещают появление определенных символов (преимущественно знаков препинания) на начале строки, и другие, которые запрещают появление определенных символов в конце строки.

Тайский скрипт использует пробелы для того, чтобы разграничивать скорее фразы, чем слова, и обычно в предложении не использует остаточнний знак препинания. Однако, есть твердое понятие слова и текст должен укладываться в рамки слова. Чтобы указать ситуацию где подходит перенос, некоторые Тайские системы полагаются на пользователей добавляя пробелы нулевой ширины (zero-width), но для того, чтобы определить границы слов лучше использовать словарь.

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

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

Некоторые из свойств CSS3 позволят вам определить стоит ли по-разному использовать перенос внутри встроенного текста из другого скрипта. Например, если у вас есть Латинский текст внутри Китайского, то он должен переноситься посимвольно или слово за словом? Оба варианта являются действительными, и CSS должна позволять вам выбрать вариант в соответствии с вашими предпочтениями или контекстом. (Смотрите ниже на рисунке два примера.)

Возможности разрыва строки со смешанным CJK и Латинским текстом.

Возможности разрыва строки со смешанным CJK и Латинским текстом.

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

Малая кана и разрывы строки.

Малая кана и разрывы строки.

Вторая строка начинается с маленького Катакана символа. Этому, как правило, отдают предпочтение в современной Японской книгопечатании, и это особенно полезно в тексте с тонкими столбиками. Второй пример показывает результат использования другого подхода, который часто называют 'strict' (точным). Алгоритм разрыва строки переносит вниз последний Катакана символ из предыдущей строке, так что теперь небольшой Катакана символ больше не находится в исходном положении и оставляет зазор в конце строки, если текст не прошел выравнивание по ширине.

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

В качестве альтернативы: оставить висящие знаки препинания с краю. CSS3 должен позволить вам управлять этим.

Висячие разделительные знаки.

Висячие разделительные знаки.

Выравнивание текста и, в частности, выравнивание текста по ширине

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

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

Тип выравнивания по ширине, что установлено, как normal и inter-ideograph.

Тип выравнивания по ширине, что установлено, как normal и inter-ideograph.

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

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

Тип выравнивания по ширине, что установлено, как normal и kashida.

Тип выравнивания по ширине, что установлено, как normal и kashida.

В рамках процесса выравнивания CJK (Китай Япония Корея) текста по ширине, вы можете указать, будет ли и каким образом будет себя ведет сжатие пробелов. На изображении, что находится ниже приведен пример скобки полной ширины (full-width) в Японском языке, которая имеет свой ​​удаленный пробел для обеспечения сжатия.

Обрезка при выравнивании текста по ширине.

Обрезка при выравнивании текста по ширине.

Вы должны иметь возможность указать, должен ли в начале линии быть сокращен знак пунктуации полной ширины (full-width) в идеографическом тексте таким образом, что его 'ink' (чорнило) выстраивается в линию с первого глифа в верхнем и нижнем рядах. Это делает вид левого или верхнего края более аккуратным, да еще и влияет на выравнивание по ширине строки, в которой это происходит.

Обрезка пунктуации line-intial.

Обрезка пунктуации line-intial.

Текстовый интервал

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

Свойство text autospace установленное ​​как normal, затем установленное ​​как numeric плюс alpha.

Свойство text autospace установленное ​​как normal, затем установленное ​​как numeric плюс alpha.

Сетки документа

Для глифов в документах, которые написанные на Восточно-Азиатских языках есть общим то, что глифы на странице должны быть изложены в сетке. Этому подходу помогает тот факт, что идеографические символы, а также символы каны и хангул почти всегда имеют одинаковую ширину.

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

Это изображение показывает вертикальный текст написанный на Японском языке без применения сетки.

Японский текст без применения сетки.

Японский текст без применения сетки.

На этой следующей картинке мы видим на предыдущем тексте эффект от применения одного из видов сетки.

Японский текст с расположением grid-based (на основе сетки).

Японский текст с расположением grid-based (на основе сетки)

Kumimoji и warichu

Kumimoji - Японское слово, что образуется в результате объединения до 5-ти глифов в пределах одного широкого глифа.

Kumimoji.

Kumimoji.

Warichu - Японское слово для печати встроенного примечания там, где текст протекает в двух строках.

Warichu.

Warichu.

Оба эти эффекты будут доступны благодаря свойствам CSS3.

Выделение

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

Японские метки boten

Японские метки boten.

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

Модуль ruby

Ruby - один из видов аннотации, которая связана с базовым текстом, она часто используется в Японском языке, и в некоторой степени также и в Китайском языке для того, чтобы обеспечить информацию о произношении иероглифов и иногда еще и кратких пояснений. Название 'ruby' происходит от названия размера шрифта (около половины размера нормального шрифта в 10 типографских пунктов), что используется Британскими составителями текста. В Японском языке ruby называется furigana (фуригана).

Разметка ruby

Аннотация Ruby Рекомендация описывает, как разметить текст так, чтобы было понятно, где основной текст, а где аннотация ruby. (Это не является спецификацией CSS.) Есть простые и сложные модели ruby. Ниже на картинке показано простую форму разметки, которая описана в Рекомендации. Текст в элементе <rt> - это аннотация. Основной текст содержится в элементе <rb>.

Ruby: как показывается и как размечается.

Ruby: как показывается и как размечается

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

Более подробное описание смотрите в статье Разметка и стилизация ruby.

Стилизация ruby

Иногда, возможно, вы захотите иметь возможность контролировать местоположение ruby текста. Например, в спецификации Аннотации Ruby говорится, что вообще лучше размещать pinyin (пиньинь) аннотации ниже, чем выше горизонтального Китайского текста. CSS3 обеспечит свойство, которое позволит вам контролировать местоположением ruby текста.

Ruby-position: before

Ruby-position: before

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

Ruby-position: after

Ruby-position: after

Значение 'right' (справа) может быть полезным при работе с bopomofo (бопомофо) аннотациями в Традиционном Китайском тексте, в котором ruby появляется в столбце - справа от каждого идеографического символа не считаясь с тем будь то горизонтальный, будь то вертикальный текст.

Ruby-position: right

Ruby-position: right

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

На изображении ниже показано как будет выглядеть текст, если свойство ruby-align установлено ​​как end. (Не обращайте внимания на зеленую линию, которая изображена только для того, чтобы четче показать границы.)

Ruby-align: end

Ruby-align: end

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

Например, на следующем рисунке показан эффект установки свойства ruby-overhang как start. Обратите внимание, как ruby текст перекрывает предыдущие, но не следующие символы основного текста. Отметим также, что ruby текст не перекрывает сам себя.

Ruby-overhang: start

Ruby-overhang: start

Более подробное описание предлагаемого в настоящее время подхода к стилизации ruby смотрите в статье Разметка и стилизация ruby.

Когда это будет готово?

Где это будет применяться

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

Некоторые из функций, которые мы обсудили были реализованы в Internet Explorer 5+, но с тех пор спецификации были изменены, так что вы должны быть очень осторожными при использовании этих возможностей. Нет никакой гарантии, что все, что вы реализуете в настоящее время в Internet Explorer в долгосрочной перспективе будет иметь совместимый код. Например, свойства расположения сетки в настоящее время совершенно другие.

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

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

Это не является полным перечнем спецификаций, которые содержат свойства, имеющие отношение к международному тексту. Например, предложенный CSS3 Модуль Строк, который еще не был опубликован в качестве Рабочего Проекта, обещает обеспечить контроль над выравниванием текста в скрипте.

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

Как быстрее сделать эти свойства доступными?

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

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

Путем просмотра и комментирования общедоступных проектов вы можете помочь развитию спецификаций. Если вы имеете опыт в этой области, то для того, чтобы помочь продвижению работы, вы также могли бы принять участие в рабочих группах CSS или Интернационализации. Значительная часть спецификации взята из Японской JIS 4051 спецификации, но все еще ​​есть ряд областей, где полезно было бы иметь локальное введение или подтверждение требований и ожидаемого поведения текста в других скриптах.

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

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

Выскажите своё мнение (по-английски).

Подпишитесь на ленту новостей RSS.

Новые публикации

Новости главной страницы

Twitter (Новости главной страницы)

‎@webi18n

Дополнительные материалы

Автор: Richard Ishida, W3C. Переводчик: World translation (Александр Шлапак).

Допустимый XHTML 1.0!
Допустимый CSS!
Кодировка UTF-8!

Перевод с английского: 2006-05-17. Последнее внесение изменений в перевод: 2012-01-15 18:00 GMT

Для просмотра истории внесения изменений нажмите article-css3-text в блоге i18n.