font-stretch

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2018.

Note: Descriptor font-stretch đã được đổi tên thành font-width trong đặc tả CSS Fonts. Để duy trì khả năng tương thích, đặc tả vẫn giữ font-stretch như một alias kế thừa cho descriptor font-width.

Descriptor font-stretch trong CSS cho phép tác giả chỉ định kiểu dáng bình thường, thu hẹp hoặc mở rộng cho các phông chữ được khai báo trong quy tắc at-rule @font-face.

Với một họ phông chữ cụ thể, tác giả có thể tải về các font face tương ứng với các kiểu dáng khác nhau của cùng họ phông chữ, rồi sử dụng descriptor font-stretch để chỉ định rõ ràng độ co giãn của font face đó.

Cú pháp

css
/* Giá trị đơn */
font-stretch: ultra-condensed;
font-stretch: extra-condensed;
font-stretch: condensed;
font-stretch: semi-condensed;
font-stretch: normal;
font-stretch: semi-expanded;
font-stretch: expanded;
font-stretch: extra-expanded;
font-stretch: ultra-expanded;
font-stretch: 50%;
font-stretch: 100%;
font-stretch: 200%;

/* Nhiều giá trị */
font-stretch: 75% 125%;
font-stretch: condensed ultra-condensed;

Descriptor font-stretch có thể nhận một giá trị từ danh sách bên dưới.

Giá trị

normal

Chỉ định font face có độ rộng bình thường.

semi-condensed, condensed, extra-condensed, ultra-condensed

Chỉ định font face thu hẹp hơn bình thường, trong đó ultra-condensed là thu hẹp nhất.

semi-expanded, expanded, extra-expanded, ultra-expanded

Chỉ định font face mở rộng hơn bình thường, trong đó ultra-expanded là mở rộng nhất.

<percentage>

Giá trị <percentage> từ 50% đến 200% (bao gồm cả hai đầu). Giá trị âm không được phép dùng cho descriptor này.

Trong các phiên bản trước của đặc tả font-stretch, descriptor chỉ chấp nhận chín giá trị từ khóa. CSS Fonts Level 4 mở rộng cú pháp để chấp nhận thêm giá trị <percentage>. Điều này cho phép variable font cung cấp sự biến đổi liên tục về độ rộng ký tự. Với TrueType hoặc OpenType variable font, biến thể wdth được dùng để thực hiện độ rộng thay đổi.

Nếu phông chữ không cung cấp font face khớp chính xác với giá trị đã cho, các giá trị nhỏ hơn 100% sẽ ánh xạ sang font face thu hẹp, còn các giá trị lớn hơn hoặc bằng 100% sẽ ánh xạ sang font face mở rộng.

Ánh xạ từ khóa sang số

Bảng dưới đây cho thấy sự ánh xạ giữa các giá trị từ khóa và phần trăm số:

Từ khóa Phần trăm
ultra-condensed 50%
extra-condensed 62.5%
condensed 75%
semi-condensed 87.5%
normal 100%
semi-expanded 112.5%
expanded 125%
extra-expanded 150%
ultra-expanded 200%

Variable font

Hầu hết các phông chữ có một độ rộng cụ thể tương ứng với một trong các giá trị từ khóa. Tuy nhiên, variable font có thể hỗ trợ một dải độ rộng với độ chi tiết cao, cho phép nhà thiết kế kiểm soát tốt hơn độ rộng được chọn. Vì vậy, dải phần trăm rất hữu ích.

Với TrueType hoặc OpenType variable font, biến thể wdth được dùng để thực hiện độ rộng glyph thay đổi.

Khả năng tiếp cận

Người mắc chứng khó đọc và các vấn đề nhận thức khác có thể gặp khó khăn khi đọc phông chữ quá thu hẹp, đặc biệt nếu phông chữ có tỷ lệ tương phản màu thấp.

Định nghĩa hình thức

Related at-rule@font-face
Initial valuenormal
Computed valueas specified

Cú pháp hình thức

font-width = 
auto |
<'font-width'>{1,2}

<font-width> =
normal |
<percentage [0,∞]> |
ultra-condensed |
extra-condensed |
condensed |
semi-condensed |
semi-expanded |
expanded |
extra-expanded |
ultra-expanded

Ví dụ

Đặt dải phần trăm cho font-stretch

Ví dụ dưới đây sử dụng phông chữ League Mono. Nó tổng hợp các họ phông chữ khác nhau từ cùng một tệp phông chữ bằng cách sử dụng descriptor font-stretch với các từ khóa và phần trăm khác nhau.

html
<p>League Mono</p>
<p>League Mono</p>
<p>League Mono</p>
css
@font-face {
  font-family: "League Mono Ultra Condensed";
  src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
  font-stretch: ultra-condensed; /* same as 50% */
}

@font-face {
  font-family: "League Mono Normal";
  src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
  font-stretch: 100%; /* same as normal */
}

@font-face {
  font-family: "League Mono Ultra Expanded";
  src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
  font-stretch: ultra-expanded; /* same as 200% */
}

p:nth-child(1) {
  font-family: "League Mono Ultra Condensed", sans-serif;
}

p:nth-child(2) {
  font-family: "League Mono Normal", sans-serif;
}

p:nth-child(3) {
  font-family: "League Mono Ultra Expanded", sans-serif;
}

Đặc tả

Specification
CSS Fonts Module Level 4
# font-stretch-desc

Tương thích trình duyệt

Xem thêm