+ -
当前位置:首页 → 问答吧 → 请教ginkgo关于cjk字体的生成与安装(已完成,感谢ginkgo大哥!)

请教ginkgo关于cjk字体的生成与安装(已完成,感谢ginkgo大哥!)

时间:2009-02-28

来源:互联网

首先非常感谢你提供的脚本,关于createlatexfont.sh,我在使用它的时候,还有些疑问:
在运行createlatexfont.sh脚本后(用simsun.ttf测试),/tmp目录下生成了相应的字体文件夹simsun-0.6.26,package-simsun,以及相应字体的 .tgz包tetex-cjk-simsun-0.6.26-i486-1.tgz,而此时用pkgtool安装.tgz包并不能把生成字体安装到/usr/share/texmf/fonts下的相应目录(这个包是用来安装的,还是仅仅保存生成的字体?),也看不出有安装任何东西的迹象.(我的系统是slackware12.0)

请问ginkgo,是不是需要自己把生成的各种字体文件移动到相应位置?还是我没正确掌握使用createlatexfont.sh脚本的方法?
另外"在tex文件中使用的字体名,是在fd文件中定义的。"这句话是这个意思吗,比如我用simsun.ttf生成的字体名为simsun,在tex中用这种字体时,应写作{simsun}吗?

作者: evesea   发布时间: 2009-02-28

才看到你的帖子,我是用文泉驿和方正的字体。simsun我没有测试。其中的版本号是字体的版本号。
代码:
# begin to generate the unicode type1 fonts

echo "generate the type1 font $FONTFILE, this will take a long time."
fontforge -script $CWD/$FONTSCRIPT $CWD/$FONTFILE $FONTN $CWD/$SFDFILE
这个就是最主要的一句话。就是用fontforge从ttf生成tfm的type1字体。

下面的就是生成fd文件, 同时把生成的字体放到相应的目录下。
简单打包。
代码:
cat > c70$FONTN.fd << EOF
就是开始生成fd文件。${FONTN}就是用来保存字体名字的。如果你仔细看脚本的话。
上面的map文件,你vi一下就明白了。

如果你要判断是不是生成好的话,就在/tmp/package-font 下面查看有没有相应的字体生成。
相应的目录你看一下脚本。
slackware的安装是非常简单的。就是很简单的复制。我一般用Installpkg。
如果还不行的话。换一个字体看看。

hope can help you.

作者: ginkgo   发布时间: 2009-02-28

我中午跑了一下。用的是xp的simsun.ttc 没有问题。要用fontforge,你可以到robby的网站上下载。

我把脚本写给你。

脚本到原来的帖子下载。我把原来的一个现在分成2个。一个用来生成字体。一个用来打包。
大家注意看readme

作者: ginkgo   发布时间: 2009-02-28

其实那个脚本我是认真看过的,不过对shell方面认识尚浅,有些细节还不太清楚,
我从中学到(或将学到)不少!
非常感谢你的帮助!
通过一段零零星星的时间的了解,相信今晚能够让它编辑汉语了!然后毕业论文就可以用它了!

作者: evesea   发布时间: 2009-02-28

引用:
作者: evesea
其实那个脚本我是认真看过的,不过对shell方面认识尚浅,有些细节还不太清楚,
我从中学到(或将学到)不少!
非常感谢你的帮助!
通过一段零零星星的时间的了解,相信今晚能够让它编辑汉语了!然后毕业论文就可以用它了!
如果楼上仅仅是为了编辑汉语而不是由什么特殊需求的话

建议用texlive2008里的xetex,可以使用系统里自带的ttf&otf字体

作者: SWX   发布时间: 2009-03-01

引用:
作者: SWX
如果楼上仅仅是为了编辑汉语而不是由什么特殊需求的话

建议用texlive2008里的xetex,可以使用系统里自带的ttf&otf字体
以为马上就会搞好的呢,没想到测试文件中汉字竟显示不出来,都是黑块...
还在找原因...

我打算用latex编辑论文啊试卷啊之类,特别是数学式子比较多时,
用Asc码直接写比较有效率.
如果现在把字体弄好了也就没问题了,如果真不行再考虑换texlive,
顺便问问,有什么特殊要求xetex不能满足吗?

作者: evesea   发布时间: 2009-03-01

@evesea
如果你急用的话,我可以把打包好的email给你。

texlive也有脚本可以用,不过很大。一般的都有1G左右。
测试文件
代码:
\documentclass[a4paper,11pt]{article}
\usepackage{CJKutf8}
\usepackage{CJKfntef}

\begin{document}
\begin{CJK}{UTF8}{mssong}
你好! 这是一个测试CJK UTF8编码的测试文件。

中文下面的修饰\CJKunderdot{加点}\CJKunderline{加下划线}

$ e=mc^2 $
\end{CJK}
\end{document}
上传的图像
cjk-basic.pdf (32.1 KB, 8 次查看)

作者: ginkgo   发布时间: 2009-03-01

嗯,好的,麻烦你了,我的邮箱: [email protected]
先拿你的用着,再慢慢找现在用不成的原因.
下面是我的一些情况:

