Подтвердить что ты не робот

Font Rendering/Line-Height Issue на Mac/PC (вне элемента)

Дизайн

Содержимое информационных виджетов должно быть выровнено по вертикали посередине как таковое:

Original PSD Design


Кодированный дизайн

Windows: Chrome 20/FF 14/IE 9

Windows Coded Design

Mac (Lion/Mt. Lion): Chrome/FF

Mac Coded Design


Код

HTML

<div class="info">
    <div class="weather display clearfix">
        <div class="icon"><img src="imgs/icons/thunderstorms.png" align="Thunderstorms" /></div>

        <div class="fl">
            <p class="temperature">82&deg; / 89&deg;</p>
            <p class="conditions">Thunderstorms</p>
        </div>
    </div>
    <div class="time display">
        <p>11:59 <span>AM</span></p>
    </div>
    <div class="date display clearfix">
        <p class="number fl">23</p>
        <p class="month-day fl">Jun <br />Sat</p>
    </div>
</div><!-- //.info -->

CSS

.info {
    display:table;
    border-spacing:20px 0;
    margin-right:-20px;
    padding:6px 0 0;
}
    .display {
        background-color:rgba(255, 255, 255, .2);
        border-radius:10px;
        -ms-border-radius:10px;
        color:#fff;
        font-family:"Cutive", Arial, sans-serif;
        display:table-cell;
        height:70px;
        vertical-align:middle;
        padding:3px 15px 0;
    }
        .display p {padding:0;line-height:1em;}
        .time, .date {padding-top:5px;}
            .time p, .date .number {font-size:35px;}
            .time span, .display .month-day, .conditions {
                font-size:14px;
                text-transform:uppercase;
                font-family:"Maven Pro", Arial, sans-serif;
                line-height:1.15em;
                font-weight:500;
            }
            .display .month-day {padding-left:5px;}
            .icon {float:left;padding:0 12px 0 0}
            .display .temperature {font-size:24px;padding:4px 0 0;}
            .display .conditions {text-transform:none;padding:2px 0 0;}
    .lt-ie9 .display { /* IE rgba Fallback */
        background:transparent;
        filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#20ffffff,endColorstr=#20ffffff);
        zoom:1;
    } 

Проблема

Посмотрев на приведенные выше рисунки кодированного рисунка, вы можете увидеть, как, по-видимому, выбрасывает выравнивание. При дальнейшем просмотре текст выводится вне элемента на mac.

Окна

Windows Coded Design Alignment

Mac

Mac Coded Design Alignment


Примечание

Я вставляю шрифты через таблицу стилей Google Web Fonts.


Проверено

Я пробовал следующее:

  • Установить высоту строки для каждого элемента.
  • Установите значения шрифтов для каждого элемента.
  • Установить высоты для каждого элемента.
  • Комбинация высоты/верхнего слоя на каждом элементе.
  • Используемые проценты /em/px для заполнения.

Кажется, что независимо от того, что я пытаюсь, контент никогда не будет центрироваться идеально по сравнению с Mac и ПК.


Мой вопрос (ы)

Можно ли добиться того, что я пытаюсь сделать в упрощенном виде?

Должен ли я отказаться от маршрута display:table-cell; и установить конкретные высоты /paddings для каждого элемента и дочернего элемента? Я все равно буду сталкиваться с проблемами заполнения/интервала между двумя ОС.

Что я должен классифицировать эту проблему? Высота линии? Таблица-клетка? ОПЕРАЦИОННЫЕ СИСТЕМЫ? и т.д...

Спасибо заранее!

4b9b3361

Ответ 1

Если он разрешен с использованием другого шрифта (Arial), проблема связана с шрифтом, а не с CSS. Как вы заметили, рендеринг шрифтов отличается между браузерами.

Одним из возможных решений может быть загрузка шрифта Cutive (я вижу, что у него есть лицензия SIL), а затем запустить его через генератор шрифтов Font Squirrel. В режиме "Эксперт" есть опция "Исправить вертикальные показатели", которая может быть тем, что вы ищете.

