#!/usr/local/bin/bash # $Id: VTPSfont,v 1.3 1999/08/10 03:55:06 taoka Exp $ CREATOR="VTPSfont version 1.0 by Keiichi Sakai" DATE="`date`" #FONTDIR="/usr/share/work/Graphic/gs5.10/dl-kanji/fonts" FONTDIR=$1 NORMAL=$2 VF_NAME=$3 DST=$4 FONTMAP=$5 UniqueID=$6 StrokeWidth=15 Roman="Roman" Hiragana="Hiragana" Katakana="Katakana" Hankaku="Hankaku" PT2S() { local PaintType="$1" if [ "${PaintType}" = 1 ];then echo -n "Hollow" elif [ "${PaintType}" = 3 ];then echo -n "Shadow" fi } RootFontNormal="[1 0 0 1 0 0]" RootFontOblique="[1 0 0.25 1 0 0]" RootFontLefty="[1 0 -0.25 1 0 0]" RFM2S() { local RootFontMatrix="$1" if [ "${RootFontMatrix}" = "${RootFontOblique}" ];then echo -n "Oblique" elif [ "${RootFontMatrix}" = "${RootFontLefty}" ];then echo -n "Lefty" fi } WM2S() { local WMode=$1 if [ "${WMode}" = "0" ];then echo -n "H" else echo -n "V" fi } JISFONTDIR=${FONTDIR}/Type0 RKSJFONTDIR=${FONTDIR}/Type0-RKSJ #RomanFONTDIR=${FONTDIR}/Type3.${Roman} #HiraganaFONTDIR=${FONTDIR}/Type3.${Hiragana} #KatakanaFONTDIR=${FONTDIR}/Type3.${Katakana} #HankakuFONTDIR=${FONTDIR}/Type3.${Hankaku} mkdir -p ${JISFONTDIR}-H ${JISFONTDIR}-V #mkdir -p ${RKSJFONTDIR}-H ${RKSJFONTDIR}-V #mkdir -p ${RomanFONTDIR} ${HiraganaFONTDIR} ${KatakanaFONTDIR} ${HankakuFONTDIR} RomanEncoding="[ /.notdef 31{dup}repeat /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash /zero/one/two/three/four/five/six/seven /eight/nine/colon/semicolon/less/equal/greater/question /at/A/B/C/D/E/F/G /H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W /X/Y/Z/bracketleft/yen/bracketright/asciicircum/underscore /quoteleft/a/b/c/d/e/f/g /h/i/j/k/l/m/n/o /p/q/r/s/t/u/v/w /x/y/z/braceleft/bar/braceright/overline/.notdef 128{dup}repeat ]" # from 0x20(/space) to 0x7F(/.notdef) RomanCharProcs="96 dict dup begin 8481 8490 8521 8564 8560 8563 8565 8519 8522 8523 8566 8540 8484 8509 8485 8511 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 8487 8488 8547 8545 8548 8489 8567 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 8526 8559 8527 8496 8498 8518 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 8528 8515 8529 8497 8481 127 -1 32{Encoding exch get[3 2 roll//BuildGlyph/exec load]cvx def}for end" SuppKEncodingArray="[ /space/jperiod/jbracketleft/jbracketright /jcomma/periodcentered/wokana/asmallkana /ismallkana/usmallkana/esmallkana/osmallkana /yasmallkana/yusmallkana/yosmallkana/tsusmallkana /jprolonged/akana/ikana/ukana/ekana/okana/kakana/kikana /kukana/kekana/kokana/sakana/shikana/sukana/sekana/sokana /takana/chikana/tsukana/tekana/tokana/nakana/nikana/nukana /nekana/nokana/hakana/hikana/fukana/hekana/hokana/makana /mikana/mukana/mekana/mokana/yakana/yukana/yokana/rakana /rikana/rukana/rekana/rokana/wakana/nkana/jvoiced/jsemivoiced ]" # from 0x00(/space) to 0x3F(/jsemivoiced) SuppKCharProcs="64 dict dup begin 8481 8483 8534 8535 8482 8486 9586 9505 9507 9509 9511 9513 9571 9573 9575 9539 8508 9506 9508 9510 9512 9514 9515 9517 9519 9521 9523 9525 9527 9529 9531 9533 9535 9537 9540 9542 9544 9546 9547 9548 9549 9550 9551 9554 9557 9560 9563 9566 9567 9568 9569 9570 9572 9574 9576 9577 9578 9579 9580 9581 9583 9587 8491 8492 63 -1 0{Encoding exch get[3 2 roll//BuildGlyph /exec load]cvx def}for end" # # Hiragana # HiraganaEncoding="[ % 16#00 /.notdef 31{dup}repeat % 16#20 /space/jperiod/jbracketleft/jbracketright /jcomma/periodcentered/wogana/asmallgana /ismallgana/usmallgana/esmallgana/osmallgana /yasmallgana/yusmallgana/yosmallgana/tsusmallgana /jprolonged/agana/igana/ugana/egana/ogana/kagana/kigana /kugana/kegana/kogana/sagana/shigana/sugana/segana/sogana % 16#40 /tagana/chigana/tsugana/tegana/togana/nagana/nigana/nugana /negana/nogana/hagana/higana/fugana/hegana/hogana/magana /migana/mugana/megana/mogana/yagana/yugana/yogana/ragana /rigana/rugana/regana/rogana/wagana/ngana/jvoiced/jsemivoiced % 16#60 /wigana/yegana/wasmallgana/.notdef/.notdef/.notdef/gagana/gigana /gugana/gegana/gogana/zagana/jigana/zugana/zegana/zogana /dagana/digana/dugana/degana/dogana/bagana/pagana/bigana /pigana/bugana/pugana/begana/pegana/bogana/pogana/.notdef % 16#80 128{dup}repeat ]" HiraganaCharProcs="96 dict dup begin 8481 8483 8534 8535 8482 8486 9330 9249 9251 9253 9255 9257 9315 9317 9319 9283 8508 9250 9252 9254 9256 9258 9259 9261 9263 9265 9267 9269 9271 9273 9275 9277 9279 9281 9284 9286 9288 9290 9291 9292 9293 9294 9295 9298 9301 9304 9307 9310 9311 9312 9313 9314 9316 9318 9320 9321 9322 9323 9324 9325 9327 9331 8491 8492 9328 9329 9326 8481 8481 8481 9260 9262 9264 9266 9268 9270 9272 9274 9276 9278 9280 9282 9285 9287 9289 9296 9297 9299 9300 9302 9303 9305 9306 9308 9309 8481 127 -1 32{Encoding exch get[3 2 roll//BuildGlyph/exec load]cvx def}for end" # # Katakana # KatakanaEncoding="[ % 16#00 /.notdef 31{dup}repeat % 16#20 /space/jperiod/jbracketleft/jbracketright /jcomma/periodcentered/wokana/asmallkana /ismallkana/usmallkana/esmallkana/osmallkana /yasmallkana/yusmallkana/yosmallkana/tsusmallkana /jprolonged/akana/ikana/ukana/ekana/okana/kakana/kikana /kukana/kekana/kokana/sakana/shikana/sukana/sekana/sokana % 16#40 /takana/chikana/tsukana/tekana/tokana/nakana/nikana/nukana /nekana/nokana/hakana/hikana/fukana/hekana/hokana/makana /mikana/mukana/mekana/mokana/yakana/yukana/yokana/rakana /rikana/rukana/rekana/rokana/wakana/nkana/jvoiced/jsemivoiced % 16#60 /wikana/yekana/wasmallkana/kasmallkana/kesmallkana/vukana/gakana/gikana /gukana/gekana/gokana/zakana/jikana/zukana/zekana/zokana /dakana/dikana/dukana/dekana/dokana/bakana/pakana/bikana /pikana/bukana/pukana/bekana/pekana/bokana/pokana/.notdef % 16#80 128{dup}repeat ]" KatakanaCharProcs="96 dict dup begin 8481 8483 8534 8535 8482 8486 9586 9505 9507 9509 9511 9513 9571 9573 9575 9539 8508 9506 9508 9510 9512 9514 9515 9517 9519 9521 9523 9525 9527 9529 9531 9533 9535 9537 9540 9542 9544 9546 9547 9548 9549 9550 9551 9554 9557 9560 9563 9566 9567 9568 9569 9570 9572 9574 9576 9577 9578 9579 9580 9581 9583 9587 8491 8492 9584 9585 9582 9589 9590 9588 9516 9518 9520 9522 9524 9526 9528 9530 9532 9534 9536 9538 9541 9543 9545 9552 9553 9555 9556 9561 9562 9564 9565 9558 9559 8481 127 -1 32{Encoding exch get[3 2 roll//BuildGlyph/exec load]cvx def}for end" # # Hankaku # HankakuEncoding="[ % 16#00 /.notdef 31{dup}repeat % 16#20 /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash /zero/one/two/three/four/five/six/seven /eight/nine/colon/semicolon/less/equal/greater/question % 16#40 /at /A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z /bracketleft/yen/bracketright/asciicircum/underscore % 16#60 /quoteleft /a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z /braceleft/bar/braceright/overline/.notdef % 16#80 /space/jperiod/jbracketleft/jbracketright /jcomma/periodcentered/wogana/asmallgana /ismallgana/usmallgana/esmallgana/osmallgana /yasmallgana/yusmallgana/yosmallgana/tsusmallgana /jprolonged/agana/igana/ugana/egana/ogana/kagana/kigana /kugana/kegana/kogana/sagana/shigana/sugana/segana/sogana %16#A0 /space/jperiod/jbracketleft/jbracketright /jcomma/periodcentered/wokana/asmallkana /ismallkana/usmallkana/esmallkana/osmallkana /yasmallkana/yusmallkana/yosmallkana/tsusmallkana /jprolonged/akana/ikana/ukana/ekana/okana/kakana/kikana /kukana/kekana/kokana/sakana/shikana/sukana/sekana/sokana % 16#C0 /takana/chikana/tsukana/tekana/tokana/nakana/nikana/nukana /nekana/nokana/hakana/hikana/fukana/hekana/hokana/makana /mikana/mukana/mekana/mokana/yakana/yukana/yokana/rakana /rikana/rukana/rekana/rokana/wakana/nkana/jvoiced/jsemivoiced % 16#E0 /tagana/chigana/tsugana/tegana/togana/nagana/nigana/nugana /negana/nogana/hagana/higana/fugana/hegana/hogana/magana /migana/mugana/megana/mogana/yagana/yugana/yogana/ragana /rigana/rugana/regana/rogana/wagana/ngana/jvoiced/jsemivoiced ]" HankakuCharProcs="224 dict dup begin 8481 8490 8521 8564 8560 8563 8565 8519 8522 8523 8566 8540 8484 8509 8485 8511 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 8487 8488 8547 8545 8548 8489 8567 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 8526 8559 8527 8496 8498 8518 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 8528 8515 8529 8497 8481 8481 8483 8534 8535 8482 8486 9330 9249 9251 9253 9255 9257 9315 9317 9319 9283 8508 9250 9252 9254 9256 9258 9259 9261 9263 9265 9267 9269 9271 9273 9275 9277 8481 8483 8534 8535 8482 8486 9586 9505 9507 9509 9511 9513 9571 9573 9575 9539 8508 9506 9508 9510 9512 9514 9515 9517 9519 9521 9523 9525 9527 9529 9531 9533 9535 9537 9540 9542 9544 9546 9547 9548 9549 9550 9551 9554 9557 9560 9563 9566 9567 9568 9569 9570 9572 9574 9576 9577 9578 9579 9580 9581 9583 9587 8491 8492 9279 9281 9284 9286 9288 9290 9291 9292 9293 9294 9295 9298 9301 9304 9307 9310 9311 9312 9313 9314 9316 9318 9320 9321 9322 9323 9324 9325 9327 9331 8491 8492 255 -1 32{Encoding exch get[3 2 roll//BuildGlyph/exec load]cvx def}for end" MetricsDictJIS1ku="\ 55 dict dup begin % 1ku % ¡¶ ¡· ¡¹ ¡è ¡é ¡ê ¡ð ¡ñ ¡ò /c36/c37/c39/c68/c69/c6A/c70/c71/c72 9{747.434 def}repeat % ¡¢ ¡£ ¡© ¡¯ ¡° ¡³ ¡µ ¡È ¡É ¡Ê ¡Ë ¡Ì ¡Í ¡Î ¡Ï ¡Ð /c22/c23/c29/c2F/c30/c33/c35/c48/c49/c4A/c4B/c4C/c4D/c4E/c4F/c50 % ¡Ñ ¡Ò ¡Ó ¡Ô ¡Õ ¡Ö ¡× ¡Ø ¡Ù ¡Ú ¡Û ¡ë ¡ì ¡í ¡ø /c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c6B/c6C/c6D/c78 31{504.013 def}repeat % ¡¤ ¡¥ ¡¦ ¡§ ¡¨ ¡ª ¡« ¡¬ ¡­ ¡® ¡¾ ¡Â ¡Ã ¡Æ ¡Ç /c24/c25/c26/c27/c28/c2A/c2B/c2C/c2D/c2E/c3E/c42/c43/c46/c47 15{353.665 def}repeat end readonly" MetricsDictJIS4ku="\ 18 dict dup begin % 4ku % ¤¦ ¤¯ ¤° ¤± ¤² ¤¹ ¤º ¤ê /c26/c2F/c30/c31/c32/c39/c3A/c6A 8{962.216 def}repeat % ¤¡ ¤£ ¤¥ ¤§ ¤© ¤Ã ¤ã ¤å ¤ç ¤î /c21/c23/c25/c27/c29/c43/c63/c65/c67/c6E 10{747.434 def}repeat end readonly" MetricsDictJIS5ku="\ 46 dict dup begin % 5ku % ¥¢ ¥¤ ¥¦ ¥ª ¥¯ ¥° ¥± ¥² ¥µ ¥¶ ¥½ ¥¾ ¥¿ ¥À ¥Á ¥Â ¥Ä /c22/c24/c26/c2A/c2F/c30/c31/c32/c35/c36/c3D/c3E/c3F/c40/c41/c42/c44 % ¥Å ¥Æ ¥Ç ¥È ¥É ¥Ê ¥Î ¥Õ ¥Ö ¥× ¥ß ¥á ¥ä ¥é ¥ê ¥ï ¥ò /c45/c46/c47/c48/c49/c4A/c4E/c55/c56/c57/c5F/c61/c64/c69/c6A/c6F/c72 34{962.216 def}repeat % ¥¡ ¥£ ¥¥ ¥§ ¥© ¥Ã ¥ã ¥å ¥ç ¥î ¥õ ¥ö /c21/c23/c25/c27/c29/c43/c63/c65/c67/c6E/c75/c76 12{747.434 def}repeat end readonly" Metrics2DictJIS1ku="\ 41 dict dup begin % 1ku % ¡© ¡ª ¡½ ¡Ä ¡Å /c29/c2A/c3D/c44/c45 5{-962.216 def}repeat % ¡³ ¡´ ¡µ ¡¶ ¡· ¡¹ /c33/c34/c35/c36/c37/c39 6{-747.434 def}repeat % ¡¢ ¡£ ¡¤ ¡¥ ¡¦ ¡¾ ¡Â ¡Ã ¡Æ ¡Ç ¡È ¡É ¡Ê ¡Ë ¡Ì /c22/c23/c24/c25/c26/c3E/c42/c43/c46/c47/c48/c49/c4A/c4B/c4C % ¡Í ¡Î ¡Ï ¡Ð ¡Ñ ¡Ò ¡Ó ¡Ô ¡Õ ¡Ö ¡× ¡Ø ¡Ù ¡Ú ¡Û /c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B 30{-481.108 def}repeat end readonly" Metrics2DictJIS4ku="\ 10 dict dup begin % 4ku % ¤¡ ¤£ ¤¥ ¤§ ¤© ¤Ã ¤ã ¤å ¤ç ¤î /c21/c23/c25/c27/c29/c43/c63/c65/c67/c6E 10{-747.434 def}repeat end readonly" Metrics2DictJIS5ku="\ 12 dict dup begin % 5ku % ¥¡ ¥£ ¥¥ ¥§ ¥© ¥Ã ¥ã ¥å ¥ç ¥î ¥õ ¥ö /c21/c23/c25/c27/c29/c43/c63/c65/c67/c6E/c75/c76 12{-747.434 def}repeat end readonly" BaseFontMatrix="[0.001 0 0 0.001 0 0]" # # core implementation of BuildGlyph # BuildGlyph() { local VF_NAME="$1" local PaintType="$2" local WMode="$3" local Epilogue="$4" local Prologue="$5" # dict character_name character_code BuildGlyph echo -n "\ /BuildGlyph{" echo "${Epilogue}" echo "rootfont/WMode .knownget not{${WMode}}if currentdict/Metrics .knownget dup{exch 4 index .knownget not{962.216}if}{962.216}ifelse currentdict/Metrics2 .knownget dup{exch 6 index .knownget not{-962.216}if}{-962.216}ifelse 2 index 0 0 -96.222 962.216 865.991 0 7 index 481.108 865.991 setcachedevice2 exch 4 index 0 ne and{4 index 1(${VF_NAME})kfVFlib {flattenpath pathbbox}stopped{770.216}{exch pop add exch pop}ifelse newpath 865.991 2 mul sub sub 2 div 0 exch translate}{pop}ifelse exch 2 index 0 eq and{2 index 0(${VF_NAME})kfVFlib {flattenpath pathbbox}stopped{962.216}{pop exch pop add}ifelse newpath sub 2 div 0 translate}{pop}ifelse (${VF_NAME}) rootfont/PaintType .knownget not{$PaintType}if dup 0 eq{pop kfVFlib eofill}{rootfont/StrokeWidth .knownget not{$StrokeWidth}if setlinewidth 3 eq{3 copy kfVFlib gsave -32 -96 moveto 0 1152 rlineto 1152 0 rlineto 0 -1152 rlineto eoclip newpath 64 -48 translate kfVFlib eofill grestore}{kfVFlib}ifelse stroke}ifelse" echo "${Prologue}" echo "}bind readonly def" } # # Hankaku Header # HankakuHeader() { local PSF_NAME=$1 local PaintType=$2 local WMode=$3 echo "\ %!PS-AdobeFont-1.0: ${PSF_NAME} %%CreationDate: ${DATE} %%Creator: ${CREATOR} %%EndComments /${PSF_NAME} 12 dict dup begin /FontType 3 def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FontBBox{0 0 0 0}readonly def /FontMatrix[0.0005 0 0 0.0005 0 0]def" } ku="21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F\ 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F\ 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F\ 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F\ 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F\ 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E" JISBaseFontEncodingArray="[/.notdef 32{dup}repeat /c21/c22/c23/c24/c25/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30 /c31/c32/c33/c34/c35/c36/c37/c38/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40 /c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B/c4C/c4D/c4E/c4F/c50 /c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E/c5F/c60 /c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70 /c71/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/.notdef 128 copy]" MakeJIS() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`-`WM2S ${WMode}` echo "\ %!PS-AdobeFont-1.0: ${PSF_NAME} %%CreationDate: ${DATE} %%Creator: ${CREATOR} %%EndComments /${PSF_NAME} 12 dict dup begin /FontType 0 def /FontMatrix${RootFontNormal}readonly def /FontBBox{0 0 0 0}readonly def /Encoding[33{0}repeat 94{dup 1 add}repeat 0 128 copy]readonly def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FMapType 2 def /Private 9 dict dup begin /FontType 3 def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FontBBox{0 0 0 0}readonly def /FontMatrix${BaseFontMatrix}readonly def /Encoding${JISBaseFontEncodingArray}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "add 3 -1 roll begin" "end pop" echo "/CharProcs 95 dict dup begin 33 1 126{dup//Encoding exch get[3 2 roll//BuildGlyph/exec load]cvx def}for /.notdef{pop 33 33//BuildGlyph//exec}def end def /PrefEnc//Encoding end def def /FDepVector[ /Ugly findfont" for k in ${ku} ; do echo -n "/${BASE_NAME}.r${k}" done echo " 93 -1 0{//Private 12 dict copy begin dup 0 eq{/Metrics $MetricsDictJIS1ku def/Metrics2 $Metrics2DictJIS1ku def}if dup 3 eq{/Metrics $MetricsDictJIS4ku def/Metrics2 $Metrics2DictJIS4ku def}if dup 4 eq{/Metrics $MetricsDictJIS5ku def/Metrics2 $Metrics2DictJIS5ku def}if /BuildGlyph[2 index 33 add 256 mul/CharProcs load 2 /index load /get load /exec load]cvx def /UniqueID exch ${UniqueID} add def currentdict end definefont 94 1 roll }bind for ]readonly def end definefont pop " UniqueID=$[UniqueID + 94] } SJSubEncodingArray="[/.notdef 63{dup}repeat /c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B/c4C/c4D/c4E/c4F /c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E/c5F /c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F /c70/c71/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/.notdef /c80/c81/c82/c83/c84/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F /c90/c91/c92/c93/c94/c95/c96/c97/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F /cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA/cAB/cAC/cAD/cAE/cAF /cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD/cBE/cBF /cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF /cD0/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF /cE0/cE1/cE2/cE3/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF /cF0/cF1/cF2/cF3/cF4/cF5/cF6/cF7/cF8/cF9/cFA/cFB/cFC/.notdef/.notdef/.notdef]" MakeRKSJ() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`-RKSJ-`WM2S ${WMode}` echo "\ %!PS-AdobeFont-1.0: ${PSF_NAME} %%CreationDate: ${DATE} %%Creator: ${CREATOR} %%EndComments /${PSF_NAME} 10 dict dup begin /FontType 0 def /FontBBox{0 0 0 0}readonly def /FontMatrix${RootFontNormal}readonly def /Encoding[0 1 2 3 4]def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FMapType 6 def /SubsVector<00811F4010>def /Private 12 dict dup begin /FontType 3 def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FontBBox{0 0 0 0}readonly def /FontMatrix${BaseFontMatrix}readonly def /Encoding${SJSubEncodingArray}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "add 3 -1 roll begin" "end pop" echo "\ /CharProcs 189 dict dup begin 64 1 126{dup//Encoding exch get[3 2 roll 31 sub//BuildGlyph/exec load]cvx def}for /.notdef{pop 33 33//BuildGlyph//exec}def 128 1 158{dup//Encoding exch get[3 2 roll 32 sub//BuildGlyph/exec load]cvx def}for 159 1 252{dup//Encoding exch get[3 2 roll 130 add//BuildGlyph/exec load]cvx def}for end def end def /FDepVector[ /${BASE_NAME}.${Roman} findfont /${BASE_NAME}.SuppA 12 dict dup begin /FontType 0 def /FontBBox{0 0 0 0}readonly def /FontMatrix[1 0 0 1 0 0]readonly def /Encoding[0 1 30{}for]readonly def /WMode $WMode def /PaintType $PaintType def /StrokeWidth $StrokeWidth def /FMapType 2 def /FDepVector[" for k in 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F \ 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F ; do echo -n "/${BASE_NAME}.sr${k}" done echo " 30 -1 0{ //Private 12 dict copy begin /BuildGlyph[2 index 512 mul 16#2100 add CharProcs 2/index load/get load/exec load]cvx def /UniqueID exch ${UniqueID} add def currentdict end definefont 31 1 roll }for /PrefEnc 1 index/Encoding get def ]readonly def end definefont /${BASE_NAME}.SuppK//Private 13 dict copy dup begin /FontMatrix[0.0005 0 0 0.0005 0 0]def /Encoding $SuppKEncodingArray readonly def /CharProcs ${SuppKCharProcs} readonly def /BuildGlyph{0//CharProcs 2//index//get//exec}def /UniqueID $[UniqueID + 31] def end definefont /${BASE_NAME}.SuppB 2 index 12 dict copy dup begin /Encoding[0 1 15{}for]readonly def /FDepVector[" for k in E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF ; do echo -n "/${BASE_NAME}.sr${k}" done echo " 15 -1 0{ //Private 12 dict copy begin /BuildGlyph[2 index 512 mul 16#5F00 add CharProcs 2/index load/get load/exec load]cvx def /UniqueID exch $[UniqueID + 32] add def currentdict end definefont 16 1 roll }for /PrefEnc 1 index/Encoding get def ]readonly def end definefont 3 index ]readonly def end definefont pop" UniqueID=$[UniqueID + 48] } MakeRoman() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`.${Roman} HankakuHeader ${PSF_NAME} ${PaintType} ${WMode} echo "/Encoding${RomanEncoding}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "" "end pop" echo "/CharProcs ${RomanCharProcs} readonly def" echo "/BuildGlyph{exch begin//CharProcs 1 index get exec}bind def" echo "/UniqueID $[UniqueID] def" echo "end definefont pop" UniqueID=$[UniqueID + 1] } MakeHiragana() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`.${Hiragana} HankakuHeader ${PSF_NAME} ${PaintType} ${WMode} echo "/Encoding${HiraganaEncoding}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "" "end pop" echo "/CharProcs ${HiraganaCharProcs} readonly def" echo "/BuildGlyph{exch begin//CharProcs 1 index get exec}bind def" echo "/UniqueID $[UniqueID] def" echo "end definefont pop" UniqueID=$[UniqueID + 1] } MakeKatakana() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`.${Katakana} HankakuHeader ${PSF_NAME} ${PaintType} ${WMode} echo "/Encoding${KatakanaEncoding}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "" "end pop" echo "/CharProcs ${KatakanaCharProcs} readonly def" echo "/BuildGlyph{exch begin//CharProcs 1 index get exec}bind def" echo "/UniqueID $[UniqueID] def" echo "end definefont pop" UniqueID=$[UniqueID + 1] } MakeHankaku() { local BASE_NAME=$1 local VF_NAME=$2 local PaintType=$3 local WMode=0 local PSF_NAME=${BASE_NAME}`PT2S ${PaintType}`.${Hankaku} HankakuHeader ${PSF_NAME} ${PaintType} ${WMode} echo "/Encoding${HankakuEncoding}readonly def" BuildGlyph ${VF_NAME} ${PaintType} ${WMode} "" "end pop" echo "/CharProcs ${HankakuCharProcs} readonly def" echo "/BuildGlyph{exch begin//CharProcs 1 index get exec}bind def" echo "/UniqueID $[UniqueID] def" echo "end definefont pop" UniqueID=$[UniqueID + 1] } CopyJIS() { local BASE_NAME="$1" local FontMatrix="$2" local PaintType="$3" local WMode="$4" local PSF_NAME=${BASE_NAME}`RFM2S "${FontMatrix}"``PT2S ${PaintType}`-`WM2S ${WMode}` echo "%!PS-AdobeFont-1.0: ${PSF_NAME} %%CreationDate: ${DATE} %%Creator: ${CREATOR} %%EndComments /${PSF_NAME}/${BASE_NAME}-H findfont 12 dict copy dup begin /FontMatrix${FontMatrix}def /WMode ${WMode} def /PaintType ${PaintType} def /StrokeWidth ${StrokeWidth} def end definefont pop" } CopyRKSJ() { local BASE_NAME=$1 local FontMatrix=$2 local PaintType=$3 local WMode=$4 local PSF_NAME=${BASE_NAME}`RFM2S "${FontMatrix}"``PT2S ${PaintType}`-RKSJ-`WM2S ${WMode}` echo "%!PS-AdobeFont-1.0: ${PSF_NAME} %%CreationDate: ${DATE} %%Creator: ${CREATOR} %%EndComments /${PSF_NAME}/${BASE_NAME}-RKSJ-H findfont 12 dict copy dup begin /FontMatrix${FontMatrix}def /WMode ${WMode} def /PaintType ${PaintType} def /StrokeWidth ${StrokeWidth} def end definefont pop" } # BuildFont ps_fontname vf_fontname destination_file BuildFont() { local NORMAL=$1 local VF_NAME=$2 local DST=$3 local p for p in 0 1 3 do local str=`PT2S ${p}` MakeJIS $NORMAL $VF_NAME $p > ${JISFONTDIR}-H/${DST}n${p} echo "/${NORMAL}${str}-H(${JISFONTDIR}-H/${DST}n${p});" >> ${FONTMAP} echo "/${NORMAL}${str}-EUC-H/${NORMAL}${str}-H ;" >> ${FONTMAP} # MakeRKSJ $NORMAL $VF_NAME $p > ${RKSJFONTDIR}-H/${DST}n${p} # echo "/${NORMAL}${str}-RKSJ-H(${RKSJFONTDIR}-H/${DST}n${p});" # # MakeRoman $NORMAL $VF_NAME $p > ${RomanFONTDIR}/${DST}n${p} # echo "/${NORMAL}${str}.${Roman}(${RomanFONTDIR}/${DST}n${p});" # # MakeHiragana $NORMAL $VF_NAME $p > ${HiraganaFONTDIR}/${DST}n${p} # echo "/${NORMAL}${str}.${Hiragana}(${HiraganaFONTDIR}/${DST}n${p});" # # MakeKatakana $NORMAL $VF_NAME $p > ${KatakanaFONTDIR}/${DST}n${p} # echo "/${NORMAL}${str}.${Katakana}(${KatakanaFONTDIR}/${DST}n${p});" # # MakeHankaku $NORMAL $VF_NAME $p > ${HankakuFONTDIR}/${DST}n${p} # echo "/${NORMAL}${str}.${Hankaku}(${HankakuFONTDIR}/${DST}n${p});" CopyJIS $NORMAL "$RootFontNormal" $p "1" > ${JISFONTDIR}-V/${DST}n${p} echo "/${NORMAL}${str}-V(${JISFONTDIR}-V/${DST}n${p});" >> ${FONTMAP} echo "/${NORMAL}${str}-EUC-V/${NORMAL}${str}-V ;" >> ${FONTMAP} CopyJIS $NORMAL "$RootFontOblique" $p "0" > ${JISFONTDIR}-H/${DST}o${p} echo "/${NORMAL}Oblique${str}-H(${JISFONTDIR}-H/${DST}o${p});" >> ${FONTMAP} echo "/${NORMAL}Oblique${str}-EUC-H/${NORMAL}Oblique${str}-H ;" >> ${FONTMAP} CopyJIS $NORMAL "$RootFontLefty" $p "0" > ${JISFONTDIR}-H/${DST}l${p} echo "/${NORMAL}Lefty${str}-H(${JISFONTDIR}-H/${DST}l${p});" >> ${FONTMAP} echo "/${NORMAL}Lefty${str}-EUC-H/${NORMAL}Lefty${str}-H ;" >> ${FONTMAP} # CopyRKSJ $NORMAL "$RootFontNormal" $p "1" > ${RKSJFONTDIR}-V/${DST}n${p} # echo "/${NORMAL}${str}-RKSJ-V(${RKSJFONTDIR}-V/${DST}n${p});" # # CopyRKSJ $NORMAL "$RootFontOblique" $p "0" > ${RKSJFONTDIR}-H/${DST}o${p} # echo "/${NORMAL}Oblique${str}-RKSJ-H(${RKSJFONTDIR}-H/${DST}o${p});" # # CopyRKSJ $NORMAL "$RootFontLefty" $p "0" > ${RKSJFONTDIR}-H/${DST}l${p} # echo "/${NORMAL}Lefty${str}-RKSJ-H(${RKSJFONTDIR}-H/${DST}l${p});" done } BuildFont $NORMAL $VF_NAME $DST echo $UniqueID