Phân biệt "mã" và "font"?


Hồi trước đến giờ, tôi cũng hay nhầm lẫn mấy khái niệm này. Sưu tầm 1 số bài viết của các tác giả paulsteigel, Lao Trangtu,... để cùng nhau được rõ thêm. Bài viết này mang tính chia sẻ dành cho những người lớn tuổi không có điều kiện đi học tin học bài bản như tôi.


1. Bảng mã và font chữ (Viết bởi: LaoTrangtu)

Bảng mã, Font và Unicode

Về mặt cơ bản, máy tính làm việc với con số. Bản thân mỗi chữ cái (mỗi ký tự) cũng được gắn cho một con số nào đó để máy tính có thể hiểu. Hệ thống các con số dùng để thể hiện tất cả các chữ cái và ký hiệu của một (hay nhiều) ngôn ngữ gọi là bảng mã.

Bảng mã chuẩn đầu tiên cho máy tính có tên là ASCII (American Standard Code for Information Interchange). ASCII chuẩn 7-bit cho phép hiển thị 128 ký tự (bao gồm chữ cái, số và các ký tự đặc biệt khác như “?”, “.”, “*” v.v.). Mỗi ký tự trong ASCII sử dụng một byte và khi tập hợp lại, ASCII cho phép hiển thị thêm 128 ký tự khác nữa (tổng cộng là 256 ký tự). Phần tập hợp này gọi là ASCII mở rộng (Extended ACSII) hay ASCII 8-bit.

Một tập hợp các chữ cái và ký hiệu thể hiện tất cả các ký tự trong một bảng mã với cùng một kiểu hiển thị được gọi là font. Nói cách khác, font là hình thức mà một bảng mã được thể hiện trên màn hình máy tính hoặc trên trang giấy khi in ra. Bất cứ điều gì thuộc về ký hiệu ngôn ngữ được thể hiện trên máy tính đều phải theo một font nào đó, thuộc một bảng mã nào đó. Thường font bao giờ cũng có khả năng thể hiện dưới 4 dạng khác nhau: bình thường, đậm, nghiêng và in hoa.

Unicode là một bảng mã mới (có thể gọi là dạng mở rộng (rất rộng) của bảng mã ASCII), sử dụng 2 byte cho mỗi ký tự và có khả năng thể hiện 65.536 ký tự khác nhau, cho phép biểu đạt mọi ký tự của tất cả các ngôn ngữ trên thế giới. Nói cách khác, với Unicode, mỗi ký tự của tất cả các ngôn ngữ trên thế giới sẽ có một con số riêng cho mình trong bảng mã. Các font chữ theo chuẩn Unicode được gọi là font Unicode.

Font tiếng Việt kiểu cũ

Có thể dễ dàng thấy ngay điểm yếu của ASCII, đó là chỉ hỗ trợ tốt bảng chữ cái của tiếng Anh. Để thể hiện nhiều thứ tiếng khác, lập trình viên phải tạo ra các bảng mã khác dựa trên ASCII 8-bit. Một số bảng mã tiêu biểu kiểu này đối với tiếng Việt là TVCN3 (ABC 2.1), VNI, BK HCM...

Các bảng mã trên giải quyết được vấn đề thể hiện các ký tự đặc biệt trong tiếng Việt (dấu, dấu móc và dấu mũ), tuy nhiên có cùng một nhược điểm rất lớn là không tương thích lẫn nhau và với các font có sẵn của các hệ điều hành. Cụ thể, một văn bản được soạn thảo bằng font .Vntime (của bảng mã TVCN3) trên máy tính A sẽ không được thể hiện một cách chính xác trên máy tính B, nếu máy tính B không có font .Vntime (hoặc tương tự) được cài đặt. Nhiều trường hợp ngay cả khi font này đã được cài đặt, việc thể hiện font vẫn không chính xác (như lỗi chữ “ư” phổ biến). Sở dĩ có sự không tương thích lẫn nhau giữa các bảng mã tồn tại là vì những người sáng lập ra các bảng mã đó không có sự đồng nhất trong việc sắp đặt chữ cái nào sẽ được con số nào thể hiện trong từng bảng mã.

