NFD là viết tắt của Normalization Form D, dạng chuẩn hoá tổ hợp: mỗi chữ có dấu được tách thành chữ nền cộng các dấu rời, rồi các dấu được xếp theo thứ tự cố định. Chữ “ệ” ở dạng NFD gồm ba mã — chữ “e”, dấu nặng, dấu mũ — nhưng màn hình vẫn hiện đúng một ký tự.
Một chữ NFD gồm những gì
Số mã tăng lên, số ký tự người đọc thấy thì không đổi.
| Chữ | Thành phần khi ở NFD | Code point | Byte UTF-8 |
|---|---|---|---|
| ệ | e + dấu nặng + dấu mũ | 3 | 5 |
| ấ | a + dấu mũ + dấu sắc | 3 | 5 |
| ơ | o + dấu móc | 2 | 3 |
Dạng dựng sẵn NFC gom các mã ấy lại còn một. Vì thế cùng một câu ở hai dạng cho cùng số grapheme nhưng khác số mã và khác số byte — chỗ này hay làm lệch kết quả khi một hệ thống đếm bằng độ dài chuỗi thô.
NFD có ích khi bỏ dấu tiếng Việt
Tách chữ khỏi dấu chính là bước đầu của thuật toán xoá dấu.
Công cụ chuyển văn bản sang NFD, xoá mọi ký tự thuộc nhóm dấu tổ hợp rồi đổi riêng “đ” thành “d”, vì “đ” không tách được thành chữ nền cộng dấu. Kết quả là chuỗi chỉ còn chữ Latinh cơ bản, hợp với slug URL hoặc với tin nhắn cần bảng mã GSM-7. Người viết nội dung cho hệ thống gửi tin tự động dùng đúng đường này để hạ số tin phải trả.
Công cụ làm việc với văn bản NFD
Ba công cụ và một trang thuật ngữ sau chạm tới dạng tổ hợp.
- Bỏ dấu tiếng Việt dùng NFD để tách dấu rồi tạo slug không dấu.
- Đếm byte UTF-8 chỉ ra chữ nào đang tốn nhiều mã hơn bình thường.
- Tìm ký tự ẩn rà các mã vô hình lẫn trong văn bản dán từ nơi khác.
- Code point giải thích cách đọc số hiệu U+ của từng mã.