Web yazı tipleri veya Yerel olarak yüklenen yazı tipleri?


101

Hiç kullanarak getirdiği sorunları beri Cufon uzağa dış yazı kaynakları kullanarak elde cesaret, ama geç itibariyle, ben daha iyi bir yolu olup olmadığını görmek için yükleme yazı alternatif yöntemleri için aradım; daha iyi yöntemler birdenbire ortaya çıkmanın bir yolunu bulur.

Piyasada pek çok yeni yöntem var ve göründüğü her yöntem için varyasyonlar; Typekit kullanmalı mıyım ? veya google web yazı tipleri (js veya css ile)? Yerel olarak yüklenen yazı tiplerini kullanmaya devam etmeli miyim (ör. fontsquirrel.com tarafından oluşturulan yöntem)?

Aşağıda en çok alınan yöntemleri bazı testlerle listeleyeceğim, ancak gerçekten bir web yazı tipine geçmeye değer mi? Daha yüksek bir kaynak yükü (http istekleri) taşıyacak ve daha az dosya biçimi türüne (daha az uyumluluk) sahip olacak gibi görünüyor. Ancak, çoğu durumda dosyalar eşzamansız ve verimli bir şekilde yüklenmiş gibi görünüyor.

  1. Bu sadece bir durum ve ihtiyaç meselesi mi? Eğer öyleyse, bunlar nedir?
  2. Bu yöntemler arasında büyük farklar var mı?
  3. Listelemediğim daha iyi bir yöntem var mı?
  4. Performansın profesyonelleri / eksileri nelerdir? Bak? bağımlılıklar? uyumluluklar?

Burada gerçekten en iyi uygulamaları arıyorum, performans önemli ama ölçeklenebilirlik ve kullanım kolaylığı da öyle. Bahsetmiyorum, bak ve hisset.


Google CSS

  • yalnızca harici stil sayfası kullanır
  • yalnızca en küçük uyumlu dosya türünü kullanır
  • stylehee ( ) 'yi kullanabilir @importveya <link>veya alabilir @font-faceve doğrudan kendi stil sayfanıza koyabilirsiniz.

Test sonuçları

  78ms load of html
  36ms load of css

görüntü açıklamasını buraya girin


Google JS Yöntemi

  • webfont.jsstil sayfasını yüklemek için kullanır
  • yalnızca en küçük uyumlu dosya türünü kullanır
  • :rootöğeyi sınıfla ekler
  • başa komut dosyası ekler.

Test sonuçları

    171ms load of html
    176ms load of js
    32ms load of css

görüntü açıklamasını buraya girin


Typekit yöntemi

  • :rootöğeyi sınıf ile ekler .
  • kullanabilir *.jsparçacığını veya harici olarak yüklenen dosya *.jsdosyası
  • data:font/opentypeyazı tipi dosyası yerine kullanır .
  • başa komut dosyası ekler
  • başa gömülü css ekler
  • başa harici stil sayfası ekler

    typekit.com'dan yazı tiplerini ve hedeflenen seçicileri kolayca ekleyebilir / kaldırabilir / ayarlayabilirsiniz.

Test sonuçları

  169ms load of html
  213ms load of js
  31ms load of css
  3ms load of data:font/

görüntü açıklamasını buraya girin


… & Yazı Tipi Sincap Yöntemi

