免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1719 | 回复: 2
打印 上一主题 下一主题

[NetBSD] NetBSD 下 teTeX3 中文 UTF8 字体生成脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-14 15:19 |只看该作者 |倒序浏览
参考内含子的脚本:

http://groups.google.com/group/c ... 23/55245e3db2f80035

默认安装到 ~/texmf 目录下,注意如果以前没有 ~/texmf/web2c/updmap.cfg,需要从 /usr/pkg/share/texmf/web2c/updmap.cfg 拷过来。


  1. #!/bin/sh
  2. #
  3. # Origin By Edward G.J. Lee 2001.11.25
  4. # http://www.study-area.org/tips/latex/pdftex.html
  5. # This code is Public Domain.
  6. #
  7. # Enhanced by intron@intron.ac, 2006.1.9
  8. # Modified for NetBSD by jungle@soforge.com, 2006.1.14

  9. if [ $# -ne 3 ]
  10. then

  11.   cat << EOF
  12. Usage: `basename $0` font.ttf <TeX_Internal_Font_Name> <Tex_Font_Name>
  13.   <TeX_Internal_Font_Name>: Used to name *.enc, *.afm, *.pfb, *.tfm & *.map
  14.   <Tex_Font_Name>: Used in TeX source:   \CJKencfamily{UTF8}{Tex_Font_Name}

  15.   An example:  `basename $0`  gbsn00lp.ttf gbsn00lp songpt1

  16. EOF

  17.   exit 1
  18. fi

  19. if ! which ttf2pt1; then
  20.   echo "Please install port print/ttf2pt1 before you can run me."
  21.   exit 1
  22. fi

  23. if ! which t1asm; then
  24.   echo "Please install port print/ttf2pt1 or print/dvipsk-tetex before you can run me."
  25.   exit 1
  26. fi

  27. if ! which afm2tfm; then
  28.   echo "Please install port print/dvipsk-tetex before you can run me."
  29.   exit 1
  30. fi

  31. if ! which extconv; then
  32.   echo "Please install port chinese/CJK before you can run me."
  33.   exit 1
  34. fi


  35. cat <<EOF
  36. ***************************************************************************
  37. * Please confirm that current working directory is EMPTY except scripts   *
  38. * and HAS ENOUGH SPACE to contain so many intermediate files.             *
  39. * If it is not empty, this script may DAMAGE INNOCENT FILES!!!            *
  40. ***************************************************************************
  41. EOF

  42. read -p "Go ahead?[n]" a

  43. if [ "$a" != "y" ] && [ "$a" != "Y" ]; then
  44.   exit 0       
  45. fi

  46. FONTFILENAME="$1"
  47. FONTNAME="$2"
  48. FONTTEXNAME="$3"

  49. TEXMFHOME=`kpsexpand '$TEXMFHOME'`
  50. ENCDIR=${TEXMFHOME}/fonts/enc/dvips/local/${FONTNAME}
  51. AFMDIR=${TEXMFHOME}/fonts/afm/local/${FONTNAME}
  52. TFMDIR=${TEXMFHOME}/fonts/tfm/local/${FONTNAME}
  53. PFBDIR=${TEXMFHOME}/fonts/type1/local/${FONTNAME}
  54. MAPDIR=${TEXMFHOME}/fonts/map/dvips/local

  55. #This is a hack.
  56. #UPDMAPCFG=`kpsewhich -format 'web2c files' updmap.cfg`
  57. UPDMAPCFG=${TEXMFHOME}/web2c/updmap.cfg

  58. CJKDIR=${TEXMFHOME}/tex/latex/CJK/UTF8

  59. INSTALLDIRMODE="-m 0755"
  60. INSTALLMODE="-m 0644"

  61. FONTFILEBASENAME=`basename "$FONTFILENAME"`
  62. FDNAME=c70${FONTTEXNAME}.fd

  63. #MAPFILE=/usr/local/share/ttf2pt1/maps/cugb.map
  64. PLANENUM=255

  65. # Initialize ${FONTNAME}.map
  66. echo -n "" > ${FONTNAME}.map


  67. n=0

  68. echo "Generating subfonts from plane $n to plane $PLANENUM ..."

  69. while [ $n -le $PLANENUM ]
  70. do
  71.   m=`printf %02x $n`
  72.   
  73.   echo -n "[$n]"
  74.   
  75.   SUBFONTNAME=${FONTNAME}${m}
  76.   
  77.   # Generate *.t1a *.afm *.enc
  78.   #ttf2pt1 -GAE -pft -OHUBs -W0 -L $MAPFILE+$n "$FONTFILENAME" ${FONTNAME}${m}
  79.   ttf2pt1 -GAE -pft -OHUBs -W0 -l plane+pid=3,eid=1,0x$m "$FONTFILENAME" ${SUBFONTNAME}
  80.   
  81.   # avoid dvips(k)(before v5.86) t1part module bug.
  82.   perl -pi -e 's/_/Z/g' ${SUBFONTNAME}.t1a ${SUBFONTNAME}.afm

  83.   # Generate *.pfb
  84.   t1asm -b ${SUBFONTNAME}.t1a > ${SUBFONTNAME}.pfb 2>/dev/null
  85.   
  86.   # Generate *.tfm
  87.   afm2tfm ${SUBFONTNAME}.afm > /dev/null
  88.   
  89.   # Generate ${FONTNAME}.map
  90.   echo "${SUBFONTNAME} `grep -m 1 -i fontname ${SUBFONTNAME}.afm | sed -e 's/^[[:space:]]*[^[:space:]]\\{1,\\}[[:space:]]\\{1,\\}\\([^[:space:]]\\{1,\\}\\)[[:space:]]*\$/\\1/'` <${SUBFONTNAME}.pfb" >> ${FONTNAME}.map

  91.   n=`expr $n + 1`
  92. done

  93. echo

  94. cat > ${FDNAME} << EOF
  95. % This file is automatically generated by `basename $0`
  96. \\def\\fileversion{0.0.1}
  97. \\def\\filedate{`date +%Y/%m/%d`}
  98. \\ProvidesFile{${FDNAME}}[\\filedate\\space\\fileversion]

  99. \\DeclareFontFamily{C70}{${FONTTEXNAME}}{\\hyphenchar \\font\\m@ne}

  100. \\DeclareFontShape{C70}{${FONTTEXNAME}}{m}{n}{<-> CJK * ${FONTNAME}}{}
  101. \\DeclareFontShape{C70}{${FONTTEXNAME}}{bx}{n}{<-> CJKb * ${FONTNAME}}{\\CJKbold}

  102. \\endinput
  103. EOF


  104. #exit 0;

  105. echo
  106. echo "Installing ..."

  107. install -d $INSTALLDIRMODE $ENCDIR $AFMDIR $TFMDIR $PFBDIR $MAPDIR $CJKDIR

  108. n=0
  109. while [ $n -le $PLANENUM ]
  110. do
  111.   m=`printf %02x $n`
  112.   echo -n "[$n]"

  113.   install $INSTALLMODE ${FONTNAME}${m}.enc $ENCDIR
  114.   install $INSTALLMODE ${FONTNAME}${m}.afm $AFMDIR
  115.   install $INSTALLMODE ${FONTNAME}${m}.tfm $TFMDIR
  116.   install $INSTALLMODE ${FONTNAME}${m}.pfb $PFBDIR

  117.   n=`expr $n + 1`
  118. done

  119. echo

  120. install $INSTALLMODE ${FONTNAME}.map $MAPDIR
  121. install $INSTALLMODE $FDNAME $CJKDIR

  122. echo >> $UPDMAPCFG
  123. echo "Map ${FONTNAME}.map" >> $UPDMAPCFG

  124. mktexlsr

  125. #updmap-sys
  126. updmap

  127. read -p "Do you want remove all intermediate files?[n]" a
  128. if [ "$a" = "y" ] || [ "$a" = "Y" ]; then

  129.   n=0
  130.   while [ $n -le $PLANENUM ]
  131.   do
  132.     m=`printf %02x $n`
  133.     echo -n "[$n]"
  134.   
  135.     rm -f ${FONTNAME}${m}.enc ${FONTNAME}${m}.afm ${FONTNAME}${m}.t1a ${FONTNAME}${m}.pfb ${FONTNAME}${m}.tfm
  136.   
  137.     n=`expr $n + 1`
  138.   done

  139.   echo
  140.   
  141.   rm -fv $FDNAME ${FONTNAME}.map
  142. fi

  143. echo
  144. echo "OK, all done. :-)"
  145. echo

复制代码

论坛徽章:
0
2 [报告]
发表于 2006-01-15 16:44 |只看该作者
为什么不做成PKGSRC呢?

论坛徽章:
0
3 [报告]
发表于 2006-01-16 14:14 |只看该作者
原帖由 assiss 于 2006-1-15 16:44 发表
为什么不做成PKGSRC呢?


你来做吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP