LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1146|回复: 7

defoma 无法生成核心字体配置文件

[复制链接]
发表于 2006-5-5 18:48:13 | 显示全部楼层 |阅读模式
Debian sid, up to date,

这两天突然发现 emacs-snapshot-gtk 在 X 里中文都显示为方框,但是可以输入,当然,输入的中文也显示为方框。

libfontenc1是按照 #362722 的 bugreport 重新编译过的。

$ strings /usr/lib/libfontenc.so.1 | grep encoding
/usr/share/fonts/X11/encodings/encodings.dir

发现X的核心字体中,所有的中文字体都不见了
$ xlsfonts '*gbk*'
xlsfonts: pattern "*gbk*" unmatched

用 defoma 重新生成 fonts.dir 也没有用:
#defoma-font reregister-all /etc/defoma/hints/ttf-arphic-ukai.hints &&  \
wc -l /var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/fonts.dir
1 /var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/fonts.dir

就像这里说的一样,用 ttmkfdir 也不能产生有 gbk 编码的 fonts.dir.这样指定 encoding.dir 也不成:
ttmkfdir -o fonts.scale -e /usr/share/fonts/X11/encodings/encodings.dir

大家有没有相似的情况?有办法么?
常用的核心字体程序就 Emacs,这两天想写文章了,却发现这个问题。
发表于 2006-5-5 20:25:30 | 显示全部楼层
新版本的 libfontenc 路径已经基本对了。我建立了目录:
/usr/share/fonts/X11/fonts
然后到里面做了个链接:
cd /usr/share/fonts/X11/fonts
ln -s ../encodings ./
就OK了!

----
重建 libfontenc
1. apt-get source libfontenc
2. cd libfont*
3. EDIT debian/rules
其中
         --with-encodingsdir=${datadir}/X11/fonts/encodings \
一行改为
         --with-encodingsdir=\$${datadir}/fonts/X11/encodings \
4. sudo dpkg-buildpackage -us -uc
5. sudo dpkg -i ../libfontenc*.deb
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-5 21:21:12 | 显示全部楼层
是啊,我之前就是重新编译 libfontenc1 搞好的。但是现在 libfontenc1 里的 encoding,dir 设置是对的啊。
你现在 xlsfonts 能找到中文字体么?

BTW,你的 blog 挺不错的。8-)
回复 支持 反对

使用道具 举报

发表于 2006-5-5 22:37:44 | 显示全部楼层
Post by chaisave
是啊,我之前就是重新编译 libfontenc1 搞好的。但是现在 libfontenc1 里的 encoding,dir 设置是对的啊。
你现在 xlsfonts 能找到中文字体么?

BTW,你的 blog 挺不错的。8-)

我上面贴的是我搜集的直接贴出来的。
是两个部分,下面的部分是原来的解决办法,我自己编译安装,可是后来一dist-upgrade发现它又给我升级给替换掉了,每次都自己编译,麻烦,我解开看了看他的路径,然后就直接用链接的办法解决的,也就是下面部分。
我现在xlsfonts 能够正确列出中文字体,不过我是没有*gbk*的,都是*gb2312*。我记得我的系统以前也列不错gbk,而且好像Emacs自己不能处理gbk?

谢谢!blog 新做的。呵呵!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-7 13:27:14 | 显示全部楼层
谢谢,我现在用 emacs -nw 过日子了。Emacs 和 gbk 字体不能列出没关系,况且 Emacs 是支持 gbk 编码的。这是因为系统里面根本就没有 gbk 核心字体的配置文件(fonts.dir)。
后来我用
defoma-app -v update x-ttcidfont-conf truetype

看了一下,它的输出信息里有注册 gbk 字体的提示,
Registering -arphic-ar_pl_zenkai_uni-medium-i-normal--0-0-0-0-p-0-gbk-0..

但是 fonts.dir 就是原封不动。最后还显示
opendir: No such file or directory

等有空再研究一下。
回复 支持 反对

使用道具 举报

发表于 2006-5-7 14:02:02 | 显示全部楼层
Post by chaisave
谢谢,我现在用 emacs -nw 过日子了。Emacs 和 gbk 字体不能列出没关系,况且 Emacs 是支持 gbk 编码的。这是因为系统里面根本就没有 gbk 核心字体的配置文件(fonts.dir)。
后来我用

看了一下,它的输出信息里有注册 gbk 字体的提示,

但是 fonts.dir 就是原封不动。最后还显示

等有空再研究一下。

gbk 和 gb2312 是不一样的吧?
回复 支持 反对

使用道具 举报

发表于 2006-5-8 11:12:19 | 显示全部楼层
我觉得是xorg的问题,之前我改过libfontenc以后emacs-snapshot-gtk 和xmms都能正常显示中文,但升级xorg到7.0.17之后就发现emacs里的中文变成方格了,xmms那里则是乱码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-8 12:21:17 | 显示全部楼层
gbk 和 gb2312 是不一样的吧?
哦,我拷贝错了。呵呵。

Anakin:
嗯。你分析得有道理。我现在用的是 pcf 格式的中文点阵字体,你不妨先用着。
另外,我昨天用 gdb 跟了一下
ttmkfdir -d fonts -o /tmp/fonts.dir -e /usr/share/fonts/X11/encodings/encodings.dir -c
的源程序,发现它的确读到了 gbk 的 encoding,但是在输出 fonts.dir 的时候就没有 gbk 的信息了。ttmkfdir 中间每读到一个 encoding.dir,都会调用 flex 生成 parser.cpp:yylex 来分析 encoding.dir,那段程序实在没力气跟了。有一点很奇怪, gbk 的 encoding 信息是放在 gbk-0.enc.gz 里面的, ttmkdir 竟然直接把这个没有解压的文件传给了 parser.cpp。而 parser.cpp 还乖乖地分析它,真是匪夷所思。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表