% arevfontinst.tex
% (part of the arev package, by Stephen Hartke)
%
% Fontinst script
% to create virtual math fonts from Arev Sans by Tavmjong Bah

\input fontinst.sty
%\input bbox.sty % bounding box info--for using kerning info to fix horizontal placement of math accents in kernaccents*.mtx
\needsfontinstversion{1.914}


% Messages can be put anywhere in fontinst scripts, including etx and mtx files.
% Messages are output to the console when TeX is running.
\message{Running Arev Sans fontinst script.}


% Arev Sans (fav) for text
\recordtransforms{mapfav.tex}
  \transformfont{favr8r} {\reencodefont{8r}{\fromafm{ArevSans-Roman}}}
  \transformfont{favri8r}{\reencodefont{8r}{\fromafm{ArevSans-Oblique}}}
  \transformfont{favb8r} {\reencodefont{8r}{\fromafm{ArevSans-Bold}}}
  \transformfont{favbi8r}{\reencodefont{8r}{\fromafm{ArevSans-BoldOblique}}}
\installfonts
  \installfamily{T1}{fav}{}
  \installfont{favr8t} {favr8r,latin} {t1}{T1}{fav}{m}{n}{}
  \installfont{favri8t}{favri8r,latin}{t1}{T1}{fav}{m}{it}{}
  \installfont{favb8t} {favb8r,latin} {t1}{T1}{fav}{b}{n}{}
  \installfont{favbi8t}{favbi8r,latin}{t1}{T1}{fav}{b}{it}{}
\endinstallfonts
\endrecordtransforms


% Arev Sans (favm) for math
\recordtransforms{mapfavm.tex}
  \transformfont{favmr7t} {\reencodefont{arevot1}{\fromafm{ArevSans-Roman}}}
  \transformfont{favmb7t} {\reencodefont{arevot1}{\fromafm{ArevSans-Bold}}}
  \transformfont{favmri7m}{\reencodefont{arevoml}{\fromafm{ArevSans-Oblique}}}
  \transformfont{favmbi7m}{\reencodefont{arevoml}{\fromafm{ArevSans-BoldOblique}}}
  \transformfont{favmr7y} {\reencodefont{arevoms}{\fromafm{ArevSans-Roman}}}
\endrecordtransforms


% Reglyphing of favm fonts (the extra c means custom reencoded)

