%%% ==================================================================== %%% @TeX-font-metrics-file{ %%% author = "Alan Jeffrey and Ulrik Vieth and %%% Lars Hellstr{\"o}m", %%% version = "1.923", %%% date = "2003-03-29", %%% time = "16:12:42 +01:00", %%% filename = "lubuild.mtx", %%% email = "fontinst@tug.org", %%% 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 builds upper case latin %%% letters.", %%% package = "fontinst", %%% dependencies = "fontinst.sty, fontdoc.sty", %%% } %%% ==================================================================== \relax \documentclass[twocolumn]{article} \usepackage{fontdoc}[2002/03/01] \showbranches \title{Building upper case} \author{Alan Jeffrey\and Ulrik Vieth\and Lars Hellstr\"om} \date{4 January 2002\\Version 1.923} \begin{document} \maketitle \section{Introduction} This file builds upper case (full capitals, \texttt{u} case) latin letters, or more precisely, it makes sure that a set of glyphs is defined that cover the upper case letters used in European latin scripts. Even that is a slight exaggeration, because there are a couple of ``exotic'' letters that are missing, but most people never try to use those anyway. For the glyphs set in this file to look anything like the letters they are supposed to be, it is necessary that the glyphs for unaccented letters and for accents already exist and look like they are supposed to. In that case, the commands below will manufacture decent substitutes for the missing glyphs by composing letters and accents. If some of these base glyphs are missing, then a ``missing glyph'' substitute will be supplied for them. Such substitutes will show up in print as black squares, and most DVI drivers will emit a warning when producing them. The most common case encountered is that almost all unaccented letters and accents are available, but only about half of the accented letters. Then for the other half, quite decent substitutes are made, but a few letters only show up as ``missing glyph'' boxes. \metrics \needsfontinstversion{1.910} \usemtxpackage{ltcmds} \ProvidesMtxPackage{lubuild} \begincomment \section{Base upper case glyphs} The following commands make sure all the unaccented letter glyphs and accent glyphs are set. If any of them are not already set at this point, then those will be set to ``missing glyph'' boxes. \subsection{Letters} \endcomment \unfakable{A} \unfakable{AE} \unfakable{B} \unfakable{C} \unfakable{D} \unfakable{E} \unfakable{Eng} \unfakable{Eth} \unfakable{F} \unfakable{G} \unfakable{H} \unfakable{I} \unfakable{J} \unfakable{K} \unfakable{L} \unfakable{M} \unfakable{N} \unfakable{O} \unfakable{OE} \unfakable{Oslash} \unfakable{P} \unfakable{Q} \unfakable{R} \unfakable{S} \unfakable{T} \unfakable{Thorn} \unfakable{U} \unfakable{V} \unfakable{W} \unfakable{X} \unfakable{Y} \unfakable{Z} \begincomment \subsection{Accents} The accents on designed full capitals are often different from the accents on lower case letters: strokes are generally at a smaller angle to the horizontal, so that the accent is compressed in the vertical direction. Most fonts do not provide those accents as separate characters, but one should nonetheless try to use them whenever possible. The standard names appear (see for example the \emph{Adobe Glyph List}) to be the same as for the normal accents, but with the first letter in upper case. When these accents are not available, it is anyway possible to make do with the ordinary accents. \endcomment \unfakabletopaccent{grave} \unfakabletopaccent{acute} \unfakabletopaccent{circumflex} \unfakabletopaccent{tilde} \unfakabletopaccent{dieresis} \unfakabletopaccent{hungarumlaut} \unfakabletopaccent{ring} \unfakabletopaccent{caron} \unfakabletopaccent{breve} \unfakabletopaccent{macron} \unfakabletopaccent{dotaccent} \unfakable{cedilla} \unfakable{ogonek} \unfakable{quoteright} \unfakable{lslashslash} \setglyph{Acute} \glyph{acute}{1000} \endsetglyph \setglyph{Grave} \glyph{grave}{1000} \endsetglyph \setglyph{Circumflex} \glyph{circumflex}{1000} \endsetglyph \setglyph{Tilde} \glyph{tilde}{1000} \endsetglyph \setglyph{Dieresis} \glyph{dieresis}{1000} \endsetglyph \setglyph{Breve} \glyph{breve}{1000} \endsetglyph \setglyph{Dotaccent} \glyph{dotaccent}{1000} \endsetglyph \setglyph{Caron} \glyph{caron}{1000} \endsetglyph \setglyph{Hungarumlaut} \glyph{hungarumlaut}{1000} \endsetglyph \setglyph{Ring} \glyph{ring}{1000} \endsetglyph \setglyph{Macron} \glyph{macron}{1000} \endsetglyph \setglyph{Cedilla} \glyph{cedilla}{1000} \endsetglyph \setglyph{Ogonek} \glyph{ogonek}{1000} \endsetglyph \begincomment Note that the \TeX\ accenting algorithm assumes that accents are positioned correctly for being placed on a letter whose height is the x-height. It might happen that a font with special upper case accents, made for use with some other typesetting engine, instead has these glyphs positioned correctly for being placed on a capital. In such a case, one would first have to adjust the accent positions before they can be used. \endcomment \begincomment \section{Building accented letters} \endcomment \setglyph{Aacute} \topaccent{A}{Acute}{500} \endsetglyph \setglyph{Abreve} \topaccent{A}{Breve}{500} \endsetglyph \setglyph{Acircumflex} \topaccent{A}{Circumflex}{500} \endsetglyph \setglyph{Adieresis} \topaccent{A}{Dieresis}{500} \endsetglyph \setglyph{Agrave} \topaccent{A}{Grave}{500} \endsetglyph \setglyph{Aogonek} \botaccent{A}{Ogonek}{900} \endsetglyph \setglyph{Aring} \topaccent{A}{Ring}{500} \endsetglyph \setglyph{Atilde} \topaccent{A}{Tilde}{500} \endsetglyph \setglyph{Cacute} \topaccent{C}{Acute}{500} \endsetglyph \setglyph{Ccaron} \topaccent{C}{Caron}{500} \endsetglyph \setglyph{Ccedilla} \botaccent{C}{Cedilla}{500} \endsetglyph \setglyph{Dcaron} \topaccent{D}{Caron}{450} \endsetglyph \setglyph{Eacute} \topaccent{E}{Acute}{500} \endsetglyph \setglyph{Ecaron} \topaccent{E}{Caron}{500} \endsetglyph \setglyph{Ecircumflex} \topaccent{E}{Circumflex}{500} \endsetglyph \setglyph{Edieresis} \topaccent{E}{Dieresis}{500} \endsetglyph \setglyph{Egrave} \topaccent{E}{Grave}{500} \endsetglyph \setglyph{Eogonek} \botaccent{E}{Ogonek}{850} \endsetglyph \setglyph{Gbreve} \topaccent{G}{Breve}{500} \endsetglyph \setglyph{Iacute} \topaccent{I}{Acute}{500} \endsetglyph \setglyph{Icircumflex} \topaccent{I}{Circumflex}{500} \endsetglyph \setglyph{Idieresis} \topaccent{I}{Dieresis}{500} \endsetglyph \setglyph{Idotaccent} \topaccent{I}{Dotaccent}{500} \endsetglyph \setglyph{Igrave} \topaccent{I}{Grave}{500} \endsetglyph \setglyph{Lacute} \topaccent{L}{Acute}{250} \endsetglyph \setglyph{Lcaron} \glyph{L}{1000} \ifisint{monowidth}\then\Else \movert{-200} \Fi \glyph{quoteright}{1000} \endsetglyph \setglyph{Nacute} \topaccent{N}{Acute}{500} \endsetglyph \setglyph{Ncaron} \topaccent{N}{Caron}{500} \endsetglyph \setglyph{Ntilde} \topaccent{N}{Tilde}{500} \endsetglyph \setglyph{Oacute} \topaccent{O}{Acute}{500} \endsetglyph \setglyph{Ocircumflex} \topaccent{O}{Circumflex}{500} \endsetglyph \setglyph{Odieresis} \topaccent{O}{Dieresis}{500} \endsetglyph \setglyph{Ograve} \topaccent{O}{Grave}{500} \endsetglyph \setglyph{Ohungarumlaut} \topaccent{O}{Hungarumlaut}{500} \endsetglyph \setglyph{Otilde} \topaccent{O}{Tilde}{500} \endsetglyph \setglyph{Racute} \topaccent{R}{Acute}{500} \endsetglyph \setglyph{Rcaron} \topaccent{R}{Caron}{500} \endsetglyph \setglyph{Sacute} \topaccent{S}{Acute}{500} \endsetglyph \setglyph{Scaron} \topaccent{S}{Caron}{500} \endsetglyph \setglyph{Scedilla} \botaccent{S}{Cedilla}{500} \endsetglyph \setglyph{Tcaron} \topaccent{T}{Caron}{500} \endsetglyph \setglyph{Tcedilla} \botaccent{T}{Cedilla}{500} \endsetglyph \setglyph{Uacute} \topaccent{U}{Acute}{500} \endsetglyph \setglyph{Ucircumflex} \topaccent{U}{Circumflex}{500} \endsetglyph \setglyph{Udieresis} \topaccent{U}{Dieresis}{500} \endsetglyph \setglyph{Ugrave} \topaccent{U}{Grave}{500} \endsetglyph \setglyph{Uhungarumlaut} \topaccent{U}{Hungarumlaut}{500} \endsetglyph \setglyph{Uring} \topaccent{U}{Ring}{500} \endsetglyph \setglyph{Yacute} \topaccent{Y}{Acute}{500} \endsetglyph \setglyph{Ydieresis} \topaccent{Y}{Dieresis}{500} \endsetglyph \setglyph{Zacute} \topaccent{Z}{Acute}{500} \endsetglyph \setglyph{Zcaron} \topaccent{Z}{Caron}{500} \endsetglyph \setglyph{Zdotaccent} \topaccent{Z}{Dotaccent}{500} \endsetglyph \begincomment \section{Other glyphs that can be built} \endcomment \setglyph{Lslash} \glyph{lslashslash}{1000} \movert{\kerning{lslashslash}{L}} \glyph{L}{1000} \endsetglyph \setglyph{Ng} \glyph{Eng}{1000} \comment{This is simply an alias.} \endsetglyph \setglyph{dotlessI} \glyph{I}{1000} \comment{This simplifies making all-caps fonts.} \endsetglyph \setglyph{dotlessJ} \glyph{J}{1000} \comment{This simplifies making all-caps fonts.} \endsetglyph \setglyph{IJ} \glyph{I}{1000} \movert{\kerning{I}{J}} \glyph{J}{1000} \endsetglyph \setglyph{SS} \glyph{S}{1000} \movert{\kerning{S}{S}} \glyph{S}{1000} \endsetglyph \begincomment \subsection{All-caps spaced digraphs} These glyphs are combinations of upper case letters in which the distances between them have been increased by $\TypesetIntegerExpression{\int{capspacing}}$. These are intended for use in all-caps fonts that are made with a nonzero $\TypesetIntegerExpression{\int{letterspacing}}$ equal to the $\TypesetIntegerExpression{\int{capspacing}}$. \endcomment \ifisint{letterspacing}\then \setint{capspacing}{\int{letterspacing}} \Else \setint{capspacing}{0} \Fi \setglyph{FFspaced} \glyph{F}{1000} \movert{\add{\kerning{F}{F}}{\int{capspacing}}} \glyph{F}{1000} \endsetglyph \setleftrightkerning{FFspaced}{F}{1000} \setleftrightkerning{Dbar}{Eth}{1000} \setglyph{FIspaced} \glyph{F}{1000} \movert{\add{\kerning{F}{I}}{\int{capspacing}}} \glyph{I}{1000} \endsetglyph \setleftkerning{FIspaced}{F}{1000} \setrightkerning{FIspaced}{I}{1000} \setglyph{FLspaced} \glyph{F}{1000} \movert{\add{\kerning{F}{L}}{\int{capspacing}}} \glyph{L}{1000} \endsetglyph \setleftkerning{FLspaced}{F}{1000} \setrightkerning{FLspaced}{L}{1000} \setglyph{FFIspaced} \glyph{FFspaced}{1000} \movert{\add{\kerning{FFspaced}{I}}{\int{capspacing}}} \glyph{I}{1000} \endsetglyph \setleftkerning{FFIspaced}{F}{1000} \setrightkerning{FFIspaced}{I}{1000} \setglyph{FFLspaced} \glyph{FFspaced}{1000} \movert{\add{\kerning{FFspaced}{L}}{\int{capspacing}}} \glyph{L}{1000} \endsetglyph \setleftkerning{FFLspaced}{F}{1000} \setrightkerning{FFLspaced}{L}{1000} \setglyph{IJspaced} \glyph{I}{1000} \movert{\add{\kerning{I}{J}}{\int{capspacing}}} \glyph{J}{1000} \endsetglyph \setleftkerning{IJspaced}{I}{1000} \setrightkerning{IJspaced}{J}{1000} \setglyph{SSspaced} \glyph{S}{1000} \movert{\add{\kerning{S}{S}}{\int{capspacing}}} \glyph{S}{1000} \endsetglyph \setleftrightkerning{SSspaced}{S}{1000} \begincomment \section{All-caps kerning} \endcomment \setleftrightkerning{dotlessI}{I}{1000} \setleftrightkerning{dotlessJ}{J}{1000} \setleftrightkerning{Aacute}{A}{1000} \setleftrightkerning{Abreve}{A}{1000} \setleftrightkerning{Acircumflex}{A}{1000} \setleftrightkerning{Adieresis}{A}{1000} \setleftrightkerning{Agrave}{A}{1000} \setleftrightkerning{Aogonek}{A}{1000} \setleftrightkerning{Aring}{A}{1000} \setleftrightkerning{Atilde}{A}{1000} \setleftrightkerning{Cacute}{C}{1000} \setleftrightkerning{Ccaron}{C}{1000} \setleftrightkerning{Ccedilla}{C}{1000} \setleftrightkerning{Dcaron}{D}{1000} \setleftrightkerning{Eacute}{E}{1000} \setleftrightkerning{Ecaron}{E}{1000} \setleftrightkerning{Ecircumflex}{E}{1000} \setleftrightkerning{Edieresis}{E}{1000} \setleftrightkerning{Egrave}{E}{1000} \setleftrightkerning{Eogonek}{E}{1000} \setleftrightkerning{Gbreve}{G}{1000} \setleftkerning{IJ}{I}{1000} \setleftrightkerning{Iacute}{I}{1000} \setleftrightkerning{Icircumflex}{I}{1000} \setleftrightkerning{Idieresis}{I}{1000} \setleftrightkerning{Idotaccent}{I}{1000} \setleftrightkerning{Igrave}{I}{1000} \setrightkerning{IJ}{J}{1000} \setleftrightkerning{Lacute}{L}{1000} \setleftrightkerning{Lslash}{L}{1000} \setleftkerning{Lcaron}{L}{1000} \setleftrightkerning{Nacute}{N}{1000} \setleftrightkerning{Ncaron}{N}{1000} \setleftrightkerning{Ntilde}{N}{1000} \setleftkerning{Ng}{N}{1000} \setrightkerning{Ng}{J}{1000} \setleftrightkerning{Oacute}{O}{1000} \setleftrightkerning{Ocircumflex}{O}{1000} \setleftrightkerning{Odieresis}{O}{1000} \setleftrightkerning{Ograve}{O}{1000} \setleftrightkerning{Ohungarumlaut}{O}{1000} \setleftrightkerning{Oslash}{O}{1000} \setleftrightkerning{Otilde}{O}{1000} \setleftrightkerning{Rcaron}{R}{1000} \setleftrightkerning{Racute}{R}{1000} \setleftrightkerning{SS}{S}{1000} \setleftrightkerning{Sacute}{S}{1000} \setleftrightkerning{Scaron}{S}{1000} \setleftrightkerning{Scedilla}{S}{1000} \setleftrightkerning{Tcaron}{T}{1000} \setleftrightkerning{Tcedilla}{T}{1000} \setleftrightkerning{Uacute}{U}{1000} \setleftrightkerning{Ucircumflex}{U}{1000} \setleftrightkerning{Udieresis}{U}{1000} \setleftrightkerning{Ugrave}{U}{1000} \setleftrightkerning{Uhungarumlaut}{U}{1000} \setleftrightkerning{Uring}{U}{1000} \setleftrightkerning{Yacute}{Y}{1000} \setleftrightkerning{Ydieresis}{Y}{1000} \setleftrightkerning{Zacute}{Z}{1000} \setleftrightkerning{Zcaron}{Z}{1000} \setleftrightkerning{Zdotaccent}{Z}{1000} \endmetrics \section{Changes} The original version of this file was created in February 2003, although it is based on code from the traditional \texttt{latin.mtx}. The changes that have been made after that are as follows. 2003/03/15: Using \verb|\unfakabletopaccent| for the accent characters. This should change the appearence of accented letters built using such a character from ``a black square'' to ``a letter with a black square above''. Neither is satisfactory, but the latter conveys more information. (LH) 2003/03/29: Added some code (from \texttt{latin.mtx}) for all-caps glyphs that had been forgotten. (LH) 2005/05/21: Improved default for $\TypesetIntegerExpression{\int{capspacing}}$. (LH) \end{document}