明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

往JRE里增加字體

[摘要]Adding Fonts to the Java Runtime 要加一種亞洲字體進JRE,請按以下步驟進行:1.裝入字體首先,你必須裝載中文、日文、韓文或傳統(tǒng)的中文字體(楷書、宋體等)到你的系統(tǒng)里...
Adding Fonts to the Java Runtime
要加一種亞洲字體進JRE,請按以下步驟進行:
1.裝入字體
首先,你必須裝載中文、日文、韓文或傳統(tǒng)的中文字體(楷書、宋體等)到你的系統(tǒng)里面
2.復(fù)制字體進font.properties
裝好了字體后,復(fù)制你感興趣字體的descriptio到font.properties,最簡捷的方法是把
font.properties.<locale>直接改名為font.properties

例如:要使用中文字體,你可以復(fù)制或者改名font.properties.zh為font.properties.
現(xiàn)行的WIN32 JDK提供如下font properties 文件
./lib/font.properties
./lib/font.properties.ja
./lib/font.properties.ko
./lib/font.properties.zh
./lib/font.properties.zh_TW
 
并且你可以在JRE里使用多于一種的亞洲字體,所必須做的就是編輯font.properties
文件。
例如你要加三種SERIF字體;
serif.0=Times New Roman,ANSI_CHARSET
serif.1=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.2=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
<virtual font name>.<index number> = <platform font name>, attributes

后面有三個參數(shù),如Times New Roman、WingDings就是字體名
第二個參數(shù)(SYMBOL_CHARSET)是相應(yīng)字符集的處理接口
第三個參數(shù)是表明相應(yīng)字符集不能直接同過UNICODE編碼處理,需要與UNICODE間的轉(zhuǎn)換器
通過以下語句設(shè)不同F(xiàn)ONTS的轉(zhuǎn)換器
fontcharset.serif.1=sun.awt.windows.CharToByteWingDings
fontcharset.serif.2=sun.awt.CharToByteSymbol

用戶也可以定制自己的字體、字符集與自定義的UNICODE轉(zhuǎn)換器

例如說你想增加你自己定制的字體到JAVA的serif系列字體里去,
假設(shè)你的字體共有256個,從0到0Xff.正對應(yīng)于UNICODE里的OXE000-0XEOFF。
首先你要設(shè)計你的轉(zhuǎn)換類
package mypkg.converter;

import sun.io.CharToByteISO8859_1;
import sun.io.CharToByteConverter;
import sun.io.ConversionBufferFullException;

public class CharToByteMyFont extends sun.io.CharToByteISO8859_1 {

 /*
* This method indicates the range this font covers.
*/
 public boolean canConvert(char ch) {
if (ch >= 0xe000 && ch <= 0xe0ff) {
 return true;
}
return false;
 }

 /*
* This method converts the unicode to this font index.
*/
 public int convert(char[] input, int inStart, int inEnd,
byte[] output, int outStart, int outEnd)
throws ConversionBufferFullException {
int outIndex = outStart;
for (int i = inStart; i < inEnd; i++) {
 char ch = input[i];
 if (ch >= 0xe000 && ch <= 0xe0ff) {
if (outIndex >= outEnd)
throw new ConversionBufferFullException();
output[outIndex++] = (byte)(ch - 0xe000);
 }
}
return outIndex - outStart;
 }
第二步,加你自己的字體和轉(zhuǎn)換器進Properties文件
你先要增加你的字體的名子進文件里,

serif.3=<your own font name>
然后定義相應(yīng)的converter
fontcharset.serif.3=mypkg.converter.CharToByteMyfont

為了確定JRE能夠找到你的轉(zhuǎn)換器,你的application classpath 必須包含轉(zhuǎn)換器的路徑

以上是我看了sun里的相關(guān)文章后覺得很不錯而粗略整理出來的,目的只在于把相關(guān)內(nèi)容大概介紹一下,請不要見笑,最好參考英文原文
http://java.sun.com/products/jdk/1.1/docs/guide/intl/fontprop.html
或到http://java.sun.com/products/jdk/1.1/docs/guide/intl/index.html看更多的Internationalization相關(guān)資料以及samples
本人正在做多國語的網(wǎng)版詞典,所以有在找相關(guān)資料,這是我看到的比較有用的敘述JAVA中字符集處理的文章,如果各位看到更好的java對unicode支持的資料請告知我,謝謝