Font embedding trong PDF: tại sao lỗi font và cách fix triệt để

Embedded vs subset vs system font. Tại sao PDF bị lỗi font tiếng Việt và cách đảm bảo font hiển thị đúng.

PDF bị lỗi font — chuyện xảy ra hoài. Nhưng ít ai hiểu tại sao nó lỗi. Tại sao cùng 1 file, máy này đọc được máy kia thì ô vuông? Tại sao export PDF từ Word mà font vẫn bay?

Câu trả lời nằm ở 1 khái niệm: font embedding — nhúng font vào trong file PDF. Hiểu cái này, bạn sẽ không bao giờ bị lỗi font nữa (hoặc ít nhất biết fix ở đâu).

Font trong PDF hoạt động thế nào?

Khi Word hiển thị chữ "Xin chào": nó đọc font file trên máy bạn (VD: C:\Windows\Fonts\times.ttf), lấy hình dạng (glyph) của từng ký tự, render lên màn hình.

Khi PDF hiển thị chữ "Xin chào": nó cũng cần glyph tương tự. Nhưng PDF là file độc lập — người nhận có thể không có font đó trên máy. Nên PDF có 3 cách xử lý font:

Cách 1: Embedded (nhúng toàn bộ font)

Copy nguyên file font (.ttf/.otf) vào trong PDF. File PDF chứa luôn font → mở trên bất kỳ máy nào đều hiển thị đúng.

  • Ưu: Chắc chắn đúng 100%, mọi ký tự đều có
  • Nhược: Tăng dung lượng file. Font Times New Roman đầy đủ ~1.5 MB. File dùng 5 font = +7 MB
  • Khi nào dùng: File quan trọng gửi ra bên ngoài, luận văn, hợp đồng

Cách 2: Embedded Subset (nhúng một phần)

Chỉ nhúng các ký tự thực sự dùng trong file. VD: file chỉ có 200 ký tự unique → nhúng 200 glyph thay vì toàn bộ 3000+ glyph của font.

  • Ưu: Nhẹ hơn nhiều — font subset thường chỉ 50-200 KB thay vì 1.5 MB
  • Nhược: Nếu tool tính thiếu ký tự → mất glyph (lỗi "mất vài dấu")
  • Khi nào dùng: Đa số trường hợp — Word mặc định dùng cách này

Cách 3: Không embed (chỉ ghi tên font)

PDF chỉ ghi: "dùng font Times New Roman". Khi mở, máy tự tìm font đó trên system. Không có → thay font khác (substitution).

  • Ưu: File rất nhẹ
  • Nhược: Lỗi chắc chắn nếu máy người nhận không có font. Đặc biệt font tiếng Việt ít phổ biến
  • Khi nào: Gần như không bao giờ nên dùng. Nhưng một số tool cũ default là không embed

Kiểm tra file PDF đang dùng cách nào

Adobe Reader → File → Properties → tab Fonts:

TimesNewRomanPSMT (Embedded Subset)    ← OK, subset
ArialMT (Embedded)                      ← OK, full embed
Roboto-Regular                          ← KHÔNG embed → sẽ lỗi trên máy khác

Nếu font không có chữ "Embedded" → file sẽ lỗi trên máy không cài font đó.

Tại sao lỗi hay xảy ra với tiếng Việt?

Font Latin cơ bản (A-Z, 0-9) chỉ cần ~100 glyph. Font tiếng Việt cần thêm ~130 ký tự có dấu (ắ, ẵ, ặ, ể, ỡ...). Khi subset thiếu — thường thiếu đúng mấy ký tự hiếm này.

Ví dụ thực tế: font có "a" + "ă" nhưng thiếu "ẵ" (a + breve + tilde). Kết quả: 99% chữ hiện đúng, nhưng từ "lẵng" → "lăng". Khó phát hiện vì gần đúng.

Mấy case hay gặp:

  • Export từ Canva: Canva subset rất aggressive — font decorative thường thiếu glyph VN
  • Print to PDF từ Chrome: Chrome subset dựa trên Unicode range, đôi khi miss ký tự tổ hợp
  • Font design (Montserrat, Poppins phiên bản cũ): Trước 2020, nhiều Google Font chưa có đầy đủ Vietnamese glyphs

Cách export PDF không bao giờ lỗi font

Từ Microsoft Word (Windows)

