diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:47:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:47:01 +0000 |
commit | 950209b26f70aa87ed07c54f82a95b6f03b7c3a0 (patch) | |
tree | 32b2d4ab4e36aee3a9aaf41877a5c0c581de9b77 /Master/texmf-dist/doc/fonts/hfoldsty/generate.sh | |
parent | 71c5ce4be7e36bdc6bdda98641bc9368e28223ad (diff) |
doc/fonts
git-svn-id: svn://tug.org/texlive/trunk@83 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/fonts/hfoldsty/generate.sh')
-rwxr-xr-x | Master/texmf-dist/doc/fonts/hfoldsty/generate.sh | 691 |
1 files changed, 691 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/hfoldsty/generate.sh b/Master/texmf-dist/doc/fonts/hfoldsty/generate.sh new file mode 100755 index 00000000000..3e0a59a08b7 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/hfoldsty/generate.sh @@ -0,0 +1,691 @@ +#!/bin/sh +# +# hfoldsty v1.11: A package for using oldstyle numerals with the ec fonts with +# better kerning for quillemets +# +# For use with ec fonts (European Computer Modern fonts by J"org Knappen +# <knappen@vkpmzd.kph.uni-mainz.de>, CTAN:/fonts/ec) +# +# Much code is taken from the eco fonts by +# Sebastian Marius Kirsch <skirsch@t-online.de> +# +#Copyright (C) 2003--2004 Harald Harders <h.harders@tu-bs.de> +# +#This program is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 2 of the License, or +#(at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +#This Bourne shell script requires the following programs: +# - tftopl, vptovf +# - ed, sed +# - TeX, fontinst >= 1.926 +# - a shell which supports here-documents (i.e. bash) +# - a TeX with kpathsea (i.e. teTeX) +# +# Change v1.13, 2004/11/19: More errors in \ProvidesFile line fixed. +# +# Change v1.12, 2004/09/12: Error in \ProvidesFile line fixed. +# +# Change v1.11, 2004/08/21: Installation is done by Makefile instead of this +# script. +# +# Change v1.11, 2004/08/21: Adapt to fix-cm.sty +# +# Change v1.01: Unique Copyright for all files: GPL +# +# Change v1.00: Add kerning to sans-serif fonts, 70% of serif fonts. +# +# Change v0.90: Rename package from hfo to hfoldsty. +# +# Change v0.20: Do not set \hyphenchar to '177. For character produting, the +# pdfcprot package should be used. + +VERSION=1.13 +DATE=2004/09/12 + +size="0500 0600 0700 0800 0900 1000 1095 1200 1440 1728 2074 2488 2986 3583" +# Change v0.2: Use lining figures with small capitals. +# Change v0.4: Use old-style figures with small capitals again. +family="rm ti ui sl rb bx bl bi ss si sx so tt st it vt vi dh cc xc sc oc tc" +#family="rm ti ui sl rb bx bl bi ss si sx so tt st it vt vi dh" + +kpsewhich=kpsewhich + +logfile=./hfofonts.log + +# Change v0.2: Use lining figures with small capitals. +# Change v0.4: Use old-style figures with small capitals again. +rofamily="rm ti ui sl rb bx bl bi cc xc sc oc" +#rofamily="rm ti ui sl rb bx bl bi" +#rfamily="m/sc bx/sc" + +# Change v0.2: Use lining figures with small capitals. +# Change v0.4: Use old-style figures with small capitals again. +ttofamily="tt st it tc" +#ttofamily="tt st it" +#ttfamily="m/sc" + +ssofamily="ss si sx so" + +vtofamily="vt vi" + +dhofamily="dh" + + +function getpl () { +curfam=$1 + +echo "# Converting .tfm to .pl" >> $logfile + +for f in ${curfam}; do + for s in ${size}; do + if [ -z `${kpsewhich} tfm ec${f}${s}.tfm` ] ; then + echo "Making ec${f}${s}.tfm" >> ${logfile} + echo -n "ec${f}${s}.tfm " + mktextfm ec${f}${s} + fi + if [ `${kpsewhich} tfm ec${f}${s}.tfm` ] ; then + tftopl `${kpsewhich} tfm ec${f}${s}.tfm` ./ec${f}${s}.pl &>/dev/null; + echo "ec${f}${s}.tfm -> ec${f}${s}.pl" >> ${logfile} + echo -n "ec${f}${s}.pl " + else + echo "! tfm file ec${f}${s}.tfm not found." >> ${logfile} + echo "! ec${f}${s}.tfm not found." + fi + if [ -z `${kpsewhich} tfm tc${f}${s}.tfm` ] ; then + echo "Making tc${f}${s}.tfm" >> ${logfile} + echo -n "tc${f}${s}.tfm " + mktextfm tc${f}${s} + fi + if [ `${kpsewhich} tfm tc${f}${s}.tfm` ] ; then + tftopl `${kpsewhich} tfm tc${f}${s}.tfm` ./tc${f}${s}.pl &> /dev/null; + echo "tc${f}${s}.tfm -> tc${f}${s}.pl" >> ${logfile} + echo -n "tc${f}${s}.pl " + else + echo "! tfm file tc${f}${s}.tfm not found" >> ${logfile} + echo "! tc${f}${s}.tfm not found." + fi + done +done + +echo +} + +function getvf () { +curfam=$1 + +echo "# Converting .vpl to .vf and .tfm" >> $logfile + +for f in $curfam; do + for s in $size; do + if [ -f hfo${f}${s}.vpl ]; then + vptovf hfo${f}${s}.vpl hfo${f}${s}.vf hfo${f}${s}.tfm &> /dev/null; + echo "hfo${f}${s}.vpl -> hfo${f}${s}.vf" >> ${logfile} + echo -n "hfo${f}${s}.vf " + else + echo "vpl file hfo${f}${s}.vpl not found" >> ${logfile} + echo "! hfo${f}${s}.vpl not found." + fi + done +done + +echo +} + +function cleanup () { +curfam=$1 + +for f in $curfam; do + for s in $size; do + rm -f hfo${f}${s}.vpl ec${f}${s}.pl ec${f}${s}.mtx tc${f}${s}.pl tc${f}${s}.mtx + done +done +} + +function intro () { +cat << EOM +\input fontinst.sty + +\declareencoding{TEX TEXT COMPANION SYMBOLS 1---TS1}{TS1} + +\installfonts +EOM +} + +function extro () { +cat << EOM +\endinstallfonts + +\bye +EOM +} + +function echomtx () { +f=$1 + +echo +for ec in ${size}; do + if [ -f ec${f}${ec}.pl ]; then + echo "\frompl{ec${f}${ec}}" + fi + if [ -f tc${f}${ec}.pl ]; then + echo "\frompl{tc${f}${ec}}" + fi +done; +} + +# Inserts kerning information to the mtx file +function insertkerns () +{ + f=$1 +# Change v1.00: Scale Kerning by $FAK/1000 + FAK=$2 + + for ec in ${size} + do + + MULTI=`grep '\quad' ec${f}${ec}.mtx | sed s/'.*{\([0-9]*\)}'/'\1'/` + echo ec${f}${ec}: multiplikator $MULTI + + GKERN="0110" + GKERN=`echo "$GKERN $MULTI * 1000 / p" | dc` + KKERN="0070" + KKERN=`echo "$KKERN $MULTI * 1000 / p" | dc` + + LISTE="%" + for CHAR in 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 \ + Adieresis Odieresis Udieresis + do + RKERN=$GKERN + LKERN=$GKERN + case $CHAR in + A) LKERN=`echo "$LKERN 1200 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1200 * 1000 / $FAK * 1000 / p" | dc`;; + B) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + C) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 600 * 1000 / $FAK * 1000 / p" | dc`;; + D) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + E) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + G) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 600 * 1000 / $FAK * 1000 / p" | dc`;; + K) LKERN=`echo "$LKERN 1400 * 1000 / $FAK * 1000 / p" | dc`;; + L) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + N) LKERN=`echo "$LKERN 1100 * 1000 / $FAK * 1000 / p" | dc`;; + O) LKERN=`echo "$LKERN 600 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 600 * 1000 / $FAK * 1000 / p" | dc`;; + P) LKERN=`echo "$LKERN 1100 * 1000 / $FAK * 1000 / p" | dc`;; + Q) LKERN=`echo "$LKERN 600 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 600 * 1000 / $FAK * 1000 / p" | dc`;; + R) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + S) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + T) LKERN=`echo "$LKERN 1200 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1200 * 1000 / $FAK * 1000 / p" | dc`;; + V) LKERN=`echo "$LKERN 1300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1300 * 1000 / $FAK * 1000 / p" | dc`;; + W) LKERN=`echo "$LKERN 1300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1300 * 1000 / $FAK * 1000 / p" | dc`;; + X) LKERN=`echo "$LKERN 1300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1300 * 1000 / $FAK * 1000 / p" | dc`;; + Y) LKERN=`echo "$LKERN 1300 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1300 * 1000 / $FAK * 1000 / p" | dc`;; + Z) LKERN=`echo "$LKERN 300 * 1000 / $FAK * 1000 / p" | dc`;; + Adieresis) LKERN=`echo "$LKERN 1200 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1200 * 1000 / $FAK * 1000 / p" | dc`;; + Odieresis) LKERN=`echo "$LKERN 600 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 600 * 1000 / $FAK * 1000 / p" | dc`;; + esac + LISTE="$LISTE\\ +\\\\setkern{guillemotright}{$CHAR}{-$RKERN}\\ +\\\\setkern{$CHAR}{guillemotleft}{-$LKERN}" + done + + for CHAR in 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 \ + adieresis odieresis udieresis germandbls + do + RKERN=$KKERN + LKERN=$KKERN + case $CHAR in + b) LKERN=`echo "$LKERN 1000 * 1000 / $FAK * 1000 / p" | dc`; \ + RKERN=`echo "$RKERN 1200 * 1000 / $FAK * 1000 / p" | dc`;; + esac + LISTE="$LISTE\\ +\\\\setkern{guillemotright}{$CHAR}{-$RKERN}\\ +\\\\setkern{$CHAR}{guillemotleft}{-$LKERN}" + done + + sed "1,/\\\\setrawglyph/ { /\\\\setrawglyph/i \\ +$LISTE +; }" ec${f}${ec}.mtx > ec${f}${ec}.mtx.tmp && \ + mv -f ec${f}${ec}.mtx.tmp ec${f}${ec}.mtx || \ + rm -f ec${f}${ec}.mtx.tmp + done +} + +function echoinstalls () { +enc=$1; f=$2; se=$3; sh=$4 + +echo +for ec in ${size}; do + case ${ec} in + 0500) fs="5";; + 0600) fs="6";; + 0700) fs="7";; + 0800) fs="8";; + 0900) fs="9";; + 1000) fs="10";; + 1095) fs="10.95";; + 1200) fs="12";; + 1440) fs="14.4";; + 1728) fs="17.28";; + 2074) fs="20.74";; + 2488) fs="24.88";; + 2986) fs="29.86";; + 3583) fs="35.83";; + esac + if [ -f ec${f}${ec}.pl -a -f tc${f}${ec}.pl ]; then + echo "\installfont{hfo${f}${ec}}{ec${f}${ec},tc${f}${ec},dostretch}{T19}{T1}{hfo${enc}}{${se}}{${sh}}{<${fs}>}" +# Change v0.2: Use lining figures with small capitals again. +# Thus, no extra handling for these fonts necessary anymore. +# Change v0.4: Use old-style figures with small capitals again. + else if [ ${f} == "cc" -o ${f} == "xc" -o ${f} == "sc" -o ${f} == "oc" -o ${f} == "tc" ] + then + [ ${f} == "cc" ] && tcf="rm" + [ ${f} == "xc" ] && tcf="bx" + [ ${f} == "sc" ] && tcf="sl" + [ ${f} == "oc" ] && tcf="bl" + [ ${f} == "tc" ] && tcf="tt" + if [ -f ec${f}${ec}.pl -a -f tc${tcf}${ec}.pl ]; then + echo "\installfont{hfo${f}${ec}}{ec${f}${ec},tc${tcf}${ec},dostretch}{T19}{T1}{hfo${enc}}{${se}}{${sh}}{<${fs}>}" +# echo "\installfont{hfo${f}${ec}}{ec${f}${ec},dostretch}{T1}{T1}{hfo${enc}}{${se}}{${sh}}{<${fs}>}" + fi + fi + fi +done; +} + + +function modfd () +{ + fdfile=$1 + + cat ${fdfile} | \ + grep -1 -e '<[-.0-9]*>' \ + -e 'DeclareFontShape' | \ + grep -v -e '<10\.95>' -e '<14\.4>' -e '<20\.74>' \ + -e '<24\.88>' -e '<29\.86>' -e '<35\.83>' | \ + sed -e 's/<5>/<-6>/g' -e 's/<6>/<6-7>/g' -e 's/<7>/<7-8>/g' \ + -e 's/<8>/<8-9>/g' -e 's/<9>/<9-10>/g' -e 's/<10>/<10-12>/g' \ + -e 's/<12>/<12-17>/g' -e 's/<17\.28>/<17->/g' > asdf.fd + echo '\else' >> asdf.fd + echo '\typeout{'${fdfile}': Using all design sizes}%' >> asdf.fd + sed '/\\endinput/d' asdf.fd > tmp.fd && mv -f tmp.fd asdf.fd + cat ${fdfile} | \ + sed -e '/DeclareFontFamily/i \ +\\ifhfofixcm\ +\\typeout{'${fdfile}': Using fewer design sizes (fix-cm)}% \ +' \ + -e '/\\endinput/i \ +\\fi\ +' \ + -e '/\\DeclareFontFamily/r asdf.fd' > tmp.fd + mv -f tmp.fd ${fdfile} + rm -f asdf.fd +} + + +# function main () { + +# Roman family +# + +echo >> $logfile +echo "Roman Family" >> $logfile +echo "------------" >> $logfile +echo >> $logfile + +getpl "$rofamily" + +( +intro + +echomtx rm +echomtx ti +echomtx sl +echomtx ui +echomtx cc +echomtx sc +echomtx rb +echomtx bx +echomtx bi +echomtx bl +echomtx xc +echomtx oc + +extro +) > hformtx.tex + +tex hformtx.tex + +insertkerns rm 1000 +insertkerns ti 1000 +insertkerns sl 1000 +insertkerns ui 1000 +insertkerns cc 1000 +insertkerns sc 1000 +insertkerns rb 1000 +insertkerns bx 1000 +insertkerns bi 1000 +insertkerns bl 1000 +insertkerns xc 1000 +insertkerns oc 1000 + +( +intro + +echo; echo "\installfamily{T1}{hfor}{}" + +echoinstalls r rm m n +echoinstalls r ti m it +echoinstalls r sl m sl +echoinstalls r ui m ui +echoinstalls r cc m sc +echoinstalls r sc m scsl +echoinstalls r rb b n +echoinstalls r bx bx n +echoinstalls r bi bx it +echoinstalls r bl bx sl +echoinstalls r xc bx sc +echoinstalls r oc bx scsl + +extro +) > hfor.tex + +tex hfor.tex + +# Change v0.2: LaTeX is big enough not to split generation of Roman family. + +getvf "$rofamily" + +cleanup "$rofamily" + +ed t1hfor.fd <<EOS +\$-1,\$d +w +q +EOS + +( +# Change v0.2: Support slanted small capitals +# Change v0.90: Fix the wrong generation of this entry. It prevented LaTeX +# from finding the correct small caps with old-style digits. +for f in m bx; do + echo "\DeclareFontShape{T1}{hfor}{$f}{scit}{<->ssub * hfor/$f/scsl}{}" +done +echo +# Change v0.2: Use lining figures with small capitals again. +# Change v0.4: Use old-style figures with small capitals again. +for f in $rfamily; do + se=`echo $f | cut -f 1 -d "/"` + sh=`echo $f | cut -f 2 -d "/"` + echo "\DeclareFontShape{T1}{hfor}{$se}{$sh}{<->ssub * cmr/$se/$sh}{}" +done +echo +echo '\endinput' +) >> t1hfor.fd + +modfd t1hfor.fd + +sed 's/Fontinst .*/ v'$VERSION' European Computer Modern with oldstyle digits]/' \ + t1hfor.fd > asdf && mv -f asdf t1hfor.fd + +# Sans Serif family + +echo >> $logfile +echo "Sans Serif family" >> $logfile +echo "-----------------" >> $logfile +echo >> $logfile + +getpl "$ssofamily" + +( +intro + +echomtx ss +echomtx si +echomtx sx +echomtx so + +extro +) > hfossmtx.tex + +tex hfossmtx.tex + +# Change v1.00: Add kerning to sans-serif fonts, 70% of serif fonts. +insertkerns ss 0700 +insertkerns si 0700 +insertkerns sx 0700 +insertkerns so 0700 + +( +intro + +echo; echo "\installfamily{T1}{hfoss}{}" + +echoinstalls ss ss m n +echoinstalls ss si m sl +echoinstalls ss sx bx n +echoinstalls ss so bx sl + +extro +) > hfoss.tex + +tex hfoss.tex + +getvf "$ssofamily" + +cleanup "$ssofamily" + +ed t1hfoss.fd <<EOS +\$-1,\$d +w +q +EOS + +for f in $ssfamily; do + se=`echo $f | cut -f 1 -d "/"` + sh=`echo $f | cut -f 2 -d "/"` + echo "\DeclareFontShape{T1}{hfoss}{$se}{$sh}{<->ssub * cmss/$se/$sh}{}" >> t1hfoss.fd +done + +for f in m bx; do + echo "\DeclareFontShape{T1}{hfoss}{$f}{it}{<->ssub * hfoss/$f/sl}{}" >> t1hfoss.fd + echo "\DeclareFontShape{T1}{hfoss}{$f}{scit}{<->ssub * hfoss/$f/sl}{}" >> t1hfoss.fd + echo "\DeclareFontShape{T1}{hfoss}{$f}{scsl}{<->ssub * hfoss/$f/sl}{}" >> t1hfoss.fd +done +echo '' >> t1hfoss.fd +echo '\endinput' >> t1hfoss.fd + +modfd t1hfoss.fd + +sed 's/Fontinst .*/ v'$VERSION' European Computer Modern with oldstyle digits]/' \ + t1hfoss.fd > asdf && mv -f asdf t1hfoss.fd + + +# Typewriter family + +echo >> $logfile +echo "Typewriter family" >> $logfile +echo "-----------------" >> $logfile +echo >> $logfile + +getpl "$ttofamily" + +( +intro + +echomtx tt +echomtx it +echomtx st +# Change v0.2: Use lining figures with small capitals again. +# Change v0.4: Use old-style figures with small capitals again. +echomtx tc + +extro +) > hfottmtx.tex + +tex hfottmtx.tex + +( +intro + +echo; echo "\installfamily{T1}{hfott}{\hyphenchar\font=\m@ne }" + +echoinstalls tt tt m n +echoinstalls tt it m it +echoinstalls tt st m sl +# Change v0.2: Use lining figures with small capitals again. +# Change v0.4: Use old-style figures with small capitals again. +echoinstalls tt tc m sc + +extro +) > hfott.tex + +tex hfott.tex + +getvf "$ttofamily" + +cleanup "$ttofamily" + +ed t1hfott.fd <<EOS +,s/\\\hyphenchar \\\font =\\\m @ne /\\\hyphenchar\\\font=\\\m@ne/ +w +q +EOS + +( +echo +# Change v0.2: Use lining figures with small capitals again. +# Change v0.4: Use old-style figures with small capitals again. +for f in $ttfamily; do + se=`echo $f | cut -f 1 -d "/"` + sh=`echo $f | cut -f 2 -d "/"` + echo "\DeclareFontShape{T1}{hfott}{$se}{$sh}{<->ssub * cmtt/$se/$sh}{}" +done +echo +echo '\endinput' +) >> t1hfott.fd + +modfd t1hfott.fd + +sed 's/Fontinst .*/ v'$VERSION' European Computer Modern with oldstyle digits]/' \ + t1hfott.fd > asdf && mv -f asdf t1hfott.fd + + +# Dunhill family + +echo >> $logfile +echo "Dunhill family" >> $logfile +echo "--------------" >> $logfile +echo >> $logfile + +getpl "$dhofamily" + +( +intro + +echomtx dh + +extro + +) > hfodhmtx.tex + +tex hfodhmtx.tex + +( +intro + +echo; echo "\installfamily{T1}{hfodh}{}" + +echoinstalls dh dh m n + +extro + +) > hfodh.tex + +tex hfodh.tex + +getvf "$dhofamily" + +cleanup "$dhofamily" + +modfd t1hfodh.fd + +sed 's/Fontinst .*/ v'$VERSION' European Computer Modern with oldstyle digits]/' \ + t1hfodh.fd > asdf && mv -f asdf t1hfodh.fd + + +# Variable width Typewriter family + +echo >> $logfile +echo "Variable width Typewriter family" >> $logfile +echo "--------------------------------" >> $logfile +echo >> $logfile + +getpl "$vtofamily" + +( +intro + +echomtx vt +echomtx vi + +extro +) > hfovtmtx.tex + +tex hfovtmtx.tex + +( +intro + +echo; echo "\installfamily{T1}{hfovt}{\hyphenchar\font=\m@ne }" + +echoinstalls vt vt m n +echoinstalls vt vi m it + +extro +) > hfovt.tex + +tex hfovt.tex + +getvf "$vtofamily" + +cleanup "$vtofamily" + +ed t1hfovt.fd <<EOS +,s/\\\hyphenchar \\\font =\\\m @ne /\\\hyphenchar\\\font=\\\m@ne/ +w +q +EOS + +echo '\endinput' >> t1hfovt.fd + +modfd t1hfovt.fd + +sed 's/Fontinst .*/ v'$VERSION' European Computer Modern with oldstyle digits]/' \ + t1hfovt.fd > asdf && mv -f asdf t1hfovt.fd + + +exit 0 + +# } |