Проблема кернинга в Safari при использовании "f" и "i"

Я использую Safari 8.0.5 на OS X 10.10.3.

Я сталкивался с проблемой межбуквенного интервала, когда использовал символы "f" и "i" рядом друг с другом. Я предполагаю, что это ошибка Safari, и я отправил ее в Apple как таковую, но также хотел посмотреть, смогу ли я найти обходной путь за это время.

HTML выводит фразу "Рыба большая" в двух отдельных шрифтах. Чтобы подчеркнуть проблему, я добавляю 10px межбуквенных интервалов между символами.

HTML:

<div class="p1">
    The fish is large
</div>
<div class="p2">
    The fish is large
</div>

CSS:

div { letter-spacing: 10px; margin-bottom: 10px; }

div.p1 { 
    color: #009900;
    font-family: Helvetica;
}
div.p2 {
    color: #000099;
    font-family: Arial;
}

Вот как мой вывод для вышеупомянутого выглядит в Safari:

Safari Letter Spacing Issue

В целях тестирования я добавил комментарий HTML между символами "f" и "i", и это, похоже, сработало:

<div class="p1">
    The f<!----->ish is large
</div>

Выводится так:

HTML-версия комментария

Хотя это технически работает, на самом деле это не идеальное решение для меня, поскольку контент здесь фактически создается редактором WYSIWYG.

Кажется, проблема только в том, когда "f" и "i" находятся рядом друг с другом. Я не уверен, имеют ли эти буквы особое значение в Safari, но это довольно распространенная последовательность букв в английском языке, поэтому у них действительно не должно быть таких маленьких ключевых слов.

Я также попытался добавить это:

 -webkit-font-feature-settings: "kern";

Это подтолкнуло "s" вправо, но "f" и "i" все еще были сгруппированы вместе.

особенности шрифта webkit

У заглавной буквы "F" нет той же проблемы:

F с большой буквы

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

Другие буквы после фи

Также он делает то же самое, если "fi" появляется в середине слова:

фантастическое слово

Я подтвердил, что эта проблема также существует на моем iPhone 6 Plus, работающем под управлением последней версии Safari, поэтому я сомневаюсь, что это просто что-то с моей стороны.

Чтобы проиллюстрировать проблему, я создал jsfiddle с необходимыми HTML и CSS, который, мы надеемся, воспроизведет проблему с вашей стороны. https://jsfiddle.net/38keruv7/4/

У кого-нибудь есть идеи для обходного пути, которое не требует от моих клиентов вставлять комментарии HTML в середине их слов в редакторе WYSIWYG?

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

1 ответ

Решение

Похоже, вы нашли ошибку Safari. Объединенная "фи" - это типографская лигатура. CSS3 имеет font-variant-ligatures свойство, которое можно использовать для управления ими; Safari поддерживает это с -webkit префикс. Это выглядит как -webkit-font-variant-ligatures: no-common-ligatures; решает проблему, по крайней мере, в Safari 8.0.3:

div {
    -webkit-font-variant-ligatures: no-common-ligatures;
    letter-spacing: 10px;
    margin-bottom: 10px;
}

Вот обновленная скрипка: https://jsfiddle.net/38keruv7/5/

Если у вас все еще есть проблемы, вот связанный вопрос, который говорит rendering: optimizeSpeed; также решает проблему: письма, подключенные в Safari

Другие вопросы по тегам