@ font-face src: local - Як використовувати локальний шрифт, якщо його у користувача вже є?


82

Який правильний спосіб використовувати, @font-faceщоб браузер не завантажував шрифт, якщо його у користувача вже є?

Я використовую @ font-face для визначення DejaVu, який вже встановлений у моїй системі (linux). Firefox не завантажує шрифт, але Chromium завантажує його кожного разу!

Мій CSS-код, заснований на шрифтовій білці і це запитання виглядає так:

@font-face {
    font-family: 'DejaVu Serif';
    src: url('DejaVuSerif-webfont.eot');
    src: local('DejaVu Serif'), url('DejaVuSerif-webfont.woff') format('woff'), url('DejaVuSerif-webfont.ttf') format('truetype'), url('DejaVuSerif-webfont.svg#webfontCFu7RF0I') format('svg');
    font-weight: normal;
    font-style: normal;
}

/* ... @font-face definitions for italic and bold omitted ... */

@font-face {
    font-family: 'DejaVu Serif';
    src: url('DejaVuSerif-BoldItalic-webfont.eot');
    src: local('DejaVu Serif Bold Italic'), url('DejaVuSerif-BoldItalic-webfont.woff') format('woff'), url('DejaVuSerif-BoldItalic-webfont.ttf') format('truetype'), url('DejaVuSerif-BoldItalic-webfont.svg#webfontQAewh7pf') format('svg');
    font-weight: bold;
    font-style: italic;
}

Відповіді:


104

Якщо ви хочете спершу перевірити наявність локальних файлів:

@font-face {
font-family: 'Green Sans Web';
src:
    local('Green Web'),
    local('GreenWeb-Regular'),
    url('GreenWeb.ttf');
}

Існує більш детальний опис того, що тут робити .


3
Що робити, якщо ми маємо 2 srcс (як у прикладі OP)? Ми одягаємо localперший або другий?
mpen

-7

Я насправді нічого не робив font-face, тому сприйміть це з щіпкою солі, але я не думаю, що існує будь-який спосіб для браузера остаточно визначити, встановлений певний веб-шрифт на машині користувача чи ні.

Наприклад, користувач може встановити на своєму комп'ютері інший шрифт з однаковим іменем. Єдиним способом остаточно визначити буде порівняння файлів шрифтів, щоб перевірити, чи вони ідентичні. І браузер не міг цього зробити, не завантаживши спочатку веб-шрифт.

Чи завантажує Firefox шрифт, коли ви насправді використовуєте його в fontдекларації? (наприклад h1 { font: 'DejaVu Serif';)?


ну, проблема з назвами шрифтів тут короткочасна, я думаю (у мене ніколи з цим не було проблем)
Thariama

Так, я думаю, зіткнення малоймовірне. Продовжуй.
Пол Д. Уейт,

5
font / font-family у css не змушує браузер нічого завантажувати. Якщо він не знаходить шрифт локально, він ігнорує його. Ось чому зазвичай ми використовуємо стек шрифтів (список шрифтів) - якщо в ньому немає першого, він пробує другий тощо. @ Шрифту особа що - то щодо "новий" ( stackoverflow.com/questions/2219916/is-font-face-usable-now )
dbarbosa

@dbarbosa: Я знаю, як font/ font-familyпрацювати. Я просто не знаю, як це @font-faceпрацює!
Пол Д. Уейт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.