Sự không tương thích trên khiến việc trao đổi thông tin (đặc biệt là giữa các miền và giữa trong và ngoài nước) gặp rất nhiều khó khăn, nhất là đối với những người không có chuyên môn về máy tính.

Cách giải quyết duy nhất là tất cả cùng sử dụng chung một bảng mã. Và việc sử dụng Unicode - bảng mã chuẩn quốc tế - để thể hiện tiếng Việt có thể nói là hợp lý và “hợp thời” nhất.

2. Gõ tiếng Việt với Unicode

Với font tiếng Việt kiểu cũ, để gõ được tiếng Việt cần có hai điều kiện: Font chữ và bộ gõ dành cho font chữ đó. Với font Unicode, thì chỉ còn cần bộ gõ thôi. Tuy nhiên, không phải phiên bản nào của hệ điều hành Windows cũng có sẵn font Unicode.

Các hệ điều hành Windows 2000 và Windows XP hỗ trợ rất tốt Unicode (hầu hết các font có sẵn trong hệ thống đều theo chuẩn Unicode). Với các hệ điều hành còn lại (Windows 98/95/NT) thì người dùng có thể tải font Unicode về rồi cài vào máy. Tuy nhiên, nếu có thể thì tốt nhất là nên sử dụng Windows 2000 hoặc Windows XP.

Về bộ gõ, hiện thời phổ biến nhất là Vietkey và Unikey. Tuy nhiên, Unikey tốt hơn bởi một số lý do chính sau:

- Unikey miễn phí và mã nguồn mở. Người dùng có thể tải mã nguồn về và sửa chữa. Vietkey là chương trình thương mại và người dùng phải mua để sử dụng.
- Unikey có kèm phần mềm chuyển mã và cho phép chuyển đổi rất nhiều mã khác nhau
- Unikey (phiên bản 3.5) có tùy chọn để không sử dụng “clipboard” của Windows khi gõ tiếng Việt bằng font Unicode. Điều này tránh được lỗi cách chữ hoặc mất chữ mà Vietkey hay mắc phải.

Ngoài Unicode ra, cả Vietkey và Unikey đều hỗ trợ các bảng mã cũ khác. Tương tự như Vietkey, Unikey không yêu cầu “cài đặt”. Để sử dụng chỉ cần tải phần mềm này về và chạy file có tên UnikeyNT.exe. Hướng dẫn có thể được tìm thấy tại trang web của tác giả Phạm Kim Long.

Lưu ý:

- Khi gõ tiếng Việt sử dụng bộ mã Unicode, cần đảm bảo font chữ đang dùng phải là thuộc bảng mã Unicode. Tốt nhất là nên sử dụng các font “Arial” hoặc “Times New Roman”.
- Không sử dụng các bộ gõ cũ (dành cho các hệ điều hành 16-bit như DOS hay Windows 3x) cho các hệ điều hành 32-bit (Windows 9x/NT/2K/XP). Các bộ gõ cũ (ví dụ: ABC 2.1) khi cài đặt thường thay đổi font hệ thống của hệ điều hành (thường là Unicode) thành font hệ thống kiểu cũ (ASCII) và khiến hệ điều hành không hỗ trợ được Unicode nữa.

3. Đọc tiếng Việt trên mạng với Unicode

Để đọc tiếng Việt (được soạn thảo bằng font Unicode) trên mạng Internet cần có 2 điều kiện:

- Hệ điều hành hỗ trợ Unicode (xem phần trên).
- Trình duyệt (browser) hỗ trợ Unicode: Các trình duyệt phổ biến như Internet Explorer 5.x (hoặc mới hơn), Netscape 4.7 (hoặc mới hơn) hỗ trợ rất tốt Unicode. Trái lại, trình duyệt Opera hỗ trợ Unicode rất kém.

Nếu có cả hai điều kiện trên mà vẫn không đọc được thì cần chuyển trạng thái hiển thị hiện thời sang Unicode. Đối với Internet Explorer, cách làm như sau: Chọn menu “View” -> Encoding… -> More (nếu cần) -> Unicode (UTF-8).

