CSS'de yazı tipi ağırlığını kalın yazı tipi ailesine göre ayarlamak daha doğru olanı mı?


9

CSS'de bir yazı tipini kalın yapmanın temel olarak iki yolu vardır: font-familyöznitelik ve öznitelik yoluyla font-weight.

Diyelim ki Raleway yazı tipini kullanıyorum ve css aracılığıyla bir Işık, Düzenli, Yarı Çizgi ve Kalın bir varyant yükledim . Basit bir başlığı kalın h1{font-family: 'Raleway Bold'}veya kalın olarak ayarlayarak döndürebilirim h1{font-weight: 700}.

Bunlardan hangisi daha doğrudur, yoksa ikisi de aynı mıdır?


Yazı tipi ailesindeki tüm seçeneklere sahip olduğunuzda, ya css'de "font-weight" yazmanın doğru olduğundan şüphe duyuyorum. Örn: Raleway yazı tipi, ışıktan ekstra kalınlığa kadar tüm seçeneklere sahiptir. Bu nedenle, aileden tüm yazı tiplerini kullanmak için hangi yol uygundur, böylece yazı tipi karakterini kaybedemeyiz.
pooja


@poojaa, biçimlendirmeyi daha net hale getirmek ve asıl soruyu daha ön plana çıkarmak için sorunuzu düzenleme özgürlüğünü aldım. Anlamını değiştirdiğimi düşünüyorsanız, her zaman kendiniz düzenleyebilirsiniz .
PieBie

Yanıtlar:


6

Diyelim ki şöyle bir Kalın yazı tipi varyantı yükledik:

@font-face {
  font-family: 'Raleway Bold';
  font-style: normal;
  font-weight: 700;
  src: url(path/to/font/raleway-bold.woff2) format('woff2');
}

Her ikisini de font-familyve font-weightstil spesifikasyonunuzda kullanmayı tercih ederim . Örneğin:

h1 {
  font-weight: 700;
  font-family: 'Raleway Bold', Helvetica, Arial, sans;
}

Her ikisi de temelde aynı şeyi yapar: başlığınıza1 kalın olmasını söyleyin. Bu, cesareti veya herhangi bir şeyi iki katına çıkarmaz, sadece cesur olması gerektiğini tekrarlar.

Bunun nedeni oldukça basit: yazı tipi dosyanız yüklü değilse (sunucu aşırı yükü, istemci kısıtlamaları, voodoo), ziyaretçiniz yine de kalın bir yazı tipi (bu durumda sahte bir kalın Helvetica) görecek ve böylece bir başlık arasında ayrım yapabilir. ve gövde metni, yalnızca font-family.

Bu görüntüde üstteki set Raleway ve Raleway Italic'tir, ancak uygun Raleway Italic yüklüdür:

<link href='https://fonts.googleapis.com/css?family=Raleway:500,500italic' rel='stylesheet' type='text/css'>

Alt kısım sadece Raleway'i yüklüyor. Sonuç olarak alt set Raleway ve FAUX Raleway italiktir. Örneğin gerçek italik ve sahte italik arasındaki küçük harf "a" ve "k" daki farklara dikkat edin. İyi tasarlanmış bir yazı tipi, yüklemezseniz elde edemeyeceğiniz normaller, kalınlıklar ve italikler arasında farklılıklar gösterir.

resim açıklamasını buraya girin


Bir aile adı kullanmak ve yalnızca ağırlık ayarlamak, yazı tipi dosyalarının yüklenmemesi durumunda size doğru ağırlığı verecektir. Her ikisini de kullanmanın tek nedeni uyumluluk nedenleri olacaktır.
Cai

1
Kafan karıştı. Google yazı tipi örneğiniz, Raleway italik kodunu yalnızca font-family: 'Raleway'(yukarıdaki cesur örneğinizle çelişen) olarak değil, ek olarak, tüm ailenin Ralewayveya her bir varyantın farklı yazı tipi-aile adları ile ayrı ayrı adlandırılmasına bakılmaksızın, sahte uygulama konusunda kesinlikle hiçbir etkisi yoktur. . Kendi örneğiniz bile, sağladığınız font-family: 'Raleway Bold', Helvetica, Arial, sans;gibi Helvetica Boldve Arial Boldbireysel olarak bunun yanlış bir yöntem olduğunu kanıtlıyor, çünkü bu, yazı tipi değişkenlerini kademelendirmenin yanlış yoludur.
rgthree

1

Her iki yol da size doğru çıktı verirken, daha doğru yol, ağırlıkların ve stillerin tüm farklı varyantlarını gruplamak için tek bir yazı tipi ailesi kullanmak olacaktır. Sistem yazı tiplerini ('Arial'dan aşağıya' sans-serif 'e) aynı şekilde kullanırsınız ve aslında, Raleway'i yüklemek için Google yazı tiplerini kullanırsanız, tek yazı tipi aile yolunu kullanırsınız.

Bunun doğru yöntem olmasının birkaç nedenini özetleyelim.

CSS karmaşıklığını ve sonuçta dosya boyutunu azaltır

Tek bir yazı tipi ailesine sahip olmak, yazı tipi ailesiyle birlikte tüm bir öğeyi ve yalnızca farklı ağırlık / stillere sahip belirli öğeleri tanımlayabileceğiniz anlamına gelir. Örneğin aşağıdakileri ele alalım:

html {
  font-family: Raleway;
}
.bold {
  font-weight: 700;
}
.italic {
  font-style: italic;
}
.footer {
  font-family: Arial;
}

<p>I'm raleway font, <span class="bold">and I'm raleway bold</span></p>
<div class="bold italic">I'm Raleway Bold Italic!</div>
<div class= footer>I'm <span class="bold">Arial Bold,</span> w/ the same class!</div>

