Khi một lập trình viên frontend tiếp nhận ticket về lỗi căn lề chữ Ả Rập trên ứng dụng web, anh không ngờ mình đang khám phá một câu chuyện kéo dài năm thế kỷ. Vấn đề: đoạn văn bản tiếng Ả Rập (viết từ phải sang trái) hiển thị lộn xộn, dù nhóm thiết kế yêu cầu căn đều hai bên (justify). Phiên bản tiếng Latin trong cùng app lại 'fine'. Ba màn hình chụp từ ba trình duyệt khác nhau, và lời nhắn lịch sự từ quản lý sản phẩm: 'Sao nó lại khác?'.
Khoản nợ kỹ thuật khổng lồ
Câu trả lời không nằm ở code CSS (chỉ cần text-align: justify) mà ở lịch sử typography Ả Rập. Chữ viết Ả Rập có cấu trúc nối chữ, biến hình ký tự theo vị trí (đầu, giữa, cuối từ), điều mà các font chữ Latin từ những năm 1990 không được thiết kế để xử lý. Thêm vào đó, hàng loạt hệ thống cũ dùng mã Unicode từ 1991 (dạng chưa chuẩn hóa) khiến dữ liệu bị 'phân mảnh': hai cách mã hóa cho cùng một ký tự được coi là hai chuỗi khác nhau, không tìm được bằng search. Kết quả là bug này, bug kia chồng chất, mỗi lần đều được báo cáo như 'lỗi duy nhất', nhưng thực chất chúng đều là phần nổi của cùng một tảng băng trôi.
'150 kilobyte' của một người đàn ông
Để chứng minh vấn đề, tác giả đã tự host font Amiri, 150KB dung lượng font do duy nhất một người đàn ông viết trong những buổi tối không được trả công, phân phối theo giấy phép nguồn mở OFL. 'Đây là điều cần thiết để cho bạn thấy thứ mà hệ điều hành của bạn không tự làm được,' tác giả nói. Và đó là thực tế: dù công nghệ web tiến bộ vượt bậc, việc hỗ trợ typography đa ngôn ngữ (đặc biệt với chữ Ả Rập, Hebrew, Hindi) vẫn rất chắp vá. Các trình duyệt và engine render (kể cả của Google Chrome, Apple Safari) vẫn xử lý chữ Ả Rập như 'công dân hạng hai', buộc nhà phát triển phải đau đầu với hàng tá giải pháp tạm.
Câu chuyện này không chỉ dành cho dân kỹ thuật. Nếu bạn từng thấy văn bản tiếng Việt hiển thị lỗi font, chữ bị vỡ, hay không thể tìm kiếm tên khách hàng trong cơ sở dữ liệu, đó chính là hệ quả của khoản nợ kỹ thuật tương tự, xuất phát từ những quyết định thiết kế cách đây 30 năm, khi web chưa sinh ra và các nhà phát triển chỉ nghĩ tới tiếng Anh. AI cũng không giải quyết được vấn đề gốc rễ: sự thiếu hụt font chữ chuẩn, hệ thống Unicode phức tạp, và thiếu nguồn lực để làm đúng cho tất cả ngôn ngữ.




