@font-face и размер шрифта

Идея в следующем является первой, @font-face для Firefox, второго для IE и Arial для чего-либо еще, что не может понять первые два. Его вся работа за исключением я хочу дать другой размер в случае Arial и не выяснил синтаксис, чтобы сделать это.

@font-face {
  font-family: Tribeca;
  src: url("Tribeca.ttf"); format("truetype");
}

@font-face {
  font-family: TribecaIE;
  src: url("Tribec0.eot");
}

BODY
{
    FONT-FAMILY: Tribeca, TribecaIE, Arial; font-size: 195%;
}
15
задан Mark 6 February 2010 в 21:13
поделиться

7 ответов

Это не поддерживается обычными правилами CSS.

Я считаю, что ваши параметры -

2
ответ дан 1 December 2019 в 05:19
поделиться
BODY
{
    FONT: 140% Arial;
    FONT: 195% Tribeca,TribecaIE;
}
-1
ответ дан 1 December 2019 в 05:19
поделиться

Я не верю, что это возможно только с помощью css; нам, вероятно, потребуется использовать javascript.

Все, что мы хотим сделать, это указать другой размер шрифта, если Arial является активным шрифтом. Обнаружить активный шрифт не совсем просто, но вот один метод, который подойдет для нашей конкретной цели. Мы можем создать временный элемент, содержащий некоторые символы Arial, и измерить его ширину, а затем создать второй элемент, содержащий символы, без указания шрифта (так, чтобы он по умолчанию был «активным» шрифтом) и сравнить ширину. Это не скажет нам, какой шрифт в настоящее время активен, но может указать, был ли один из встроенных шрифтов загружен с помощью @ font-face, поскольку они определенно не будут иметь такую ​​же ширину, как Arial. Если ширины двух элементов не равны, мы знаем, что Arial не может быть загружен, и поэтому мы будем корректировать размер шрифта только в том случае, если ширины равны.

Даже если браузер не может загрузить шрифт Arial, наш тест по-прежнему работает, потому что, когда мы указываем Arial во время теста, браузер по умолчанию использует тот же шрифт, что и для второго элемента. Оба элемента по-прежнему будут иметь одинаковую ширину, если браузер не может загрузить встроенные шрифты с помощью @ font-face.

Если кто-нибудь захочет, чтобы я дополнительно проиллюстрировал с помощью кода, я буду счастлив написать javascript.

3
ответ дан 1 December 2019 в 05:19
поделиться

Я считаю, что это (близко к тому, что у вас есть):

@font-face {
  font-family: Tribeca;
  src: url("Tribeca.ttf");
}

@font-face {
  font-family: Tribeca;
  src: url("Tribeca.eot");
}

body {
    font-family: Tribeca, Arial;
}

IE не знает, как открыть ttf , так что это не побеспокоит. Затем он откроет eot . Затем вы просто указываете шрифт по имени в объявлении body .

1
ответ дан 1 December 2019 в 05:19
поделиться

Настройте таргетинг на свои браузеры, зная, какой из них читает какой тип объявления. Условные комментарии загружают разные вызовы CSS. Затем вы можете указать каждому делать что-то свое для каждого правила.

Также существует typekit

0
ответ дан 1 December 2019 в 05:19
поделиться
@font-face {
    font-family: 'Tribeca';
    src: url(Tribeca.eot);
    src: local('Tribeca'), url(Tribeca.ttf) format('truetype');
    }

MSIE проигнорирует последнюю строку, потому что не понимает правило формата . и да, как указано выше в porneL, format () должен находиться в свойстве src .

local () заставит поддерживающие браузеры использовать локальный файл шрифта, если он есть у пользователя, вместо загрузки с вашего сервера (и, возможно, IE тоже будет игнорировать эту строку).

относительно настройки размера шрифта, как указывает Габи: CSS 3 font-size-adjust. но похоже, что он еще не получил широкой поддержки.

0
ответ дан 1 December 2019 в 05:19
поделиться

Чтобы исключить дублирование кода с @font-face, вы можете сделать это на стороне сервера. Если вы используете, например, какой-нибудь urlrewrite, то определяете UA, если это IE - возвращаете файл с расширением .eot, если обычный браузер - ttf.

Что касается меня, то это работает отлично.

И для этого случая не нужно менять css файлы, просто нужно иметь 2 файла: .ttf и .oet.

0
ответ дан 1 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: