Tiếng Việt và máy tính

Bách khoa toàn thư mở Wikipedia
Bước tới điều hướng Bước tới tìm kiếm

Tiếng Việt được viết bằng một biến thể phức tạp của bảng chữ cái Latinh, đòi hỏi nhiều sự thích ứng khác nhau trong điện toán. Trước đây, tiếng Việt được viết bằng một loại văn tự biểu từ (logographic script)[a] còn phức tạp hơn, đó là chữ Nôm, loại chữ này vẫn chưa được hưởng sự hỗ trợ đầy đủ trên máy tính.

Phông chữ và bảng mã ký tự[sửa | sửa mã nguồn]

Bảng chữ cái tiếng Việt[sửa | sửa mã nguồn]

Việc 2 dấu phụ được đặt lên một nguyên âm đơn là chuyện thường thấy trong Tiếng Việt. Một số phông thì chồng các dấu phụ thẳng đứng, nhưng số khác thì xê dịch dấu giọng sang bên.

Có đến tận 46 bảng mã ký tự (character encoding) để thể hiện bảng chữ cái tiếng Việt.[1] Unicode đã trở thành bảng mã phổ biến nhất do tính tương thích ưu việt cùng với hỗ trợ phần mềm của nó. Các dấu phụ có thể được biên mã trở thành hoặc là ký tự tổ hợp (en) hoặc là ký tự dựng sẵn (en), cả hai loại ký tự này đều được bố trí rải rác tựu trung các khối Latin Mở rộng A (en), Latin Mở rộng B (en), và Latin Mở rộng Thêm (en). Biểu tượng Việt Nam Đồng (₫) thì được biên mã trong khối Biểu tượng Tiền tệ. Trong quá khứ, tiếng Việt từng sử dụng các ký tự nằm ngoài bảng chữ cái hiện đại. Chữ cái B đuôi quặp (ꞗ) của tiếng Việt Trung đại thì được bao gồm bên trong khối Latin Mở rộng D (en). Dấu apex (en) chưa được bao gồm trong Unicode, nhưng có thể dùng U+1DC4 ◌᷄ Combining macron-acute làm thay cho dấu apex khá giống.

Các phiên bản Unicode ban đầu có chỉ định 2 ký tự U+0340 ◌̀ Combining grave tone markU+0341 ◌́ Combining acute tone mark (lần lượt ứng với dấu huyềndấu sắc) nhằm mục đích đặt mấy dấu đấy nằm một bên dấu mũ (circumflex) vì đây là điều thường thấy trong typography tiếng Việt. Hai ký tự đấy đã bị thôi dùng; thay vào đó, U+0301 ◌́ Combining acute accentU+0300 ◌̀ Combining grave accent giờ được sử dụng bất chấp dấu mũ hiện diện nào.[2]

Cho những hệ thống thiếu sự hỗ trợ Unicode, thì hàng tá trang mã (en) tiếng Việt 8-bit đã được thiết kế.[1] Trong số đó có VISCII, VSCII (TCVN 5712:1993), VNI, VPSWindows-1258 là thông dụng nhất.[3][4] Ở những chỗ đòi hỏi ASCII, thí dụ khi phải đảm bảo tính khả đọc cho văn bản thuần trong e-mail, thì chữ cái tiếng Việt hay được biên mã dựa theo Vietnamese Quoted-Readable (VIQR) hoặc VSCII Mnemonic (VSCII-MNEM),[5] tuy vậy sở dụng của cả hai cách thức này đã sụt giảm đáng kể theo sau sự thông qua việc dùng Unicode trên World Wide Web. Chẳng hạn, sự hỗ trợ cho tất cả các bảng mã 8-bit được nói đến ở trên (ngoại trừ Windows-1258) đã bị bỏ hẳn khỏi phần mềm Mozilla trong năm 2014.[6]

Nhiều phông Việt làm dành cho việc chế bản điện tử (en) thì được biên mã bằng VNI hoặc TCVN3 (VSCII).[4] Những phông như vậy được gọi là "phông ABC" hay "ABC font".[7] Các trình duyệt web phổ biến đều thiếu vắng sự hỗ trợ cho những bảng mã tiếng Việt chuyên biệt như vậy, cho nên ở trên những hệ thống mà không cài đặt những font đấy, nếu bất kỳ trang web nào mà sử dụng những phông đấy thì đều sẽ bị hiển thị thành nội dung mojibake (chữ ma, loạn mã) không thể hiểu nổi.

Ở bên phải có chữ í nhưng giữ nguyên dấu chấm tittle.

Tiếng Việt thường xuyên xếp chồng dấu phụ, cho nên nhà thiết kế kiểu chữ phải cẩn thận để phòng ngừa 'các dấu phụ xếp chồng' khỏi bị va đụng với các chữ cái hoặc đường kẻ liền kề. Khi dấu giọng được dùng chung với một dấu phụ khác, thì phải xê dịch dấu giọng đấy sang bên phải để bảo toàn tính nhất quán và tránh làm chậm saccade[b].[8] Trong biển hiệu quảng cáo và trong thể chữ thảo, dấu phụ thường hay có dạng xa lạ với các bảng chữ cái Latin khác. Cho ví dụ, 'mẫu tự I viết thường' giữ nguyên dấu chấm tittle trong ì, , ĩ, và í.[9] Các sắc thái này hiếm được tính đến trong môi trường điện toán.

Lối tiếp cận[sửa | sửa mã nguồn]

Việc viết tiếng Việt đòi hỏi 134 mẫu tự cộng thêm (cả viết hoa lẫn viết thường) bên cạnh 52 mẫu tự đã hiện diện trong ASCII.[10] Như vậy là vượt quá 128 ký tự phụ thêm sẵn có trong bảng mã ASCII mở rộng thường quy. Cho dù vấn đề này có thể được giải quyết bằng cách dùng bảng mã độ rộng biến thiên (en) (như các bảng mã Tiếng Trung, Tiếng Nhật hoặc UTF-8 đã làm), thì một số lượng các lối tiếp cận riêng đã được các bảng mã khác sử dụng để hỗ trợ tiếng Việt thay vì làm thế:

  • Thay thế ít nhất 6 ký tự ASCII, lựa những ký tự hoặc là ít thông dụng trong tiếng Việt, và/hoặc là mang tính phi bất biến[c] trong ISO 646 hoặc DEC NRCS[10] (như trong VNI for DOS).
  • Loại bỏ các mẫu tự in hoa mà ít được dùng thường xuyên nhất,[10] hoặc loại bỏ tất cả các mẫu tự in hoa có dấu giọng (như trong VSCII-3 (TCVN3)). Các mẫu tự in hoa đấy vẫn có thể được bù đắp qua phương tiện bộ phông chữ hoa riêng biệt.[11]
  • Loại bỏ các dạng mẫu tự Y có dấu giọng, ép buộc sử dụng mẫu tự I trong những tình huống có thể dùng Y có dấu. Lối tiếp cận này đã bị những nhà thiết kế VISCII bác bỏ trên cơ sở rằng bảng mã ký tự không nên cố giải quyết vấn đề cải cách chính tả.[10]
  • Thay thế ít nhất 6 ký tự điều khiển C0 (en)[10] (như trong VISCII, VSCII-1 (TCVN1) và VPS).
  • Sử dụng ký tự tổ hợp, cho phép một nguyên âm có dấu được thể hiện đầy đủ bằng cách dùng dãy các ký tự cho chúng tổ hợp với nhau (như trong VNI, VSCII-2 (TCVN2), Windows-1258ANSEL).

Chữ Nôm[sửa | sửa mã nguồn]

𬖾
Ký tự nôm ứng với từ phở𬖾.[12]