Lưu ý: Ngày càng nhiều trang web thể hiện tiếng Việt bằng font Unicode, tuy nhiên vẫn có một số sử dụng font kiểu cũ. Trong trường hợp đó, cần cài thêm font kiểu cũ vào máy thì mới có thể xem được. Tuy nhiên, nếu trang web này bị lỗi (ví dụ: mất chữ “ư”), thì cũng không nên sử dụng các phần mềm để sửa lỗi này. Sử dụng các phần mềm như vậy sẽ làm hỏng sự ổn định của hệ thống.

Để đọc được Unicode thông qua e-mail còn cần thêm một điều kiện nữa là chương trình e-mail (e-mail client) phải hỗ trợ Unicode. Ngoài ra, khi gửi thư, cần gửi dưới dạng Unicode. Nếu sử dụng Outlook Express, trình này sẽ hỏi về dạng font của thư trước khi gửi đi (chọn “Send as Unicode”).

Hiện thời, trong số các trình hội thoại trực tuyến (chat client) phổ biến thì chỉ có Windows Messenger (còn được gọi là MSN messenger) là hỗ trợ Unicode.

4. In tiếng Việt với Unicode

Hầu hết các máy in mới đều có thể in văn bản được soạn thảo bằng Unicode. Với những trường hợp không in được tiếng Việt bằng font Unicode thì nguyên nhân chủ yếu là do các máy này không “hiểu” font Unicode và tự động thay thế bằng một font khác có sẵn trong máy in.

Cách khắc phục khác nhau tùy theo từng máy in cụ thể, nhưng cũng có một số điểm chung. Trước hết cần làm như sau: Start -> Settings - Printers - > Bấm chuột phải vào biểu tượng của máy in -> chọn Properties. Tiếp theo, tại của sổ của Properties, di chuyển giữa các tab (thẻ) và thay đổi các thông số theo một hoặc tổng hợp những cách sau (nếu có):

- Chuyển giá trị của "Spooling data format" sang "RAW".
- Chọn và sử dụng chức năng "Always use True type Fonts".
- Chọn để máy in “Download font” từ máy tính trước khi in.
- Chọn để máy in không thay thế (Substitute) font trước khi in.
- Chọn chức năng “Print Text as graphics”.

Ngoài ra, tải về trình điều khiển (driver) mới nhất và cài lại cho máy in cũng sẽ giúp máy in hoạt động tốt với Unicode trong hầu hết các trường hợp.

Đông Ngô

========================================================== 
Tổng quan về bộ mã Unicode

Việc sử dụng nhiều bảng mã khác nhau trong cùng một nước là một trở ngại lớn trong việc phát triển các hệ thống thông tin lớn. Bảng mã quốc gia chuẩn hiện nay của chúng ta - TCVN5712 là bảng mã một byte, chưa chứa đủ các vị trí để mã hoá tất cả các chữ cái tiếng Việt, bộ mã này gặp phải những tranh chấp với nhiều ứng dụng phổ thông thông như MS Office, đặc biệt là với Internet Explore 5 và MS Publishing 2000, chữ “ư” sẽ không hiển thị được trên các trang Web hoặc bị ngắt dòng sai. Ngoài ra còn vô số các bảng mã một và hai byte (VNI, VPS, ...) càng khiến cho vấn đề trở nên rắc rối hơn.

Unicode ra đời là nhằm khắc phục các nhược điểm nói trên và nhằm xây dựng một bộ mã chuẩn vạn năng dùng chung cho tất cả mọi ngôn ngữ trên thế giới. Đối với Việt Nam, Unicode thể hiện được đầy đủ các kí tự của tiếng Việt, cả hoa lẫn thường, không bị xung đột với các kí tự điều khiển, cho phép sử dụng song song với các ngôn ngữ khác.

Unicode côngxoocxiom được thành lập vào năm 1991 như 1 tổ chức phi lợi nhuận nhằm phát triển chuẩn Unicode, các thành viên của Unicode công xoóc xiông bao gồm các công ty hàng đầu của thế giới trong lĩnh vực phần mềm như Adobe, Aldus, Borland, Digital, GO, IBM, HP, Lotus, Metaphor, Microsoft, NeXT, Novell, Sun, Symantec, Taligent, Unisys, and WordPerfect ...

