Full-Width Character

Ký tự chiếm gấp đôi chiều rộng của ký tự nửa chiều rộng trong phông chữ cố định. Phổ biến trong văn bản CJK.

Ký tự toàn chiều rộng chiếm gấp đôi không gian ngang của ký tự nửa chiều rộng trong phông chữ đơn cách (cố định). Hiragana, katakana, kanji và ký tự chữ-số toàn chiều rộng tiếng Nhật đều được phân loại là toàn chiều rộng. Khái niệm này bắt nguồn từ những ngày đầu của tin học Nhật Bản để phân biệt giữa ký tự ASCII 1 byte (nửa chiều rộng) và ký tự tiếng Nhật 2 byte (toàn chiều rộng).

Trong Unicode, mỗi ký tự có thuộc tính East Asian Width được phân loại thành sáu danh mục: Fullwidth (F), Wide (W), Halfwidth (H), Narrow (Na), Ambiguous (A) và Neutral (N). Kanji và hiragana tiếng Nhật thuộc Wide (W), trong khi ký tự ASCII là Narrow (Na). Các ký tự được phân loại là Ambiguous (A), như một số chữ cái Hy Lạp và Cyrillic, có thể hiển thị dưới dạng toàn chiều rộng hoặc nửa chiều rộng tùy thuộc vào môi trường, có thể gây ra vấn đề bố cục. Sách typography CJK giải thích nguồn gốc lịch sử và cách sử dụng hiện đại của ký tự toàn chiều rộng.

Hành vi đếm ký tự khác nhau đáng kể theo nền tảng. X (Twitter) đếm cả ký tự toàn chiều rộng và nửa chiều rộng là 1, trong khi SMS đếm mỗi ký tự toàn chiều rộng là 2. Tiêu đề Google Ads cho phép 15 ký tự toàn chiều rộng hoặc 30 ký tự nửa chiều rộng, coi toàn chiều rộng tương đương 2 ký tự nửa chiều rộng. Vì cùng một "giới hạn ký tự" có thể áp dụng quy tắc chuyển đổi toàn/nửa chiều rộng khác nhau, đếm chính xác đòi hỏi hiểu quy tắc cụ thể của nền tảng đích.

Trong thiết kế cơ sở dữ liệu, số byte của ký tự toàn chiều rộng thay đổi theo mã hóa. Trong UTF-8, ký tự toàn chiều rộng tiêu thụ 3 byte; trong UTF-16, chúng tiêu thụ 2 byte. Cột VARCHAR(255) sử dụng UTF-8 với giới hạn dựa trên byte có thể chứa tối đa 85 ký tự toàn chiều rộng, trong khi giới hạn dựa trên ký tự (như trong MySQL) cho phép tối đa 255 ký tự. Hiểu sai sự khác biệt này có thể dẫn đến cắt ngắn dữ liệu hoặc lỗi.

Xác thực biểu mẫu web thường yêu cầu chuyển đổi giữa ký tự toàn chiều rộng và nửa chiều rộng. Chữ số toàn chiều rộng thường được nhập cho số điện thoại và mã bưu chính, và String.prototype.normalize('NFKC') của JavaScript có thể chuẩn hóa ký tự chữ-số toàn chiều rộng sang nửa chiều rộng. Ngược lại, chuẩn hóa katakana sang toàn chiều rộng thường được yêu cầu cho các trường nhập địa chỉ. Hướng dẫn quốc tế hóa web bao gồm các mẫu chuyển đổi này.

Khi sử dụng công cụ đếm ký tự, điều quan trọng là nhận thức cách phân biệt toàn/nửa chiều rộng ảnh hưởng đến kết quả đếm. Trong các hệ thống coi 1 ký tự toàn chiều rộng bằng 2 ký tự nửa chiều rộng, sử dụng nhiều ký tự toàn chiều rộng tăng số ký tự cho cùng nội dung. Trong ngữ cảnh có giới hạn ký tự, chuyển đổi katakana toàn chiều rộng sang nửa chiều rộng hoặc thay thế khoảng trắng toàn chiều rộng bằng khoảng trắng nửa chiều rộng có thể giúp nằm trong giới hạn.