1.测试文件chinese.tex:
\documentclass{article}
\usepackage{CJKutf8}
\usepackage{CJKfntef}
\begin{document}
\begin{CJK}{UTF8}{simsun}
汉语
\end{CJK}
\end{document}

2.生成chinese.dvi的信息:(汉字在kdvi中显示为黑块)
slackboy@slackboy:~/Documents/software/office/tex/font-make$ latex ~/texfile/chinese.tex
This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
(/home/slackboy/texfile/chinese.tex
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
kish, ukrainian, nohyphenation, loaded.
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size10.clo))
(/usr/share/texmf/tex/latex/CJK/CJKutf8.sty
(/usr/share/texmf/tex/latex/oberdiek/ifpdf.sty)
(/usr/share/texmf/tex/latex/base/inputenc.sty
(/usr/share/texmf/tex/latex/base/utf8.def
(/usr/share/texmf/tex/latex/base/t1enc.dfu)
(/usr/share/texmf/tex/latex/base/ot1enc.dfu)
(/usr/share/texmf/tex/latex/base/omsenc.dfu)))
(/usr/share/texmf/tex/latex/CJK/CJK.sty
(/usr/share/texmf/tex/latex/CJK/mule/MULEenc.sty)
(/usr/share/texmf/tex/latex/CJK/CJK.enc))
(/usr/share/texmf/tex/latex/base/fontenc.sty))
(/usr/share/texmf/tex/latex/CJK/CJKfntef.sty
(/usr/share/texmf/tex/latex/CJK/CJKulem.sty
(/usr/share/texmf/tex/latex/ulem/ulem.sty))) (./chinese.aux)
(/usr/share/texmf/tex/latex/CJK/UTF8/UTF8.bdg)
(/usr/share/texmf/tex/latex/CJK/UTF8/UTF8.enc)
(/usr/share/texmf/tex/latex/CJK/UTF8/UTF8.chr)
(/usr/share/texmf/tex/latex/CJK/UTF8/c70simsun.fd) [1] (./chinese.aux) )
Output written on chinese.dvi (1 page, 316 bytes).
Transcript written on chinese.log.
slackboy@slackboy:~/Documents/software/office/tex/font-make$

3.dvi文件转换为pdf文件的信息:
slackboy@slackboy:~/Documents/software/office/tex/font-make$ dvipdf ~/texfile/chinese.dvi
dvips: Font simsun7b not found, characters will be left blank.
dvips: Font simsun50 not found, characters will be left blank.
dvips: Font simsun6c not found, characters will be left blank.
dvips: Font simsun6e not found, characters will be left blank.
dvips: Font simsun6c not found, characters will be left blank.
dvips: Font simsun8b not found, characters will be left blank.
slackboy@slackboy:~/Documents/software/office/tex/font-make$

4.我的一些文件信息
< 1> ~/.bashrc
export LANG=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
export XMODIFIERS="@im=fcitx"
<2>生成字体,与安装字体应该都很正常,文件都复制到相应的目录下了.

作者: evesea   发布时间: 2009-03-01

特殊要求例如beamer(一个制作幻灯片的文档类型)暂时不能和xelatex共存

如果没有特殊要求的话,中文处理现在基本上是xetex主流了。

作者: SWX   发布时间: 2009-03-01

引用:
作者: SWX
特殊要求例如beamer(一个制作幻灯片的文档类型)暂时不能和xelatex共存

如果没有特殊要求的话,中文处理现在基本上是xetex主流了。
喔,这样啊.
先试试ginkgo的包.

作者: evesea   发布时间: 2009-03-01

刚刚发现,dvi文件用xdvi可以显示汉字了!
但是用kdvi看是黑块,生成pdf也没有汉字出现.

作者: evesea   发布时间: 2009-03-01

引用:
作者: SWX
特殊要求例如beamer(一个制作幻灯片的文档类型)暂时不能和xelatex共存

如果没有特殊要求的话,中文处理现在基本上是xetex主流了。
咦?我的 beamer 就是拿 xelatex 做的啊…… (TexLive 2008)

作者: grissiom   发布时间: 2009-03-01

汉字是用metafont在后台生成的。如果要用kdvi看汉字,可能需要设置你的tex路径

作者: SWX   发布时间: 2009-03-01

引用:
作者: grissiom
咦?我的 beamer 就是拿 xelatex 做的啊…… (TexLive 2008)
是么?你处理了汉字了么?

我记得在ctex上有人说beamer不支持汉字的,然后他不得不用CJK来做的……

作者: SWX   发布时间: 2009-03-01

beamer 和 xetex 有些地方不兼容。
texlive太大了。在slackware13里有很大可能,有其他来替换tetex.

作者: ginkgo   发布时间: 2009-03-01

tetex cjk extension (core package)
打包好的,请看附件。
请注意要把tar.gz 改成 tgz
下面是脚本。

代码:
#!/bin/bash

# this is a simple script to pack the latex cjk extension
# for the slackware tetex

