Zimbra的Web客户端国际字体的控制机制及定制方法
為什么80%的碼農都做不了架構師?>>> ??
前些日子,在論壇中提出了一個“關于開發Zimbra增補程序的設想”,有開客提到如何在Zimbra的Web界面中加入更多的中文字體。今天花了些時間?研究了一下,經初步測試,成功添加了“微軟雅黑”字體。現將Zimbra的Web客戶端(以下簡稱ZWC)國際字體的控制機制及定制方法總結如下。不當錯誤,請高人指正。一、控制機制
ZWC控制資源文件(properties文件)來實現國際化下的字體列表。在JAVA架構的系統下,通過資源文件來實現國際化是常用的技術,ZWC也不例外。
經過搜索,ZWC中控制國際化下的字體列表的資源文件是:
#zimbrahome/jetty/webapps/zimbra/WEB-INF/classes/messages/AjxMsg.properties
按照Java的規則,中文簡體對應的資源文件應該是:
#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?names
#?to?be?used.?The?entries?whose?key?ends?in?".display"?is?used?as
#?the?name?that?is?shown?to?the?user;?entries?whose?key?ends?in
#?".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}.display和fontFamilyIntl{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是如何控制國際字體的了。
二、定制方法
前面已經了解了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,進入新建界面,看到了嗎?
?
轉載于:https://my.oschina.net/hunte/blog/15648
總結
以上是生活随笔為你收集整理的Zimbra的Web客户端国际字体的控制机制及定制方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭不安全端口的脚步
- 下一篇: 贵医院科室有哪些?请介绍一下,谢谢。