[原创]AbiWord中的字体

系统字体配置、中文显示和输入法问题
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

[原创]AbiWord中的字体

#1

帖子 aBiNg » 2006-11-16 12:44

AbiWord最新版本是2.4.6,从2.4.5到2.4.6主要是fix了几个plugin的bug以及做了一些的额外的plugin包,例如:WML,XSL-FO and AbiCommand.只不过,对于Mac OSX and Linux用户,目前尚不能使用这些plugin;从它的Plugin Matrix来看,还是有一些实用插件的.有关详细更新细节可查看它的ChangeLog.

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
删除字体时,除了删除字体只须将位于font.dir && font.scale中的对应条目删除即可.家目录下的"~/.AbiSuite/fonts"增删操作类似.
*.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文件
注:Linux系统可能会自动生成font.dir文件,但font.scale文件则不会,所以在刷新字体时二者必须匹配好!

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
说明:$(LANG)后缀是ISO-8859-1(Linux/Unix通用的locale编码,其中1 byte=1 character)的尚须执行以下步骤:

代码: 全选

$sudo ./ttfadmin.sh /usr/share/AbiSuite*/fonts ISO-8859-1
用以生成*.afm && *.t42 && *.u2g字体文件.
不过,新版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
在command mode下(任何时候按一次esc即回到此模式),输入:

代码: 全选

:%s/\<Times New Roman\>/Microsoft YaHei/g
当然也可以选择别的字体,如:AR PL ZenKai Uni||AR PL ShanHeiSun Uni以替代Microsoft YaHei,原则是该字体必须支持中文全角字符.
保存并退出vim.
这里你也可以使用gedit修改normal.awt-zh_CN文件.
而使用英文locale的用户,也可先复制normal.awt-en_*文件到$(HOME)的配置目录下,再进行类似修改.
上次由 aBiNg 在 2006-11-18 10:54,总共编辑 2 次。
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#2

帖子 aBiNg » 2006-11-17 12:40

:roll:
AbiWord在轻量级Office(即非理工类学术论文等)中还是很好用的,有很多特性.
图片
附件
AbiWord_tools.png
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#3

帖子 eexpress » 2006-11-17 13:57

就是有paste的bug。 :lol:
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#4

帖子 aBiNg » 2006-11-17 18:08

eexpress 写了:就是有paste的bug。 :lol:
我的paste没有问题嘛,如何是个bug?
ee,说详细一点撒...

再说,即使有这个bug,也与我无关 :lol:
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2006-11-17 22:35

难道你的没问题?编译版本?
官方的bug列表一直都有,就是只能不带格式的粘贴,ctrl-.的那种。常规的ctrl-v的粘贴,中文(亚洲字体都是)完全乱码。2.4.5的版本。
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#6

帖子 aBiNg » 2006-11-18 9:45

eexpress 写了:常规的ctrl-v的粘贴,中文(亚洲字体都是)完全乱码。2.4.5的版本。
不管是"ctrl-c + ctrl-v"组合粘贴,还是鼠标右键的"复制 + 粘贴"都没有问题的.
有些复杂格式的文本粘贴会有"bug",即粘贴前后的格式会有出入.但这个我觉得不是个别文字处理程序的bug吧,这应当是程序与程序之间的兼容问题,不是单方面的bug.
中文乱码,只要字体设置正确(我用YaHei),我目前尚未碰到过.

ee的所谓"常规粘贴"是指什么呢? :roll:
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2006-11-18 10:14

就是带格式的粘贴,就是右键菜单的“粘贴”或者ctrl-v。

你的什么版本。2.4.x???
我的缺省目录是~/.AbiSuite。你上面怎么是~/.Abiword/?

下面的官方bug列表。很多。我选了2个。
http://bugzilla.abisource.com/show_bug.cgi?id=8468

http://bugzilla.abisource.com/show_bug.cgi?id=1462

http://bugzilla.abisource.com/buglist.c ... tent=paste
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#8

帖子 aBiNg » 2006-11-18 11:01

"~/.AbiSuite",笔误! :lol:
忘了说了,我用的是2.4.6,从官方提供的deb包直接安装的.

#8468有关写入AbiWord时是小圆圈的问题,当是字体的问题.bug报告人使用的是2.2.3的版本呢还是.我的locale和他的一样,现没有这个问题了,如果字体设置正确的话.

#1462的中文bug,至少在2.4.6版本中没有的呢.而且据下面的回帖,也可能是个例吧... :roll:
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#9

帖子 eexpress » 2006-11-18 22:34

早说阿。
以前老是看到abiword-2.4.5.x86.package。
今天听你这么说,才看了下file server,还真是有ubuntu的包。
http://www.abisource.com/downloads/abiw ... untu/6.10/
下载慢死了。等下测试。如果好了,最好进源。
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2006-11-18 22:41

乱码,2头的是ctrl-v出来的。
附件
screenshot-2006-11-18-22-44-51.png
screenshot-2006-11-18-22-44-51.png (9.79 KiB) 查看 7882 次
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#11

帖子 aBiNg » 2006-11-20 13:44

ee:

瑕不掩瑜! :lol:

再记:我始终没有出现你说的情况呢。。。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#12

帖子 eexpress » 2006-11-20 14:45

这个是唯一阻止我使用abi的哦(还有一种保存乱码的情况)。其实abi的排版等都很好的。
● 鸣学
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#13

帖子 aBiNg » 2006-11-21 12:54

eexpress 写了:这个是唯一阻止我使用abi的哦(还有一种保存乱码的情况)。其实abi的排版等都很好的。
找资料找得晕头转向的,我已尽我所能了,实在搞不定这个问题;
仅这个post,我还写了三天呢。。。汗! :shock:
头像
syhan
帖子: 272
注册时间: 2006-09-06 12:24
来自: Southeast University

#14

帖子 syhan » 2006-12-08 22:49

靠,怎么我的中文还是小圆圈
awesome + stalonetrayer + urxvt + rox-filer + feh + SLiM
头像
jupengfei
帖子: 1258
注册时间: 2006-10-31 11:02
来自: Beijing

#15

帖子 jupengfei » 2007-02-09 8:17

.......
上次由 jupengfei 在 2008-08-06 9:31,总共编辑 1 次。
回复