Ответ 2

Мое решение этого (очень раздражающая проблема):

  • Установите все элементы в float: left;

  • Установить явные высоты строк;

Наслаждайтесь победой над кросс-браузерной/платформенной css смехотворностью.

Ответ 3

Я столкнулся с этой проблемой с помощью специального шрифта, который был создан для бренда клиента. Я открыл шрифт TTF в Font Forge. То, как я создал единообразие с рендерингом, - это настроить значения в Element- > Font Info- > OS/2- > Metrics.

Значения Win Ascent/Descent, по-видимому, по-разному работают с другими значениями. У меня были следующие значения:

Win Ascent: 1000

Win Descent: 0

Typo Ascent: 750

Typo Descent: -250

HHead Ascent: 750

HHead Descent: -250

Я изменил значения Win Ascent и Descent для:

Win Ascent: 750

Win Descent: 250 (обратите внимание на положительное значение)

Кажется, вам нужно соответствовать значениям, кроме как в моем случае мне нужно было инвертировать значение Win Descent к положительному.

У меня очень ограниченные знания о шрифтах, но это устранило мою проблему. Я создал шрифт как TTF, а затем запускал его через генератор веб-шрифтов. Шрифты теперь отображаются идентично на Mac/Windows 7/Android/iOS.

Надеюсь, это поможет кому-то.

Ответ 4

Часть проблемы может быть в том, как Windows/Mac OSX отображает шрифты. В частности, те, которые представлены через @font-face. Вы пытались отключить, какие форматы шрифтов используются?

Ответ 5

Я был свидетелем той же проблемы, с помощью специального шрифта (Trade Gothic), обслуживаемого FastFonts.

Windows сделала то, что должна была. Но все другие браузеры на машинах на базе Linux, Mac, iOS, Android понесли эту проблему.

Моим единственным решением было совпадение с пользовательским агентом, а пространство имен - тегом body.not-win

Затем мои стили могут переопределять высоту строки, специфичную для не-windows-устройств.

Ответ 6

Поскольку вы сказали в своем комментарии Джордану Брауну, что использование Arial делает выравнивание идеальным, это проблема шрифта. Вероятно, тот, кто создал ваш шрифт, не установил значение восхождения.

Если у вас есть TTF, загрузите его в FontSquirrel, выберите опцию "Эксперт", а затем сохраните все параметры по умолчанию. Тот, который его исправляет, я считаю, это "Fix Vertical Metrics". но у меня возникли проблемы при изменении значений по умолчанию, поэтому я рекомендую хранить их как есть.

Теперь высота линии шрифта делает то же самое на MAC и ПК (это сработало для меня).

Ответ 7

Я также столкнулся с этой проблемой. Ответ Луки помог мне. Мне пришлось настроить шрифты с помощью FontForge, используя следующие настройки:

FontForge Settings

Снимите флажки с флажками "Смещение", а также установите флажок "Действительно использовать метрики Typo". У меня было большинство проблем с Firefox и IE. Игра со значением "Win Descent" зафиксировала его для этих двух браузеров.

Ответ 8

Mac правильно отображает длины ниже базовой линии как относящиеся к высоте строки. Похоже, что OS X подсчитывается снизу вверх, тогда как Windows вычисляет с вершины.

Так как 1em - это ширина капитала M используемого шрифта, она обычно меньше общей высоты шрифта.

Вы пытались установить высоту линии так же, как высота элемента? Обычно это помогает решить эти проблемы.

Ответ 9

Это вызвано историей формата шрифта и войнами Windows/Mac, существуют разные способы вычисления высоты строки, и если они не синхронизированы в шрифте, который вы используете, в некоторых системах это будет не так.

Вам нужно исправить шрифт (если это разрешено лицензированием) или переключиться на один без этой проблемы

Смотрите http://www.webfonts.info/node/330 (предупреждение, это рекламный ролик, даже если техническая информация верна)

Лучше, чтобы ваш дизайн не зависел от точного значения здесь