Ubuntu用户是被特殊"照顾"的,在AbiWord_file_server上有相应的deb包,不管是dapper还是edgy.直接下载安装即可,安装包会自动覆盖以前的版本的.
AbiWord的中文显示与输入问题是由来已久,解决起来也有些棘手.
X Window字体的处理方式与AbiWord
Linux下的屏幕通过X Window系统显示,而X Window处理字体的方式十分抽象;它可以让应用程序在尚未"理解"字体运作方式的情况下,调用系统中各种类型的字体.这样,也许会使文本在屏幕上显示变得简单,但也有很多缺点.
文本文件最终大多需要打印出来,从应用程序生成的可以在屏幕上显示的文本到打印成纸介质,中间需要一个称为"PostScript"语言的处理."PostScript"语言最初由Adobe公司开发并采用,是一种打印文本处理的强大的输出高质量文档的高级语言,一般它对字体的处理解析度要比X Window的屏幕终端高得多.然而,让很多应用程序难以取舍的是:"PostScript"语言处理字体的方式与X Window的方式毫无关联,很难协调.所以,为了能够生成"PostScript"语言的输出,应用程序会去直接矫正文档中的每个字体,但它不会对X终端在屏幕中的字体进行大范围调整,因为可能会导致不能接受的错误.
所以,应用程序只能使用X显示屏和"PostScript"语言都能"理解"的字体.实际应用中,要么使用"PostScript"字体(以*.pfa && *.pfb格式存在),要么使用TrueType字体(以*.ttf格式存在).应用程序无法解析X运作字体的方式,即不能直接调用X系统的字体,所以只能依靠自身提供字体服务或我们自己建立的字体目录.
为了能够在屏幕终端正常显示我们自己建立目录中的字体,并且再将它们注册给X系统,我们可有两种选择:
1.完全由用户自己来处理字体问题;
2.在AbiWord会话中,自动处理字体;
后者显然是开发人员的理想选择,然而有很多困难:
1.字体注册给X系统并不容易,导致自动处理进程fail;
2.类Unix系统中,在一种操作系统中运行正常的,不一定能在另一种操作系统中也正常;
3.AbiWord自动注册给X系统的字体也会在别的应用程序用呈现,这会给用户带来不便.
所以,我们只剩下第一个选择了!
WYSIWYG(what you see is what you get)文字处理程序的字体需求
AbiWord属此类文字处理程序,所以相应地,对字体要求会有所提高,即缩小了可应用于它的字体的范围.其特点如下:
1.矢量字体,即可塑
2.作为基于Unicode编码的程序,AbiWord需要处理比Linux提供的8-bit编码有更丰富符号的字体,以适应用户编辑多语言文档.这意味着,被纯8-bit程序使用的字体处理技术不能应用于AbiWord
3.考虑到目前大多文档由MS Office生成,而Windows提供了"Times New Roman","Arial"和"Courier New"等标准字体集,所以AbiWord自身也提供了这些字体集
添加/删除AbiWord字体
默认AbiWord字体目录为:
"/usr/share/AbiSuite*/fonts" or "/usr/local/AbiSuite*/fonts"
除非安装里自定义字体安装目录.没有该目录的也可建立一个,并添加/删除字体,只不过,字体限于"PostScript Type 1(*.pf{a,b})"和"True Type(*.ttf)".
也可以在"~/.AbiSuite/"目录下新建一个fonts文件夹,操作类似,注意一下权限而已.
增删基本操作
1.将字体文件放入.../fonts目录;
2.刷新字体:
代码: 全选
$sudo mkfontdir && $sudo mkfontscale
or
$sudo fc-cache -fv
*.pf{a,b}字体以及*.ttf字体的安装有点不同,下面详细说明一下.
pfa/pfb字体
pfa/pfb字体需要对应的afm文件的匹配,可能下载这种字体文件时就已经提供了;如果没有,AbiWord调用*.pfa/pfb字体时会自动生成afm文件,但前者是被AbiWord官方推荐的处理方式.
然后进入它们的字体目录,执行:
代码: 全选
$sudo apt-get install ttmkfdir
$sudo ttmkfdir && sudo fv-cache
//生成font.scale && font.dir文件
TTF字体(使用最多的字体类型)
说明:目前"GnomePrint"打印程序并不支持使用*.ttf字体文档的输出,若用了Gnome Build Framework编辑文档,需要通过支持所谓"Print Directly"的打印机输出文档.
为了能使AbiWord支持TrueType字体打印,需要满足两个条件:
1.X服务器有能力处理*.ttf字体; //这个显然满足
2."PostScript"解释器也有处理*.ttf字体的能力; //最新版"PostScript"语言支持,不过须在编译里加入,可参考./configure --help
满足以上两个条件后,可以执行如下步骤:
代码: 全选
$cd /usr/share/AbiSuite*/fonts
$sudo ln -s font_path foo.ttf && sudo ttmkfdir && sudo fc-cache
代码: 全选
$sudo ./ttfadmin.sh /usr/share/AbiSuite*/fonts ISO-8859-1
不过,新版AbiWord_2.4.6提供的deb包中没有包含这个脚本文件,找到的朋友可以上传到ubuntuftp服务器上.
最常见的问题:输入中文只显示小圆圈
这种情况的发生有两种可能:
1.所使用字体本身的问题;
2.键盘设置的问题;
要确定属哪种问题,可这样操作:
1.打开AbiWord程序,输入任意中文(显示为小圆圈),例如:我自己的世界;保存为*.abw格式;
2.用gedit文本编辑器打开该*.abw文件,会得到一篇有关AbiWord代码的文档;
3.找到"<p><c>...</c></p>"语句段,省略号的内容若能正常显示为"我自己的世界",则可确定为字体本身的问题,而这也是大多数人遇到的问题,否则为键盘设置问题.
解决它
AbiWord默认使用Linux/Unix通用的编码"ISO-8859-1(Latin 1)",而多数用户的locale设置为utf-8编码,所以解决第一类问题,就需要增删AbiWord默认提供的字体,而大多数情况下,AbiWord不提供任何字体,也即:需要用户自己增删字体.操作可参考本文档"增加/删除AbiWord字体"一节.
键盘设置一般重置为默认即可,特殊的需要使用"$xmodmap"命令自定义键盘映射.
中文locale用户更为简单的解决方法
直接在$(HOME)中的AbiWord下设置:
代码: 全选
$cd ~/.AbiSuite
$mkdir templates
$cp /usr/share/AbiSuite-2.4/templates/normal.awt-zh_CN ./
$cd templates
$gvim normal.awt-zh_CN
代码: 全选
:%s/\<Times New Roman\>/Microsoft YaHei/g
保存并退出vim.
这里你也可以使用gedit修改normal.awt-zh_CN文件.
而使用英文locale的用户,也可先复制normal.awt-en_*文件到$(HOME)的配置目录下,再进行类似修改.