Unicode chứa hơn 10.000 ký tự nôm[d] làm thành bộ phận của tự vựng (repertoire) Văn tự biểu ý Thống nhất CJK (en). Trong số những ký tự đó, có 5.260 ký tự[e] được đặt trong khối Chữ biểu ý Thống nhất CJK Phần mở rộng B (en), còn phần còn lại thì được phân phối tựu trung các khối Chữ biểu ý Thống nhất CJK (en), Chữ biểu ý Thống nhất CJK Phần mở rộng A (en), và Chữ biểu ý Thống nhất CJK Phần mở rộng C (en). Có 1.028 ký tự thêm nữa – gồm hơn 400 ký tự đặc thù cho Tiếng Tày – được biên mã trong khối Chữ biểu ý Thống nhất CJK Phần mở rộng E (en). Các ký tự đấy được lấy từ tiêu chuẩn Việt Nam TCVN 5773:1993TCVN 6056:1995, và cũng được lấy từ nghiên cứu của Viện Nghiên cứu Hán Nôm và các nhóm khác.[13] Tất cả các ký tự trong TCVN 5773:1993 và khoảng 95% các ký tự trong TCVN 6056:1995 đều có các codepoint tương ứng trong Unicode 5.1, tuy thế bản thân TCVN 5773:1993 lại ánh xạ hầu hết các ký tự của nó vào trong Khu Dùng Riêng (en) của Unicode.[14] Unicode 13.0 có thêm hai ký tự dấu phụ vào khối Biểu tượng và Dấu câu Chữ biểu ý (en), hai ký tự đó thường hay được sử dụng để báo biết các 'chữ mượn Hán'[f] trong chữ Nôm.[15][16]

Hai bộ phông Nôm toàn diện nhất là phông Nôm Na Tống Light của Hội Bảo tồn Di sản Chữ Nôm[17] và phông HAN NOM A/HAN NOM B do cộng đồng phát triển,[18] cả hai phông này đều đặt một số lượng lớn các 'ký tự chưa chuẩn hóa' vào trong Khu Dùng Riêng của Unicode.

Cơ sở dữ liệu Unihan (en) của Hiệp hội Unicode có bao gồm cách đọc tiếng Việt cho một số ký tự nhưng không khu biệt giữa cách đọc Hán-Việt và cách đọc Nôm.

Giống như các hệ chữ viết CJKV (en) khác, chữ Nôm theo truyền thống được viết dọc (en), từ trên xuống dưới và từ phải qua trái.

Cả chữ Hánchữ Nôm đều có thể được chú giải bằng cách dùng ký tự ruby.[19]

Nhập văn bản[sửa | sửa mã nguồn]

Bàn phím thuần vật lý cho tiếng Việt thì lại mang tính phi thực tiễn do số lượng cực lớn tổ hợp 'mẫu tự'-'dấu phụ'-'dấu phụ' trong bảng chữ cái. Thay vào đó, việc thâu nhập tiếng Việt đều nhờ vào bố cục bàn phím, bàn phím ảo, hoặc phương thức nhập (còn gọi là IME) dựa trên phần mềm máy tính.

Bố cục bàn phím[sửa | sửa mã nguồn]

Microsoft Windows có kèm một bố cục bàn phím tiếng Việt dựa trên TCVN 6064:1995.

Bố cục bàn phím tiếng Việt nhờ vào các phím chết (en) để tổ hợp mẫu tự với dấu phụ. Hầu hết các hệ điều hành desktop đều kèm một bố cục bàn phím tiếng Việt tương tự như TCVN 6064:1995 (một tiêu chuẩn quốc gia Việt Nam).

Phương thức nhập[sửa | sửa mã nguồn]

xvnkb – bộ gõ có tương thích với X Input Method framework trên các hệ thống Unix – có hỗ trợ 6 bảng mã ký tự cho đầu ra văn bản.

Ba phương thức nhập tiếng Việt phổ biến đó là Telex, VNI, và VIQR. Telex gõ dấu phụ bằng những mẫu tự ít có khả năng xuất hiện tại chỗ cuối của từ ngữ, còn VNI thì dùng lại các phím số hoặc các phím chức năng cho mục đích gõ dấu, và tương tự, VIQR cũng dùng lại nhiều phím dấu câu khác nhau cho việc này. Quy ước gõ Telex và VIQR đều khởi nguồn từ thời kỳ trước kia của lần lượt máy điện tínmáy đánh chữ.

