Прискорююча кнопка n назначена для пропусків при навігації по сторінкам. Пропуск для переходу на початок контента.
Даний документ є перекладом. У випадку будь-яких невідповідностей і помилок остання версія документу англійською мовою повинна розглядатися як офіційна. Першопочаткове авторське право належить W3C, як це вказано нижче.
Перекладач: Alexandr Shlapak (Александр Шлапак)
Аудиторія: авторы контента для языков которые основаны на HTML или XML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), и каждый, кому интересно как достичь надлежащего выравнивания текста для скриптов, которые выравниваются справа налево в случае , когда отсутствует необходимая разметка.
Что можно сделать, когда вы не можете использовать разметку для правильного составления двунаправленного текста?
Весь текст должен храниться в 'логическом порядке', то есть символы в памяти обрабатываются в одном направлении на основе произношения. Однако, даже если текст отображается в одной строке, символы, используемые в скриптах, которые выравниваются справа налево, например Арабский, Иврит, Тана, Урду и других, должны выравниваться справа налево, в то время как символы в таких скриптах, как Латинский и любых цифрах будут выравниваться слева направо. Для достижения этой визуального изменения порядка используется двунаправленный (bidi) алгоритм Unicode.
Алгоритм bidi влияет на направление текста с учетом направления каждого символа. Однако, иногда, когда скрипты смешанные - алгоритму нужно немного помочь для того, чтобы определить как должны быть расположены части текста при отображении. Например:
Мы показываем примеры используя скрипты с выравниванием текста справа налево, но в случае, когда ваше клиентское приложение не поддерживает должным образом скрипты с выравниванием текста справа налево, то если визуальный результат имеет важное значение мы используем графику. Нажимая на
рисунок, вы открываете текстовую версию в новом окне. (Это также позволяет вам исследовать исходный текст.) Мы также сразу же после этого показываем только ASCII версию, что
показывает, Английский текст в нижнем регистре и Иврит или Арабский в верхнем регистре. Составление и размещение символов в ASCII версии отражает оригинальный текст.
Этот пример показывает, что вы получите, если будете полагатся только на двунаправленный алгоритм. Это неправильно. Потому что все цитаты написанные на Иврите, текст "W3C" и запятая должны появиться с левой стороны (то есть в конце) текста на Иврите.
ASCII версия:
заголовок "YTIVITCA NOITAZILANOITANRETNI, w3c" на Иврите.
Правильным будет результат, когда он будет выглядеть следующим образом:
ASCII версия:
заголовок "w3c ,YTIVITCA NOITAZILANOITANRETNI" на Иврите.
В других случаях вам может понадобиться переопределить (то есть отключить) действие двунаправленного алгоритму в целом.
Обычно вы будете использовать разметку чтобы это контролировать, но в некоторых случаях (надеемся что в основном в старой разметке, где потребность в поддержке bidi не была полностью продумана) разметка отсутствует. В этой статье рассматривается, как можно использовать управляющие символы Unicode для таких случаев.
Дополнительные сведения о том, как работает bidi алгоритм и где он нуждается в помощи, читайте Что нужно знать об алгоритме bidi и встроенной разметке.
Важно начать с того, что для тех кто разрабатывает контент есть некоторые преимущества использования разметки (при ее наличии) для управления двунаправленным (bidi) направлением текста, а не управляющих символов Unicode (смотрите Управляющие символы Unicode или разметка для поддержки bidi).Если вы разрабатываете или выполняете обновление схемы или спецификации, то вы действительно должны применить разметку для контроля над поведением bidi, а не полагаться на управляющие символы Unicode, и избегайте создания текстов, где не может использоваться разметка (например, текст написанный обычным языком в значениях атрибутов). Дополнительную информацию смотрите Лучшие Практики для Интернационализации XML.
Однако, управляющие символы Unicode могут пригодиться в ситуациях где отсутствует разметка. Примеры включают такую устаревшую разметку, как HTML элемент title и любое значение атрибута HTML, содержащее текст написанный обычным языком.
Если применены управляющие символы Unicode, то они должны использоваться только для встроенного контроля. Управление символами Bidi, охватывающие пункты или элементы списка и т.д., не очень хорошо работают для разметки блочного уровня через способ обработки пробелов в исходном тексте, и через требование управления наследования и обзор по иерархии разметки.
Unicode предоставляет специальные, невидимые коды форматирования для установки базового направления или для переопределения двунаправленного алгоритма в простом тексте. К ним относятся:
Эти символы используются в паре. Один из первых четырех знаков, что упоминались выше, используется для обозначения начала диапазона текста; в каждом конкретном случае диапазон заканчивается последним (PDF) символом.
Вложенные управляющие символы назначают базовое направление текста, который они окружают. Переопределяющие символы вообще отключают bidi алгоритм для текста, который они окружают.
Следующий пример показывает, как эти управляющие символы можно использовать в обычном тексте:
Ниже показана подсказка в HTML, которая включает в себя название документа связанное с ней, плюс некоторый текст с указанием языка конечного документа. Обратите внимание, как текст '(FAQ)' появляется справа от Персидского текста. Это неправильно.
ASCII версия:
'SNOITSEUQ DEKSA YLTNEUQERF (faq)' [На Персидском языке].
Правильный заголовок содержит текст '(FAQ)' справа от Персидского текста, как здесь показано.
ASCII версия:
'(faq) SNOITSEUQ DEKSA YLTNEUQERF' [На Персидском языке].
Для достижения правильного эффекта мы добавили два невидимых управляющих символа, U+202B, RIGHT-TO-LEFT EMBEDDING (RLE), и U+202C, POP DIRECTIONAL FORMATTING (PDF), что представленные числовыми символами в нижеприведенном коде:
title="'‫...‬' [На Персидском языке]"
(Для сравнения этого с тем, как достичь того же результата, если есть разметка, смотрите ниже в разделе под названием Соответствие.)
Два другие невидимые направляющие управляющие символы, предоставляемые Unicode обычно не имеют соответствующей разметки и должны использоваться либо в форме символов или в экранированной форме. Они менее проблематичны, поскольку они используются самостоятельно, то есть они не используются в парах как другие управляющие символы которые мы обсуждали для того чтобы разграничить диапазоны текста. Также, вероятно, их использование гораздо более распространено, чем использование символов управления, описанных выше.
Например, на приведенном ниже рисунке показано, что вы, вероятно, увидите, когда будете полагаться только на двунаправленный алгоритм для отображения MAC адреса в контенте, который выравнивается справа налево.
Следующий рисунок показывает ожидаемый результат.
Для достижения правильного эффекта мы просто добавили два невидимых управляющих символа, U+200E, LEFT-TO-RIGHT MARK (RLM) непосредственно перед началом номера.
(Мы могли бы добиться того же результата, используя контекстные коды, которые упоминались ранее, но это проще и рекомендовано стандартом Unicode.)
Дополнительные сведения о том, как использовать эти два символа, читайте Что нужно знать об алгоритме bidi и встроенной разметке.
Там где есть и может быть использована направленая разметка, эти управляющие коды должны быть эквивалентными разметке в поведении. Следующая таблица (взята из Unicode в XML и других языках разметки) дает соответствующую разметку, чтобы заменить каждый набор кодов в HTML.
| Символ | Код | Эквивалентна разметка | Комментарий |
|---|---|---|---|
| LRE | U+202A | dir = "ltr" | атрибут блока или встроенного элемента |
| RLE | U+202B | dir = "rtl" | атрибут блока или встроенного элемента |
| LRO | U+202D | <bdo dir = "ltr"> | |
| RLO | U+202E | <bdo dir = "rtl"> | |
| U+202C | ничего | когда использован для завершения RLE или LRE (закрытие обеспечивается конечным тегом элемента, содержащим атрибут dir) | |
| </bdo> | когда использован для завершения RLO или LRO |
Использование HTML в контексте, что позволяет использовать разметку, соответствующий подход к подаче текста в примере в разделе выше "Парные управляющие символы", будет закодировано как:
Смотрите '<a dir="rtl" lang="fa" href="...">...</a>' [На Персидском языке].
Это дало бы такой результат:
В XML вы должны были бы использовать bidi разметку предусмотренную в DTD или Схеме, и применять непосредственно используя CSS.
Обратите внимание как разметка, используемая для поддержки атрибута dir также используется для поддержания информации о языке. Как правило, в месте, где требуется атрибут dir можно найти разметку. (Информацию о языке нельзя выразить с помощью управляющих символов.)
Обратите внимание, что существенной разницей между разметкой и управляющими кодами является то, что один атрибут dir можно применить к целой странице или разделу страницы, там где в конце пункта заканчивается эффект LRE/RLE.
Розкажіть нам про те, що Ви думаєте.
Підписатися на RSS джерело.
Twitter (Новини головної сторінки)
Переклад Англійського контенту від 2009-07-10. Переклад останнього оновлення 2011-09-26 12:00 GMT
Для перегляду історії внесення змін до перекладу натисність qa-bidi-unicode-controls в блоге i18n.
Copyright © 2009-2011 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.