Cách 1 — Save As PDF (khuyến nghị):

  1. File → Save As → PDF
  2. Options → tick "Embed fonts in the document"
  3. Nếu tick thêm "Embed only the characters used" → subset (nhẹ hơn, thường OK)
  4. Nếu bỏ tick → embed full (nặng hơn, chắc chắn 100%)

Cách 2 — Print to PDF (backup):

  1. File → Print → Microsoft Print to PDF
  2. Save

Cách này auto embed full font — không cần setting gì. Nhược: mất bookmark và hyperlink.

Từ LibreOffice

File → Export as PDF → tick "Embed fonts" (mặc định đã tick). LibreOffice embed khá tốt.

Từ Google Docs

File → Download → PDF. Google Docs tự embed font. Nhưng: nếu dùng font lạ (upload custom font) → có thể lỗi. Dùng Google Font phổ biến thì OK.

Từ Figma/Canva

Export PDF → check kỹ tiếng Việt sau export. Mấy tool design hay subset aggressive. Nếu lỗi → đổi sang font có hỗ trợ VN đầy đủ (Roboto, Be Vietnam Pro, Noto Sans).

Font nào "an toàn" cho tiếng Việt?

Mình đã test, mấy font này chưa bao giờ lỗi:

FontKiểuGhi chú
Times New RomanSerifDefault Word, có sẵn mọi máy
ArialSans-serifCó sẵn mọi máy
RobotoSans-serifGoogle Font, support VN đầy đủ từ 2019
Be Vietnam ProSans-serifThiết kế riêng cho tiếng Việt, hoàn hảo
Noto Sans VietnameseSans-serifGoogle Font, mục tiêu cover mọi ngôn ngữ
Source Han SansSans-serifAdobe, hỗ trợ CJK + Vietnamese

Font nên tránh (dễ lỗi):

  • Font .VnTime, VNI-Times → encoding cũ, không Unicode
  • Font handwriting/script → thường thiếu glyph VN
  • Font từ DaFont, 1001fonts → chất lượng không đảm bảo
  • Montserrat, Playfair Display (phiên bản trước 2020) → thiếu một số tổ hợp dấu

File đã bị lỗi — fix thế nào?

  1. Có file nguồn (Word/InDesign): Mở lại → đổi font → export PDF mới. Nhanh nhất.
  2. Không có file nguồn, máy bạn mở đúng: Mở PDF → Print → Microsoft Print to PDF → file mới embed font đúng.
  3. Không máy nào mở đúng: File dùng font encoding cũ (VNI/TCVN3). Dùng OCR — Tesseract nhận dạng từ ảnh render, bỏ qua encoding → ra Unicode chuẩn.

Tóm lại

Quy tắc đơn giản:

  1. Luôn embed font khi export PDF (tick option trong Word/LibreOffice)
  2. Dùng font Unicode phổ biến (Times New Roman, Arial, Roboto, Be Vietnam Pro)
  3. Sau export: mở PDF → Properties → Fonts → check tất cả có "Embedded"
  4. Test nhanh: Select All → Copy → Paste Notepad → đọc lại text

Làm 4 bước này thành thói quen → không bao giờ gửi file lỗi font cho người khác nữa.

Dùng ngay: Chuyển Word sang PDF — Giữ nguyên font, bảng, hình ảnh

Chuyển file Word sang PDF online miễn phí. Giữ nguyên font chữ, bảng biểu, hình ảnh. Hỗ trợ .docx và .doc. Không cần cài Office hay phần mềm — nhanh và bảo mật.

Mở công cụ →

Bài viết liên quan

OCR engine so sánh: Tesseract vs EasyOCR vs PaddleOCR — tiếng Việt So sánh 3 engine OCR cho tiếng Việt: kiến trúc, ưu nhược, tốc độ, độ chính xác trên văn bản Việt. Bảo mật PDF thực sự an toàn? AES-128 vs 256, owner vs user password AES-128 vs AES-256, owner password vs user password. Tại sao "gỡ mật khẩu" hoạt động và giới hạn bả… PDF/A lưu trữ dài hạn: 1b vs 2b vs 3b — yêu cầu lưu trữ Việt Nam PDF/A-1b vs 2b vs 3b: khác biệt, use case, và yêu cầu lưu trữ theo Luật Lưu trữ 2024 Việt Nam. Lossy vs Lossless nén PDF: JPEG vs FLATE — khi nào mất dữ liệu là OK JPEG (DCT) vs FLATE (zlib) trong PDF. Khi nào nén mất dữ liệu chấp nhận được, khi nào phải giữ nguy…