Sự hỗ trợ cho các phương thức thâu nhập đấy đều được các Input Method Editor (IME) cung cấp, tại Việt Nam thì được gọi là bộ gõ. IME có thể được hệ điều hành cung cấp, được cài đặt làm ứng dụng bên thứ ba, được cài đặt làm phần mở rộng trình duyệt (en), hoặc được cung cấp bởi website riêng lẻ dưới dạng kịch bản lệnh. Các ứng dụng phổ thông bên thứ ba gồm có GoTiengViet, UniKey, VietKey, VPSKeys, WinVNKey, và xvnkb. Trên các hệ điều hành giống Unix, hai framework IBusSCIM đều hỗ trợ tiếng Việt. Những IME như AVIM, Mudim, và VietTyping được trang bị trên hầu hết các diễn đàn trực tuyến tiếng Việt, trên Wikipedia tiếng Việt, và trên nhiều 'website có tập trung sâu vào văn bản' khác. Trình duyệt web Cốc Cốc được phát hành kèm với một phương thức thâu nhập dựng sẵn.

Các phương thức nhập giúp tổ hợp các từ ngữ theo trật tự linh hoạt hơn so với những gì mà bố cục bàn phím mang lại. Cho ví dụ, để nhập từ "viết" mà dùng bố cục bàn phím TCVN 6064:1995 thì người ta phải gõ VI38T theo đúng thứ tự. Trái lại, hầu hết các IME đều cho phép người dùng chèn dấu phụ tại chỗ cuối của từ ngữ: theo Telex thì là VIEETS, theo VNI thì là VIET61, hoặc theo VIQR thì là VIET^'. Một số IME thậm chí còn cho phép nhập dấu phụ đằng trước mẫu tự cơ sở. Tùy thuộc vào sự thực hiện của IME, mà người dùng còn có thể sửa đổi dấu phụ của một từ có sẵn mà không phải gõ lại cả từ đó.

Một số IME tiếng Việt có học hỏi một tính năng phổ thông tựu trung các phương thức nhập Tiếng Trung, đó là khả năng cho phép người ta bỏ qua hẳn dấu phụ luôn. Mà thay vào đó, sau khi gõ các mẫu tự cơ sở, bảng danh sách các gợi ý (candidate list) sẽ hiển thị, và người dùng sẽ lựa chọn từ ngữ có dấu phụ mà mình muốn ra khỏi bảng đó. Để có thể cung cấp danh sách tự hoàn thành (en) đấy, IME có thể cần phải giao tiếp với dịch vụ web. Một số IME còn có thể sử dụng danh sách gợi ý để cho người dùng chuyển đổi văn bản từ chữ Quốc ngữ sang chữ Nôm, bởi không hề có ánh xạ một-một tương ứng giữa từ ngữ an-pha-bê với chữ Nôm.

Những cân nhắc khác[sửa | sửa mã nguồn]

Văn bản tiếng Việt điển hình thì có chứa tỷ lệ lớn các từ phức. Các từ phức không bao giờ có dấu nối trong sở dụng đương đại, cho nên trình kiểm tra chính tả (en) bị giới hạn chỉ có thể kiểm tra từng âm tiết đơn lẻ, trừ phi tham khảo vào mô hình ngôn ngữ (en) thống kê.

Tiếng Việt có quy tắc đánh vần "cứng" và ít ngoại lệ, cho nên các engine 'văn bản'-sang-'giọng nói' (TTS engine) có thể tránh việc tra cứu từ điển, trừ khi gặp phải từ mượn ngoại lai. Các TTS engine phải tính đến thanh điệu – một thứ cốt yếu cho ngữ nghĩa của bất kì từ ngữ tiếng Việt nào.

Ghi chú[sửa | sửa mã nguồn]

  1. ^ Xin đừng nhầm lẫn với khái niệm chữ tượng hình (pictographic script).
  2. ^ Chuyển động giật nhanh của mắt.
  3. ^ Nhiều bảng mã có thể được xây dựng dựa trên một tiêu chuẩn nào đó, trong đó quy định một tập ký tự phải đảm bảo hiển thị giống nhau qua khắp các bảng mã theo tiêu chuẩn đấy, những ký tự đó được gọi là mang tính bất biến (invariant), những ký tự còn lại thì được gọi là mang tính phi bất biến (non-invariant).
  4. ^ Chưa tính đến các ký tự trùng với chữ Hán (vì hệ thống chữ Nôm bao gồm cả chữ Hán).
  5. ^ 5.260 ký tự trong khối CJK Extension B có thuộc tính kIRG_VSource.
  6. ^ Nhiều "chữ Nôm" thực ra là chữ Hán có thêm dấu cá/nháy bên cạnh để báo hiệu chữ đấy phải được đọc theo âm Nôm.

