Đặt font-weight vs bold font-family in CSS, cái nào đúng hơn?


9

Về cơ bản có hai cách để tạo một phông chữ đậm trong CSS: thông qua font-familythuộc tính và thông qua font-weightthuộc tính.

Giả sử tôi đang sử dụng phông chữ Raleway chẳng hạn và đã tải một biến thể Ánh sáng, Thông thường, Semibold và Bold qua css. Tôi có thể biến một tiêu đề đơn giản in đậm bằng cách đặt nó thành h1{font-family: 'Raleway Bold'}hoặc thành h1{font-weight: 700}.

Cái nào trong số này là đúng hơn, hoặc cả hai đều giống nhau?


Tôi nghi ngờ rằng việc viết "font-weight" trong css là chính xác, khi bạn có tất cả các tùy chọn trong họ phông chữ. ví dụ: Phông chữ Raleway có tất cả các tùy chọn từ sáng đến đậm. Vì vậy, cách nào là phù hợp để sử dụng tất cả các phông chữ từ gia đình, để chúng ta không thể mất ký tự phông chữ.
pooja


@poojaa, tôi đã tự do chỉnh sửa câu hỏi của bạn để làm cho định dạng rõ ràng hơn và đưa câu hỏi thực tế hơn lên phía trước. Nếu bạn cảm thấy như tôi đã thay đổi ý nghĩa, bạn có thể tự mình chỉnh sửa nó.
PieBie

Câu trả lời:


6

Giả sử chúng ta đã tải một biến thể phông chữ Bold như vậy:

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

Tôi sẽ tranh luận về việc sử dụng cả hai font-familyfont-weighttrong đặc điểm kỹ thuật phong cách của bạn. Ví dụ:

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

Cả hai về cơ bản đều làm điều tương tự: nói tiêu đề1 của bạn được in đậm. Điều này sẽ không tăng gấp đôi độ đậm hoặc bất cứ điều gì, nó chỉ lặp đi lặp lại rằng nó cần phải đậm.

Lý do cho việc này khá đơn giản: nếu tệp phông chữ của bạn không được tải (quá tải máy chủ, hạn chế máy khách, voodoo), thì khách truy cập của bạn vẫn sẽ thấy một phông chữ đậm (trong trường hợp này là Helvetica đậm) và do đó có thể phân biệt giữa một tiêu đề và văn bản cơ thể, sẽ không phải là trường hợp bạn chỉ chỉ định font-family.

Xem trong hình này, bộ trên cùng là Raleway và Raleway Italic nhưng có Raleway Italic thích hợp được tải với:

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

Phía dưới chỉ tải Raleway. Kết quả là bộ dưới cùng có chữ in nghiêng Raleway và FAUX. Lưu ý sự khác biệt trong chữ thường "a" và "k", ví dụ giữa chữ in nghiêng thật và chữ nghiêng giả. Một phông chữ được thiết kế tốt sẽ có sự khác biệt giữa các quy tắc, chữ in đậm và chữ nghiêng mà bạn sẽ không nhận được nếu bạn không tải chúng.

nhập mô tả hình ảnh ở đây


Sử dụng một tên gia đình và chỉ đặt trọng lượng sẽ vẫn cho bạn trọng lượng chính xác trong trường hợp tệp phông chữ không tải. Lý do duy nhất để sử dụng cả hai sẽ là vì lý do tương thích.
Cai

1
Bạn bối rối. Ví dụ về phông chữ Google của bạn không chỉ đề cập đến chữ in nghiêng Raleway mà thôi font-family: 'Raleway'(mâu thuẫn với ví dụ in đậm của bạn ở trên), ngoài ra, bất kể việc đặt tên cho toàn bộ gia đình Ralewayhoặc từng biến thể với các tên phông chữ khác nhau hoàn toàn không có liên quan đến việc áp dụng giả hay không . Thậm chí ví dụ riêng của bạn chứng tỏ đây là một phương pháp không chính xác, theo quy định của bạn font-family: 'Raleway Bold', Helvetica, Arial, sans;không có Helvetica BoldArial Boldcá nhân vì đó chỉ là cách đúng để phông chữ thác các biến thể.
rgthree

1

Mặc dù cả hai cách sẽ cung cấp cho bạn đầu ra chính xác, nhưng cách chính xác hơn sẽ là sử dụng một họ phông chữ duy nhất để nhóm tất cả các biến thể khác nhau của trọng lượng và kiểu dáng. Nó giống như cách bạn sử dụng phông chữ hệ thống (từ 'Arial' xuống 'sans-serif') và trên thực tế, nếu bạn sử dụng phông chữ của Google để tải Raleway, bạn sẽ sử dụng tuyến họ phông chữ duy nhất.

Chúng ta hãy phác thảo một số lý do tại sao đây là phương pháp chính xác.

Nó làm giảm độ phức tạp CSS, cuối cùng, kích thước tệp

Có một họ phông chữ có nghĩa là bạn có thể xác định toàn bộ thành phần có chứa họ phông chữ và chỉ một số thành phần nhất định có trọng lượng / kiểu khác nhau. Lấy ví dụ như sau:

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>