Bu CSS'nin ne kadar güzel olduğuna dikkat edin. .Bold için font ailesi olarak "RalewayBold" veya .italic için "RalewayItalic" belirtmemize gerek yoktu. Aslında, sınıflarımız basitçe çalışacağından, cesur ve italik bir değişken belirtmemize bile gerek yok. Ayrıca, .bold .footer'ımızın içindeyse, cesur Arial olacaktır ve Raleway değil, çünkü Arial'ı altbilgi kabından devralır.

Tarayıcı bunu yapar.

Yukarıdaki temel olarak tarayıcı iç stil sayfasının yazı tiplerini minimal stilleri ve CSS'nin doğal basamaklı doğasını kullanarak nasıl tanımladığıdır.

Endüstrinin yaptığı ve yaptığı şey budur.

En büyük web mülkleri, uygulamaları ve yayıncıları bunu bu şekilde yapar. Google, Facebook, NYT, ESPN vb. Tüm fontları bu şekilde tanımlar ve kullanır.

Sadece bu değil, aynı zamanda CSS veya internetten önceki kullanıcı arayüzleri tek font ailelerini belirtir ve farklı ağırlık ve stil özelliklerine göre varyantlar seçer. Microsoft Word, KeyNote, Google Dokümanlar, hatta 1990'ların eski bir WordPerfect'i yükleyin ve yazı tipi açılır menüsünü açın; "Arial" yazı tipi ailesi adını göreceksiniz; "Arial" yerine "Arial Bold" ve ardından "Arial Italic" vb.

Sadece Google Fonts'tan yükleyin.

Raleway'i Google Fonts'taki ücretsiz webfonts deposundan yüklerseniz Raleway'in tek bir aile adıyla tanımlandığını görürsünüz:

https://fonts.googleapis.com/css?family=Raleway:400,400italic,500,500italic,700,700italic

@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 400;
  src: url(https://...Raleway-Regular.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-Bold.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: italic;
  font-weight: 500;
  src: url(https://...Raleway-MediumItalic.woff2) format('woff2');
}
@font-face {
  font-family: 'italic';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-BoldItalic.woff2) format('woff2');
}

Bu yöntem, sahte olanlar için yazı tipi stilleri arasındaki farklılıkları yok saymıyor mu?
Ryan

@Ryan Hiç de değil. Aslında, yazı tipi ailesinin adının (aileyi ağırlık / stil varyantları ile doğru bir şekilde bir araya getirme Ralewayveya tek tek varyantları yanlış bir şekilde tanımlayan Raleway Boldve Raleway Italictek tek yazı tipi aileleri olarak) sahte varyasyonların uygulanmasında bir etkisi yoktur. Aslında, ailenin aynı ad altında doğru bir şekilde paketlenmesi, tarayıcının sahte bir stil uygulamak için daha yakın bir varyasyon seçmesine yardımcı olurken, her bir varyasyonu yanlış adlandırmak, istenen yazı tipi yüklenmediyse varyasyonları uygulamak için tarayıcıyı mevcut yazı tiplerinin karanlıkta tutar.
rgthree

(1) Google fontlarından yükleyin : emin web siteleri için, ancak internet bağlantısının garanti edilmediği ve fontları yerel olarak yüklemeniz gereken html / css'nin kullanıldığı birçok başka örnek vardır, (2) CSS karmaşıklığını azaltır bir, sonuçta dosya boyutu : böylece düzinelerce MB olan bir sitede veya uygulamada 1 kb tıraş olacaksınız, istemci uygulamanızın ne kadar hızlı yüklendiğine şaşıracak, (3) tarayıcının / endüstrinin yaptığı gibi : tarayıcılar varsayılan olarak, 'endüstri' her zaman doğru değildir ve en iyi uygulamaları takip etmez (sadece flexbox'a bakın)
PieBie

tarayıcılar varsayılan sahte Ne? Ne hakkında konuştuğunu açıkça bilmiyorsun. Belirttiğinizde font-family:Arial; font-weight:bold;( Arial veya Raleway olsun , yine de bunu yapmanın doğru yolu ), tarayıcının normal Arial yazı tipi yüzüne sahte bir kalın uyguladığını düşünüyor musunuz? Yanlış. Tarayıcı, ArialBold font yüzünü sistem tanımladığı şekilde yüklüyor ve yalnızca tam bir font yoksa , font-aile adına dayalı en iyi eşleşen fonta sahte bir stil uygulayacak, bu yüzden aynı olmalılar ! "Bunu Arial için yap, ama Raleway için değil" diyemem.
rgthree

0

Şey, css için programlanmış bir web yazıtipi olan Raleway hakkında soru sorarsanız, her iki yönde de eşit derecede iyi çalışır. Bu durumda, yazı tipi ağırlığını kullanın, çünkü kodda büyük değişiklikler olmadan değiştirilmesi ve kontrol edilmesi en kolay olan "doğru" eylem tarzıdır.

Bir yazı tipini kendiniz gömdüğünüzde sorun yaşamaya başlıyorsunuz, css için mutlaka planlanmamış bir yazı tipi ve ağırlıklar rakamlarla eşleşmeyebilir.

Bu nedenle, İngilizce olmayan fontlarda son derece yaygın olan gömülü fontlarda çok yaygın bir hata, css "boldens" veya "fontu" otomatik olarak aydınlatır ve sonuç çok kötüdür.

Bu nedenle, Google yazı tiplerinde yazı tipleri gibi bir web yazı tipi kullanıyorsanız, devam edin ve yazı tipi ağırlığındaki sayıları kullanın, ancak bir yazı tipini kendiniz gömdüğünüzde, güvenli tarafta kalın ve her bir ağırlık için ayrı ayrı yazı tipi ailesi kullanın .

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.