% rename the glyph if it does not have second parameter \ok
\let\ok=donotrenamethisglyph
\let\nomacro=donotmakeamacrocommand
\def\declareglyph#1#2#3#4%
{%
  \def\temptesta{#2}%
  \def\temptestb{\ok}%
  \ifx\temptesta\temptestb%
  \else%
    \renameglyph{#2}{#1}%
  \fi%
}

\input fixkernaccents

\reglyphfonts
  % don't want curly i and l for operators font!  log and sin look silly.
  \input glyphlistot1.tex 
  \reglyphfont{favmr7tc}{favmr7t}
\endreglyphfonts
\reglyphfonts
  \input glyphlistot1.tex
  \inputmtx{favmr7t}
  \def\thenewskewchar{dieresis} % Using dieresis for skewchar
  % setkern commands can be reglyphed, but resetkern and unsetkern commands cannot be.
  % Thus, the skewchar chosen cannot have any pre-existing kerns.
  % Accents are usually a safe bet, since they're for composing with other characters and do not appear as a character adjacent to other characters.
  \reglyphfont{kernaccentsot1c}{kernaccentsot1}
\endreglyphfonts

\reglyphfonts
  \input glyphlistot1.tex 
  \reglyphfont{favmb7tc}{favmb7t}
\endreglyphfonts
\reglyphfonts
  \input glyphlistot1.tex
  \inputmtx{favmr7t}
  \def\thenewskewchar{dieresis}
  \reglyphfont{kernaccentsot1boldc}{kernaccentsot1bold}
\endreglyphfonts

\reglyphfonts
  \input glyphlistoml.tex
  \reglyphfont{favmri7mc}{favmri7m}
\endreglyphfonts
\reglyphfonts
  \input glyphlistoml.tex
  \inputmtx{favmri7m}
  \def\thenewskewchar{uni0361} % Using tie for skewchar
  \reglyphfont{kernaccentsomlc}{kernaccentsoml}
\endreglyphfonts

\reglyphfonts
  \input glyphlistoml.tex
  \reglyphfont{favmbi7mc}{favmbi7m}
\endreglyphfonts
\reglyphfonts
  \input glyphlistoml.tex
  \inputmtx{favmbi7m}
  \def\thenewskewchar{uni0361}
  \reglyphfont{kernaccentsomlboldc}{kernaccentsomlbold}
\endreglyphfonts

\reglyphfonts
  \input glyphlistoms.tex
  \reglyphfont{favmr7yc}{favmr7y}
\endreglyphfonts


% Virtual math fonts for Arev Sans: zavm (z Arev Math)
\recordtransforms{mapzavm.tex}
\installfonts

\setint{letterspacing}{25} % makes math less tight

% Math fonts
\installfamily{OT1}{zavm}{\skewchar\font=127} % the skewchar is set to dieresis
\installfamily{OML}{zavm}{\skewchar\font=127} % the skewchar is set to tie
\installfamily{OMS}{zavm}{}
\installfamily{U}  {zavm}{} % for extra symbols and nonstandard alternates

% We'll use MathDesign Bitstream Charter (mdbch) for math symbols.
% Need to make sure the .pl files from the .tfm files are present in the working directory.

% The Kerkis symbols ktsy.pfb are the next closest in weight, but doesn't have as many symbols (no AMS for instance).

%txfonts 40, bold 70  pxfonts are the same
%cmm bold 45
%fourier 39 -- no bold
%kerkis ktsy? 72:83 as kt:60 = 52
%arev plus width 60
%MnSymbol??

% operators font
\installfont{zavmr7t}
  {favmr7tc,unsetot1symbols,fixot1accents,kernaccentsot1c,md-chb7t}
  {ot1}
  {OT1}{zavm}{m}{n}{}
% operators font, bold
\installfont{zavmb7t}
  {favmb7tc,unsetot1symbols,fixot1accents,kernaccentsot1boldc,md-chb7t}
  {ot1}
  {OT1}{zavm}{b}{n}{}

% letters font
\installfont{zavmri7m}
  {favmri7mc,fixweierstrass,kernaccentsomlc,resetdotlessi,md-chb7m}
  {oml}
  {OML}{zavm}{m}{it}{}
% letters font, bold
\installfont{zavmbi7m}
  {favmbi7mc,fixweierstrass,kernaccentsomlboldc,resetdotlessi,md-chb7m}
  {oml}
  {OML}{zavm}{b}{it}{}

% symbols font
\installfont{zavmr7y}
  {favmr7yc,unsetomssymbols,kernaccentsomlboldc,md-chb7y}
  {oms}
  {OMS}{zavm}{m}{n}{}

% We'll use an unencoded font for extra symbols and alternate symbols.
% These symbols need to be present in the glyphlist for the arevoml and arevoms encodings.
% extra upright symbols
\installfont{favmr7y}
  {favmr7y}
  {arevoms}
  {U}{zavm}{m}{n}{}
% extra italic symbols
\installfont{favmri7m}
  {favmri7m}
  {arevoml}
  {U}{zavm}{m}{it}{}

\endinstallfonts
\endrecordtransforms


% Make map files
\input finstmsc.sty
\resetstr{PSfontsuffix}{.pfb} % otherwise uses .pfa

\adddriver{dvips}{arev.map}
\adddriver{pltotf}{maketfm}

% make encoding files for dvips
\etxtoenc{arevot1}{arevot1}
\etxtoenc{arevoml}{arevoml}
\etxtoenc{arevoms}{arevoms}

\input mapfav.tex
\input mapfavm.tex
%\input mapzavm.tex % don't want to make dvips entries for mdbch, since they should already be installed
\makemapentry{favmr7t}
\makemapentry{favmb7t}
\makemapentry{favmri7m}
\makemapentry{favmbi7m}
\makemapentry{favmr7y}

\donedrivers

\bye