Unicode là bộ mã ký tự 16-Bit, tương thích hoàn toàn với chuẩn quốc tế ISO/IEC 10646-1; 1993. Với 65.536 ký tự Unicode hầu như có thể mã hoá tất cả các ngôn ngữ trên thế giới. Ngoài ra với cơ chế mở rộng UTF-16 Unicode và chuẩn ISO 10646 còn cho phép mã hoá hơn 1 triệu ký tự mà không cần phải dùng đến mã điều khiển Escape.

Phiên bản mới nhất hiện nay là Unicode 2.0 (Bản 3.0 đang chuẩn bị phát hành) bao gồm các ngôn ngữ thuộc họ la-tinh, và Greek, Cyrillic, Armenian, Hebrew, Arabic, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Thai, Lao, Georgian, Tibetan, Japanese Kana, the complete set of modern Korean Hangul, and a unified set of Chinese/Japanese/Korean (CJK).

Chuẩn Unicode mô tả các ký tự ngôn ngữ, các dấu chấm câu, dấu phụ, ký hiệu toán học, các dấu mũi tên và các ký hiệu Dingbats. Hiện nay Unicode đã định nghĩa khoảng 39 000 ký tự. Còn khoảng 18.000 ký tự sẽ được định nghĩa nay mai, 917 504 ký tự có thể được định nghĩa nếu dùng cơ chế mở rộng UTF-16. 6.400 chỗ được dành ra cho các hãng sử dụng với các mục đích riêng của mình. UTF-16 cũng dành ra 131.072 ký tự để dành cho những mục đích dùng riêng.

Các chuẩn mã hoá ký tự không chỉ định nghĩa các mã của các ký tự, giá trị số, và vị trí của các ký tự mà còn định nghĩa cả cách biểu diễn các mã ký tự dưới dạng bit. Unicode và ISO-10646 quy định 2 cơ chế, khuôn dạng chuyển đổi là UTF-8 và UTF-16.

Unicode tránh đến mức tối đa việc định nghĩa dư thừa, trùng lặp. Ví dụ ký tự “é” chỉ có 1 mã duy nhất dùng chung cho cả ngôn ngữ tiếng Việt, tiếng Czech, ....cũng chính vì thế nên hệ thống chữ Việt có các mã nằm rải rác ở nhiều ví trí không liền nhau. Tiếng Hán, Nhật và Hàn có khoảng 10 nghìn ký tự trùng nhau nên chúng được dùng chung cho cả 3, tuy nhiên trong Unicode vẫn có các vùng riêng để định nghĩa những ký tự đặc thù của 3 ngôn ngữ này.

Unicode về cơ bản không quy định việc bố trí các ký tự theo quy định sắp xếp của các ngôn ngữ, điều này cũng là hệ quả của việc tránh định nghĩa các ký tự dư thừa do phải tận dùng các ký tự dùng chung nên không thể bố trí các ký tự theo từng vùng riêng cho từng ngôn ngữ được.

Unicode đã được cài đặt trong các hệ điều hành Windows NT, Windows 9.x, MacIntosh (MacOS 8), BE OS, Linux...

Windows NT sử dụng Unicode như là nền tảng trong hệ điều hành, các xâu ký tự được xử lý như là xâu Unicode, Resource, tên File trong NTFS cũng là Unicode. Tuy nhiên để tăng tính tương thích Windows NT vẫn có các hàm API để xử lý ký tự mã 8-Bit. Windows NT 5.0 hỗ trợ hơn 100 ngôn ngữ khác nhau trong đó có cả tiếng Việt.

Ngược lại Windows 9.x không lấy Unicode làm nền tảng nội tại trong hệ điều hành, tuy nhiên Win9.x lại có 1 số hàm hỗ trợ cho việc xử lý và hiển thị mã Unicode.

Muốn sử dụng được Unicode cần phải có những phần mềm hỗ trợ hiển thị hoặc cho phép gõ ký tự theo chuẩn Unicode, ngoài ra cũng cần phải có Font chữ Unicode được cài đặt trong hệ thống.

Hiện nay trong môi trường Windows, bộ MS Office 2000 (Word, Excel, Powerpoint...) hỗ trợ rất tốt bộ mã Unicode. Trong môi trường Mạng Internet Expolore 5.x, Netscape 4.x cũng cho phép hiển thị các trang Web được thiết kế theo chuẩn Unicode.

