\relax

\documentclass[twocolumn]{article}
\usepackage{fontdoc}

\title{The {\tt fontinst} text companion glyphs}
\author{Sebastian Rahtz, Ulrik Vieth, Walter Schmidt}
\date{30 September 2003 \\
Version 1.801 w/ patches for PSNFSS}

\begin{document}
\maketitle

\section{Introduction}

This document describes the glyphs used by the {\tt fontinst}
package when generating \TeX{} text companion fonts.

\metrics

\needsfontinstversion{1.800}

% \unfakable is a glyph which can't be faked.

\setcommand\unfakable#1{
   \setglyph{#1}
      \ifisglyph{#1-not}\then
         \moveup{\neg{\depth{#1-not}}}
         \glyphrule{
            \width{#1-not}
         }{
            \add{\depth{#1-not}}{\height{#1-not}}
         }
         \resetitalic{\italic{#1-not}}
         \moveup{\depth{#1-not}}
      \else
         \glyphrule{500}{500}
      \fi
      \glyphwarning{missing glyph `#1'}
   \endsetglyph
}

% \fakeglyph replaces glyph #1 by #2, if it exists.

\setcommand\fakeglyph#1#2{
  \ifisglyph{#2}\then
   \setglyph{#1}
      \glyph{#2}{1000}
   \endsetglyph
  \fi
}

\comment{\section{Default values}}

\setint{italicslant}{0}
\setint{xheight}{\height{x}}
\setint{capheight}{\height{A}}
\setint{ascender}{\height{d}}
\setint{descender}{\depth{g}}
\setint{underlinethickness}{40}

% Vertical symmetry axis. (WaS)
\setint{vaxis}{\scale{\sub{\height{parenleft}}{\depth{parenleft}}}{500}}

\comment{\section{Oldstyle numerals}}

\unfakable{zerooldstyle}
\unfakable{oneoldstyle}
\unfakable{twooldstyle}
\unfakable{threeoldstyle}
\unfakable{fouroldstyle}
\unfakable{fiveoldstyle}
\unfakable{sixoldstyle}
\unfakable{sevenoldstyle}
\unfakable{eightoldstyle}
\unfakable{nineoldstyle}


\comment{\section{Capital accents}}

\fakeglyph{capitalgrave}{grave}
\fakeglyph{capitalacute}{acute}
\fakeglyph{capitalcircumflex}{circumflex}
\fakeglyph{capitaltilde}{tilde}
\fakeglyph{capitaldieresis}{dieresis}
\fakeglyph{capitalhungarumlaut}{hungarumlaut}
\fakeglyph{capitalring}{ring}
\fakeglyph{capitalcaron}{caron}
\fakeglyph{capitalbreve}{breve}
\fakeglyph{capitalmacron}{macron}
\fakeglyph{capitaldotaccent}{dotaccent}
\fakeglyph{capitalcedilla}{cedilla}
\fakeglyph{capitalogonek}{ogonek}


\comment{\section{ASCII-style accents}}

\ifisglyph{asciitilde}\then
\setglyph{tildelow}
   \glyph{asciitilde}{1000}
\endsetglyph
\fi

\ifisglyph{grave}\then
\setglyph{asciigrave}
   \glyph{grave}{1000}
\endsetglyph
\fi

\ifisglyph{breve}\then
\setglyph{asciibreve}
   \glyph{breve}{1000}
\endsetglyph
\fi

\ifisglyph{acute}\then
\setglyph{asciiacutedbl}
  \ifisint{monowidth}\then
   \glyph{acute}{1000}
   \glyph{acute}{1000}
  \else
   \glyph{acute}{1000}
   \movert{\neg{\scale{\width{acute}}{333}}}
   \glyph{acute}{1000}
  \fi
\endsetglyph
\fi

\ifisglyph{grave}\then
\setglyph{asciigravedbl}
  \ifisint{monowidth}\then
   \glyph{grave}{1000}
   \glyph{grave}{1000}
  \else
   \glyph{grave}{1000}
   \movert{\neg{\scale{\width{grave}}{333}}}
   \glyph{grave}{1000}
  \fi
\endsetglyph
\fi

\ifisglyph{caron}\then
\setglyph{asciicaron}
   \glyph{caron}{1000}
\endsetglyph
\fi

\ifisglyph{dieresis}\then
\setglyph{asciidieresis}
   \glyph{dieresis}{1000}
\endsetglyph
\fi

\ifisglyph{macron}\then
\setglyph{asciimacron}
   \glyph{macron}{1000}
\endsetglyph
\fi

\ifisglyph{acute}\then
\setglyph{asciiacute}
   \glyph{acute}{1000}
\endsetglyph
\fi


\comment{\section{Glyphs}}

\setglyph{capitalcompwordmark}
   \glyphrule{0}{\int{capheight}}
\endsetglyph
\setint{capitalcompwordmark-spacing}{0}

\setglyph{ascendercompwordmark}
   \glyphrule{0}{\int{ascender}}
\endsetglyph
\setint{ascendercompwordmark-spacing}{0}


% centers wrt/ vertical symmetry axis. (WaS)
\ifisglyph{asterisk}\then
   \resetglyph{asteriskcentered}
      \moveup{\neg{\sub
         {\scale{\sub{\height{asterisk}}{\depth{asterisk}}}{500}}
         {\int{vaxis}}
      }}
      \glyph{asterisk}{1000}
      \resetdepth{0}
   \endresetglyph
\fi

% assumes that 2/3em = 667 and \width{endash} = 500
\ifisglyph{endash}\then
 \setglyph{twelveudash}
   \ifisint{monowidth}\then
      \glyph{hyphen}{1000}
      \glyph{hyphen}{1000}
   \else
      \glyph{endash}{1000}
      \movert{-333}
      \glyph{endash}{1000}
   \fi
 \endsetglyph
\fi

% assumes that 3/4em = 750 and \width{endash} = 500
\ifisglyph{endash}\then
 \setglyph{threequartersemdash}
   \ifisint{monowidth}\then
    \glyph{hyphen}{1000}
    \glyph{hyphen}{1000}
   \else
    \glyph{endash}{1000}
    \movert{-250}
    \glyph{endash}{1000}
   \fi
 \endsetglyph
\fi

\ifisglyph{bracketleft}\then
 \setglyph{openbracketleft}
   \ifisint{monowidth}\then
    \glyph{bracketleft}{1000}
    \glyph{bracketleft}{1000}
   \else
    \glyph{bracketleft}{1000}
    \movert{\neg{\scale{\width{bracketleft}}{666}}}
    \glyph{bracketleft}{1000}
   \fi
 \endsetglyph
\fi

\ifisglyph{bracketright}\then
 \setglyph{openbracketright}
   \ifisint{monowidth}\then
    \glyph{bracketright}{1000}
    \glyph{bracketright}{1000}
   \else
    \glyph{bracketright}{1000}
    \movert{\neg{\scale{\width{bracketright}}{666}}}
    \glyph{bracketright}{1000}
   \fi
\endsetglyph
\fi

\ifisglyph{bar}\then
 \setglyph{bardbl}
   \ifisint{monowidth}\then
    \glyph{bar}{1000}
    \glyph{bar}{1000}
   \else
    \glyph{bar}{1000}
    \movert{\neg{\scale{\width{bar}}{333}}}
    \glyph{bar}{1000}
   \fi
\endsetglyph
\fi

\ifisglyph{degree}\then
 \setglyph{centigrade}
    \glyph{degree}{1000}
    \glyph{C}{1000}
 \endsetglyph
\fi

\ifisglyph{Euro}\then
   \setglyph{euro}
      \glyph{Euro}{1000}
   \endsetglyph
\else\ifisglyph{C}\then
   \setglyph{euro}
      \movert{50}
      \push
         \moveup{\scale{\sub{\height{C}}{\depth{C}}}{500}}
         \movert{\scale
            {\scale{\sub{\height{C}}{\depth{C}}}{500}}
            {\int{italicslant}}
         }
         \push
            \moveup{\scale{\int{underlinethickness}}{1500}}
            \glyphrule{\scale{\width{C}}{750}}{\int{underlinethickness}}
         \pop
         \moveup{\scale{\int{underlinethickness}}{-1500}}
         \glyphrule{\scale{\width{C}}{700}}{\int{underlinethickness}}
         \comment{That this bar is slightly shorter than the previous 
           is deliberate. That the two bars are not quite centered 
           around the vertical midpoint is also deliberate.}
      \pop
      \movert{50}
      \comment{This movement should be much larger for some fonts, 
        e.g. New Century Schoolbook Italic, but experiments indicate 
        that it is independent of the italic slant.}
      \glyph{C}{1000}
      \resetitalic{\italic{C}}
   \endsetglyph
\fi\fi


\comment{\section{Unfakable glyphs}
    In general, every glyph is unfakable unless we know how to fake it.}

\unfakable{capitalgrave}                % 8r,8y
\unfakable{capitalacute}                % 8r,8y
\unfakable{capitalcircumflex}           % 8r,8y
\unfakable{capitaltilde}                % 8r,8y
\unfakable{capitaldieresis}             % 8r,8y
\unfakable{capitalhungarumlaut}         % 8r,8y
\unfakable{capitalring}                 % 8r,8y
\unfakable{capitalcaron}                % 8r,8y
\unfakable{capitalbreve}                % 8r,8y
\unfakable{capitalmacron}               % 8r,8y
\unfakable{capitaldotaccent}            % 8r,8y
\unfakable{capitalcedilla}              % 8r,8y
\unfakable{capitalogonek}               % 8r,8y
\unfakable{quotesinglbase}              % 8r,8y
\unfakable{quotedblbase}                % 8r,8y
\unfakable{twelveudash}                 % faked 8r,8x
\unfakable{threequartersemdash}         % 8x (Adobe)
\unfakable{arrowleft}
\unfakable{arrowright}
\unfakable{tieaccentlowercase}
\unfakable{tieaccentcapital}
\unfakable{newtieaccentlowercase}
\unfakable{newtieaccentcapital}
\unfakable{blank}
\unfakable{dollar}                      % 8r,8y
\unfakable{quotesingle}                 % 8r,8y
\unfakable{asteriskcentered}            % faked 8r,8y
\unfakable{comma}                       % 8r,8y
\unfakable{hyphendbl}
\unfakable{period}                      % 8r,8y
\unfakable{fraction}                    % 8r,8y
\unfakable{angbracketleft}
\unfakable{minus}                       % 8r,8y
\unfakable{angbracketright}
\unfakable{Omegainv}
\unfakable{bigcircle}
\unfakable{Omega}
\unfakable{openbracketleft}             % faked 8r,8y
\unfakable{openbracketright}            % faked 8r,8y
\unfakable{arrowup}
\unfakable{arrowdown}
\unfakable{asciigrave}                  % 8r,8y
\unfakable{born}
\unfakable{divorced}
\unfakable{died}
\unfakable{leaf}
\unfakable{married}
\unfakable{musicalnote}
\unfakable{tildelow}                    % 8r,8y
\unfakable{hyphendblchar}
\unfakable{asciibreve}                  % 8r,8y
\unfakable{asciicaron}                  % 8r,8y
\unfakable{asciiacutedbl}               % faked 8r,8y
\unfakable{asciigravedbl}               % faked 8r,8y
\unfakable{dagger}                      % 8r,8y
\unfakable{daggerdbl}                   % 8r,8y
\unfakable{bardbl}                      % faked 8r,8y
\unfakable{perthousand}                 % 8r,8y
\unfakable{bullet}                      % 8r,8y
\unfakable{centigrade}                  % faked 8r,8y
\unfakable{dollaroldstyle}              % 8x (Adobe)
\unfakable{centoldstyle}                % 8x (Adobe)
\unfakable{florin}                      % 8r,8y
\unfakable{colonmonetary}               % 8x (Adobe)
\unfakable{won}
\unfakable{naira}
\unfakable{guarani}
\unfakable{peso}
\unfakable{lira}                        % 8x (URW)
\unfakable{recipe}
\unfakable{interrobang}
\unfakable{interrobangdown}
\unfakable{dong}
\unfakable{trademark}                   % 8r,8y
\unfakable{pertenthousand}              % faked 8x
\unfakable{pilcrow}
\unfakable{baht}
\unfakable{numero}
\unfakable{discount}
\unfakable{estimated}
\unfakable{openbullet}
\unfakable{servicemark}
\unfakable{quillbracketleft}
\unfakable{quillbracketright}
\unfakable{cent}                        % 8r,8y
\unfakable{sterling}                    % 8r,8y
\unfakable{currency}                    % 8r,8y
\unfakable{yen}                         % 8r,8y
\unfakable{brokenbar}                   % 8r,8y
\unfakable{section}                     % 8r,8y
\unfakable{asciidieresis}               % 8r,8y
\unfakable{copyright}                   % 8r,8y
\unfakable{ordfeminine}                 % 8r,8y
\unfakable{copyleft}
\unfakable{logicalnot}                  % 8r,8y
\unfakable{circledP}
\unfakable{registered}                  % 8r,8y
\unfakable{asciimacron}                 % 8r,8y
\unfakable{degree}                      % 8r,8y
\unfakable{plusminus}                   % 8r,8y
\unfakable{twosuperior}                 % 8r,8y
\unfakable{threesuperior}               % 8r,8y
\unfakable{asciiacute}                  % 8r,8y
\unfakable{mu}                          % 8r,8y
\unfakable{paragraph}                   % 8r,8y
\unfakable{periodcentered}              % 8r,8y
\unfakable{referencemark}
\unfakable{onesuperior}                 % 8r,8y
\unfakable{ordmasculine}                % 8r,8y
\unfakable{radical}
\unfakable{onequarter}                  % 8r,8y
\unfakable{onehalf}                     % 8r,8y
\unfakable{threequarters}               % 8r,8y
\unfakable{euro}
\unfakable{multiply}                    % 8r,8y
\unfakable{divide}                      % 8r,8y


\comment{\section{Accents}
   \TeX's math accent-positioning requires accents to have zero depth.}

\setcommand\zerodepth#1{
  \ifisglyph{#1}\then
   \resetglyph{#1}
      \glyph{#1}{1000}
      \resetdepth{0}
   \endresetglyph
  \fi
}
\zerodepth{capitalgrave}
\zerodepth{capitalacute}
\zerodepth{capitalcircumflex}
\zerodepth{capitaltilde}
\zerodepth{capitaldieresis}
\zerodepth{capitalhungarumlaut}
\zerodepth{capitalring}
\zerodepth{capitalcaron}
\zerodepth{capitalbreve}
\zerodepth{capitalmacron}
\zerodepth{capitaldotaccent}

\endmetrics
\end{document}