@font-face{
    font-weight:400;
    font-style:normal;
    font-family:open_sanslight;
    src:url(../font/opensans-light-webfont.eot);
    src:url(../font/opensans-light-webfont.eot?#iefix) format(embedded-opentype),
        url(../font/opensans-light-webfont.woff) format(woff),
        url(../font/opensans-light-webfont.ttf) format(truetype),
        url(../font/opensans-light-webfont.svg#open_sanslight) format(svg)
}

… Veya verilerle: yazı tipi yöntemi…

@font-face {
    font-family: 'open_sanslight';
    src: url('opensans-light-webfont-f.eot');
}

@font-face {
    font-family: 'open_sanslight';
    src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAF4sABMAAAAArXQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcZLn0KkqwK44Jq866WBSpzpsNY2IyGAhoJFBbYjuxmyns5sNa4NwldcJ7eh3Uy5gQkURIlqWzONe3HcLsDX1x/+jifDXvbzgTBjopZElndil3hJkERJkmRJkVRJk3TJkEzJkmzOc4HLXOEOF7nEX/*thisisnotafullencodingjustanexample*/bZwUnK4yS3JlTx2Sr4USKEUSbHVX9fcGNBs4fqgw+GoNHU7lKr36Eqn0lCWt6pHFpWaUlc6lS6loSxRlirLlP/uuU01dVfT7L6gPxyqraluCpgj3WtqeC1V4VBDW2N4K1r1esw/IupKp9L1FwlqnuIAAAB42j3NvQ7BUBjG8R5tTz/0u2UjNTTESYQbMGmXLiISbeI6zBYjbuWtye7CeMJxtuf3LP8ne1+IXbWa7G3TMXZru4qLZkJRW1O2wzi3I+Li2Gik5yXpYkNGXj70YU98YQLGHxwwXxIWwO8SNmAdJBzAXku4gFNI9AF38QMjTwZ9vN6yJzq9OoEB6I8VQzDYK0ZguFKMwWiumIDxTDEFk6liBqaF4gDMFFvKxAfOxFUGAAABUxSL9gAA) format('woff'),
         url('opensans-light-webfont-f.ttf') format('truetype'),
         url('opensans-light-webfont-f.svg#open_sanslight') format('svg');
    font-weight: normal;
    font-style: normal;

}

5
Bu güzel bir soru.
dachi

1
En iyi yöntem olup olmadığından emin değilim, ancak Google CSS'yi her zaman böyle kullanırım<link href='http://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet'>
lefoy

Sadece yerel web fontları için font-sincap gibi bir web sitesi geliştirdim Georgian. Yazı tipi sincap yöntemini kullanıyorum ve bu soruya da harika bir cevap görmek istiyorum.
dachi

1
Kurşun geçirmez @font-facebeyanların nasıl ilan edileceğine dair çok güzel bir makale , belki faydalı bilgiler bulabilirsiniz. paulirish.com/2009/bulletproof-font-face-implementation-syntax
lefoy

Daha iyi / iyileştirilmiş cevaplar için müsait olduğunda ödül almaya başlayabilirim, eğer bir tanesini kabul etmezsen.
Davit

Yanıtlar:


35

İlk olarak, Google'ın teklifiyle ilgili bir şeyi açıklığa kavuşturacağım. Aslında tarayıcınızın işleyebileceği en küçük biçimi yükleyecektir. WOFF, küçük dosya boyutları sunar ve tarayıcınız bunu destekler, bu nedenle gördüğünüz odur. WOFF ayrıca oldukça yaygın bir şekilde desteklenmektedir. Bununla birlikte, örneğin Opera'da, muhtemelen yazı tipinin TrueType sürümünü alırsınız.

Dosya boyutu mantığı da bence Font Squirrel onları bu sırayla deniyor. Ama bu benim açımdan daha çok spekülasyon.

Her isteğin ve baytın önemli olduğu bir ortamda çalışıyorsanız, kullanım durumunuz için hangisinin en iyi sonucu verdiğini bulmak için biraz profilleme yapmanız gerekir. İnsanlar yalnızca bir sayfayı görüntüleyip bir daha hiç ziyaret etmeyecek mi? Öyleyse, önbelleğe alma kuralları o kadar önemli değildir. Göz atıyorlarsa veya geri dönüyorlarsa, Google'ın sunucunuzdan daha iyi önbelleğe alma kuralları olabilir. Gecikme daha büyük bir sorun mu yoksa bant genişliği mi? Gecikme durumunda, daha az istek hedefleyin, bu nedenle yerel olarak barındırın ve dosyaları mümkün olduğunca birleştirin. Bant genişliği varsa, en küçük kod ve en küçük yazı tipi formatıyla biten seçeneğe gidin.

Şimdi, CSS ve JS değerlendirmesine geçelim. Aşağıdaki HTML parçasına bakalım:

<head>
    <script type="text/javascript" src="script1.js"></script>
    <link rel="stylesheet" type="text/css" href="style1.css" />
    <style type="text/css">
        @import url(style2.css);
    </style>
    <script type="text/javascript">
        (function() {
            var wf = document.createElement('script');
            wf.src = 'script2.js';
            wf.type = 'text/javascript';
            wf.async = 'true';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(wf, s);
        })();
    </script>
</head>

Birçok durumda, script1, style1ve style2engelleme olurdu. Bu, tarayıcının bu kaynak yüklenene kadar belgeyi görüntülemeye devam edemeyeceği anlamına gelir (modern tarayıcılar bunu biraz değiştirse de). Bu, özellikle stil sayfalarında gerçekten iyi bir şey olabilir. Biçimlendirilmemiş içeriğin parlamasını önler ve aynı zamanda stilleri uygularken meydana gelebilecek dev kaymayı da önler (ve içeriğin değiştirilmesi kullanıcı olarak gerçekten can sıkıcıdır).

Öte yandan, script2engelleme olmazdı. Daha sonra yüklenebilir ve tarayıcı, belgenin geri kalanını ayrıştırmaya ve görüntülemeye devam edebilir. Böylece bu da faydalı olabilir.

Özellikle yazı tiplerinden bahsedersek (ve daha spesifik olarak Google'ın teklifinden), muhtemelen bir CSS yöntemine bağlı kalırdım (seviyorum @importçünkü stil sayfasıyla stil vermeye devam ediyor, ama bu sadece ben olabilirim). Betik tarafından yüklenen JS dosyası ( http://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js ) @font-facebildirimden daha büyük ve çok daha fazla iş gibi görünüyor . Ve gerçek yazı tipinin kendisinin (WOFF veya TTF) yüklenmesinin engellediğine inanmıyorum, bu yüzden işleri çok fazla geciktirmemeli. Kişisel olarak CDN'lerin büyük bir hayranı değilim, ama gerçek şu ki, GERÇEKTEN hızlılar. Google'ın sunucuları, paylaşılan barındırma planlarının çoğunu bir heyelanla yenecek ve yazı tipleri çok popüler olduğu için, insanlar onları önceden önbelleğe almış bile olabilir.

Ve tüm sahip olduğum bu.

Typekit ile hiç tecrübem yok, bu yüzden onu teorilerimin dışında bıraktım. Herhangi bir yanlışlık varsa, argümanlar uğruna tarayıcılar arasındaki genellemeleri saymazsanız, lütfen bunları belirtin.


Bunun büyük bir kısmının durumsal olacağını düşündüm, ancak engelleme ve FOUT sorunları hakkında da iyi bir not alıyorsunuz. Bunu burada okudum: paulirish.com/2009/fighting-the-font-face-fout & stevesouders.com/blog/2009/10/13/font-face-and-performance . Bu gece bazı testler yapacağım ve performans farklılıklarını yayınlayacağım. Harika fikir için teşekkürler.
darcher

11

Sorunuzda yükleme sürelerini çok iyi ele aldığınızı düşünüyorum. Benim bakış açıma göre, listeye eklenmesi gereken birkaç kaynak ve seçeneklerin tam bir görünümünü elde etmek için incelenmesi gereken birkaç husus daha var.


Diğer bazı saygın yazı tipi kaynakları

cloud.typography

http://www.typography.com/cloud/

Söyleyebileceğim kadarıyla, yazı tipleri bir CSS dosyasında veri olarak gömülüdür:

@font-face{ 
    font-family: "Font Name"; 
    src: url(data:application/x-font-woff;base64,d09GRk9UVE8AACSCAA0AAAAARKwAAQAAAAAiVAAAAi4AAAadAAAAAAAAAABDRkYgAAAIyAAAFCgAABmIK5m+CkdERUYAABzwAAAAHQAAACAAXQAER1BPUwAAHRAAAAQlAAAYAq+OkMNHU1VC ... ); 
    font-weight:400; font-style:normal; 
} 

İşte benim özelliklerim:

94ms load of css from their server
37ms load of css from our server (will vary based on your configuration)
195ms load of data:fonts from our server (will vary based on your configuration)

İşte dağıtımlarına ilişkin çok yüksek düzeyli açıklamaları .

Fonts.com

Bu hizmeti kullanmadım, ancak çok köklü bir yazı tipi satıcısı ve sitelerinde listeledikleri bilgiler oldukça etkileyici. Kesin yöntemleriyle ilgili spesifikasyonlara sahip değilim, ancak işte sahip olduklarını bildiğim şey:

  • Dünyadaki en iyi bilinen yazı tiplerinden bazıları mevcuttur
  • Gerçekten büyük bir yazı tipi kitaplığı (20.000'den fazla)
  • Maket yapmak için masaüstü yazı tipi indirmeleri
  • Tarayıcıda web yazı tiplerini test etmek için özel bir araç
  • İnce tipografi kontrolleri ve alt kümeleme
  • Kendi kendine barındırma seçenekleri

FontSpring

FontSquirrel ile ilişkilidir. Yazı tipleri buradan sabit bir fiyata satın alınabilir. FontSquirrel gibi kendi sunucunuzda konuşlandırılmak üzere, beraberindeki bir CSS yazı tipi dosyaları teslim edilir.


Genişletilmiş özellikler

Her yazı tipi hizmetinin genel artıları ve eksileri ile ilgili olarak, işte birkaç karşılaştırma:

Yazı Tipi Kitaplığı Boyutu

  • Fonts.com : 20.000+
  • FontSpring : 1000+
  • FontSquirrel : 300+
  • Google : 600+
  • Typekit : 900+
  • Typography.com (cloud.typography.com): muhtemelen 300+ (35 aile)

Fiyatlandırma

  • Fonts.com : 500.000 sayfa görüntüleme için ayda 20 ABD doları
  • FontSpring : Yazı tipine göre değişir (bir kerelik yazı tipi satın alınması)
  • FontSquirrel : Ücretsiz
  • Google : Ücretsiz
  • Typekit : 500.000 sayfa görüntüleme için 4 ABD doları / ay
  • Typography.com : 1.000.000 sayfa görüntülemesi için 12,50 ABD doları / ay

Yazı Tipi Kalitesi

Web yazı tiplerinin kalitesi biraz değişebilir. Bu, harf biçimleri veya karakter kümesinin aralığı veya boyutu gibi şeyleri kapsayabilir. Bunların tümü, bir yazı tipinin vereceği genel kalite izlenimini belirler. Ücretsiz seçenekler bazı iyi seçeneklere sahipken, aynı zamanda yüksek kaliteli olmayan bazı yazı tiplerine de sahiptir, bu nedenle bu kaynaklardan dikkatlice seçim yapmak istersiniz.

  • Fonts.com : Yüksek
  • FontSpring : Karışıktan Yükseğe
  • FontSquirrel : Karışık
  • Google : Karışık
  • Typekit : Yüksek
  • Typography.com : Çok yüksek (Fonts.com, FontSpring ve Typekit, yalnızca dünyanın en iyileri arasında yer alan H&FJ dökümhanesinden gelen yazı tiplerinin olduğu çoklu tip dökümhanelerini desteklediği için buna "çok yüksek" bir isim veriyorum)

Yazı Tipi Kalitesi II: Tipografi

Masaüstü tipografide, web yazı tiplerine girmesi gerçekten zor olan birçok iyileştirme var. Bu hizmetlerden bazıları bunları sunmanın yollarını sunar.

  • Fonts.com : karakter aralığı, harf aralığı, bitişik harfler, alternatif karakterler, kesirler vb.
  • FontSpring : Yok
  • FontSquirrel : Yok
  • Google : Yok
  • Typekit : Yok
  • Typography.com : küçük büyük harfler, bitişik harfler, alternatif karakterler, alternatif sayı stilleri, kesirler vb.

Tarayıcı desteği

Bu, çoğunlukla her hizmet tarafından desteklenen yazı tipi biçimlerine bağlıdır. Başlıca olanlar:

  • EOT: Internet Explorer için (IE 4+)
  • TrueType ve OpenType: Geleneksel biçimler (Safari 3.1+, FF 3.5+, Opera 10+)
  • WOFF: Web yazı tipleri için yeni standart (FF 3.6+, Chrome 5+)
  • SVG: IOS <4.2

@ Font-Face Kuralı ve Yararlı Web Yazı Tipi Püf Noktaları hakkında daha fazla bilgi

Tüm bu hizmetler, ana yazı tipi biçimlerini destekler. Kendi kendine barındırılan yazı tipleriyle, doğru sözdizimini kullandığınız sürece kapsanmanız gerekir. FontSpring'in kurşun geçirmez sözdiziminin 2011 güncellemesi :

@font-face {
  font-family: 'MyWebFont';
  src: url('webfont.eot'); /* IE9 Compat Modes */
  src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
       url('webfont.woff') format('woff'), /* Modern Browsers */
       url('webfont.ttf')  format('truetype'), /* Safari, Android, iOS */
       url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
  }

Performans I: İndirmeler

Anladığım kadarıyla, yukarıdaki sözdizimini kullanmak tarayıcıların kendileri için çalışan belirli formatı yakalamasına izin veriyor, böylece çalışmayan font formatlarında israf edilmiş indirmeler olmaz.

Fonts.com, Typekit veya Typography.com gibi ücretli hizmetler, doğru formatı tespit etmek için yöntemler kullanır ve ardından genellikle bir CSS dosyasında base64 verileri olarak doğru font formatını sunar.

Gördüğüm kadarıyla, yukarıda listelediğiniz yöntemlerin farklılıkları, yüksek hızlı internet kullanıcıları için oldukça önemsizdir (<200ms fark gibi görünüyor), ancak daha yavaş ağlardaki cihazlar için, özellikle önbelleğe alınmamış sayfa ziyaretleri için dikkate değer olabilir.

Performans II: Altkümeleme

Yalnızca kullanmak istediğiniz belirli karakterlerin olacağını biliyorsanız, yazı tipinizi bir karakter alt kümesiyle oluşturabilir ve böylece indirme boyutunu azaltabilirsiniz.

  • Fonts.com : Çok detaylı kontrol
  • FontSpring : FontSquirrel web yazı tipi oluşturucusu aracılığıyla alt küme olarak yeniden derlenebilir
  • FontSquirrel : Web yazı tipi oluşturucu aracılığıyla alt küme olarak yeniden derlenebilir
  • Google : Çok ayrıntılı kontrol
  • Typekit : sınırlı "tüm karakterler" veya "varsayılan" seçenekleri
  • Typography.com : Çok detaylı kontrol

Performans III: Teslimat

  • Fonts.com : Global CDN veya kendi sunucunuz
  • FontSpring : Sunucunuza göre
  • FontSquirrel : Sunucunuza göre
  • Google : Küresel süper CDN
  • Typekit : Global CDN
  • Typography.com : Global CDN (125.000 sunucu)

Dil desteği

  • Fonts.com : Asya ve Orta Doğu dahil 40 dil
  • FontSpring : Yazı tipine bağlı olarak Batı
  • FontSquirrel : Yazı tipine bağlı olarak Batı
  • Google : Batı, yazı tipine bağlı olarak
  • Typekit : Batı, yazı tipine bağlı olarak
  • Typography.com : Western, yazı tipine bağlı olarak

Test ve Uygulama

  • Fonts.com : Kapsamlı ve özelleştirilebilir araçlarla çok kolay
  • FontSpring : Teknik (kendiniz yapın)
  • FontSquirrel : Teknik (kendiniz yapın)
  • Google : Kolay
  • Typekit : Kolay
  • Typography.com : Kolay test, dağıtıldıktan sonra değişiklik yapmak biraz daha karmaşık

Bu, OP'lerin sorusuna cevap vermiyor. Sadece birkaç Web yazı tipini karşılaştırır.
stackErr

Bu, her satıcı için en bilgilendirici, tüm bu bilgiler için teşekkürler!
darcher

10

Pekala, peşinde olduğun gibi

... burada en iyi uygulamaları aramak, performans önemli ama ölçeklenebilirlik ve kullanım kolaylığı da öyle. Bahsetmiyorum, bak ve hisset.

cevap (web tasarımında her zaman olduğu gibi): Duruma göre değişir!

Kesin olan bir şey, JS yaklaşımını kullanmanızı önermememdir (ikinci örneğinizde gösterilmiştir).

Kişisel olarak, kullanıcıların büyük çoğunluğunun etkinleştirmiş olmasına rağmen, Javascript'e bağlı olarak sunumsal şeyler ve CSS stilleri yapmaktan hoşlanmıyorum. Bu bir şeyleri karıştırmama meselesidir.

Ve verdiğiniz örnekte görebileceğiniz gibi, bir tür FOUC (şekillendirilmemiş içerik şişesi) vardır, çünkü sayfa, yazı tipi mevcut olmadan önce tarayıcı tarafından zaten oluşturulmuştur. Olduğu anda sayfa yeniden çizilir. Ve site ne kadar büyükse (performans) etkisi o kadar büyük olur!

Bu yüzden yazı tipi yerleştirmek için asla JS çözümü kullanmam.

Şimdi saf CSS yöntemlerine bir göz atalım.
Bir süredir burada "vs. ithalat" hakkında bir tartışma var. Şahsen ben @import kullanımından kaçınmayı ve her zaman <link>sadece kullanmayı tercih ediyorum . Ancak bu esas olarak kişisel tercihler meselesidir. Asla yapmamanız gereken tek şey ikisini de karıştırmaktır!

Yerel vs CDN
Font dosyalarınızı yerel olarak barındırıp barındırmayacağınıza veya bir CDN kullanıp kullanmayacağınıza karar verirken, çoğunlukla farklı yazı tiplerinin sayısına ve gömmek istediğiniz ilgili yazı tiplerine bağlıdır.

Bu neden önemlidir veya bir rol oynar?
Performans açısından, (bir) stil sayfanıza kodlanmış Base64 yazı tipini eklemenizi tavsiye ederim. Ancak, neredeyse tüm modern tarayıcılar tarafından kullanıldığı için yalnızca .woff biçimi, yani ziyaretçilerinizin çoğu için geçerlidir. Diğer tüm kullanıcılar için ek istek ile yaşıyor.

Ancak Base64 kodlamasının neden olduğu "ek yük" ve bir yazı tipi dosyasının boyutu (.woff biçiminde olsa bile) nedeniyle, bu teknik yalnızca 3 veya 4'ten fazla farklı yazı tipiniz yoksa kullanılmalıdır. Ve her zaman sunucunuzun (CSS) dosyalarını gzip'lenmiş olarak teslim ettiğinden emin olun.

Bunu yapmanın en büyük avantajı, yazı tipi dosyası için ek bir isteğinizin olmamasıdır. Ve ilk sayfa yüklendikten sonra (sitenizin hangi sayfası olursa olsun) CSS dosyası önbelleğe alınır. Bu, HTML5 uygulama önbelleğini kullanıyorsanız da bir avantajdır (ki kesinlikle yapacaksınız).

Bir yazarın sitesinde en fazla 3 veya 4 farklı yazı tipi kullanmaması gerektiği gerçeğinin yanı sıra, Google'ın CDN kullanma yöntemine bir göz atalım.

Öncelikle, istediğiniz tüm yazı tiplerini tek bir dosyaya dahil edebileceğinizi (ve her zaman yapmanız gerektiğini) unutmayın <link>, örneğin:

<link href='http://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic,700italic|PT+Sans:400,700,400italic,700italic|Montez' rel='stylesheet' type='text/css'>

Bu, aşağıdaki yanıtla sonuçlanacaktır:

@font-face {
  font-family: 'Montez';
  font-style: normal;
  font-weight: 400;
  src: local('Montez'), local('Montez-Regular'), url(http://themes.googleusercontent.com/static/fonts/montez/v4/Zfcl-OLECD6-4EcdWMp-Tw.woff) format('woff');
}
@font-face {
  font-family: 'PT Sans';
  font-style: normal;
  font-weight: 400;
  src: local('PT Sans'), local('PTSans-Regular'), url(http://themes.googleusercontent.com/static/fonts/ptsans/v6/LKf8nhXsWg5ybwEGXk8UBQ.woff) format('woff');
}
@font-face {
  font-family: 'PT Sans';
  font-style: normal;
  font-weight: 700;
  src: local('PT Sans Bold'), local('PTSans-Bold'), url(http://themes.googleusercontent.com/static/fonts/ptsans/v6/0XxGQsSc1g4rdRdjJKZrNBsxEYwM7FgeyaSgU71cLG0.woff) format('woff');
}
@font-face {
  font-family: 'PT Sans';
  font-style: italic;
  font-weight: 400;
  src: local('PT Sans Italic'), local('PTSans-Italic'), url(http://themes.googleusercontent.com/static/fonts/ptsans/v6/PIPMHY90P7jtyjpXuZ2cLD8E0i7KZn-EPnyo3HZu7kw.woff) format('woff');
}
@font-face {
  font-family: 'PT Sans';
  font-style: italic;
  font-weight: 700;
  src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url(http://themes.googleusercontent.com/static/fonts/ptsans/v6/lILlYDvubYemzYzN7GbLkHhCUOGz7vYGh680lGh-uXM.woff) format('woff');
}
@font-face {
  font-family: 'PT Serif';
  font-style: normal;
  font-weight: 400;
  src: local('PT Serif'), local('PTSerif-Regular'), url(http://themes.googleusercontent.com/static/fonts/ptserif/v6/sDRi4fY9bOiJUbgq53yZCfesZW2xOQ-xsNqO47m55DA.woff) format('woff');
}
@font-face {
  font-family: 'PT Serif';
  font-style: normal;
  font-weight: 700;
  src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://themes.googleusercontent.com/static/fonts/ptserif/v6/QABk9IxT-LFTJ_dQzv7xpIbN6UDyHWBl620a-IRfuBk.woff) format('woff');
}
@font-face {
  font-family: 'PT Serif';
  font-style: italic;
  font-weight: 400;
  src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://themes.googleusercontent.com/static/fonts/ptserif/v6/03aPdn7fFF3H6ngCgAlQzBsxEYwM7FgeyaSgU71cLG0.woff) format('woff');
}
@font-face {
  font-family: 'PT Serif';
  font-style: italic;
  font-weight: 700;
  src: local('PT Serif Bold Italic'), local('PTSerif-BoldItalic'), url(http://themes.googleusercontent.com/static/fonts/ptserif/v6/Foydq9xJp--nfYIx2TBz9QFhaRv2pGgT5Kf0An0s4MM.woff) format('woff');
}

Gördüğünüz gibi, 9 farklı yazı tipi dosyası vardır, bu, kullanıcının yerel olarak yüklenmiş talep edilen yazı tiplerinden bir veya daha fazlasına sahip olmaması durumunda toplam 10 (bağlantı öğesinden biri dahil) istek anlamına gelir. Ve bu istekler sitenize gelen her yeni sayfa isteğinde tekrarlanır (daha fazla veri aktarılmamasına rağmen)! Ayrıca talebin yanıtı <link>asla önbelleğe alınmaz.

Öneri:
Sonuçta, yazı tipi dosyalarınızı, stil sayfanıza Base64 ile kodlanmış .woff biçiminde eklemenizi gerçekten tavsiye ederim!

Nasıl yapılacağına dair bir örnek ve açıklama için bu güzel makaleye bakın !


Bir grup teşekkürler, bu çözümü arıyordum!
ken

3

Satır içi css yöntemini kullanıyorum çünkü ekstra isteğin ek yükü bease64 kodlamadaki boyut artışından daha fazla. Bu ayrıca css dosyalarının sunucusu tarafından gizip sıkıştırmasıyla daha da dengelenir.

Diğer seçenek, yazı tiplerinin eşzamansız yüklenmesini kullanmaktır, ancak çoğu zaman kullanıcılar yazı tiplerinin yüklendikten sonra ortaya çıktığını göreceklerdir.

Yöntemden bağımsız olarak, yazı tipi dosyasının boyutunu yalnızca kullanacağınız karakter kümelerini dahil ederek azaltabilirsiniz.


HTTP2 kullanılırken yukarıda bahsedilen fazladan bir ek yük yoktur.
Chris Gunawardena

1

Şahsen ben Google Yazı Tiplerini kullanıyorum. Çok çeşitli seçeneklere sahipler ve son zamanlarda Zopfli sıkıştırmasına geçerek yazı tiplerinde sıkıştırmayı iyileştirdiler . Google, web'i daha hızlı hale getirmek için çabalıyor, bu yüzden bu kısımda daha fazla optimizasyonun da onlardan geleceğini tahmin ediyorum.

Dış kaynaklı bir yazı tipi teslimi olarak ne seçerseniz seçin, yazı tiplerini alma istekleriyle her zaman hızda azalma elde edersiniz. Hız açısından bakıldığında en iyi şey, yazı tiplerini kendiniz sunmaktır. Dış kaynaklı bir teslimattan yüklemek için gereken ekstra milisaniyeleri umursamıyorsanız, bunları kullanma kolaylığının milisaniyeye değer olduğunu düşünüyorsanız, bununla devam etmelisiniz.

Typekit ve diğerlerini bilmiyorum, ancak Google Fonts ile teslimatı daha da hızlandırmak için belirli alt kümelere ve karakter aralığına hizmet vermeyi seçebilirsiniz.

Bir alt küme seçme:

<link href="http://fonts.googleapis.com/css?family=Open+Sans&subset=latin" rel="stylesheet">

Bir dizi karakter seçme:

<!-- Only serve H,W,e,l,o,r and d -->
<link href="http://fonts.googleapis.com/css?family=Open+Sans&text=HelloWorld" rel="stylesheet">

Yazı tipi teslimi ile hızları daha da artırmak için dns-prefetch'i kullanabilirsiniz .

Sanırım ve umuyorum ki Google, yazı tipi dağıtımını olabildiğince hızlandırmak için elinden geleni yapacaktır. Bunları yüklemek için geçen milisaniyeler web siteme zarar vermez, bu yüzden onları mutlu bir şekilde kullanıyorum.

Uzun lafın kısası:

Milisaniyelik yazı tipi teslimatı sitenize zarar veriyorsa, örneğin önerilen 1 saniyeden fazla yüklenmesini sağlayarak sitenizi kendiniz barındırmanız gerektiğini düşünüyorum.


1
<link rel=dns-prefetch href='//fonts.googleapis.com'>Bunu analitik, ısı haritalama ve alt etki alanları için kullanmamın iyi bir noktası, bazı nedenlerden dolayı harici web yazı tipleri için çalışmak üzere kayıt yaptırmamış. Ve yükleme süresi yazı tipinden yazı tipine büyük ölçüde farklılık gösterir, sanırım oldukça popüler bir yazı tipi kullanıyorsanız (önbelleğe alınabilir) veya yalnızca birkaç yazı tipi seçiyorsanız, web yazı tiplerini kullanmak oldukça hızlı bir yazı tipi kaynağıdır. Testleri kısa süre içinde burada yayınlayacağım.
darcher

1

En iyi seçenek, yazı tiplerini ajax kullanarak içe aktarmaktır, tıpkı şunun gibi:

<script>
    (function() {
        var font = document.createElement('link'); 
        font.type = 'text/css'; 
        font.rel = 'stylesheet';
        font.href = '/url/to/font.css';
        var s = document.getElementsByTagName('link')[0]; 
        s.parentNode.insertBefore(font, s);
      })();
</script>

Bunu web sayfamda yapıyorum ve Google Insights testinde 9 puan artırıyorum.


İlginç. Bu yöntemle PageSpeeds'e bakmam gerekecek.
darcher

2
asyncÖznitelik ne olacak ? Aynı şeyi yapıyor.
Tymek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.