Cài đặt tiếng Việt Unicode

Để hiển thị tiếng Việt Unicode cần phải cài đặt font chữ Unicode, chỉ cần cài 1 trong các phần mềm sau: Internet Explore 5 hoặc MS Office 2000 trong Windows 95/98 hoặc cài đặt Windows 2000. Khi cài đặt 1 trong những phần mềm trên các font Unicode có tiếng Việt sẽ được tự động cài đặt hệ thống. Các font cơ bản của Microsoft đi kèm với các phần mềm trên đã hỗ trợ tiếng Việt Unicode là Times New Roman, Arial, Courier, Tahoma, Ngoài ra có thể tải xuống các font Unicode (có hỗ trợ tiếng Việt) khác trên Internet: Verdana, Arial Narrow, Arial Black, Bookman Old Style, Garamond, Impact, Lucida Sans. Comic Sans...

Gõ tiếng Việt Unicode với Windows 2000 (Bản English) chỉ cần cài đặt thêm ngôn ngữ tiếng Việt bàn phím tiếng Việt theo chuẩn TCVN sẽ được cài đặt và cho phép bạn gõ tiếng Việt (Một kiểu gõ gần giống với kiểu gõ VNI).

Windows 95, 98 (Bản English): tải xuống Vietnamese Support trong http://support.micosoft.com/, cài đặt Vi.inf để có được bộ gõ tiếng Việt Unicode theo tiêu chuẩn bàn phím TCVN. Trong cả 2 môi trường Windows NT và Windows 9.x Microsoft có hỗ trợ cả Local cho tiếng Việt do đó các tính năng tìm kiếm, xắp sếp tiếng Việt cũng được hỗ trợ, ngoài ra Local tiếng Việt cũng hỗ trợ cả cách đánh chữ số hay cách đặt ngày tháng theo quy định của Việt nam.

Bàn phím tiếng Việt do Microsoft hỗ trợ chỉ có 1 kiểu duy nhất là TCVN, sẽ gây khó khăn cho những người quen với kiểu gõ Telex hoặc VNI. Để có kiểu gõ quen thuộc trong cả 2 môi trường Windows NT, Windows 9.x bạn có thể dùng bộ gõ VietKey.


========================================================== 
1. Mã: (Viết bởi: paulsteigel)
Khỏi phải bàn nhiều - quý vị chắc đều hiểu rồi.
 ----Quoted----
"Về mặt cơ bản, máy tính làm việc với con số. Bản thân mỗi chữ cái (mỗi ký tự) cũng được gắn cho một con số nào đó để máy tính có thể hiểu. Hệ thống các con số dùng để thể hiện tất cả các chữ cái và ký hiệu của một (hay nhiều) ngôn ngữ gọi là bảng mã.

Bảng mã chuẩn đầu tiên cho máy tính có tên là ASCII (American Standard Code for Information Interchange). ASCII chuẩn 7-bit cho phép hiển thị 128 ký tự (bao gồm chữ cái, số và các ký tự đặc biệt khác như “?”, “.”, “*” v.v.). Mỗi ký tự trong ASCII sử dụng một byte và khi tập hợp lại, ASCII cho phép hiển thị thêm 128 ký tự khác nữa (tổng cộng là 256 ký tự). Phần tập hợp này gọi là ASCII mở rộng (Extended ACSII) hay ASCII 8-bit."

2. Phông (Font) chữ
Hì hì - Là cái phông đèn chiếu thôi.
"A design for a set of characters. A font is the combination of typeface and other qualities, such as size, pitch, and spacing. For example, Times Roman is a typeface that defines the shape of each character. Within Times Roman, however, there are many fonts to choose from -- different sizes, italic, bold, and so on. (The term font is often used incorrectly as a synonym for typeface.)"
"Là thiết kế cho bộ ký tự. Phông là sự kết hợp của kiểu chữ và các tiêu chí khác như: Kích thước, độ nghiêng và cách quãng. Ví dụ bộ Times Roman là kiểu chữ quy định hình dạng của mỗi ký tự. Trong bộ Times Roman, có nhiều phông chữ để chọn với các tiêu chí khác nhau về kích thước, in nghiêng, in đậm... 
(Thuật ngữ font thường bị dùng không chính xác như là từ đồng nghĩa của kiểu chữ)"
Để cho ta xem lên màn hình các chữ có thể đọc được thì cần có bộ Hiển thị Phông chữ (Font Engine).