NAME=cjk
VERSION=4.8.2
ARCH=${ARCH:-i486}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$NAME
CJKDIR=$PKG/usr/share/texmf/tex/latex/CJK
#SFDDIR=$PKG/usr/share/texmf/fonts/sfd
OUTPUT=${OUTPUT:-/tmp}

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
mkdir -p $CJKDIR
#mkdir -p $SFDDIR

cd $TMP
rm -rf $NAME-$VERSION
tar xzvf $CWD/$NAME-$VERSION.tar.gz
cd $NAME-$VERSION
cp -a texinput/* $CJKDIR

cd $PKG
chown -R root:root .

makepkg -l y -c n $OUTPUT/tetex-$NAME-$VERSION-$ARCH-$BUILD$TAG.tgz
上传的附件
tetex-cjk-4.8.2-i486-1_SBo.tar.gz (94.1 KB, 1 次查看)

作者: ginkgo   发布时间: 2009-03-01

关键问题是tetex实在太老了,06年就不更新了

texlive自带了CJk,自带了两款CJK字体。如果按teTeX scheme安装的话,也就不到1g,对现在的硬盘来说,完全是小case....

作者: SWX   发布时间: 2009-03-01

引用:
作者: ginkgo
tetex cjk extension (core package)
打包好的,请看附件。
请注意要把tar.gz 改成 tgz
下面是脚本。

代码:
#!/bin/bash

# this is a simple script to pack the latex cjk extension
# for the slackware tetex

NAME=cjk
VERSION=4.8.2
ARCH=${ARCH:-i486}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$NAME
CJKDIR=$PKG/usr/share/texmf/tex/latex/CJK
#SFDDIR=$PKG/usr/share/texmf/fonts/sfd
OUTPUT=${OUTPUT:-/tmp}

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
mkdir -p $CJKDIR
#mkdir -p $SFDDIR

cd $TMP
rm -rf $NAME-$VERSION
tar xzvf $CWD/$NAME-$VERSION.tar.gz
cd $NAME-$VERSION
cp -a texinput/* $CJKDIR

cd $PKG
chown -R root:root .

makepkg -l y -c n $OUTPUT/tetex-$NAME-$VERSION-$ARCH-$BUILD$TAG.tgz
installpkg *Bo.tgz 后,还是老问题!郁闷!肯定是以前安装时把某些文件搞乱了...

作者: evesea   发布时间: 2009-03-02

我发了两个文件给你。你把以前的都卸载了。
代码:
ls /var/log/packages | grep tetex
把里面的包都卸载了。这个时候 /usr/share/texmf文件夹可以删掉了。
然后重新装一些tetex。

作者: ginkgo   发布时间: 2009-03-02

引用:
作者: ginkgo
我发了两个文件给你。你把以前的都卸载了。
代码:
ls /var/log/packages | grep tetex
把里面的包都卸载了。这个时候 /usr/share/texmf文件夹可以删掉了。
然后重新装一些tetex。
嗯好,我刚才才查看邮箱.
.....
ginkgo,你来看看我有哪个步骤少了:
<1>卸载掉 /var/log/packages/ 下的与tex有关的包
<2>删掉/usr/share/texmf目录以及所有子目录以及文件(/usr/share/texmf-var之类的没有删,有影响吗?)
<3>安装tetex3.0及其doc包 ,tetex-cjk*Bo.tgz,以及汉字包tetex*mssong*
现在的机子上:
root@slackboy:/home/slackboy/Documents/software/office/tex# ls /var/log/packages | grep tetex
tetex-3.0-i486-5
tetex-cjk-4.8.2-i486-1_SBo
tetex-cjk-mssong-1.00-i486-1
tetex-doc-3.0-i486-5

然后以下面的文件测试,xdvi显示正常,但kdvi下仍显示成黑块.(不会因为我的是slackware12.0吧?)
\documentclass{article}
\usepackage{CJKutf8}
\usepackage{CJKfntef}

\begin{document}

\begin{CJK}{UTF8}{mssong}

汉语

\end{CJK}
\end{document}

作者: evesea   发布时间: 2009-03-02

现在可以生成带汉语的pdf文件了!
原来是我以前用命令不当,以前都是先latex chinese.tex,然后用dvipdf chinese.dvi
刚刚重新看ginkgo的贴,才想到用dvipdfm chinese.dvi生成pdf文件,结果能够显示了!
在次感谢ginkgo以及在此提出建议的朋友!
感谢这么长时间一来ginkgo不厌其烦的给予我帮助!

作者: evesea   发布时间: 2009-03-03

tetex还真是够老的,居然连dvipdfmx都没有

作者: SWX   发布时间: 2009-03-03

实际上在我的slackware 12.2 中 dvipdf也是同样管用的。
dvipdfmx 没有是比较遗憾,但是基本的功能slackware中的还是全的。

如果有人要用texlive我这也有脚本。但是缺点就是太大了。还有用slackware的
包管理起来比较麻烦。卸载后如果不熟悉,会有很多临时文件。

希望slackware 13中会有一个比较好的替换方案。
只不过基本常用的功能都有了。

作者: ginkgo   发布时间: 2009-03-04