2010-10-01 12 views
45

Cách thích hợp để sử dụng @font-face để trình duyệt sẽ không tải xuống phông chữ nếu người dùng đã có nó?@ font-face src: local - Cách sử dụng phông chữ cục bộ nếu người dùng đã có nó?

Tôi đang sử dụng @ font-face để xác định DejaVu, đã được cài đặt trên hệ thống của tôi (linux). Firefox không tải xuống phông chữ nhưng Chromium sẽ tải xuống phông chữ mỗi lần!

mã CSS của tôi, dựa trên font squirrelthat question cái nhìn như thế này:

@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; 
} 
+0

Related: http://stackoverflow.com/questions/3698319/css-font-face-what-does-src-local-mean – dbarbosa

Trả lời

60

Nếu bạn muốn kiểm tra cho các tập tin địa phương đầu tiên thực hiện:

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

Có một mô tả phức tạp hơn of what to do here.

+2

Nếu chúng ta có 2 'src's (như trong ví dụ của OP) thì sao? Chúng ta đặt 'local' vào cái thứ nhất hay thứ hai? – mpen

-3

tôi đã không thực sự làm bất cứ điều gì với font-face, vì vậy thực hiện việc này với một nhúm muối, nhưng tôi không nghĩ rằng có bất kỳ cách nào để trình duyệt dứt khoát cho biết nếu một phông chữ web được cài đặt trên máy của người dùng hay không.

Ví dụ: người dùng có thể có phông chữ khác với cùng tên được cài đặt trên máy của họ. Cách duy nhất để chắc chắn biết sẽ là so sánh các tệp phông chữ để xem chúng có giống nhau hay không. Và trình duyệt không thể thực hiện điều đó mà không tải xuống phông chữ web của bạn trước tiên.

Firefox có tải xuống phông chữ khi bạn thực sự sử dụng phông chữ đó trong tuyên bố font không? (ví dụ: h1 { font: 'DejaVu Serif';)?

+0

cũng, vấn đề tên phông chữ có tác động ngắn ở đây tôi đoán (tôi chưa bao giờ có bất kỳ vấn đề với nó) – Thariama

+0

Vâng, tôi đoán là một vụ va chạm là không thể. Tiếp tục. –

+4

phông chữ/phông chữ-gia đình trong css không làm cho trình duyệt tải xuống bất kỳ thứ gì. Nếu nó không tìm thấy phông chữ cục bộ, nó bỏ qua nó. Đó là lý do tại sao chúng tôi thường sử dụng một chồng phông chữ (một danh sách các phông chữ) - nếu nó không có đầu tiên, nó sẽ cố gắng thứ hai và vân vân. @ font-face là một cái gì đó tương đối "mới" (http://stackoverflow.com/questions/2219916/is-font-face-usable-now) – dbarbosa

Các vấn đề liên quan