顽石's Blog

Happy coding

linux mint 安装CJK字体

1、首先确保已经安装了latex和latex-cjk

sudo apt-get install texlive-full latex-beamer dvipdfmx

sudo apt-get install latex-cjk-all

2、安装fontforge用于生成字体:

sudo apt-get install fontforge

生成字体前,请自己准备你需要生成的字体文件:simsun.ttc,simhei.ttf等,这里以simsun.ttc(宋体)为例。
准备好后下载下面这个包,解压到一个地方,如自己的主目录~/backup/setup/font:

http://code-of-tualatrix.googlecode.com/files/font.tar.bz2

然后将以下代码复制下来,做成Python文件放在~/backup/setup/目标下面

import os
import sys
import glob

filename = sys.argv[1] 
fontname = sys.argv[2]

os.chdir("./font")
for i in glob.glob("*"):
	os.system("cp %s ../%s"%(i,i))
os.chdir("./..")

os.system("fontforge -script subfonts.pe %s %s Unicode.sfd"%(filename, fontname))

open("makemap","w").write('''
for i in *.tfm
do
cat >> %s.map << EOF
${i%%.tfm} ${i%%.tfm} < ${i%%.tfm}.pfb
EOF
done
'''%(fontname))

os.system("sudo chmod +x makemap")
os.system("./makemap")

open("c70%s.fd"%(fontname),"w").write('''
\ProvidesFile{c70%s.fd}
\DeclareFontFamily{C70}{%s}{\hyphenchar \\font\m@ne}
\DeclareFontShape{C70}{%s}{m}{n}{<-> CJK * %s}{}
\DeclareFontShape{C70}{%s}{bx}{n}{<-> CJKb * %s}{\CJKbold}
\endinput
'''%(fontname,fontname,fontname,fontname,fontname,fontname))

os.system("mkdir -p ~/.texmf-var/fonts/map/dvips/CJK")
os.system("mkdir -p ~/.texmf-var/fonts/tfm/CJK/%s"%(fontname))
os.system("mkdir -p ~/.texmf-var/fonts/type1/CJK/%s"%(fontname))
os.system("mkdir -p ~/.texmf-var/tex/latex/CJK/UTF8")

os.system("cp ./%s.map ~/.texmf-var/fonts/map/dvips/CJK"%(fontname))
os.system("cp ./*.tfm ~/.texmf-var/fonts/tfm/CJK/%s"%(fontname))
os.system("cp ./*.pfb ~/.texmf-var/fonts/type1/CJK/%s"%(fontname))
os.system("cp ./c70%s.fd ~/.texmf-var/tex/latex/CJK/UTF8"%(fontname))

os.system("sudo texhash")
os.system("updmap --enable Map %s.map"%(fontname))

for i in glob.glob("*"):
	if i != "font" and i != filename and i != sys.argv[0]:
		os.system("rm -r %s"%(i))

然后进入~/backup/setup执行:

python 脚本名 ttf字体文件名 自己命名的字体名 (such as "python script.py simsun.ttc song")

并修改/var/lib/texmf/web2c/updmap.cfg,在文件的最后加入

Map song.mp

最后执行

sudo updmap

sudo mktexlsr