Enable display of Vietnamese on Java components on Windows

Windows, Linux/Unix, Solaris, Mac OS X, Palm,...

Enable display of Vietnamese on Java components on Windows

Postby quân » Wed May 28, 2003 3:21 am

Trên Windows, để cho phép hiển thị chữ Việt mà không cần phải programmatically đặt font cho từng component, ta có thể chỉnh file font.properties file dưới j2re/lib subdirectory như sau:

On Windows, to enable display of Vietnamese characters without programmatically setting font for each component, you may want to edit the font.properties file under j2re/lib subdirectory as follows:

Thay/Replace

# Exclusion Ranges
#
exclusion.dialog.0=0500-20ab,20ad-ffff
exclusion.dialoginput.0=0500-20ab,20ad-ffff
exclusion.serif.0=0500-20ab,20ad-ffff
exclusion.sansserif.0=0500-20ab,20ad-ffff
exclusion.monospaced.0=0500-20ab,20ad-ffff

với/with

# Exclusion Ranges
#
exclusion.dialog.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.dialoginput.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.serif.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.sansserif.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.monospaced.0=0250-1e9f,1f00-20aa,20ad-ffff
Last edited by quân on Mon Nov 03, 2003 8:11 pm, edited 1 time in total.
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Postby bongosdude » Fri Jun 20, 2003 12:48 pm

anh Quân,

Anh có thể giải thích thêm các hàng đó là gì không?
bongosdude
 
Posts: 3
Joined: Fri Jun 20, 2003 12:44 pm

Postby quân » Fri Jun 20, 2003 3:26 pm

File font.properties map logical font names to physical fonts. Vì nhiều font (Arial hay Arial Unicode, chẳng hạn) có chứa nhiều characters/glyphs quá mà Java component lại không dùng hết, nên Exclusion Ranges được dùng để giới hạn dãy (range) characters có thể dùng cho Java component để cho việc search tìm character nhanh hơn (performance).

Trong Java Windows, Exclusion Ranges mặc định (default) đã ngẫu nhiên đặt 1 số mẫu tự Việt trong nó, cho nên đã được đổi để các Java component có thể dùng những mẫu tự đó.

Nhớ back up original files trước khi thay đổi chúng.

Xin đọc thêm trang sau:

http://java.sun.com/j2se/1.4.2/docs/guide/intl/fontprop.html
http://java.sun.com/j2se/1.3/docs/guide/intl/fontprop.html
http://www.joconner.com/javai18n/articles/TextDisplay.html
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Re: Enable display of Vietnamese on Java components on Windo

Postby Chung » Sun Feb 15, 2004 4:47 pm

Bạn làm sao có thể cho biết cách để enable java font.properties trong linux???
How can you enable font.properties in linux????
Thanks
Chung
 
Posts: 1
Joined: Sun Feb 15, 2004 4:40 pm

Postby quân » Wed Feb 18, 2004 2:58 am

The fontprop link is applicable for Linux.

In addition, to make Unicode fonts available to Java applications, you'll need to set the environment variable JAVA_FONTS to the appropriate font paths and then export it. This is usually done in /etc/profile file.
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Re: Enable display of Vietnamese on Java components on Windo

Postby quân » Sun Apr 25, 2004 9:59 pm

Chung wrote:Bạn làm sao có thể cho biết cách để enable java font.properties trong linux???
How can you enable font.properties in linux????
Thanks

http://vietunicode.sourceforge.net/foru ... .php?t=147
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Hiển thị tiếng Việt trên java application

Postby ttv100682 » Wed Jul 14, 2004 4:21 am

Tôi có đoạn mã sau:

font= new Font("arial",Font.PLAIN,11);
setFont(font);
name=new Label();
name.setFont(font);
name.setText("\u1EA7 \u00E0 \u0169 \u1EF9 Ch\u00e0o c\u00e1c b\u1ea1n");

Tham số trong setText() là mã Unicode của các ký tự, nhưng khi chạy chỉ hiển thị đúng một số thôi còn một số thì cho ra hình vuông.
Xin cho hỏi làm sao khắc phục điều này.

Tôi có xem bài hướng dẫn "Enable display of Vietnamese on Java components on Windows" của Quân nhưng vẫn không làm được. Tôi dùng SPadPro soạn mã Java, sử dụng jdk 1.3

Thanks !
Trần Thành Vũ
ttv100682
 
Posts: 2
Joined: Wed Jul 14, 2004 3:59 am

