diff options
Diffstat (limited to 'Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx')
-rw-r--r-- | Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx b/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx new file mode 100644 index 00000000000..ffe2af0efd3 --- /dev/null +++ b/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx @@ -0,0 +1,302 @@ +% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, +% hacked and maintained 1997, 1998 Sebastian Rahtz, +% copyright 1998, 1999 the fontinst maintenance team and any individual +% authors listed elsewhere in this file. All rights reserved. +% +% This file is part of the fontinst system version 1.9. +% ----------------------------------------------------- +% +% It may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1.0 or, at your option, any later version. +% +%%% ==================================================================== +%%% @TeX-font-metrics-file{ +%%% author = "Alan Jeffrey and Ulrik Vieth", +%%% version = "1.915", +%%% date = "2003-03-29", +%%% time = "16:07:18 +01:00", +%%% filename = "ltcmds.mtx", +%%% email = "fontinst@cogs.susx.ac.uk", +%%% URL = "http://www.tug.org/applications/fontinst/", +%%% checksum = "", +%%% codetable = "ISO/ASCII", +%%% keywords = "metrics, TeX, PostScript", +%%% supported = "yes", +%%% abstract = "This is a font metrics file, for use with the +%%% fontinst utility. It provides the defaults +%%% used to install the Latin glyphs.", +%%% package = "fontinst", +%%% dependencies = "fontinst.sty, fontdoc.sty", +%%% } +%%% ==================================================================== + +\relax + +\documentclass[twocolumn]{article} +\usepackage{fontdoc}[1999/11/04] + +\title{The file \texttt{ltcmds.mtx}} +\author{Alan Jeffrey\and Ulrik Vieth\and Lars Hellstr\"om} +\date{20 October 2000\\Version 1.915} + +\showbranches + +\begin{document} +\maketitle + +\metrics + +\needsfontinstversion{1.917} +\ProvidesMtxPackage{ltcmds} + +\begincomment +\section{Some commands for making latin glyphs} + +\endcomment + +% \unfakable is a glyph which can't be faked. +\setcommand\unfakable#1{ + \setglyph{#1} + \glyphrule{\int{xheight}}{\int{xheight}} + \glyphwarning{missing glyph `#1'} + \endsetglyph +} +\begincomment\medskip +An \textbf{Unfakable} is a glyph which can't be faked. An +``\textbf{Unfakable `\#1'}\,'' is equivalent to +\begin{quotation}\unfakable{\macroparameter{1}}\end{quotation} + +\resetcommand\unfakable#1{% + \Aheading{Unfakable `\TypesetStringExpression{#1}'}% +} +\endcomment + + +\setcommand\topaccent#1#2#3{ + \push + \moveup{\max{0}{\sub{\height{#1}}{\int{xheight}}}} + \movert{\add{\sub{\scale{\width{#1}}{#3}}{\half{\width{#2}}}} + {\scale{\sub{\height{#1}}{\int{xheight}}}{\int{italicslant}}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} +\begincomment\medskip +A \textbf{Top accent} is built by placing the center of the accent at +the given position along the width of the letter, raised up by the +difference between the height of the letter and the xheight. This is +the algorithm used by the \TeX\ \verb|\accent| primitive. +A ``\textbf{Top accent} `\#1' with `\#2' at \#3'' is equivalent to +\begin{quotation} + \topaccent{\macroparameter{1}}{\macroparameter{2}}{\macroparameter{3}} +\end{quotation} +\resetcommand\topaccent#1#2#3{% + \Bheading{Top accent} `\TypesetStringExpression{#1}' with + `\TypesetStringExpression{#2}' at $\TypesetIntegerExpression{#3}$% +} +\endcomment + + +\setcommand\topaccentas#1#2#3#4{ + \push + \moveup{\sub{\height{#4}}{\height{#2}}} + \movert{\add{ + \sub{\scale{\width{#1}}{#3}}{\half{\width{#2}}} + }{ + \scale{\sub{\height{#4}}{\height{#2}}}{\int{italicslant}} + }} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} +\begincomment\medskip +A \textbf{Top accent \dots\ as} is built by placing the center of the +accent at the given position along the width of the letter, raised up +by the difference between the height of the accent and the height of +the model glyph. A ``\textbf{Top accent} `\#1' with `\#2' at \#3 as +\#4'' is equivalent to +\begin{quotation} + \topaccentas{\macroparameter{1}}{\macroparameter{2}} + {\macroparameter{3}}{\macroparameter{4}} +\end{quotation} +\resetcommand\topaccentas#1#2#3#4{% + \Bheading{Top accent} `\TypesetStringExpression{#1}' with + `\TypesetStringExpression{#2}' at $\TypesetIntegerExpression{#3}$ + as `\TypesetStringExpression{#4}'% +} +\endcomment + + +\setcommand\botaccent#1#2#3{ + \push + \movert{\sub{\scale{\width{#1}}{#3}}{\half{\width{#2}}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} +\begincomment\medskip +A \textbf{Bottom accent} is built by placing the center of the accent at +the given position along the width of the letter. A ``\textbf{Bottom +accent} `\#1' with `\#2' at \#3'' is equivalent to +\begin{quotation} + \botaccent{\macroparameter{1}}{\macroparameter{2}}{\macroparameter{3}} +\end{quotation} +\resetcommand\botaccent#1#2#3{% + \Bheading{Bottom accent} `\TypesetStringExpression{#1}' with + `\TypesetStringExpression{#2}' at $\TypesetIntegerExpression{#3}$% +} +\endcomment + + +\setcommand\unfakabletopaccent#1{ + \setglyph{#1} + \moveup{\add{\int{xheight}}{50}} + \glyphrule{\half{\int{xheight}}}{\half{\int{xheight}}} + \glyphwarning{missing glyph `#1'} + \moveup{\neg{\add{\int{xheight}}{50}}} + \endsetglyph +} +\begincomment\medskip +An \textbf{Unfakable top accent} is the same as an +\textbf{Unfakable}, except that the rule is smaller and has a more +accent-like position. An ``\textbf{Unfakable top accent `\#1'}\,'' +is equivalent to +\begin{quotation}\unfakabletopaccent{\macroparameter{1}}\end{quotation} + +\resetcommand\unfakabletopaccent#1{% + \Aheading{Unfakable top accent `\TypesetStringExpression{#1}'}% +} +\endcomment + + + +% A c&sc top accent glyph is placed using the small glyphs if +% available, and otherwise by shrinking the equivalent capital. + +\setcommand\csctopaccent#1#2#3{ +% \ifareglyphs{#1small,#2small}\then +% \topaccent{#1small}{#2small}{#3} +% \Else + \cscglyph{#1#2} +% \Fi +} + +% A c&sc bot accent glyph is placed using the small glyphs if +% available, and otherwise by shrinking the equivalent capital. + +\setcommand\cscbotaccent#1#2#3{ +% \ifisglyph{#1small}\then +% \botaccent{#1small}{#2small}{#3} +% \Else + \cscglyph{#1#2} +% \Fi +} + +% A c&sc accent is created by moving a shrunk accent up by the +% difference between a scaled x and a scaled X. + +\setcommand\cscaccent#1{ + \moveup{\scale{\int{xheight}}{\sub{1000}{\int{smallcapsscale}}}} + \cscglyph{#1} + \moveup{\scale{\int{xheight}}{\sub{\int{smallcapsscale}}{1000}}} +} + + +\begincomment +\section{Default values} +\endcomment + +\setint{italicslant}{0} + +\ifisglyph{x}\then + \setint{xheight}{\height{x}} +\Else + \setint{xheight}{500} +\Fi + +\ifisglyph{A}\then + \setint{capheight}{\height{A}} + \comment{\texttt{t1.etx} has traditionally measured the capheight + on \texttt{X}, whereas \texttt{latin.mtx} measured it on + \texttt{A}. There is probably no good reason for this + difference.} +\Else\ifisglyph{X}\then + \setint{capheight}{\height{X}} +\Else + \setint{capheight}{750} +\Fi\Fi + +\ifisglyph{d}\then + \setint{ascender}{\height{d}} +\Else + \setint{ascender}{\int{capheight}} +\Fi + +\ifisint{descender_neg}\then + \setint{descender}{\neg{\int{descender_neg}}} +\Else\ifisglyph{g}\then + \setint{descender}{\depth{g}} + \comment{Similarly, \texttt{t1.etx} has traditionally measured + the descender depth on \texttt{p}, whereas \texttt{latin.mtx} + measured it on \texttt{g}.} +\Else\ifisglyph{p}\then + \setint{descender}{\depth{p}} +\Else + \setint{descender}{250} +\Fi\Fi\Fi + +\setint{underlinethickness}{40} +\setint{visiblespacedepth}{200} +\setint{visiblespacewidth}{400} +\setint{visiblespacesurround}{50} +\setint{capspacing}{0} + + +\ifisglyph{parenleft}\then + \setint{vaxis}{\half{\sub{\height{parenleft}}{\depth{parenleft}}}} +\Else + \setint{vaxis}{\half{\int{xheight}}} +\Fi + + +\endmetrics + + + + + +\section{Changes} + +1999/10/25: Added \verb|\setglyphs| for \texttt{Macronsmall} and +\texttt{macronsmall}. (LH) + +1999/10/25: Simplified definition of \verb|\unfakable|. (UV\&LH) +Rationale: It is thoroughly confusing if the size of the black box +created by \verb|\unfakable| depends on the metrics of an unencoded +glyph that isn't accessible and therefore unavailable for all pratical +purposes. + +2000/10/20--2003/03/15: File split off from \texttt{latin.mtx} and +reorganised into a separate package. (LH) (It took until the last of +these dates before all the useless code had been removed.) Also made +special typeset definitions of many commands and modernized the +conditionals. + +2003/03/15: Made the \verb|\unfakable| a square with side +$\TypesetIntegerExpression{\int{xheight}}$ and added the +\verb|\unfakabletopaccent| command. (LH) Rationale: That the glyph is +unavailable doesn't mean the rule replacing it has to look bad. This +should make them blend in better with any glyphs that are actually +available. + +2003/03/15: Added \verb|\topaccentas|. (LH) It is based on a command +|\idotaccent| defined by Walter Schmidt. + +2003/03/15: Added calculation of a vertical symmetry axis position +$\TypesetIntegerExpression{\int{vaxis}}$. (LH) It is based on some +code by Walter Schmidt. + +2004/08/07: Fixed typo in vertical symmetry axis code. (LH) + +\end{document} |