Zimbra的Web客戶端國際字體的控制機制及定製方法

前些日子,在論壇中提出了一個關於開發Zimbra增補程序的設想,有開客提到如何在ZimbraWeb界面中加入更多的中文字體。今天花了些時間 研究了一下,經初步測試,成功添加了微軟雅黑字體。現將ZimbraWeb客戶端(如下簡稱ZWC)國際字體的控制機制及定製方法總結以下。不當錯誤,請高人指正。

1、控制機制
ZWC控制資源文件(properties文件)來實現國際化下的字體列表。在JAVA架構的系統下,經過資源文件來實現國際化是經常使用的技術,ZWC也不例外。css

通過搜索,ZWC中控制國際化下的字體列表的資源文件是:html

#zimbrahome/jetty/webapps/zimbra/WEB-INF/classes/messages/AjxMsg.propertiesjava

按照Java的規則,中文簡體對應的資源文件應該是:web

#zimbrahome/jetty/webapps/zimbra/WEB-INF/classes/messages/AjxMsg_zh_CN.properties瀏覽器

在這兩個文件中有一段話:服務器

# The font family options specified below are a list of fonts for架構

# HTML compose. Each value is a comma-separated list of font namesapp

# to be used. The entries whose key ends in ".display" is used asless

# the name that is shown to the user; entries whose key ends inwebapp

# ".css" is the CSS list of font names that is inserted into the

# HTML document.

#

# Any number of font families can be added to the list. To add a

# font family, name the key "fontFamilyBase{number}.display" and

# "fontFamilyBase{number}.css" for the common list of fonts; or

#"fontFamilyIntl{number}.display" and "fontFamilyIntl{number].css"

# for additional fonts to prefix for this specific locale. The

# {number} is the next number in the list; numbers start at 1. To

# end the list, leave the last values as the "###" string.

#

# Note: Not all of the fontFamilyIntl values need to be specified!

#       And you should always leave a "###" entry at the end to

#       avoid accidentally include intl font families inherited

#       from the less specific locale property file.
翻譯一下,大意以下:

如下設置的字體選項是用於在起草HTML郵件時的可用字體列表。每一個值都是一個逗號分隔的字體名列。以.display結尾的條目中的名稱用於顯示給用戶(在下拉列表中),以.css結尾的條目中的名稱則是用於插入HTML(相似於內部名稱)文檔。

能夠向列表中加入任意多的字體數量。要添加一個新的字體,首先要添加一個鍵名相似fontFamilyBase{number}.display的條目和一個鍵名相似fontFamilyBase{number}.css的條目,分別表示字體顯示名稱和內部名稱。對於國際化環境而言,則應使用鍵名分別爲fontFamilyIntl{number}.displayfontFamilyIntl{number}.css的條目。這裏的{number}是一個阿拉伯數字,從1開始,新建時應比當前最大的數字大1。要結束這些列表,將最後一個條目的值設爲「###」。

備註:並不是全部的fontFamilyIntl都須要指定。對於不須要使用本地字體的條目,須要用「###」來做爲條目的值。

ZWC默認的字體列表有20個字體,摘要以下:

fontFamilyBase1.display = Andale Mono

...

fontFamilyBase21.display = ###

fontFamilyBase1.css = andale mono,times

...

fontFamilyBase21.css = ###

國際字體也有20個,但實際填充的只有3個,摘要以下(字體名稱備註是我加的):

#字體

fontFamilyIntl1.display = \u5b8b\u4f53

fontFamilyIntl1.css = \u5b8b\u4f53, simsun, serif

#新宋體

fontFamilyIntl2.display = \u65b0\u5b8b\u4f53

fontFamilyIntl2.css = \u65b0\u5b8b\u4f53, nsimsun, sans-serif

#黑體

fontFamilyIntl3.display = \u9ed1\u4f53

fontFamilyIntl3.css = \u9ed1\u4f53, simhei, sans-serif

fontFamilyIntl4.display = ###

fontFamilyIntl4.css = ###

在這種狀況下,當在ZWC起草中文郵件時,會顯示一共23個字段,前3個是中文字體,後20個是英文字體。

講到這裏,相信你已經大概明白ZWC是如何控制國際字體的了。

2、定製方法

前面已經瞭解了ZWC是如何控制國際字體的了,下面就看一下如何來定製。假設須要添加「微軟雅黑」字體。

1.從服務器上下載AjxMsg_zh_CN.properties文件,路徑見上面。

2.到網站:http://blog.javawind.net/tools/native2ascii.jsp,將要顯示的中文字體名稱轉換成Unicode的格式,一般是\xxxxx的樣式。「微軟雅黑」轉換後的格式是:\u5fae\u8f6f\u96c5\u9ed1

3.用一個文本編輯工具打開,找到fontFamilyIntl列表中第一個值爲「###」的條目。根據不一樣的軟件版本,那個{number}可能不一樣,在7.0上是4(即前面有3個字體)。

4.

fontFamilyIntl4.display = ###

fontFamilyIntl4.css = ###

換成

fontFamilyIntl4.display = \u5fae\u8f6f\u96c5\u9ed1

fontFamilyIntl4.css = \u5fae\u8f6f\u96c5\u9ed1, msyh

5.保存文件。

6.備份服務器上的AjxMsg_zh_CN.properties,並將修改後的文件上傳到服務器上覆蓋它。

7.重啓Zimbra服務。

等重啓完畢後,用瀏覽器打開ZWC,進入新建界面,看到了嗎?

 


但願對你有用!
相關文章
相關標籤/搜索