Vậy thì (giải thích trực quan một tí):
+ Phông giống như cái kính màu hoặc gương biến dạng theo đó với vật thể (bộ mã) được chiếu sáng (Bộ hiển thị), ta có thể thấy hình ảnh của nó qua gương bị thay đổi lúc thì dài ra, lúc xoắn lại... nhưng đối với máy tính thì khác sinh động hơn, ta có thể làm cho vật thể ví dụ con mèo thành con voi, hoặc con chuột thông qua phông chữ.
+ Hiện có 2 bộ phông chính là phông ánh xạ ảnh (bitmap font) và phông ánh xạ véc tơ (Vector font).

Tiếng Việt cho máy tính hiện nay có thể coi là khá phức tạp (chúng ta chỉ có 134 nguyên âm định dấu ví dụ ă ắ ư....). Vấn đề chọn bộ mã nào cho phù hợp thì còn tranh cãi nhiều
 + Ở TCVN mà người bắc hay sử dụng theo đó để hiển thị họ dùng các phông chữ dạng .Vn thì người ta lấy 77 mã trong bộ 256 ký tự ASCII để phản ánh 134 nguyên âm nói trên. Nên đôi khi bạn cũng khổ khi thấy WORD hiển thị dấu cách là chữ ả... ví dụ "§" = đ. ¾=ắ. Điều này vì thế khi cần hiển thị chữ hoa thì họ dùng bộ phông .vn..H. Qua các phông chữ hoa này thì ¾=Ắ.
+ Với Unicode thì phân ra hai loại:
- Mã tổ hợp: đại loại giống với việc viết chữ xong thêm dấu và mũ ví dụ dd=đ. đặng = dda(.ng.
- Mã dựng sẵn: họ trích ra trong bộ Unicode 134 mã để định nghĩa nguyên âm cho tiếng Việt. Cái này được dùng hầu hết hiện nay trong các trang web.
Unicode thì có đủ cả nguyên âm hoa và thường cho tiếng việt - nên khi chuyển đổi mã cũng không khó lắm nhất là từ VNI sang Unicode hoặc một số bộ mã 2 bytes khác.
+ Vậy vấn đề nói trên là rõ rồi đúng không.
Hiện nay các bạn nghe nhiều đến việc chuyển đổi bảng mã sang Unicode... thực ra đó chỉ là xác định các ký tự tương ứng từ bộ mã này sang bộ mã kia để thay thế mà thôi. Tuy nhiên, do tính chất phong phú của bộ mã tiếng việt hiện nay nên đến giờ việc chuyển đổi bảng mã vẫn chưa có một công cụ nào thực sự giải quyết triệt để vấn đề...


==========================================================
Đọc thêm về Unikey

Đọc thêm về Unicode

Đọc thêm từ ASCII đến Unicode
Tags: , , ,

MINH TRÍ

Đọc giả thân mến! Những bài viết trong Blog Tri Thức Kế Toán nhằm mục đích cho nhật ký cá nhân. Tuy nhiên những bài viết không cần giữ bản quyền. Nếu quý đọc giả cảm thấy yêu mến đăng lại với điều kiện ghi rõ tên tác giả và để lại một đường link bài viết gốc đầy đủ. Kính mong quý đọc giả lưu tâm, kính tri ân. Lê Minh Trí.

HƯỚNG DẪN CÁCH VIẾT BÌNH LUẬN
1. Sử dụng tài khoản Blogger-Google, LiveJournal, WordPress, TypePad, AIM, OpenID, hoặc Tên/URL-Website [có thể bỏ trống URL], hoặc Ẩn danh [Anonymous] để đưa ra comment [bình luận], nếu muốn.
2. Vui lòng đăng bình luận hòa nhã, đúng mực và cố gắng gõ tiếng Việt có dấu nếu có thể. MINH TRÍ rất vui vì những bình luận thiện chí mang tính xây dựng. Xin chân thành cảm ơn!

0 nhận xét

Leave a Reply