Bài 8. Văn bản, font chữ và biểu tượng

Chữ chiếm phần lớn nội dung web, nên kiểu chữ đẹp và dễ đọc là yếu tố quan trọng nhất của giao diện. Bài này học các thuộc tính văn bản, font chữ, nhúng Google Fonts hỗ trợ tiếng Việt, và dùng bộ biểu tượng.

50 phútCơ bản
Bạn sẽ học được
  • Định dạng văn bản: căn lề, giãn dòng, khoảng cách chữ, trang trí
  • Chọn font, cỡ, độ đậm, kiểu; xây font stack
  • Nhúng web font hỗ trợ tiếng Việt
  • Dùng biểu tượng Font Awesome, Material Symbols, SVG
Thuật ngữ cần biết
Font stack
Danh sách font dự phòng theo thứ tự.
Serif / sans-serif
Font có chân / không chân.
Web font
Font tải từ máy chủ (Google Fonts, tự host).
line-height
Chiều cao dòng, nên không đơn vị: 1.6.

Một số khái niệm

Thuộc tínhVí dụÝ nghĩa
font-family"Be Vietnam Pro", Arial, sans-serifFont và dự phòng
font-size1.125remCỡ chữ
font-weight400 | 600 | 700Độ đậm
font-styleitalicNghiêng
line-height1.6Giãn dòng
text-alignleft | center | justifyCăn lề
letter-spacing.05emKhoảng cách chữ
text-transformuppercaseChữ hoa
text-decorationunderline wavy redGạch chân, gạch ngang
text-indent2emThụt dòng đầu
white-space / text-overflownowrap / ellipsisKhông xuống dòng, cắt bằng …

Nguyên tắc dễ đọc: cỡ chữ thân bài 16–18px, giãn dòng 1.5–1.8, dòng dài 45–75 ký tự, tương phản đủ, tránh căn đều (justify) tiếng Việt trên màn hình hẹp vì tạo khoảng trắng lớn.

Định dạng văn bản

<style>
  .t1 { text-transform: uppercase; letter-spacing: .12em; font-size: 13px; color: #2e7d32; font-weight: 700; }
  .t2 { font-size: 28px; font-weight: 800; line-height: 1.2; margin: 4px 0; }
  .t3 { line-height: 1.8; max-width: 55ch; color: #455a64; }
  .t4 { text-decoration: underline wavy #e53935; text-underline-offset: 4px; }
  .t5 { width: 220px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border: 1px solid #ddd; padding: 4px; }
  .t6 { text-shadow: 2px 2px 0 #ffcc80; font-size: 22px; font-weight: 700; }
</style>
<div class="t1">Phát triển web</div><div class="t2">Học CSS từ cơ bản</div>
<p class="t3">Giãn dòng 1.8 và giới hạn độ dài dòng giúp đoạn văn thoáng, dễ đọc trên mọi màn hình.</p>
<p class="t4">Gạch chân lượn sóng</p><div class="t5">Văn bản rất dài bị cắt bằng dấu ba chấm ở cuối</div><p class="t6">Bóng chữ</p>
Kết quả hiển thị

Nhúng Google Fonts có tiếng Việt

<!-- Trong <head>: chọn font có hỗ trợ Vietnamese tại fonts.google.com -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;600;700&display=swap" rel="stylesheet">
body { font-family: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
code { font-family: ui-monospace, Menlo, Consolas, monospace; }

/* Tự host font (tải tệp .woff2) */
@font-face {
  font-family: "TBU Sans";
  src: url("../fonts/tbu-sans.woff2") format("woff2");
  font-weight: 400 700;
  font-display: swap;
}

Font tốt cho tiếng Việt: Be Vietnam Pro, Inter, Roboto, Noto Sans/Serif, Lexend, Montserrat. Chỉ tải các độ đậm thật sự dùng để trang nhẹ.

Biểu tượng

<!-- Font Awesome 6 (CDN) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<i class="fa-solid fa-house"></i> <i class="fa-brands fa-github"></i>

<!-- SVG nội tuyến: nét, màu theo chữ nhờ currentColor -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12l9-9 9 9M5 10v10h14V10"/></svg>
<style>.ic{display:inline-flex;align-items:center;gap:6px;color:#1565c0;font-size:18px;margin-right:16px}</style>
<span class="ic"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12l9-9 9 9M5 10v10h14V10"/></svg>Trang chủ</span>
<span class="ic" style="color:#2e7d32"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M8 12l3 3 5-6"/></svg>Hoàn thành</span>
Kết quả hiển thị
Mẹo hay

Dùng hệ thống cỡ chữ theo tỉ lệ (ví dụ 14, 16, 20, 25, 31, 39px với tỉ lệ 1.25) và biến CSS để toàn trang nhất quán (bài 20).

Lưu ý

Chọn font không có bộ ký tự tiếng Việt sẽ làm dấu bị hiển thị bằng font khác, chữ “vỡ” trông rất xấu. Kiểm tra mục Language support: Vietnamese.

Thực hành
  1. Nhúng Be Vietnam Pro cho toàn trang, font đơn cách cho code.
  2. Định dạng bài viết: thân 17px, giãn dòng 1.7, tiêu đề đậm 700.
  3. Làm dòng tiêu đề nhỏ chữ hoa, giãn chữ phía trên tiêu đề chính.
  4. Thêm biểu tượng SVG trước các mục menu.
Tóm tắt bài học
  • font-family với font stack dự phòng.
  • line-height 1.5–1.8, dòng 45–75 ký tự.
  • Web font: chọn hỗ trợ tiếng Việt, font-display: swap.
  • Biểu tượng bằng icon font hoặc SVG currentColor.