Zimbra的Web客户端国际字体的控制机制及定制方法

前些日子,在论坛中提出了一个关于开发Zimbra增补程序的设想,有开客提到如何在ZimbraWeb界面中加入更多的中文字体。今天花了些时间 研究了一下,经初步测试,成功添加了微软雅黑字体。现将ZimbraWeb客户端(以下简称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}.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是如何控制国际字体的了。

二、定制方法

前面已经了解了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,进入新建界面,看到了吗?

 


希望对你有用!

你可能感兴趣的:(中文字体,定制,zimbra,Web客户端)