Lưu ý rằng CSS đẹp và phù hợp với CSS này. Chúng tôi không cần chỉ định "RalewayBold" là họ phông chữ cho .bold, cũng không phải "RalewayItalic" cho .italic của chúng tôi. Nguyên vẹn, chúng tôi thậm chí không cần chỉ định một biến thể in đậm và in nghiêng, vì các lớp của chúng tôi sẽ chỉ hoạt động. Hơn nữa, nếu .bold nằm trong .footer của chúng tôi, nó sẽ in đậm Arial chứ không phải Raleway, vì đơn giản là nó thừa hưởng Arial từ thùng chứa chân trang.

Đó là cách trình duyệt làm điều đó.

Trên đây về cơ bản là cách biểu định kiểu nội bộ của trình duyệt xác định phông chữ bằng cách sử dụng các kiểu tối thiểu và bản chất xếp tầng vốn có của CSS.

Đó là cách ngành công nghiệp làm và đã làm nó.

Các thuộc tính web lớn nhất, ứng dụng và nhà xuất bản đều làm theo cách này. Google, Facebook, NYT, ESPN, v.v ... đều xác định và sử dụng phông chữ theo cách này.

Không chỉ vậy, nhưng giao diện người dùng trước CSS hoặc thậm chí internet chỉ định các họ phông chữ duy nhất và chọn các biến thể dựa trên đặc điểm kỹ thuật khác nhau về trọng lượng và kiểu dáng. Tải Microsoft Word, KeyNote, Google Docs, thậm chí là một Worderinf cũ cuối thập niên 1990 và mở trình đơn thả xuống phông chữ; Bạn sẽ thấy tên họ "Arial" được liệt kê; không phải "Arial" theo sau là "Arial Bold" theo sau là "Arial Italic", v.v.

Chỉ cần tải từ Google Fonts.

Nếu bạn tải Raleway từ kho lưu trữ webfonts miễn phí trên Google Fonts, bạn sẽ thấy Raleway được xác định bằng một tên gia đình duy nhất:

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');
}

Không phải phương pháp này bỏ qua các biến thể giữa các kiểu phông chữ cho kiểu giả?
Ryan

@Ryan Không hề. Trong thực tế, tên của họ phông chữ (có thể bó chính xác họ Ralewayvới các biến thể trọng lượng / kiểu hoặc xác định không chính xác các biến thể riêng lẻ Raleway BoldRaleway Italicnhư các họ phông chữ riêng lẻ) không có liên quan đến việc áp dụng các biến thể giả hay không. Trong thực tế, việc đóng gói chính xác gia đình dưới cùng tên giúp trình duyệt chọn một biến thể gần hơn để áp dụng kiểu giả trong khi đặt tên không chính xác cho từng biến thể sẽ giữ trình duyệt trong bóng tối của các phông chữ có sẵn để áp dụng các biến thể nếu phông chữ mong muốn không được tải.
rgthree

(1) Chỉ cần tải từ phông chữ của Google : đối với các trang web chắc chắn, nhưng có rất nhiều trường hợp khác sử dụng html / css khi kết nối internet không được bảo đảm và bạn phải tải phông chữ cục bộ, (2) Nó làm giảm độ phức tạp CSS Cuối cùng, kích thước tệp : vì vậy bạn sẽ cạo 1kb trên một trang web hoặc ứng dụng có hàng chục MB, khách hàng sẽ ngạc nhiên về tốc độ tải ứng dụng của bạn, (3) đó là cách trình duyệt / ngành thực hiện : trình duyệt mặc định là giả, và dù sao thì 'ngành' không phải lúc nào cũng đúng và cũng không tuân theo các thực tiễn tốt nhất (chỉ cần nhìn vào flexbox)
PieBie

trình duyệt mặc định là giả ? Bạn rõ ràng không biết những gì bạn đang nói về. Khi bạn chỉ định font-family:Arial; font-weight:bold;(mà, một lần nữa là cách đúng để làm điều đó, bất kể đó là Arial hay Raleway), bạn có nghĩ rằng trình duyệt đang áp dụng một chữ đậm giả cho khuôn mặt phông chữ Arial bình thường không? Sai. Trình duyệt đang tải mặt phông chữ ArialBold như hệ thống xác định và chỉ khi không có phông chữ chính xác thì nó mới áp dụng kiểu giả cho phông chữ phù hợp nhất dựa trên tên họ phông chữ, đó là lý do tại sao chúng phải giống nhau! Không thể nói "Làm điều này cho Arial, nhưng không phải Raleway."
rgthree

0

Đây là vấn đề, Nếu bạn đặt câu hỏi về Raleway, một webfont được lập trình cho css, cả hai cách đều hoạt động tốt như nhau. Trong trường hợp này Sử dụng trọng lượng phông chữ vì đó là quá trình hành động "chính xác" sẽ dễ dàng thay đổi và kiểm soát nhất mà không có thay đổi lớn trong mã.

Bây giờ bạn bắt đầu gặp vấn đề khi bạn tự nhúng một phông chữ, một phông chữ không nhất thiết phải được lên kế hoạch cho css và các trọng số có thể không khớp với các số.

Bởi vì điều này, một lỗi rất phổ biến đối với các phông chữ nhúng, cực kỳ phổ biến trong các phông chữ không phải tiếng Anh, đó là css "in đậm" hoặc "làm sáng" phông chữ tự động và kết quả rất tệ.

Do đó, tôi khuyên bạn nên sử dụng một webfont như các phông chữ trên phông chữ google, hãy tiếp tục và sử dụng các số trên trọng lượng phông chữ, nhưng khi bạn tự nhúng một phông chữ, hãy giữ an toàn và sử dụng phông chữ cho từng trọng lượng riêng biệt .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.