2012-06-22 4 views
11

Я не говорю по-арабски, но мне нужна конкретная поддержка для арабского языка в нашем Интернете. Мне нужно, чтобы части арабских слов находились в <span> с другим стилем, чем остальное слово. Когда я ввожу два символа ش и س, они состоят в слово شس, но когда я использую HTML разметкуЧастичное цветное арабское слово в HTML

<span>ش</span>س 

эти буквы не сцеплены прямо на выходе.

enter image description here

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

EDIT: Он работает на Firefox, но не работает в Chrome/Safari.

+0

Выглядит хорошо здесь: http://jsbin.com/edimiq/2 –

+0

ваши промежутки имеют дисплей, установленный в линию, не так ли? – techfoobar

+0

Пролеты встроены.Теперь я вижу, что он работает в Firefox, но не работает в Chrome/Safari на моем Mac :( – Ondra

ответ

14

Вставьте столяр для нулевой ширины (например, используя ссылку на объект &zwj;) в конце содержимого элемента span: <span>ش&zwj;</span>س.

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

Вопрос обсуждается и проиллюстрирован на странице Bidirectional text Андреасом Прилопом.

Обновление: К сожалению, кажется, что даже &zwj; не помогает в текущих версиях браузеров WebKit. Кажется, что они рассматривают разметку HTML как нарушение взаимодействия, несмотря ни на что.

Обновление 2: Как описано в комментарии @ NasserAl-Wohaibi, новая проблема может быть решена путем использования &zwj; дважды. Однако в текущем Safari (5.1.7) для Windows это не помогает; на самом деле, он отображает даже ش&zwj;س, тогда как без столяра он правильно показывает شس.

+0

+1, хороший. @Ondra, это кажется более подходящим кандидатом для * принятого ответа *, заметьте. –

+0

спасибо за ответ! – Ondra

+0

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

2

Это фактически reported bug in WebKit, что, по-видимому, влияет на все браузеры на базе WebKit.

+0

Wow, ошибка с 2005 года. До того, как Chrome даже существовал! –

0

Как указано Jukka K. Korpela, это в основном ошибка в большинстве браузеров на базе WebKit (хром, сафари и т. Д.).

Простой хак, кроме полукокса TAMDEED или получать контекстные формы для арабских букв было бы поставить нулевой ширины столяр (&zwj; или &#x200d;) до/после письма, которое вы хотите рассматривать как единый арабский ligature - два символа, составляющих еще один. например

<p>عرب&#x200d;<span style="color: Red;">&#x200d;ي</span></p> 

демо: jsfiddle
смотри также отчет WebKit bug.

Смежные вопросы