1. 光標定位問題的解決:
(方法一)
JBuilder中出現的光標問題不是Borland的問題,而應該是Sun留下的麻煩。大家知道,i18n問題主要通過操作系統對用戶工作地區和使用語言通過LOCALE
(Window2000或XP中的控制面板上通過“區域和語言選項”)來進行區分,從而開發者通過使用相應區域和語言的屬性文件來實現軟件包對國際化的支持。具體來說,JBuilder通過使用JRE的font.PRoperties.zh來實現對中文字體的支持。
問題就出在SUN提供的font.properties.zh上。SUN在該文件中對各種字體的正常體,粗體,斜體均使用的是正常體。我們知道,在編輯器中,正常體和粗體或斜體占用的寬度是不同的。因此粗體(Bold)和正常體(plain)均使用正常體會導致編輯器對粗體字符寬度計算錯誤,這下,我們明白了問題的原因所在。有趣的是SUN對英文的字體屬性文件卻進行了正確的區別。(似乎是故意的啊??。┍容^font.properties和font.properties.zh文件,你可以直觀的了解該問題。
=======Correct Font Setting =====
# Component Font Mappings
#
dialog.plain.0=Arial,ANSI_CHARSET
dialog.bold.0=Arial Bold,ANSI_CHARSET
dialog.italic.0=Arial Italic,ANSI_CHARSET
如上,plain應該使用字體XXX,bold則應該使用XXX Bold,italic則應該使用XXX Italic。
明白了問題的根結,找到解決問題的辦法也就非常輕易了。
對font.properties.zh中的相應Component Font Mappings段替換為下面部分。
# Component Font Mappings
#
dialog.plain.0=Arial,ANSI_CHARSET
dialog.plain.1=/u5b8b/u4f53,GB2312_CHARSET
dialog.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bold.0=Arial Bold,ANSI_CHARSET
dialog.bold.1=/u5b8b/u4f53,GB2312_CHARSET
dialog.bold.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bold.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.italic.0=Arial Italic,ANSI_CHARSET
dialog.italic.1=/u5b8b/u4f53,GB2312_CHARSET
dialog.italic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.italic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bolditalic.0=Arial Bold Italic,ANSI_CHARSET
dialog.bolditalic.1=/u5b8b/u4f53,GB2312_CHARSET
dialog.bolditalic.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.bolditalic.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.plain.0=Courier New,ANSI_CHARSET
dialoginput.plain.1=/u5b8b/u4f53,GB2312_CHARSET
dialoginput.plain.2=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialoginput.plain.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
新聞熱點
疑難解答