summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:45:36 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:45:36 +0000
commit2939242967231097459df0fc3150fabc2f639111 (patch)
tree00fe7273a946e43cc5d5b9fb00250af4fe82866e /Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx
parent5bcbcf594f1d7f279c5897da00d676e6270a0a9a (diff)
trunk/Master/texmf-dist/tex/fontinst
git-svn-id: svn://tug.org/texlive/trunk@612 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx')
-rw-r--r--Master/texmf-dist/tex/fontinst/latinmtx/ltcmds.mtx302
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}