Почему IE7 требует, чтобы шрифты EOT включали строчные глифы, когда мы используем text-transform: uppercase? - PullRequest
6 голосов
/ 17 июня 2011

На этой неделе мы наткнулись на довольно странную ошибку в IE7 (удивление, удивление) при встраивании файла шрифта EOT с использованием конструкции @font-face.

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

Сайт отлично отображается в каждом браузере (включая IE6 и IE8), который поддерживает конструкцию @font-face, за исключением заметного IE7. IE7 отображал только первый символ каждого слова в правильном шрифте - остальные символы отображались в шрифте браузера по умолчанию.

Почесывая головы, мы наконец-то выяснили, что, поскольку заголовки фактически были написаны как регистр заголовка (и, следовательно, содержали строчные буквы), хотя свойство text-transform было развернуто, а символы появлялись в верхнем регистре, IE7 требовались строчные буквы существовать в файле EOT для отображения заглавных букв. (Интуитивно понятно, не так ли?)

Простым исправлением было восстановление файла EOT с использованием как символов верхнего, так и нижнего регистра, даже если символы нижнего регистра никогда не использовались.

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

Спасибо!

Ответы [ 3 ]

4 голосов
/ 17 июня 2011

Я думаю, что у вас уже есть лучшее решение - просто включите и прописные и строчные глифы в ваш .eot.

Ваш сервер использует сжатие HTTP.

Текущий .eot равен 22.62 KB и сжат до 13.87 KB.

Даже если добавить символы верхнего регистра , удваивающий размер, он все равно будет сжат только на ~28 KB.

Если нет простого «фактического решения» проблемы, просто придерживайтесь этого.

1 голос
/ 17 июня 2011

Можно ли преобразовать регистр на стороне сервера?Например, php имеет следующее: http://php.net/manual/en/function.strtoupper.php

Это может решить вашу проблему с IE7, если практично использовать такую ​​функцию.

0 голосов
/ 13 июля 2011

a только что столкнулся с той же проблемой, и решил ее быстро :

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

...