#!/bin/sh
### --- program paths ---
ECHO="echo"
CAT="cat"
MF="mf"
GFTYPE="gftype512"  ### recompiled from source and renamed
GFUNTYPE="gfuntype" ### compiled from gfuntype.c in mimetex.zip

### --- file paths ---
TYPEOUT="typeout"
OUTFILE="texfonts.h"
ERRFILE="junk"

### --- metafont parameters ---
parmset="2"
LARGESTSIZE="7"
PTSIZE="10"
if [ $parmset = "1" ]; then
   dpi0="83"
   dpi1="100"
   dpi2="118"
   dpi3="131"
   dpi4="160"
   dpi5="180"
   dpi6="210"
   dpi7="250"
   mode0="eighthre"
   mode1="nextscrn"
   mode2="lview"
   mode3="onetz"
   mode4="itoh"
   mode5="lqlores"
   mode6="preview"
   mode7="preview"
   mag0=""
   mag1=""
   mag2=""
   mag3="mag=magstep(0.5);"
   mag4=""
   mag5=""
fi
if [ $parmset = "2" ]; then
   dpi0="83"
   dpi1="100"
   dpi2="118"
   dpi3="131"
   dpi4="160"
   dpi5="180"
   dpi6="210"
   dpi7="250"
   mode0="eighthre"
   mode1="preview"
   mode2="preview"
   mode3="preview"
   mode4="preview"
   mode5="preview"
   mode6="preview"
   mode7="preview"
   mag0=""
fi

### --- construct comments ---
comment1() {
${ECHO} \
"/* ------------------------------------------------------------------------" \
>> ${OUTFILE}
${ECHO} ${comment} >> ${OUTFILE}
${ECHO} \
"------------------------------------------------------------------------ */" \
>> ${OUTFILE}
${ECHO} "" >> ${OUTFILE}
}
comment2() {
${ECHO} "/* --- size=${size} for .${dpi}gf ---" >> ${OUTFILE}
${ECHO} " * ${comment}" >> ${OUTFILE}
${ECHO} \
" * --------------------------------------------------------------------- */" \
>> ${OUTFILE}
}

### --- emit file header ---
${ECHO} "#ifndef _TEXFONTS" > ${OUTFILE}
${ECHO} "#define _TEXFONTS" >> ${OUTFILE}
if [ -e texfonts.stub ]; then
  ${CAT} texfonts.stub >> ${OUTFILE}
fi
${ECHO} "" >> ${OUTFILE}
${ECHO} "" >> ${OUTFILE}

### --- generate standard mimeTeX fonts (low-pass anti-aliasing) ---
for font in "cmr" "cmmi" "cmmib" "cmsy" "cmex" "bbold" "rsfs" "stmary" "wncyr"
do
comment="font sizes 0-${LARGESTSIZE} for ${font}${PTSIZE}"
comment1
  for size in "0" "1" "2" "3" "4" "5" "6" "7"
  do
  eval mode='$'mode${size}
  eval dpi='$'dpi${size}
  if [ $mode = "preview" ]; then
    step=$(echo "l($dpi/2602.)/l(1.2)" | bc -l)
    mag="mag=magstep($step);"
  else
    eval mag='$'mag${size}
  fi
  mfargs="\\mode=${mode}; ${mag} input ${font}${PTSIZE}"
  gftypeargs="-i ${font}${PTSIZE}.${dpi}gf"
  gfuntypeargs="-g 10 -n ${font}${dpi} ${TYPEOUT}"
  comment="mf '${mfargs}'"
  comment2
  ${MF} ${mfargs} ### > ${ERRFILE}
  ${GFTYPE} ${gftypeargs} > ${TYPEOUT}
  ${GFUNTYPE} ${gfuntypeargs} 2> ${ERRFILE} >> ${OUTFILE}
  ${ECHO} "" >> ${OUTFILE}
  ${ECHO} "" >> ${OUTFILE}
  done
done


### --- generate optional supersampling font(s) for testing ---
ssfonts="1"
if [ $ssfonts = "1" ]; then
dpi="1200"
mag=""
mode="ultre"
${ECHO} "#ifdef SSFONTS" >> ${OUTFILE}
for font in "cmr"
do
comment="fonts for SuperSampling anti-aliasing algorithm"
comment1
  for size in "1200"
  do
  mfargs="\\mode=${mode}; ${mag} input ${font}${PTSIZE}"
  gftypeargs="-i ${font}${PTSIZE}.${dpi}gf"
  gfuntypeargs="-g 10 -n ${font}${dpi} ${TYPEOUT}"
  comment="mf '${mfargs}'"
  comment2
  ${MF} ${mfargs} ### > ${ERRFILE}
  ${GFTYPE} ${gftypeargs} > ${TYPEOUT}
  ${GFUNTYPE} ${gfuntypeargs} 2> ${ERRFILE} >> ${OUTFILE}
  done
done
${ECHO} "#endif" >> ${OUTFILE}
${ECHO} "" >> ${OUTFILE}
${ECHO} "" >> ${OUTFILE}
fi

### --- emit file footer ---
${ECHO} \
"/* ==================== end-of-file texfonts.h ========================= */" \
>> ${OUTFILE}
${ECHO} "#endif" >> ${OUTFILE}
### end-of-file