Xem thêm[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ a b Ngô Đình Học; Trần Tư Bình (ngày 21 tháng 7 năm 2014). “Express Manual for WinVNKey”. WinVNKey. Truy cập ngày 5 tháng 10 năm 2014.
  2. ^ “Combining Diacritical Marks”. Unicode 7.0 Character Code Charts. Hiệp hội Unicode. ngày 16 tháng 6 năm 2014. Truy cập ngày 5 tháng 10 năm 2014.
  3. ^ Ngo, Hoc Dinh; Tran, TuBinh. “5. Why Having Vietnamese Charset (Character Set – Encoding) Conversion?”. Some special functions of WinVNKey.
  4. ^ a b “Chọn Font chữ, bảng mã để gõ tiếng Việt”. Bộ gõ tiếng Việt.Com (bằng tiếng Việt). MangVN. 2009. Bản gốc lưu trữ ngày 20 tháng 11 năm 2010.
  5. ^ Lunde, Ken (2009). CJKV Information Processing (ấn bản 2). O'Reilly Media. tr. 47–49. ISBN 978-0-596-51447-1 – qua Google Books.
  6. ^ Sivonen, Henri (ngày 26 tháng 9 năm 2014). “Character encoding changes in m-c require c-c action”. mozilla.dev.apps.thunderbird.
  7. ^ Hoàng Tô; Nguyễn Quan Sơn; Nguyễn Sơn Tùng; Phan Quang Minh; Phạm Thúc Trương Lương; Nguyễn Quang Hiệp; Bùi Văn Kiên; Nguyễn Ích Vinh (ngày 20 tháng 7 năm 2014). Sử ký Tinh Vân: 20 năm sẻ chia và sáng tạo (bằng tiếng Việt). 1. Tinhvan Group. tr. 37 – qua Google Books.
  8. ^ Trương, Donny. “Design Challenges”. Vietnamese Typography. Truy cập ngày 10 tháng 4 năm 2018.
  9. ^ Ví dụ thì hãy xem: “Viết Thư”. Vietnamese reading selections (bằng tiếng Việt) (ấn bản 2). Army Language School. 1956. tr. 98–100.
  10. ^ a b c d e “2. Review Of Current Conventions”. Vietnamese Character Encoding Standardization Report - VISCII And VIQR 1.1 Character Encoding Specifications (Bản báo cáo kỹ thuật). Viet-Std Group. 1992. tr. 10.
  11. ^ “Unicode & Vietnamese Legacy Character Encodings”. Vietnamese Unicode FAQs. TCVN3 is not double-byte, but due to the nature of its encoding, capital letters (vowels) are mapped to a separate, capital font that is similar to the normal, lowercase one.
  12. ^ Trần Văn Kiệm (2004). “phở”. Giúp đọc Nôm và Hán Việt (bằng tiếng Việt) (ấn bản 4). [1]
  13. ^ Nguyễn Quang Hồng. “Giới thiệu Kho chữ Hán Nôm mã hoá” (bằng tiếng Việt). Vietnamese Nôm Preservation Foundation.
  14. ^ Lunde 2009, tr. 152–153.
  15. ^ Collins, Lee; Ngô Thanh Nhàn (ngày 6 tháng 11 năm 2017). “Proposal to Encode Two Vietnamese Alternate Reading Marks” (PDF).
  16. ^ “Proposed New Characters: The Pipeline”. Hiệp hội Unicode. ngày 8 tháng 5 năm 2019. Truy cập ngày 26 tháng 5 năm 2019.
  17. ^ “Nôm Font”. Vietnamese Nôm Preservation Foundation. Truy cập ngày 5 tháng 10 năm 2014.
  18. ^ Đỗ Quốc Bảo; Tô Minh Tâm; Thiền Viện Viên Chiếu (ngày 8 tháng 12 năm 2005). “UNICODE Han Nom Font Set”. Truy cập ngày 5 tháng 10 năm 2014.
  19. ^ Lunde 2009, tr. 529.

Đọc thêm[sửa | sửa mã nguồn]

Liên kết ngoài[sửa | sửa mã nguồn]