Проблема с греческим текстом IE8 с преобразованием текста CSS

У меня есть сайт с греческим текстом, в нем есть этот div, в котором я применил стиль text-transform:uppercase.

<div class="greek" style="text-transform:uppercase;">Υπηρεσίες</div>

Нижний регистр: πηρεσίες

Преобразовано в верхний регистр: ΥΠΗΡΕΣΊΕΣ

Итак, что он делает в IE8, показывает ли текст в верхнем регистре, кроме одной буквы "ς"

поэтому в IE8 он отображается как: ΥΠΗΡΕΣΊΕς

Хорошо, это отлично работает во всех браузерах (FF, Chrome, IE9, IE10, IE11), но не в IE8.

Ну, он преобразует "σ" в "Σ", но не преобразует "ς"

Есть ли у кого-нибудь какое-нибудь решение CSS для этого?


person nipiv    schedule 28.02.2014    source источник
comment
Это проблема шрифта, а не CSS   -  person pstenstrm    schedule 28.02.2014
comment
Если ваш сайт нацелен на карманные устройства, не пытайтесь это исправить. В противном случае количество пользователей IE8 уменьшается с каждым днем, и большинство из них осознают, что некоторые сайты могут выглядеть не так, как у них в старом браузере.   -  person Ason    schedule 28.02.2014
comment
@PellePenna: да, настоящие пользователи IE8 уходят, но нам нужно исправить это, так как многие наши клиенты используют IE8, согласно аналитике. pstenstrm: ну вы сталкивались с такой ошибкой. Я попытался изменить шрифт, но ничего не вышло.   -  person nipiv    schedule 28.02.2014
comment
Если вы не можете исправить это на стороне клиента, попробуйте на стороне сервера, там вы наверняка сможете это решить (ASP или PHP)   -  person Ason    schedule 28.02.2014
comment
Я как бы не хотел использовать для этого JS-решение и загружать страницу ненужным образом. Подумал, было бы хорошо, если бы для этого было какое-то другое исправление. Например, изменение шрифта или изменение CSS.   -  person nipiv    schedule 28.02.2014
comment
Я также вижу некорректный рендеринг тоно в IE9 и IE10.   -  person DyeA    schedule 22.07.2014


Ответы (2)


Это ошибка / недоработка в браузере. Согласно спецификациям, text-transform должны применять правила сопоставления регистра Unicode. , которые включают отображение последней маленькой сигмы «» в заглавную сигму «Σ». (Им также следует также выполнить преобразование верхнего регистра в нижний регистр таким образом, чтобы преобразовать окончание слова «Σ» в «ς», но это другая проблема и более сложная.) Но некоторые браузеры по-прежнему не справляются с этой задачей. что.

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

Обратите внимание, что когда вы пытаетесь ввести греческий текст в верхний регистр с помощью CSS, у вас также возникают другие проблемы. Как показано на снимке экрана, маленькая йота с тоно «ί» была преобразована в прописную йоту с тоно «Ί». Это неверно по греческим правилам, когда слово пишется в верхнем регистре; тонос (острый акцент) следует опускать. Большинство браузеров делают это неправильно (Firefox).

person Jukka K. Korpela    schedule 28.02.2014

Я собирался задать тот же вопрос, когда нашел решение:

Для большинства языков вы можете просто ударить text-transform:uppercase, и это сработает. Для греческого языка необходимо объявить язык в HTML, поэтому вы должны добавить lang="el" в свой div, и он будет работать.

Например, пока

<p>Διάβασμα του Καφέ</p>

становится ΔΙΆΒΑΣΜΑ ΤΟΥ ΚΑΦΈ

<p lang="el">Διάβασμα του Καφέ</p>

правильно преобразуется в ΔΙΑΒΑΣΜΑ ΤΟΥ ΚΑΦΕ

person Luciano    schedule 09.10.2018