Postby quân » Wed Jul 14, 2004 8:08 pm

JDK 1.3 bị bug hiển thị TV -- bạn hãy dùng JDK 1.4 hay mới hơn.

Ngoài ra, có phải font đó tên là "Arial", chứ không phải là "arial"? Letter case có thể quan trọng khi specify font name.
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Hiển thị tiếng Việt (t.t)

Postby ttv100682 » Fri Jul 16, 2004 4:30 am

Xin cho hỏi các con số hex trong đoạn sau (trong file font.properties)là chuẩn nào vậy , có thuộc TCVN 6909 không ?

exclusion.dialog.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.dialoginput.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.serif.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.sansserif.0=0250-1e9f,1f00-20aa,20ad-ffff
exclusion.monospaced.0=0250-1e9f,1f00-20aa,20ad-ffff

ý nghĩa của những con số hex đó là gì ? Theo TCVN 6909 thì các ký tự nằm trong các đoạn: 0000-00FF, 0100-01FF, 0300-03FF, 1e0-1EFF, 2000-20FF. Vậy trong file font.properties phải sữa lại đoạn khai báo trên như thế này có đúng không:

exclusion.dialog.0=0000-00FF, 0100-01FF, 0300-03FF, 1e0-1EFF, 2000-20FF
exclusion.dialoginput.0=0000-00FF, 0100-01FF, 0300-03FF, 1e0-1EFF, 2000-20FF
..........................................................
..........................................................

Và câu cuối cùng là: Dùng gói AWT thì hiển thị tiếng Việt không được (chỉ một số ký tự là được). Tại sao ? Có cách khắc phục không ?

Thanks very "nhiều" !!!!
Trần Thành Vũ
ttv100682
 
Posts: 2
Joined: Wed Jul 14, 2004 3:59 am

Postby quân » Mon Jul 19, 2004 2:50 pm

Java dùng Unicode. Các hex character đó là Unicode codepoint.

"Exclusion" có nghĩa là loại trừ, hay chừa ra, đối nghĩa với "inclusion", gồm vào, tính vào. Vì original font.properties file đã chừa ra một số chữ cái VN làm Swing components không thể hiển thị được tất cả nên file đó đã được sửa để tính gồm thêm vào những chữ bị chừa ra. Khiếm khuyết này đã được Sun sửa chữa trong Java phiên bản 1.5.0.

AWT là heavy weight components, dựa trên native widgets, tức tùy thuộc vào underlying operating system, khả năng và giới hạn của OS đó. AWT là công nghệ cũ, không còn được phát triển. Sun khuyến khích dùng Swing, light weight components, được xây hoàn toàn với Java language, và do đó, hỗ trợ cross platform tốt hơn, look & feel đồng nhất, và portable hơn.

Việc AWT có support được TV tôi cũng không rõ vì không sử dụng nó. Bạn có thể viết một thí dụ nhỏ để tự thử nghiệm khả năng đó của AWT.

http://java.sun.com/j2se/corejava/intl/ ... -awt-swing
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA

Lưu unicode text, hiển thị unicode text

Postby pnk087 » Fri Jul 23, 2004 9:52 am

:shock: Mình đang dùng jdk1.5.0 beta 2. Mình add VietKeyListener của VietPad vào các textfield và gõ được tiếng Việt trong các texfield này nhưng khi lưu xuống file các phần text tiếng Việt trong các textfield này thì phần text này không hiển thị tiếng Việt đúng. Và khi dùng text tiếng Việt lấy từ file để hiển thị trên các textfield thì không hiển thị đúng tiếng Việt.
Xin Quân cho biết lý do tại sao, và làm thế nào để khắc phục ?
pnk087
 
Posts: 1
Joined: Fri Jul 23, 2004 9:36 am

Postby quân » Sat Jul 24, 2004 3:44 pm

Then chốt trong việc lưu và mở text file Tiếng Việt là encoding, hay charset, cụ thể là Unicode. Java cung cấp 2 class hỗ trợ công tác này: InputStreamReader và OutputStreamReader. Hãy xem Java Doc về cách dùng.

Các vấn đề chuyên về lập trình TV trong Java được bàn nhiều tại diễn đàn JavaVietnam. pnk sẽ tìm thấy nhiều điều hữu ích nơi đó.
quân
 
Posts: 236
Joined: Sat Nov 16, 2002 1:51 am
Location: Oxnard, CA - USA


Return to Hệ Điều Hành - Operating System

Who is online

Users browsing this forum: No registered users and 1 guest

cron