diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/fontinst/encspecs')
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex | 1443 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx | 985 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx | 1027 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx | 1484 |
4 files changed, 4939 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex new file mode 100644 index 00000000000..a23be98dd27 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/encspecs.tex @@ -0,0 +1,1443 @@ +\documentclass[a4paper]{article} + +\usepackage{array} + +\makeatletter +\@ifundefined{l@nohyphenation}{\newlanguage\l@nohyphenation}{} +\DeclareRobustCommand\meta[1]{% + \ensuremath{\langle}% + \sbox{\z@}{% + \setlanguage\l@nohyphenation + \normalfont\itshape #1\/% + \setlanguage\language + }% + \unhbox\z@ + \ensuremath{\rangle}% +} +\makeatother +\DeclareRobustCommand\marg[1]{% + \texttt{\char`\{}\meta{#1}\texttt{\char`\}}% +} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\makeatletter +\DeclareTextFontCommand\textsmaller{% + \fontsize{\scaledsize{\f@size}}{\f@baselineskip}\selectfont +} +\newcommand\scaledsize[1]{% + \ifdim #1\p@>6\p@ + \ifdim #1\p@>7\p@ + \ifdim #1\p@>8\p@ + \ifdim #1\p@>9\p@ + \ifdim #1\p@>10\p@ + \ifdim #1\p@>11\p@ + \ifdim #1\p@>12\p@ + \ifdim #1\p@>14\p@ 14% + \else 12\fi + \else 11\fi + \else 10\fi + \else 9\fi + \else 8\fi + \else 7\fi + \else 6\fi + \else 5\fi +} +\makeatother +\DeclareRobustCommand\ETX{\textsmaller{ETX}} +\DeclareRobustCommand\PDF{\textsmaller{PDF}} + +% From tugboat.cls +\def\thinskip{\hskip 0.16667em\relax} +\def\endash{--} +\def\emdash{\endash-} +\makeatletter +\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} +\def\dash{\d@sh\nobreak\endash} +\def\Dash{\d@sh\nobreak\emdash} +\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} +\def\rdash{\d@sh\nobreak\endash} +\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} +\def\Rdash{\d@sh\nobreak\emdash} +\newcommand{\La}% + {L\kern-.36em + {\setbox0\hbox{T}% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }} +\IfFileExists{mflogo.sty}% + {\RequirePackage{mflogo}}% + {\TBWarning + {Package mflogo.sty not available --\MessageBreak + Proceeding to emulate mflogo.sty} + \DeclareRobustCommand\logofamily{% + \not@math@alphabet\logofamily\relax + \fontencoding{U}\fontfamily{logo}\selectfont} + \DeclareTextFontCommand{\textlogo}{\logofamily} + \def\MF{\textlogo{META}\-\textlogo{FONT}\@} + \def\MP{\textlogo{META}\-\textlogo{POST}\@} + \DeclareFontFamily{U}{logo}{} + \DeclareFontShape{U}{logo}{m}{n}{% + <8><9>gen*logo% + <10><10.95><12><14.4><17.28><20.74><24.88>logo10% + }{} + \DeclareFontShape{U}{logo}{m}{sl}{% + <8><9>gen*logosl% + <10><10.95><12><14.4><17.28><20.74><24.88>logosl10% + }{} + \DeclareFontShape{U}{logo}{m}{it}{% + <->ssub*logo/m/sl% + }{}% + } +\makeatother +\def\AllTeX{(\La\kern-.075em)\kern-.075em\TeX} + +\usepackage{shortvrb} +\MakeShortVerb{\|} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\newcommand{\TeXOmega}{Omega} +\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} +\DeclareRobustCommand\package[1]{\textsf{#1}} + +\providecommand*{\href}[2]{#2} +\newcommand*{\ctanref}[2]{\href{ftp://ftp.ctan.org/#1}{#2}} + +\title{Writing \ETX\ format font encoding specifications} +\author{Lars Hellstr\"om} +\date{2003/07/09} + +\begin{document} +\maketitle + +\begin{abstract} + This paper explains how one writes formal specifications of font + encodings for \LaTeX\ and suggests a ratification procedure for such + specifications. +\end{abstract} + + +\tableofcontents + +\vspace{0mm plus 35mm} +\pagebreak[2] + + +\section{Introduction} + +One of the many difficult problems any creator of a new typesetting +system encounters is that of \emph{font construction}\Dash to create +fonts that provide all information that the typesetting system needs +to do its job. From the early history of \TeX, we learn that this +problem is so significant that it motivated the creation of \TeX's +companion and equal \MF, whose implementation proved to be an even +greater scientific challenge than \TeX\ was. It is also a tell-tale +sign that the \texttt{fonts} subtree of the te\TeX\ distribution is +about three times as large as the \texttt{tex} subtree: fonts are +important, and not at all trivial to generate. + +The most respected and celebrated part of font construction is +\emph{font design}\Ldash the creation from practically nothing of new +letter (and symbol) shapes, in pursuit of an artistic +vision\Dash but it is also something very few people have the time +and skill to carry through. More common is the task of \emph{font +installation}, where one has to solve the very concrete problem of how +to set up an existing font so that it can be used with \AllTeX. The +subproblems in this domain ranges from the very technical\Ldash how +to make different pieces of software ``talk'' to each other, for +example making information in file format~$A$ available to +program~$B$\Dash to the almost artistic\Ldash finding values for +glyph metrics and kerns that will make them look good in text\Dash +but these extremes tend to be clearly defined even if solving them +can be hard, so they are not what will be considered here. Rather, +this paper is about a class of more subtle problems that have to do +with how a font is organised. + +The technical name for such a ``font organisation'' is a \emph{font +encoding}. In some contexts, font encodings are assumed to be mere +mappings from a set of ``slots'' to a set of glyph identifiers, but +in \TeX\ the concept entails much more; the various aspects are +detailed in subsequent sections. For the moment, it is sufficient to +observe that the role that a font encoding plays in a typesetting +system is that of a standard: it describes what an author can expect +from a font, so that a document or macro package can be written that +work with a large class of fonts rather than just for one font family. +The world of \AllTeX\ would be very different if papers published in +journal $X$ that is printed in commercial font $Y$ could not use +essentially the same sources as the author prepared for typesetting +in the free font $Z$. Fine-tuning of a document (overfull lines, bad +page breaks, etc.\@) depends on the exact font used, but it is a great +convenience that one can typeset a well-coded body of text under a +rather wide range of layout parameter (of which the main font family +is one) values and still expect the result to look decent, often even +good. Had font encodings not been standardised, the results might not +even have been readable. + +When font encodings are viewed as standards, the historical states of +most \AllTeX\ font encodings becomes rather embarrassing, as they +lack something as fundamental as proper specifications! The typical +origin of a font encoding has been that some\-one creates a font that +behaves noticably different from other fonts, macro packages are then +created to support this new font, and in time other people create other +fonts that work with the same macros. At the end of this story the new +encoding exists, but it is not clear who created it, and there is +probably no document that describes all aspects of the encoding. Later +contributors have typically had to rely on a combination of imitation +of previous works, folklore, and reverse engineering of existing +software when trying to figure out what they need to provide, but the +results are not always verifiable. Furthermore the errors in this area +are usually silent\Ldash the classical error being that a `\textdollar' +was substituted for a `\textsterling' (or vice versa)\Dash which means +they can only be discovered through careful proofreading, and then +only \emph{provided} there at all exists a document which exercises +all aspects of the font encoding. Since font encodings interact with +hyphenation, exhaustive font verification through proofreading is +probably beyond the capabilities of any living \TeX pert on purely +linguistic grounds. + +Proper specifications of font encodings makes the task of font +installation\Ldash and to some extent also the task of font design, +as it too is subject to the technicalities of font encodings\Dash +much simpler, as there is then a document that authoratively gives +all details of a font encoding. This paper even goes one step further, +and proposes (i)~a standard format for formal specifications of +\AllTeX\ font encodings and (ii)~a process through which such +specifications can be ratified as \emph{the} specification of a +particular encoding. My hope is that future \AllTeX\ font encodings +will have proper specifications from the start, as this will greatly +simplify making more fonts available in these encodings, and perhaps +also make font designers aware of the subtler points of \AllTeX\ font +design, as many details have been poorly documented. + +The proposed file format for encoding specifications is a development +of the \textsf{fontinst}~\cite{fontinst-pre} \ETX\ format. One reason +for this choice was that it is an established format; many of those +who are making fonts already use it, even if for a slightly +different purpose. Another major reason is that an \ETX\ file is both +a \LaTeX\ document and a processable data file; this is the same kind +of bilinguality that has made the \texttt{.dtx} format so useful. +Finally the \ETX\ format makes it easy to create experimental font +installations when a new encoding is being designed; \textsf{fontinst} +can directly read the file, but the file can also be automatically +converted to a PostScript encoding vector if that approach seems more +convenient. +On the other hand, there are some features\Ldash most notably the +prominent role of the glyph names\Dash of the \ETX\ format that would +probably had been done differently in a file format that was built +from scratch, but this is necessary for several of the advantages +listed above. + + +% \paragraph*{Why should one make formal specifications?} +% Because the informal specifications that we have today +% are incomplete and hard to use. E.g.\ the \LaTeX\ +% \meta{enc}\texttt{enc.def} files only say something about the +% characters that are accessed via commands, and even for those you +% really have to do reverse engineering to figure out what the +% encoding contains. To figure out what the remaining characters +% should do you have to compile what the various user manuals claim +% to work and then work backwards from that, but I don't think the +% general problem of which character tokens are allowed in input is +% thoroughly treated anywhere. On top of that, \LaTeX\ itself +% contributes some character tokens when the document is being +% typeset.\footnote{This is basically the ``a \texttt{T}$*$ encoding +% must contain the characters \ldots'' problem that was the reason +% that the \texttt{T2} encoding had to be split up.} +% +% On the other side of things there are the files which tell e.g. +% \textsf{fontinst} or \textsf{AFMtoTFM} what the target font +% encoding is. These are basically recipes which are known (?\@) to +% produce valid results, and they do usually provide more +% information about the encoding than the sources listed above, but +% they don't give much information about where the recipe can be +% modified. + +% \paragraph*{Why use the \ETX\ format?} + + +\section{Points to keep in mind} + +\subsection{Characters, glyphs, and slots} + +One fundamental difference one must understand is that between +characters and glyphs. A \emph{character} is a semantic entity---it +carries some meaning, even if you usually have to combine several +characters to make up even one word---whereas a \emph{glyph} simply +is a piece of graphics. In printed text, glyphs are used to represent +characters and the first step of reading is to determine which +character(s) a given glyph is representing.\footnote{Some \PDF\ viewers +also try to accomplish this, but in general they need extra +information to do it right. The generic solution provided is to embed +a \emph{ToUnicode CMap}\Ldash which is precisely a map from slots to +characters\Rdash in the \PDF\ font object.} + +In the output, \TeX\ neither deals with characters nor glyphs, really +(although many of its messages speak of characters), but with +\emph{slots}, which essentially are numbered positions in a font. To +\TeX, a slot is simply something which can have certain metric +properties (width, height, depth, etc.\@) but to the driver which +actually does the printing the slot also specifies a glyph. The same +slot in two different fonts can correspond to two quite different +characters. + +For completeness it should also be mentioned that the \emph{input} of +\TeX\ is a stream of semantic entities and thus \TeX\ is dealing with +characters on that side, but the input is not the subject of this +paper. + + +\subsection{Ligatures} + +In typography, a \emph{ligature} is a glyph which has been formed by +joining glyphs that represent two or more characters; this joining can +involve quite a lot of deformation of the original shapes. Examples +of ligatures are the `fi' ligature (from `f' and `i'), the `\AE' +ligature (from `A' and `E'), and the `\textit{\&}' character (from `E' +and `t'), the latter two of which has evolved to become characters of +their own. For those ligatures (such as `fi') that have not evolved to +characters, \TeX\ has a mechanism for forming the ligature out of the +characters it is composed from, under the guidance of ligature\slash +kerning programs found in the font. + +More technically, what happens is really that if the |\char| (or +equivalent) for one slot is immediately followed by the |\char| (or +equivalent) for another (or the same) slot and there is a ligaturing +instruction in the \texttt{\small LIGKERN} table of the current font +which applies to this slot pair then this ligaturing instruction is +executed. This usually replaces the two slots in the pair with a +single new slot specified by the ligaturing instruction (it could +also keep one or both of the original slots, but that is less common). +\TeX\ has no idea about whether these replacements change the meaning +of anything, but \TeX\ assumes that it doesn't, and it is up to the +font designer to ensure that this is the case. + +Apart from forming ligatures in text, the ligaturing mechanism of +\TeX\ is traditionally also employed for another task which is much +more problematic. Ligatures are also used to produce certain +characters which are not part of visible ASCII---the most common are +the endash (typed as |--|) and the emdash (typed as |---|). This is a +problem because it violates \TeX's assumption that the meaning is +unchanged; the classical problem with this appears in the \texttt{OT2} +encoding, where the Unicode character \texttt{U+0446} +(\textsc{cyrillic small letter tse}) could be typed as |ts|, whilst +the |t| and |s| by themselves produced Unicode characters +\texttt{U+0442} (\textsc{cyrillic small letter te}) and \texttt{U+0441} +(\textsc{cyrillic small letter es}) respectively. \TeX's hyphenation +mechanism can however decompose ligatures, so it sometimes happened +that the \textsc{tse} was hyphenated as \textsc{te}-\textsc{es}, +which is quite different from what was intended. Since this is such +an obvious disadvantage, the use of ligatures for forming non-English +letters quickly disappeared after 8-bit input encodings became +available. The practice still remains in use for punctuation, however, +and the font designer must be aware of this. For many font encodings +there is a set of ligatures which must be present and replace two or +more characters by a single, different character. These ligatures are +called \emph{mandatory ligatures} in this paper. + +The use of mandatory ligatures in new font encodings is strongly +discouraged, for a number of reasons. The main problem is that they +create unhealthy dependencies between input and output encoding, +whereas these should ideally be totally independent. Using ligatures +in this way complicates the internal representation of text, and it +also makes it much harder to typeset text where those ligatures are not +wanted (such as verbatim text). Furthermore it creates problems with +kerning, since the ``ligature'' has not yet been formed when a kern +to the left of it is inserted. Finally, a much better solution (when +it is available) is to use an \TeXOmega\ translation process +(see~\cite[Sec.~8--11]{Omega-doc}), since that \emph{is} independent +of the font, different translations can be combined, and they can +easily handle even ``abbreviations'' much more complicated than those +ligatures can deal with. + + +\subsection{Output stages} + +On its way out of \LaTeX\ towards the printed text, a character passes +through a number of stages. The following five seem to cover what is +relevant for the present discussion: +\begin{enumerate} + \item \emph{\LaTeX\ Internal Character Representation} (LICR); + see~\cite{LaTeXCompanion}, Section~7.11 for a full description. + At this point the character is a character token (e.g.~|a|), + a text command (e.g.~|\ss|), or a combination (e.g.~|\H{o}|). + \item \emph{Horizontal material;} this is what the character is + en route from \TeX's mouth to its stomach. For most characters + this is equivalent to a single |\char| command (e.g.\ |a| is + equivalent to |\char|\,|97|), but some require more than one, some + are combined using the |\accent| and |\char| commands, some + involve rules and\slash or kerns, and some are built using boxes + that arbitrarily combine the above elements. + \item \emph{DVI commands;} this is the DVI file commands that + produce the printed representation of the character. + \item \emph{Printed text;} this is the graphical representation of + the character, e.g. as ink on paper or as a pattern on a computer + screen. Here the text consists of glyphs. + \item \emph{Interpreted text;} this is essentially printed text + modulo equivalence of interpretation, hence the text doesn't really + reach this stage until someone reads it. Here the text consists of + characters. +\end{enumerate} + +In theory there is a universal mapping from LICR to interpreted text, +but various technical restrictions make it impossible to simultaneously +support the entire mapping. A \LaTeX\ encoding selects a restriction +of this mapping to a limited set which will be ``well supported'' +(meaning kerning and such between characters in the set works), whereas +elements outside this set at best can be supported through temporary +encoding changes. The encoding also specifies a decomposition of the +mapping into one part which maps LICR to horizontal material and one +part which maps horizontal material to interpreted text. The first +part is realized by the text command definitions usually found in the +\meta{enc}\texttt{enc.def} file for the encoding. The second part is +the font encoding, the specification of which is the topic of this +paper. It is also worth noticing that an actual font is a mapping of +horizontal material to printed text. + +An alternative decomposition of the mapping from LICR to interpreted +text would be at the DVI command level, but even though this +decomposition is realized in most \TeX\ implementations, it has very +little relevance for the discussion of encodings. The main reason for +this is that it depends not only on the encoding of a font, but +also on its metrics. Furthermore it is worth noticing that in e.g.\ +pdf\TeX\ there need not be a DVI command level. + + +\subsection{Hyphenation} + +There are strong connections between font encoding and hyphenation because +\TeX's hyphenation mechanism operates on horizontal material; more +precisely the hyphenation mechanism only works on pieces of horizontal +material that are equivalent to sequences of |\char| commands. This +implies that hyphenation patterns, as selected via the |\language| +parameter, are not only for a specific language, they are also for a +specific font encoding. + +The hyphenation mechanism uses the |\lccode| values to distinguish +between three types of slots: lower case letters (|\lccode|\(\,n = +n\)), upper case letters (|\lccode|\(\,n \notin \{0,n\}\)), and +non-letters (|\lccode|\(\,n = 0\)); only the first two types can be +part of a hyphenatable word and only lower case letters are needed +in the hyphenation patters. This does however place severe +restrictions on how letters can be placed in a text font because +\TeX\ uses the same |\lccode| values for all text in a paragraph and +therefore these values cannot be changed whenever the encoding changes. +In \LaTeX\ the |\lccode| table is not allowed to change at all and +consequently all text font encodings must work using the standard set +of |\lccode| values. + +In \eTeX\ each set of hyphenation patterns has its own set of +|\lccode| values for hyphenation, so the problem isn't as severe +there. The hyphenation mechanism of \TeXOmega\ should become +completely independent of the font encoding, although the last time I +checked it was still operating on material encoded according to +a font encoding. + + +\subsection{Production and specification \ETX\ files} + +Finally, it is worth pointing out the difference between an \ETX\ file +created for the specification of a font encoding and one created for +being used in actually producing fonts with this encoding. They are +usually not the same. Specification \ETX s certainly may be of direct +use in the production of fonts---especially experimental fonts +produced as part of the work on a new encoding---but they are usually +not ideal for the purpose. In particular there is often a need to +switch between alternative names for a glyph to accommodate what is +actually in the fonts, but such trickeries are undesirable +complications in a specification. On the other hand a production +\ETX\ file has little need for verbose comments, whereas they are rather +an advantage in a specification \ETX\ file. + +Therefore one shouldn't be surprised if there are two \ETX\ files for a +specific encoding: one which is a specification version and one which +is a production version. If both might need to be in the same +directory then one should, as a rule of thumb, include a +`\texttt{spec}' in the name of the specification version. + + +\section{Font encoding specifications} +\label{Sec:FontEncSpec} + +\subsection{Basic principles} + +Most features of the font encoding are categorized as either +\emph{mandatory} or \emph{ordinary}. The mandatory features are what +macros may rely on, whereas the ordinary simply are something which +fonts with this encoding normally provide. Font designers may choose +to provide other features than the ordinary, but are recommended to +provide the ordinary features to the extent that the available +resources permit. + +Many internal references in the specification are in the form of +\emph{glyph names} and the choice of these is a slightly tricky +matter. From the point of formal specification, the choices can be +completely arbitrary, but from the point of practical usefulness they +most likely are not. One of the main advantages of the \ETX\ format +for specifications is that such specifications can also be used to +make experimental implementations, but this requires that the glyph +names in the specification are the same as those used in the fonts +from which the experimental implementation should be built. Yet +another aspect is that the glyph names are best chosen to be the ones +one can expect to find in actual fonts, as that will make things +easier for other people that want to make non-experimental +implementations later. For this last purpose, a good reference is +Adobe's technical note on Unicode and glyph names~\cite{unicodesign}. +For most common glyphs, \cite{unicodesign} ends up recommending that +one should follow the Adobe glyph list~\cite{AGL}, which however has +the peculiar trait of recommending names on the form +\texttt{afii}\textit{ddddd} (rather than the Unicode-based alternative +\texttt{uni}\textit{xxxx}) for most non-latin glyphs. This is somewhat +put in perspective by~\cite{ATN5013}. + + +\subsection{Slot assignments} + +The purpose of the slot assignments is to specify for each slot which +character or characters it is mapped to. That one slot is mapped to +many characters is an unfortunate, but not very uncommon, reality in +many encodings, as limitations in font size have often encouraged +identifications of two characters which are almost the same. It should +be avoided in new encodings. + +Slot assignmets are done using the |\nextslot| command and a +|\setslot| \dots\ |\endsetslot| construction as follows: +\begin{quote} + |\nextslot|\marg{slot number}\\* + |\setslot|\marg{glyph name}\\* + \mbox{\quad}\meta{slot commands}\\* + |\endsetslot| +\end{quote} +A typical example of this is +\begin{quote}\begin{verbatim} +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} +\endsetslot +\end{verbatim}\end{quote} +which gets typeset as +\begin{quote} + \textbf{Slot 65 `\texttt{A}'}\\* + Unicode character \texttt{U+0041}, \textsc{latin capital letter a}. +\end{quote} + +The |\nextslot| command does not typeset anything; it simply stores +the slot number in a counter, for later use by |\setslot|. The +|\endsetslot| command increments this counter by one. Hence the +|\nextslot| command is unnecessary between |\setslot|s for consecutive +slots. Besides |\nextslot|, there is also a command |\skipslots| which +increments the slot number counter by a specified amount. The +argument of both |\nextslot| and |\skipslots| can be arbitrary +\package{fontinst} integer expressions (see~\cite{fontinst-man}). All +\TeX\ \meta{number}s that survive full expansion are valid +\package{fontinst} integer expressions, but for example |`\~| isn't, +as |\~| is a macro which will break before the expression is typeset. +These cases can however be fixed by preceding the \TeX\ \meta{number} +by |\number|, as |\number`\~| survives full expansion by expanding to +|126|. + +The main duty of the \meta{slot commands} is to specify the target +character (or characters) for this slot. The simplest way of doing +this is to use the |\Unicode| command, which has the syntax +\begin{quote} + |\Unicode|\marg{code point}\marg{name} +\end{quote} +The \meta{code point} is the number of the character (in hexadecimal +notation, usually a four-digit number) and the \meta{name} is the name. +Case is insignificant in these arguments. If a slot corresponds to a +string of characters rather than to a single character, then one uses +the |\charseq| command, which has the syntax +\begin{quote} + |\charseq|\marg{\cs{Unicode} commands} +\end{quote} +e.g. +\begin{quote}\begin{verbatim} +\nextslot{30} +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } +\endsetslot +\end{verbatim}\end{quote} +Several |\Unicode| commands not in the argument of a |\charseq| +instead mean that each of the listed characters is a valid +interpretation of the slot. + +If a character cannot be specified in terms of Unicode code points then +the specification should simply be a description in text which +identifies the character. Such descriptions are written using the +|\comment| command +\begin{quote} + |\comment|\marg{text} +\end{quote} +It is worth noticing that the \meta{text} is technically only an +argument of |\comment| when the program processing the \ETX\ file is +ignoring |\comment| commands. This means |\verb| and similar +catcode-changing commands \emph{can} be used in the \meta{text}. The +|\par| command is on the other hand not allowed in the \meta{text}. + +The |\comment| command should also be used for any further piece of +explanation of or commentary to the character used for the slot, if the +exposition seems to need it. There can be any number of |\comment| +commands in the \meta{slot commands}. + + +\subsection{Ligatures} + +There are three classes of ligatures in the font encoding +specifications: mandatory, ordinary, and odd. Mandatory ligatures must +be present in any font which complies with the encoding, whereas +ordinary and odd ligatures need not be. No clear distinction can be +made between ordinary and odd ligatures, but a non-mandatory ligature +should be categorized as ordinary if it makes sense for the majority +of users, and as odd otherwise. Hence the `fi' ligature is +categorized as ordinary in the \texttt{T1} encoding (although it +makes no sense in Turkish), whereas the `ij' ligature is odd. + +In the \ETX\ format, a ligature is specified using one of the slot +commands +\begin{quote} + |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new} +\end{quote} +|\Ligature| is used for mandatory ligatures, |\ligature| is used for +ordinary ligatures, and |\oddligature| is used for odd ligatures. The +\meta{right} and \meta{new} arguments are names of the glyphs being +assigned to the slots involved in this ligature. The \meta{right} +specifies the right part in the slot pair being affected by the +ligature, whereas the left part is the one of the |\setslot| \dots\ +|\endsetslot| construction in which the ligaturing command is placed. +The \meta{new} specifies a new slot which will be inserted by the +ligaturing instruction. The \meta{ligtype} is the actual ligaturing +instruction that will be used; it must be |LIG|, |/LIG|, |/LIG>|, +|LIG/|, |LIG/>|, |/LIG/|, |/LIG/>|, or |/LIG/>>|. The slashes specify +retention of the left or right original character; the |>| signs +specify passing over that many slots in the result without further +ligature processing. \meta{note}, finally, is a piece of text which +explains when the odd ligature may be appropriate. It is typeset as a +footnote. + +As an example of ligatures we find the following in the specification +of the \texttt{T1} encoding: +\begin{quote} + |\nextslot{33}|\\ + |\setslot{exclam}|\\ + | \Unicode{0021}{EXCLAMATION MARK}|\\ + | \Ligature{LIG}{quoteleft}{exclamdown}|\\ + |\endsetslot| +\end{quote} +It is typeset as +\begin{quote} + \textbf{Slot 33 `\texttt{exclam}'}\\* + Unicode character \texttt{U+0021}, \textsc{exclamation mark}.\\* + \textbf{Mandatory ligature} + \texttt{exclam}${}*{}$\texttt{quoteleft}${}\rightarrow + {}$\texttt{exclamdown} +\end{quote} +With other \meta{ligtype}s there may be more names listed on the +right hand side and possibly a `$\lfloor$' symbol showing the +position at which ligature processing will start afterwards. + + +\subsection{Math font specialities} + +There are numerous technicalities which are special to math fonts, but +only a few of them are exhibited in \ETX\ files.\footnote{For an +overview of the subject, see for example Vieth~\cite{Vieth2001}.} Most +of these have to do with the \TeX\ mechanisms that find sufficiently +large characters for commands like |\left|, |\sqrt|, and |\widetilde|. + +The first mechanism for this is that a character in a font can sort of +say ``If I'm too small, then then try character \dots\ instead''. This +is expressed in an \ETX\ file using the |\nextlarger| command, which +has the syntax +\begin{quote} + |\nextlarger|\marg{glyph name} +\end{quote} +The second mechanism constructs a sufficiently large character from +smaller pieces; this is known as a `varchar' or `extensible character'. +This is expressed in an \ETX\ file using an ``extensible recipe'', the +syntax for which is +\begin{quote} + |\varchar| \meta{varchar commands} |\endvarchar| +\end{quote} +where each \meta{varchar command} is one of +\begin{quote} + |\varrep|\marg{glyph name}\\ + |\vartop|\marg{glyph name}\\ + |\varmid|\marg{glyph name}\\ + |\varbot|\marg{glyph name} +\end{quote} +There can be at most one of each and their order is irrelevant. The +most important is the |\varrep| command, as that is the part which is +repeated until the character is sufficiently large. The |\vartop|, +|\varmid|, and |\varbot| commands are used to specify some other part +which should be put at the top, middle, and bottom of the extensible +character respectively. Not all extensible recipes use all of these, +however. + +As an example, here is how a very large left brace is constructed: +\begin{center} + \begin{tabular}{>{% + \fontencoding{OMX}\fontfamily{cmex}\selectfont + $\vcenter\bgroup\hbox\bgroup + }l<{\egroup\egroup$} l} + \char"38& For |\vartop{bracelefttp}|\\ + \char"3E& For |\varrep{braceex}|\\ + \char"3C& For |\varmid{braceleftmid}|\\ + \char"3E& Again for |\varrep{braceex}|\\ + \char"3A& For |\varbot{braceleftbt}| + \end{tabular} +\end{center} + +Both |\nextlarger| and |\varchar| commands are like |\ligature| in +that they describe ordinary features for the encoding; they appear in +a specification \ETX\ file mainly to explain the purpose of some +ordinary character. There is no such thing as a mandatory |\nextlarger| +or |\varchar|, but varchars are occationally used to a similar effect. +In these cases, the character generated by the extensible recipe is +something quite different from what a |\char| for that slot would +produce. Thus for the slot to produce the expected result it must be +referenced using a |\delimiter| or |\radical| primitive, since those +are the only ones which make use of the extensible recipe. The effect +is that the slot has a \emph{semimandatory} assignment; the result of +|\char| is unspecified (as for a slot with an ordinary assignment), but +the result for a large delimiter or radical is not (as for a slot with +a mandatory assignment). + +Thus some math fonts have an extra section ``Semimandatory characters'' +between the mandatory and ordinary character sections. In that section +for the \texttt{OMX} encoding we find for example +\begin{quote}\begin{verbatim} +\nextslot{60} +\setslot{braceleftmid} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is the large size of the |\Arrowvert| + delimiter, a glyphic variation on |\Vert|. + The \texttt{braceleftmid} glyph ordinarily + placed in this slot must not be too tall, + or else the extensible recipe actually producing + the character might sometimes not be used.} + \varchar + \varrep{arrowvertex} + \endvarchar +\endsetslot +\end{verbatim}\end{quote} +which is typeset as +\begin{quote} + \textbf{Slot 60 `\texttt{braceleftmid}'}\\* + Unicode character \texttt{U+2016}, \textsc{double vertical line}.\\ + This is the large size of the |\Arrowvert| + delimiter, a glyphic variation on |\Vert|. + The \texttt{braceleftmid} glyph ordinarily + placed in this slot must not be too tall, + or else the extensible recipe actually producing + the character might sometimes not be used.\\ + \textbf{Extensible glyph:}\\* + \textbf{Repeated} \texttt{arrowvertex} +\end{quote} + + + + +\subsection{Fontdimens} + +Each \TeX\ font contains a list of fontdimens, numbered from $1$ and +up, which are accessible via the |\fontdimen| \TeX\ primitive. Quite a +few are also used implicitly by \TeX\ and therefore cannot be left out +even if they are totally irrelevant, but as one can always include +some extra fontdimens in a font---the only bounds on how many +fontdimens there may be are the general bound on the size of a TFM +file and the amount of font memory \TeX\ has available---this is +usually not a problem. + +The reason fontdimens are part of font encoding specifications is +that the meaning of e.g.\ |\fontdimen|\,|8| varies between different +fonts depending on their encoding; thus the encoding specification +must define the quantity stored in each |\fontdimen| parameter. This +is done using the |\setfontdimen| command, which has the syntax +\begin{quote} + |\setfontdimen|\marg{number}\marg{name} +\end{quote} +The \meta{number} is the fontdimen number (as a sequence of decimal +digits where the first digit isn't zero) and the \meta{name} is a +symbolic name for the quantity. + +The standard list of symbolic names for fontdimen quantities appears +below; the listed quantities should always be described using the names +in this list. Encoding specifications that employ other quantities as +fontdimens should include definitions of these quantities. Those +quantities that are defined as ``Formula parameter \dots'' have to +do with how mathematical formulae are rendered and are usually much +too complicated to explain here. For exact definitions of these +parameters, the reader is referred to Appendix~G of \textit{The +\TeX book}~\cite{TeXbook}. +\begin{list}{}{% + \setlength\labelwidth{0pt}% + \setlength\itemindent{-\leftmargin}% + \def\makelabel#1{\hspace{\labelsep}\normalfont\itshape #1}% + \setlength\itemsep{0.5\itemsep}% + \setlength\parsep{0.5\parsep}% +} +\item[acccapheight] + The height of accented full capitals. +\item[ascender] + The height of lower case letters with ascenders. +\item[axisheight] Formula parameter $\sigma_{22}$. +\item[baselineskip] + The font designer's recommendation for natural length of the + \TeX\ parameter |\baselineskip|. +\item[bigopspacing1] Formula parameter $\xi_{9}$. +\item[bigopspacing2] Formula parameter $\xi_{10}$. +\item[bigopspacing3] Formula parameter $\xi_{11}$. +\item[bigopspacing4] Formula parameter $\xi_{12}$. +\item[bigopspacing5] Formula parameter $\xi_{13}$. +\item[capheight] + The height of full capitals. +\item[defaultrulethickness] Formula parameter $\xi_{8}$. +\item[delim1] Formula parameter $\sigma_{20}$. +\item[delim2] Formula parameter $\sigma_{21}$. +\item[denom1] Formula parameter $\sigma_{11}$. +\item[denom2] Formula parameter $\sigma_{12}$. +\item[descender] + The depth of lower case letters with descenders. +\item[digitwidth] + The median width of the digits in the font. +\item[extraspace] + The natural width of extra interword glue at the end of a sentence. + \TeX\ implicitly uses this parameter if |\spacefactor| is $2000$ or + more and |\xspaceskip| is zero. +\item[interword] + The natural width of interword glue (spaces). \TeX\ implicitly uses + this parameter unless |\spaceskip| is nonzero. +\item[italicslant] + The slant per point of the font. Unlike all other fontdimens, it is + not proportional to the font size. +\item[maxdepth] + The maximal depth over all slots in the font. +\item[maxheight] + The maximal height over all slots in the font. +\item[num1] Formula parameter $\sigma_{8}$. +\item[num2] Formula parameter $\sigma_{9}$. +\item[num3] Formula parameter $\sigma_{10}$. +\item[quad] + The quad width of the font, normally approximately equal to the + font size and\slash or the width of an `M'. Also implicitly available + as the length unit |em| and used for determining the size of the + length unit |mu|. +\item[shrinkword] + The (finite) shrink component of interword glue (spaces). \TeX\ + implicitly uses this parameter unless |\spaceskip| is nonzero. +\item[stretchword] + The (finite) stretch component of interword glue (spaces). \TeX\ + implicitly uses this parameter unless |\spaceskip| is nonzero. +\item[sub1] Formula parameter $\sigma_{16}$. +\item[sub2] Formula parameter $\sigma_{17}$. +\item[subdrop] Formula parameter $\sigma_{19}$. +\item[sup1] Formula parameter $\sigma_{13}$. +\item[sup2] Formula parameter $\sigma_{14}$. +\item[sup3] Formula parameter $\sigma_{15}$. +\item[supdrop] Formula parameter $\sigma_{18}$. +\item[verticalstem] + The dominant width of vertical stems. This quantity is meant to be used + as a measure of how ``dark'' the font is. +\item[xheight] + The x-height (height of lower case letters without ascenders). Also + implicitly available as the length unit |ex|. +\end{list} + + +\subsection{The codingscheme} + +The final encoding-dependent piece of information in a \TeX\ font is +the codingscheme, which is essentially a string declaring what +encoding the font has. This information is currently only used by +programs that convert the information in a \TeX\ font to some other +format and these use it to identify the glyphs in the font. Therefore +this string should be chosen so that the contents of the slots in the +font can be positively identified. Observe that the encoding +specification by itself does not provide enough information for this, +since there are usually a couple of slots that do not contain +mandatory characters. On the other hand, it is not a problem in this +context if the font leaves some of the slots (even mandatory ones) +empty as that is anyway easily detected. The only problem is with +fonts where the slots are assigned to other characters than the ones +specified in the encoding. + +For that reason, it is appropriate to assign two codingscheme strings +to each encoding. The main codingscheme is for fonts were all slots +(mandatory and ordinary alike) have been assigned according to the +specification or have been left empty. The variant codingscheme is for +fonts where some ordinary slots have been assigned other characters +than the ones listed in the specification, but where the mandatory +slots are still assigned according to the specification or are left +empty. The font encoding specification should give the main +codingscheme name, whereas the variant codingscheme name could be +formed by adding \verb*| VARIANT| to the main codingscheme name. + +Technically the codingscheme is specified by setting the +\texttt{codingscheme} string variable. This has the syntax +\begin{quote} + |\setstr{codingscheme}|\marg{codingscheme name} +\end{quote} +e.g. +\begin{quote} + |\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN}| +\end{quote} +which is typeset as +\begin{quote} + \textbf{Default} s(\texttt{codingscheme}) = + \verb*|EXTENDED TEX FONT ENCODING - LATIN| +\end{quote} +A codingscheme name may be at most 40 characters long and may not +contain parentheses. If the entire \verb*| VARIANT| cannot be suffixed +to a main name because the result becomes to long (as in the above +example) then use the first 40 characters of the result. + + +\subsection{Overall document structure} +\label{Ssec:Structure} + +The overall structure of a font encoding specification should be +roughly the following +\begin{quote} + |\relax|\\ + |\documentclass[twocolumn]{article}|\\ + |\usepackage[specification]{fontdoc}|\\ + \meta{preamble}\\ + |\begin{document}|\\ + \meta{title}\\ + \meta{manifest}\\ + |\encoding|\\ + \meta{body}\\ + |\endencoding|\\ + \meta{discussion}\\ + \meta{change history}\\ + \meta{bibliography}\\ + |\end{document}| +\end{quote} +The commands described in the preceding subsections must all go in +the \meta{body} part of the document, as that is the only part of the +file which actually gets processed as a data file. The part before +|\encoding| is skipped and the part after |\endencoding| is never +even input, so whatever appears there is only part of the \LaTeX\ +document. For the purposes of processing as a data file, the +important markers in the file are the |\relax|, the |\endcoding|, and +the |\endencoding| commands. + +The \meta{title} is the usual |\maketitle| (and the like) stuff. The +person or persons who appear as author(s) are elsewhere in this paper +described as the \emph{encoding proposers}. The \meta{title} should +also give the date when the specification was last changed. + +The \meta{manifest} is an important, although usually pretty short, +part of the specification. It is a piece of text which explains the +purpose of the encoding (in particular what it can be used for) and +the basic ideas (if any) which have been used in its construction. It +is often best marked up as an abstract. + +The \meta{discussion} is the place for any longer comments on the +encoding, such as analyses of different implementations, comparisons +with other encodings, etc. This is also the place to explain any more +general structures in the encoding, such as the arrow kit in the +proposed \texttt{MS2} encoding~\cite{ClasenVieth}. In cases where the +specification is mainly a formulation of what is already an +established standard the \meta{discussion} is often rather short as +the relevant discussion has already been published elsewhere, but +it is anyway a service to the reader to include this information. +References to the original documents should always be given. + +It might be convenient to include an FAQ section at the end of the +discussion. This is particularly suited for explaining things where +one has to look for a while and consult the references to find the +relevant information. + +The \meta{change history} documents how the specification has changed +over time. It is preferably detailed, as each detail in an encoding +is important, but one should not be surprised if it is anyway rather +short due to that there haven't been that many changes. + +The \meta{bibliography} is an important part of the specification. It +should at the very least include all the sources which have been used +in compiling the encoding specification, regardless of whether they +are printed, available on the net, merely ``personal communication'', +or something else. It is also a service to the reader to include in +the bibliography some more general references for related matters. + +The \meta{preamble} is just a normal \LaTeX\ preamble and there are no +restrictions on defining new commands in it, although use of such +commands in the \meta{body} part is subject to the same restrictions +as use of any general \LaTeX\ command. The preamble should however +\emph{not} load any packages not part of the required suite of +\LaTeX\ packages, as that may prevent users who do not have these +packages from typesetting the specification. Likewise, the +specification should \emph{not} require that some special font is +available. Glyph examples for characters are usually better +referenced via Unicode character charts than via special fonts. + +An exception to this rule about packages is that the specification +must load the \package{fontdoc} package, as shown in the outline +above, since that defines the |\setslot| etc.\ commands that should +appear in the \meta{body}. This should not be a problem, as the +\package{fontdoc} package can preferably be kept in the same directory +as the collection of encoding specifications (see below). The +\texttt{specification} option should be passed to the package to let it know +that the file being processed is an encoding specification---otherwise +|\Ligature| and |\ligature| will get the same formatting, for one. It +is not necessary to use the \package{article} document class, and +neither must it be passed the \texttt{twocolumn} option, but it is +customary to do so. In principle any other document class within +required \LaTeX\ will do just as well. + +If you absolutely think that using some non-required package +significantly improves the specification, then try writing the code so +that is loads the package only if it is available and provide some +kind of fallback definition for sites where it is not. E.g.\ the +\package{url} package could be loaded as +\begin{verbatim} +\IfFileExists{url.sty}{\usepackage{url}}{} +\providecommand\url{\verb} +\end{verbatim} +The |\url| command defined by this is not equivalent to the command +defined by the \package{url} package, but it can serve fairly well +(with a couple of extra overfull lines as only ill effect) if its +use is somewhat restricted. + +Finally, a technical restriction on the \meta{preamble}, \meta{title}, +and \meta{manifest} is that they must not contain any mismatched +|\if|s (of any type) or |\fi|s, as \TeX\ conditionals will be used for +skipping those parts of the file when it is processed as a data file. +If the definition of some macro includes mismatched |\if|s or |\fi|s +(this will probably occur only rarely) then include some extra code +so that they do match. + + +% All technical parts of the encoding specification (slot assignments, +% fontdimens, etc.\@) have to be in the \meta{encoding commands} part. +% The other parts are suitably used for longer commentry, such as the +% mainfest (see below), revision history, and bibliography. +% +% When the file is being typeset as a \LaTeX\ document there is nothing +% special going on. The |\encoding| and |\endencoding| commands may set +% some internal variables, but otherwise they do very little. When the +% file is being read by \package{fontinst}, things are quite different. +% Everything between the initial |\relax| and |\encoding| is skipped, +% and the file is not read further than to the |\endencoding|. Hence +% the \meta{preamble}, \meta{\LaTeX\ text 1}, and \meta{\LaTeX\ text 2} +% can contain pretty much anything (with a few exceptions) which is +% legal in a \LaTeX\ document. + + +\subsection{Encoding specification body syntax} + +The \meta{body} part of an encoding specification must comply to a +much stricter syntax than the rest of the file. The \meta{body} is +a sequence of \meta{encoding command}s, each of which should be one +of the following: +\begin{quote} + |\setslot|\marg{glyph name} \meta{slots commands} |\endsetslot|\\ + |\nextslot|\marg{number}\\ + |\skipslots|\marg{number}\\ + |\setfontdimen|\marg{number}\marg{name}\\ + |\setstr{codingscheme}|\marg{codingscheme name}\\ + |\needsfontinstversion|\marg{version number} +\end{quote} +The |\needsfontinstversion| command is usually placed immediately +after the |\encoding| command. The \meta{version number} must be at +least |1.918| for many of the features described in this file to be +available, and at least |1.928| if the |\charseq| command is used. + +The \meta{slot commands} are likewise a sequence of \meta{slot +command}s, each of which should be one of the following: +\begin{quote} + |\Unicode|\marg{code point}\marg{name}\\ + |\charseq|\marg{\cs{Unicode} commands}\\ + |\comment|\marg{text}\\ + |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\ligature|\marg{ligtype}\marg{right}\marg{new}\\ + |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new}\\ + |\nextlarger|\marg{glyph name}\\ + |\varchar| \meta{varchar commands} |\endvarchar| +\end{quote} +where \meta{varchar commands} similarly is a sequence of \meta{varchar +command}s, each of which should be one of the following: +\begin{quote} + |\varrep|\marg{glyph name}\\ + |\vartop|\marg{glyph name}\\ + |\varmid|\marg{glyph name}\\ + |\varbot|\marg{glyph name} +\end{quote} +Finally, one can include any number of \meta{comment command}s between +any two encoding, slot, or varchar commands. The comment commands are +\begin{quote} + |\begincomment| \meta{\LaTeX\ text} |\endcomment|\\ + |\label|\marg{reference label} +\end{quote} +The \meta{\LaTeX\ text} can be pretty much any \LaTeX\ code that can +appear in conditional text. (|\begincomment| is either |\iffalse| or +|\iftrue| depending on whether the encoding specification is +processed as a data file or typeset as a \LaTeX\ document respectively. +|\endcomment| is always |\fi|.) The |\label| command is just +the normal \LaTeX\ |\label| command; when it is used in a \meta{slot +commands} it references that particular slot (by number and glyph +name). + +The full syntax of the \ETX\ format can be found in the +\package{fontinst} manual~\cite{fontinst-man}, but font encoding +specifications only need a subset of that. + + +\subsection{Additional \package{fontdoc} features} + +There is an ``in comment paragraph'' form |\textunicode| of the +|\Unicode| command. Both commands have the same syntax, but +|\textunicode| is only allowed in ``comment'' contexts. A typical use +of |\textunicode| is +\begin{quote} + |\comment{An |\dots\\ + \quad\dots| this is \textunicode{2012}{FIGURE DASH}; in |\dots\\ + |}| +\end{quote} +which is typeset as +\begin{quote} + An \dots\ this is \texttt{U+2012} (\textsc{figure dash}); in \dots +\end{quote} + +The \package{fontdoc} package inputs a configuration file +\texttt{fontdoc.cfg} if that exists. This can be used to pass +additional options to the package. The only currently available +options that this could be of interest for are the \texttt{hypertex} +and \texttt{pdftex} options, which hyperlinks each \texttt{U+}\dots\ +generated by |\Unicode| or |\textunicode| (using Hyper\TeX\ or +pdf\TeX\ conventions\footnote{One could just as well do the same +thing using some other convention if a suitable definition of +\cs{FD@codepoint} is included in \texttt{fontdoc.cfg}. See the +\package{fontinst} sources~\cite{fontinst-pre} for more details.} +respectively) to a corresponding glyph image on the Unicode consortium +website. To use this feature one should put the line +\begin{quote} + |\ExecuteOptions{hypertex}| +\end{quote} +or +\begin{quote} + |\ExecuteOptions{pdftex}| +\end{quote} +in the \texttt{fontdoc.cfg} file. \emph{Please} do not include this +option in the |\usepackage|\nolinebreak[1]|{fontdoc}| of an encoding +specification file as that can be a severe annoyance for people whose +\TeX\ program or DVI viewers do not support the necessary extensions. +% Hyper\TeX\ |\special|s. + + +\section{Font encoding ratification} + +This section describes a suggested ratification process for font +encoding specifications. As there are fewer technical matters that +impose restrictions on what it may look like, it is probably more +subjective than the other parts of this paper. + +\medskip + +A specification in the process of being ratified can be in one of +three different stages: \emph{draft}, \emph{beta}, or \emph{final}. +Initially the specification is in the draft stage, during which it +will be scrutinized and can be subject to major changes. A +specification which is in the beta stage has got a formal approval +but the encoding in question may still be subject to some minor +changes if weighty arguments present themselves. Once the +specification has reached the final stage, the encoding may not +change at all. + + +\subsection{Getting to the draft stage} + +The process of taking an encoding to the draft stage can be +summarized in the following steps. Being in the draft stage doesn't +really say anything about whether the encoding is in any way correct +or useful, except in that some people (the encoding proposers) +believe it is and are willing to spend some time on ratifying it. + +\paragraph{Write an encoding specification} The first step is to +write a specification for the font encoding in question. This +document must not only technically describe the encoding but also +explain what the encoding is for and why it was created. See +Subsection~\ref{Ssec:Structure} for details on how the document is +preferably organised. + +\paragraph{Request an encoding name} The second step is to write to +the \LaTeX3 project and request a \LaTeX\ encoding name for the +encoding. This mail should be in the form of a \LaTeX\ bug report, it +must be sent to +\begin{quote} + \href{mailto:latex-bugs@latex-project.org}% + {\texttt{latex-bugs@latex-project.org}}, +\end{quote} +and it must include the encoding specification file. Suggestions for +an encoding name are appreciated, but not necessarily accepted. +The purpose of this mail is \emph{not} to get an approval of the +encoding, but only to have a reasonable name assigned to it. + +\paragraph{Upload the specification to CTAN} The third step is make +the encoding specification publicly available by uploading it to +CTAN. Encoding specifications are collected in the +\begin{quote} + \ctanref{info/encodings}{\texttt{info/encodings}} +\end{quote} +directory (which should also contain the most recent version of this +paper). The name of the uploaded file should be +\meta{encoding name}\texttt{draft.etx}. The reason for this naming is +that it must be clear that the specification has not yet been ratified. + +\paragraph{Announce the encoding} When the upload has been confirmed, +it is time to announce the encoding by posting a message about it to +the relevant forums. Most important is the \texttt{tex-fonts} mailing +list, since that is where new encodings should be debated. Messages +should also be posted to the \texttt{comp.text.tex} newsgroup and any +forums related to the intended use of the encoding: an encoding for +Sanskrit should be announced on Indian \TeX\ users forums, an +encoding for printing chess positions should be announced on some +chess-with-\TeX\ user forum, etc.; in the extent that such forums exist. + +The full address of the \texttt{tex-fonts} mailing list is +\begin{quote} + \texttt{tex-fonts@math.utah.edu} +\end{quote} +This list rejects postings from non-members, so you need to subscribe +to it before you can post your announcement. This is done by sending +a `subscribe me' mail to +\begin{quote} + \href{mailto:tex-fonts-request@math.utah.edu} + {\texttt{tex-fonts-request@math.utah.edu}} +\end{quote} +The list archives can be found at +\begin{quote} + \href{http://www.math.utah.edu/mailman/listinfo/tex-fonts} + {\textsc{http:}/\slash \texttt{www.math.utah.edu}\slash + \texttt{mailman}\slash \texttt{listinfo}\slash + \texttt{tex-fonts}} +\end{quote} +A tip is to read through the messages from a couple of months +before you write up your announcement, as that should help you get +acquainted with the normal style on the list. Please do not send +messages encoded in markup languages (notably, \textsmaller{HTML}, +\textsmaller{XML}, and word processor formats) to the list. + +\paragraph{Experimental encodings} There is a point in going through +the above procedure even for experimental encodings, i.e., encodings +whose names start with an \texttt{E}. Of course there is no idea in +ratifying a specification of an experimental encoding, as it is very +likely to frequently change, but having a proper name assigned to the +encoding and uploading its specification to CTAN makes it much simpler +for other people to learn about and make references to the encoding. + + +\subsection{From draft to beta stage} + +The main difference between a draft and beta stage specification +respectively is that beta stage specifications have been scrutinized +by other people and found to be free of errors. The practical +implementation of this is that a debate is held (in the normal +anarchical manner of mailing list debates) on the \texttt{tex-fonts} +mailing list. In particular the following aspects of the +specification should be checked: +\begin{enumerate} + \item \emph{Is the encoding technically correct?} + There are many factors which affect what \TeX\ does and it is + easy to overlook some. (The \cs{lccode}s seem to be particularly + troublesome, in this respect.) Sometimes fonts simply cannot work + as an encoding specifies they should and it is important that + such defects in the encoding are discovered on an early stage. + \item \emph{Are there any errors in the specification?} + A font encoding specification is largely a table and typos are + easy to make. Proof-reading may be boring, but it is very, very + important. + \item \emph{Is the specification sufficiently precise?} + Are there any omissions, ambiguities, inaccuracies, or completely + irrelevant material in the specification? There shouldn't be. +\end{enumerate} +During the debate, the encoding proposers should hear what other +people have to say about the encoding draft, revise it accordingly +when some flaw is pointed out, and upload the revised version. This +cycle may well have to be repeated several times before everyone's +content. It is worth pointing out that in practice the debate should +turn out to be more of a collective authoring of the specification +than a defense of its validity. There is no point in going into it +expecting the worst. + +Unfortunately, it might happen that there never is a complete agreement +on an encoding specification---depending on what side on takes, either +the encoding proposers refuse to correct obvious flaws in it, or someone +on the list insists that there is a flaw although there is obviously +not---but hopefully that will never happen. If it anyway does happen +then the person objecting should send a mail whose subject contains the +phrase "formal protest against XXX encoding" (with XXX replaced by +whatever the encoding is called) to the list. Then it will be up to +the powers that be to decide on the fate of the encoding (see below). + +\paragraph{Summarize the debate} When the debate on the encoding is +over---e.g.\ a month after anyone last posted anything new on the +subject---then the encoding proposers should summarize the debate on +the encoding specification draft and post this summary as a follow-up +on the original mail to \texttt{latex-bugs}. This summary should list +the changes that have been made to the encoding, what suggestions there +were for changes which have not been included, and whether there were +any formal protests against the encoding. The summary should also explain +what the proposers want to have be done with the encoding. In the +usual case this is having it advanced to beta stage, but the proposers +might alternatively at this point have reached the conclusion that the +encoding wasn't such a good idea to start with and therefore withdraw +it, possibly to come again later with a different proposal. + +In response to this summary, the \LaTeX-project people may do one of +three things: +\begin{itemize} + \item + If the proposers wants the encoding specification advanced and + there are no formal protests against this, then the encoding + should be advanced to the beta stage. The \LaTeX-project + people do this by adding the encoding to the list of approved + (beta or final stage) encodings that they [presumably] maintain. + \item + If the proposers want to withdraw the encoding specification + then the name assigned to it should once again be made available + for use for other encodings. + \item + If the proposers want the encoding specification advanced but + there is some formal protest against this, then the entire matter + should be handed over to some suitable authority, as a suggestion + some technical TUG committee, for resolution. +\end{itemize} + + +\paragraph{Update the specification on CTAN} When the specification +has reached the beta stage, its file on CTAN should be updated to say +so. In particular the file name should be changed from \meta{encoding +name}\texttt{draft.etx} to \meta{encoding name}\texttt{spec.etx}. + + +\paragraph{Modifying beta stage encodings} If a beta stage encoding is +modified then the revised specification should go through the above +procedure of ratification again before it can replace the previous +\meta{encoding name}\texttt{spec.etx} file on CTAN. The revised +version should thus initially be uploaded as \meta{encoding +name}\texttt{draft.etx}, reannounced, and redebated. It can however +be expected that such debates will not be as extensive as the +original debates. + + +\subsection{From beta stage to final stage} + +The requirements for going from beta stage to final stage are more +about showing that the encoding has reached a certain maturity than +about demonstrating any technical merits of it. The main difference in +usefulness between a beta stage encoding and a final stage encoding is +that the latter can be considered safe for archival purposes, whereas +one should have certain reservations against such use of beta stage +encodings. + +It seems reasonable that the following conditions should have to be +fulfilled before a beta stage encoding can be made a final stage +encoding: +\begin{itemize} + \item At least one year must have passed since the last change was + made to the specification. + \item At least two people other than the proposer must have + succeeded in implemented the encoding in a font. +\end{itemize} +It is quite possible that some condition should be added or some of +the above conditions reformulated. + + +% References updated 2004/08/07. +\begin{thebibliography}{???} +\bibitem{ATN5013} + Adobe Systems Incorporated: + \textit{Adobe Standard Cyrillic Font Specification}, + Adobe Technical Note \#5013, 1998; + \href{http://partners.adobe.com/asn/developer/pdfs/tn/% + 5013.Cyrillic_Font_Spec.pdf}{\textsc{http}:/\slash + \texttt{partners.adobe.com}\slash \texttt{asn}\slash + \texttt{developer}\slash \texttt{pdfs}\slash \texttt{tn}\slash + \texttt{5013.Cyrillic\_Font\_Spec.pdf}}. +\bibitem{AGL} + Adobe Systems Incorporated: \textit{Adobe Glyph List}, + text file, 1998, + \href{http://partners.adobe.com/asn/developer/type/glyphlist.txt} + {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{glyphlist.txt}}. +\bibitem{unicodesign} + Adobe Systems Incorporated: + \textit{Adobe Solutions Network: Unicode and Glyph Names}, + web page, 1998, + \href{http://partners.adobe.com/asn/developer/type/unicodegn.html} + {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{unicodegn.html}}. +\bibitem{ClasenVieth} + Matthias Clasen and Ulrik Vieth: + \textit{Towards a new Math Font Encoding for (La)TeX}, + March 1998, presented at EuroTeX'98; + \href{http://tug.org/twg/mfg/papers/current/mfg-euro-all.ps.gz} + {\textsc{http}:/\slash \texttt{tug.org}\slash \texttt{twg}\slash + \texttt{mfg}\slash \texttt{papers}\slash \texttt{current}\slash + \texttt{mfg-euro-all.ps.gz}}. +\bibitem{fontinst-man} + Alan Jeffrey, Rowland McDonnell, Ulrik Vieth, and Lars Hellstr\"om: + \textit{\package{fontinst}---font installation software for \TeX} + (manual), 2004, + \ctanref{fonts/utilities/fontinst/doc/fontinst.tex}{% + \textsc{ctan}:\discretionary{}{}{\thinspace}% + \texttt{fonts}\slash \texttt{utilities}\slash + \texttt{fontinst}\slash \texttt{doc}\slash \texttt{fontinst.tex}}. +% \bibitem{fontinst} +% Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: +% \textit{The \package{fontinst} utility}, documented source code, +% v\,1.801, +% \ctanref{fonts/utilities/fontinst/source}{% +% \textsc{ctan}:\discretionary{}{}{\thinspace}% +% \texttt{fonts}\slash \texttt{utilities}\slash +% \texttt{fontinst}\slash \texttt{source}/}. +\bibitem{fontinst-pre} + Alan Jeffrey, Sebastian Rahtz, Ulrik Vieth, and Lars Hellstr\"om: + \textit{The \package{fontinst} utility}, documented source code, + v\,1.9xx, + \ctanref{fonts/utilities/fontinst/source}{% + \textsc{ctan}:\discretionary{}{}{\thinspace}% + \texttt{fonts}\slash \texttt{utilities}\slash + \texttt{fontinst}\slash \texttt{source}/}. +\bibitem{TeXbook} + Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \TeX book}, + Ad\-di\-son--Wes\-ley, 1991; + volume A of \textit{Computers and typesetting}. +\bibitem{LaTeXCompanion} + Frank Mittelbach and Michel Goossens, with Johannes Braams, + David Carlisle, and Chris Rowley: + \textit{The \LaTeX\ Companion} (second edition), + Ad\-di\-son--Wes\-ley, 2004; ISBN~0-201-36299-6. +\bibitem{Omega-doc} + John Plaice and Yannis Haralambous: + \textit{Draft documentation for the Omega system}, + version~1.12, 1999; + \href{http://omega.cse.unsw.edu.au:8080/doc-1.12.ps}{% + \textsc{http:}/\slash \texttt{omega.cse.unsw.edu.au:8080}\slash + \texttt{doc-1.12.ps}}. +% \textsc{ctan}:\discretionary{}{}{\thinspace}% +% \texttt{systems}\slash \texttt{omega}\slash +% \texttt{omega-doc-1.8.tar.gz}. +\bibitem{Vieth2001} + Ulrik Vieth: + \textit{Math typesetting in \TeX: The~good, the~bad, the~ugly}, + to appear in the proceedings of Euro\TeX\ 2001; + \href{http://www.ntg.nl/eurotex/vieth.pdf}{% + \textsc{http}:/\slash \texttt{www.ntg.nl}\slash + \texttt{eurotex}\slash \texttt{vieth.pdf}}. +\end{thebibliography} + + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx new file mode 100644 index 00000000000..efccabde857 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/omxdraft.etx @@ -0,0 +1,985 @@ +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2001/06/01] + +% \usepackage[T1]{fontenc} +\DeclareTextCommandDefault{\textvisiblespace}{% + \mbox{\kern.06em\vrule height.3ex}% + \vbox{\hrule width.3em}% + \hbox{\vrule height.3ex\kern.06em}} + +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\showbranches + +\begin{document} + +\title{\texttt{OMX} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2001/10/20} +\maketitle + +\begin{abstract} + The \TeX\ math extensions (\texttt{OMX}) encoding is a container for + most of the ``growing'' characters in the standard math set-up, but + that is pretty much the extent of it. Some of the characters occur + in ``normal size'' in other encodings; in these cases it is usually + a single math command that usually make use of characters in both + encodings. +\end{abstract} + + +\encoding + +\begincomment +\section{Mandatory characters} + +\subsection{Delimiters} +\endcomment + +\nextslot{0} +\setslot{parenleftbig} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftBig} +\endsetslot + +\setslot{parenrightbig} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightBig} +\endsetslot + +\setslot{bracketleftbig} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftBig} +\endsetslot + +\setslot{bracketrightbig} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightBig} +\endsetslot + +\setslot{floorleftbig} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftBig} +\endsetslot + +\setslot{floorrightbig} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightBig} +\endsetslot + +\setslot{ceilingleftbig} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftBig} +\endsetslot + +\setslot{ceilingrightbig} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightBig} +\endsetslot + +\setslot{braceleftbig} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftBig} +\endsetslot + +\setslot{bracerightbig} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightBig} +\endsetslot + +\setslot{angleleftbig} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftBig} +\endsetslot + +\setslot{anglerightbig} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightBig} +\endsetslot + +\setslot{barex} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{vert} command. When not accessed + as a delimiter, this character may be much shorter than one + would expect.} + \varchar + \varrep{barex} + \endvarchar +\endsetslot + +\setslot{bardblex} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is used by the \cs{Vert} command. When not accessed + as a delimiter, this character may be much shorter than one + would expect.} + \varchar + \varrep{bardblex} + \endvarchar +\endsetslot + +\setslot{slashbig} + \Unicode{2215}{DIVISION SLASH} + \comment{Although this character is normally accessed via \TeX's + growing delimiter mechanism, it is not used as such in formulae, + but as a large division slash. Since the use is unambigously for + division and the like, it would be inaccurate to identify this + character with \textunicode{002F}{SOLIDUS}.} + \nextlarger{slashBig} +\endsetslot + +\setslot{backslashbig} + \Unicode{005C}{REVERSE SOLIDUS} + \comment{This is \TeX's \cs{backslash} (use for ``double coset''), + not \cs{setminus}, and hence it is not + \textunicode{2216}{SET MINUS}.} + \nextlarger{backslashBig} +\endsetslot + +\nextslot{62} +\setslot{braceex} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{bracevert} command.} + \label{braceex} + \varchar + \varrep{braceex} + \endvarchar + \comment{This slot contains the repeatable part of a extensible + brace delimiter. In the standard set-up, the extensible recipes of + slots~\ref{bracelefttp}, \ref{bracerighttp}, \ref{braceleftbt}, + \ref{bracerightbt}, \ref{parenleftbt}, and \ref{parenrightbt} all + make use of this slot.} +\endsetslot + +\nextslot{"42} +\setslot{parenleftex} + \Unicode{007C}{VERTICAL LINE} + \comment{As astonishing as it may seem, there is no command which + accesses this slot. The glyph is similar to that in + slot~\ref{braceex}, but shifted to the left.} + \varchar + \varrep{parenleftex} + \endvarchar +\endsetslot + +\setslot{parenrightex} + \Unicode{007C}{VERTICAL LINE} + \comment{As astonishing as it may seem, there is no command which + accesses this slot. The glyph is similar to that in + slot~\ref{braceex}, but shifted to the right.} + \varchar + \varrep{parenrightex} + \endvarchar +\endsetslot + +\nextslot{"7A} +\setslot{bracehtipdownleft} + \comment{This is \cs{braceld}, a tip (pointing left, bending down) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipdownright} + \comment{This is \cs{bracerd}, a tip (pointing right, bending down) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipupleft} + \comment{This is \cs{bracelu}, a tip (pointing left, bending up) + used to build over- and underbraces.} +\endsetslot + +\setslot{bracehtipupright} + \comment{This is \cs{braceru}, a tip (pointing right, bending up) + used to build over- and underbraces.} +\endsetslot + + + +\begincomment +\subsection{Text style operators} + +With the exception of the integrals, all the following characters +should be \textsc{n-ary \dots}, but some cases there are no such +variants defined in Unicode. +\endcomment + +\nextslot{"46} +\setslot{unionsqtext} + \Unicode{2294}{SQUARE CUP} + \nextlarger{unionsqdisplay} +\endsetslot + +\skipslots{1} +\setslot{contintegraltext} + \Unicode{222E}{CONTOUR INTEGRAL} + \nextlarger{contintegraldisplay} +\endsetslot + +\skipslots{1} +\setslot{circledottext} + \Unicode{2299}{CIRCLED DOT OPERATOR} + \nextlarger{circledotdisplay} +\endsetslot + +\skipslots{1} +\setslot{circleplustext} + \Unicode{2295}{CIRCLED PLUS} + \nextlarger{circleplusdisplay} +\endsetslot + +\skipslots{1} +\setslot{circlemultiplytext} + \Unicode{2297}{CIRCLED TIMES} + \nextlarger{circlemultiplydisplay} +\endsetslot + +\skipslots{1} +\setslot{summationtext} + \Unicode{2211}{N-ARY SUMMATION} + \nextlarger{summationdisplay} +\endsetslot + +\setslot{producttext} + \Unicode{220F}{N-ARY PRODUCT} + \nextlarger{productdisplay} +\endsetslot + +\setslot{integraltext} + \Unicode{222B}{INTEGRAL} + \nextlarger{integraldisplay} +\endsetslot + +\setslot{uniontext} + \Unicode{22C3}{N-ARY UNION} + \nextlarger{uniondisplay} +\endsetslot + +\setslot{intersectiontext} + \Unicode{22C2}{N-ARY INTERSECTION} + \nextlarger{intersectiondisplay} +\endsetslot + +\setslot{unionmultitext} + \Unicode{228E}{MULTISET UNION} + \nextlarger{unionmultidisplay} +\endsetslot + +\setslot{logicalandtext} + \Unicode{22C0}{N-ARY LOGICAL AND} + \nextlarger{logicalanddisplay} +\endsetslot + +\setslot{logicalortext} + \Unicode{22C1}{N-ARY LOGICAL OR} + \nextlarger{logicalordisplay} +\endsetslot + +\skipslots{8} +\setslot{coproducttext} + \Unicode{2210}{N-ARY COPRODUCT} + \nextlarger{coproductdisplay} +\endsetslot + + + +\begincomment +\subsection{Accents, arrows, and the radical} +\endcomment + +\nextslot{"62} +\setslot{hatwide} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \nextlarger{hatwider} +\endsetslot + +\skipslots{2} + +\setslot{tildewide} + \Unicode{0303}{COMBINING TILDE} + \nextlarger{tildewider} +\endsetslot + +\nextslot{"70} +\setslot{radicalbig} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalBig} +\endsetslot + +\nextslot{"78} +\setslot{arrowtp} + \Unicode{2191}{UPWARDS ARROW} + \varchar + \vartop{arrowtp} + \varrep{arrowvertex} + \endvarchar +\endsetslot + +\setslot{arrowbt} + \Unicode{2193}{DOWNWARDS ARROW} + \varchar + \varrep{arrowvertex} + \varbot{arrowbt} + \endvarchar +\endsetslot + +\nextslot{"7E} +\setslot{arrowdbltp} + \Unicode{21D1}{UPWARDS DOUBLE ARROW} + \varchar + \vartop{arrowdbltp} + \varrep{arrowdblvertex} + \endvarchar +\endsetslot + +\setslot{arrowdblbt} + \Unicode{21D3}{DOWNWARDS DOUBLE ARROW} + \varchar + \varrep{arrowdblvertex} + \varbot{arrowdblbt} + \endvarchar +\endsetslot + + + + + + +\begincomment +\section{Semimandatory characters} +\endcomment + +\nextslot{"3A} +\setslot{braceleftbt} + \comment{This is the \cs{lgroup} delimiter, which looks like a + \textunicode{007B}{LEFT CURLY BRACKET} with flat middle section. + There does not seem to be such a character in Unicode, but a + close approximation would be a narrowed + \textunicode{3014}{LEFT TORTOISE SHELL BRACKET}.} + \label{braceleftbt} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varbot{braceleftbt} + \endvarchar + \comment{The slot contains the curved bottom of a + \textunicode{007B}{LEFT CURLY BRACKET}.} +\endsetslot + +\setslot{bracerightbt} + \comment{This is the \cs{rgroup} delimiter, which looks like a + \textunicode{007D}{RIGHT CURLY BRACKET} with flat middle section. + There does not seem to be such a character in Unicode, but a + close approximation would be a narrowed + \textunicode{3015}{RIGHT TORTOISE SHELL BRACKET}.} + \label{bracerightbt} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varbot{bracerightbt} + \endvarchar + \comment{The slot contains the curved bottom of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} +\endsetslot + +\setslot{braceleftmid} + \Unicode{007C}{VERTICAL LINE} + \comment{This is used by the \cs{arrowvert} command.} + \varchar + \varrep{arrowvertex} + \endvarchar + \comment{The slot contains the middle part of a + \textunicode{007B}{LEFT CURLY BRACKET}.} +\endsetslot + +\setslot{bracerightmid} + \Unicode{2016}{DOUBLE VERTICAL LINE} + \comment{This is used by the \cs{Arrowvert} command.} + \varchar + \varrep{arrowdblvertex} + \endvarchar + \comment{The slot contains the middle part of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} +\endsetslot + +\skipslots{1} + +\setslot{arrowvertex} + \Unicode{2195}{UP DOWN ARROW} + \varchar + \vartop{arrowtp} + \varrep{arrowvertex} + \varbot{arrowbt} + \endvarchar + \comment{This slot contains the repeatable middle part of a vertical + arrow.} +\endsetslot + +\setslot{parenleftbt} + \label{parenleftbt} + \comment{This is the \cs{lmoustache} delimiter, whose top half is + like \cs{lgroup} and whose bottom half is like \cs{rgroup}.} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varbot{bracerightbt} + \endvarchar + \comment{This slot contains the curved bottom of a + \textunicode{0028}{LEFT PARENTHESIS}.} +\endsetslot + +\setslot{parenrightbt} + \label{parenrightbt} + \comment{This is the \cs{rmoustache} delimiter, whose top half is + like \cs{rgroup} and whose bottom half is like \cs{lgroup}.} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varbot{braceleftbt} + \endvarchar + \comment{This slot contains the curved bottom of a + \textunicode{0029}{RIGHT PARENTHESIS}.} +\endsetslot + +\nextslot{"77} +\setslot{arrowdblvertex} + \Unicode{21D5}{UP DOWN DOUBLE ARROW} + \varchar + \vartop{arrowdbltp} + \varbot{arrowdblbt} + \varrep{arrowdblvertex} + \endvarchar + \comment{This slot contains the repeatable middle part of a vertical + double arrow.} +\endsetslot + + + + + +\begincomment +\section{Ordinary characters} +\endcomment + + +\begincomment +\subsection{\texttt{Big} size delimiters} +\endcomment + +\nextslot{16} +\setslot{parenleftBig} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftbigg} +\endsetslot + +\setslot{parenrightBig} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightbigg} +\endsetslot + +\nextslot{46} +\setslot{slashBig} + \Unicode{2215}{DIVISION SLASH} + \nextlarger{slashbigg} +\endsetslot + +\setslot{backslashBig} + \Unicode{005C}{REVERSE SOLIDUS} + \nextlarger{backslashbigg} +\endsetslot + +\nextslot{"44} +\setslot{angleleftBig} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftbigg} +\endsetslot + +\setslot{anglerightBig} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightbigg} +\endsetslot + +\nextslot{"68} +\setslot{bracketleftBig} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftbigg} +\endsetslot + +\setslot{bracketrightBig} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightbigg} +\endsetslot + +\setslot{floorleftBig} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftbigg} +\endsetslot + +\setslot{floorrightBig} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightbigg} +\endsetslot + +\setslot{ceilingleftBig} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftbigg} +\endsetslot + +\setslot{ceilingrightBig} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightbigg} +\endsetslot + +\setslot{braceleftBig} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftbigg} +\endsetslot + +\setslot{bracerightBig} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightbigg} +\endsetslot + + + + + +\begincomment +\subsection{\texttt{bigg} size delimiters} +\endcomment + +\nextslot{18} +\setslot{parenleftbigg} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenleftBigg} +\endsetslot + +\setslot{parenrightbigg} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrightBigg} +\endsetslot + +\setslot{bracketleftbigg} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketleftBigg} +\endsetslot + +\setslot{bracketrightbigg} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrightBigg} +\endsetslot + +\setslot{floorleftbigg} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{floorleftBigg} +\endsetslot + +\setslot{floorrightbigg} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{floorrightBigg} +\endsetslot + +\setslot{ceilingleftbigg} + \Unicode{2308}{LEFT CEILING} + \nextlarger{ceilingleftBigg} +\endsetslot + +\setslot{ceilingrightbigg} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{ceilingrightBigg} +\endsetslot + +\setslot{braceleftbigg} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{braceleftBigg} +\endsetslot + +\setslot{bracerightbigg} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerightBigg} +\endsetslot + +\setslot{angleleftbigg} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} + \nextlarger{angleleftBigg} +\endsetslot + +\setslot{anglerightbigg} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} + \nextlarger{anglerightBigg} +\endsetslot + +\setslot{slashbigg} + \Unicode{2215}{DIVISION SLASH} + \nextlarger{slashBigg} +\endsetslot + +\setslot{backslashbigg} + \Unicode{005C}{REVERSE SOLIDUS} + \nextlarger{backslashBigg} +\endsetslot + + + +\begincomment +\subsection{\texttt{Bigg} size delimiters} +\endcomment + +\nextslot{32} +\setslot{parenleftBigg} + \Unicode{0028}{LEFT PARENTHESIS} + \nextlarger{parenlefttp} +\endsetslot + +\setslot{parenrightBigg} + \Unicode{0029}{RIGHT PARENTHESIS} + \nextlarger{parenrighttp} +\endsetslot + +\setslot{bracketleftBigg} + \Unicode{005B}{LEFT SQUARE BRACKET} + \nextlarger{bracketlefttp} +\endsetslot + +\setslot{bracketrightBigg} + \Unicode{005D}{RIGHT SQUARE BRACKET} + \nextlarger{bracketrighttp} +\endsetslot + +\setslot{floorleftBigg} + \Unicode{230A}{LEFT FLOOR} + \nextlarger{bracketleftbt} +\endsetslot + +\setslot{floorrightBigg} + \Unicode{230B}{RIGHT FLOOR} + \nextlarger{bracketrightbt} +\endsetslot + +\setslot{ceilingleftBigg} + \Unicode{2308}{LEFT CEILING} + \nextlarger{bracketleftex} +\endsetslot + +\setslot{ceilingrightBigg} + \Unicode{2309}{RIGHT CEILING} + \nextlarger{bracketrightex} +\endsetslot + +\setslot{braceleftBigg} + \Unicode{007B}{LEFT CURLY BRACKET} + \nextlarger{bracelefttp} +\endsetslot + +\setslot{bracerightBigg} + \Unicode{007D}{RIGHT CURLY BRACKET} + \nextlarger{bracerighttp} +\endsetslot + +\setslot{angleleftBigg} + \Unicode{2329}{LEFT-POINTING ANGLE BRACKET} +\endsetslot + +\setslot{anglerightBigg} + \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET} +\endsetslot + +\setslot{slashBigg} + \Unicode{2215}{DIVISION SLASH} +\endsetslot + +\setslot{backslashBigg} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + + + +\begincomment +\subsection{Extensible delimiters} +\endcomment + +\nextslot{48} +\setslot{parenlefttp} + \comment{This slot contains the curved top of a + \textunicode{0028}{LEFT PARENTHESIS}.} + \varchar + \vartop{parenlefttp} + \varrep{parenleftex} + \varbot{parenleftbt} + \endvarchar +\endsetslot + +\setslot{parenrighttp} + \comment{This slot contains the curved top of a + \textunicode{0029}{RIGHT PARENTHESIS}.} + \varchar + \vartop{parenrighttp} + \varrep{parenrightex} + \varbot{parenrightbt} + \endvarchar +\endsetslot + +\setslot{bracketlefttp} + \comment{This slot contains the corner top of a + \textunicode{005B}{LEFT SQUARE BRACKET}.} + \varchar + \vartop{bracketlefttp} + \varrep{bracketleftex} + \varbot{bracketleftbt} + \endvarchar +\endsetslot + +\setslot{bracketrighttp} + \comment{This slot contains the corner top of a + \textunicode{005D}{RIGHT SQUARE BRACKET}.} + \varchar + \vartop{bracketrighttp} + \varrep{bracketrightex} + \varbot{bracketrightbt} + \endvarchar +\endsetslot + +\setslot{bracketleftbt} + \comment{This slot contains the corner bottom of a + \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{230A}{LEFT FLOOR}.} + \varchar + \varrep{bracketleftex} + \varbot{bracketleftbt} + \endvarchar +\endsetslot + +\setslot{bracketrightbt} + \comment{This slot contains the corner bottom of a + \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{230B}{RIGHT FLOOR}.} + \varchar + \varrep{bracketrightex} + \varbot{bracketrightbt} + \endvarchar +\endsetslot + +\setslot{bracketleftex} + \comment{This slot contains the repeatable middle part of a + \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{2308}{LEFT CEILING}.} + \varchar + \vartop{bracketlefttp} + \varrep{bracketleftex} + \endvarchar +\endsetslot + +\setslot{bracketrightex} + \comment{This slot contains the repeatable middle part of a + \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the + final slot in the chain of larger sizes of + \textunicode{2309}{RIGHT CEILING}.} + \varchar + \vartop{bracketrighttp} + \varrep{bracketrightex} + \endvarchar +\endsetslot + +\setslot{bracelefttp} + \comment{This slot contains the curved top of a + \textunicode{007B}{LEFT CURLY BRACKET}.} + \label{bracelefttp} + \varchar + \vartop{bracelefttp} + \varrep{braceex} + \varmid{braceleftmid} + \varbot{braceleftbt} + \endvarchar +\endsetslot + +\setslot{bracerighttp} + \comment{This slot contains the curved top of a + \textunicode{007D}{RIGHT CURLY BRACKET}.} + \label{bracerighttp} + \varchar + \vartop{bracerighttp} + \varrep{braceex} + \varmid{bracerightmid} + \varbot{bracerightbt} + \endvarchar +\endsetslot + + + + + +\begincomment +\subsection{Display style operators} +\endcomment + +\nextslot{"47} +\setslot{unionsqdisplay} + \Unicode{2294}{SQUARE CUP} +\endsetslot + +\skipslots{1} +\setslot{contintegraldisplay} + \Unicode{222E}{CONTOUR INTEGRAL} +\endsetslot + +\skipslots{1} +\setslot{circledotdisplay} + \Unicode{2299}{CIRCLED DOT OPERATOR} +\endsetslot + +\skipslots{1} +\setslot{circleplusdisplay} + \Unicode{2295}{CIRCLED PLUS} +\endsetslot + +\skipslots{1} +\setslot{circlemultiplydisplay} + \Unicode{2297}{CIRCLED TIMES} +\endsetslot + +\skipslots{8} +\setslot{summationdisplay} + \Unicode{2211}{N-ARY SUMMATION} +\endsetslot + +\setslot{productdisplay} + \Unicode{220F}{N-ARY PRODUCT} +\endsetslot + +\setslot{integraldisplay} + \Unicode{222B}{INTEGRAL} +\endsetslot + +\setslot{uniondisplay} + \Unicode{22C3}{N-ARY UNION} +\endsetslot + +\setslot{intersectiondisplay} + \Unicode{22C2}{N-ARY INTERSECTION} +\endsetslot + +\setslot{unionmultidisplay} + \Unicode{228E}{MULTISET UNION} +\endsetslot + +\setslot{logicalanddisplay} + \Unicode{22C0}{N-ARY LOGICAL AND} +\endsetslot + +\setslot{logicalordisplay} + \Unicode{22C1}{N-ARY LOGICAL OR} +\endsetslot + +\skipslots{1} +\setslot{coproductdisplay} + \Unicode{2210}{N-ARY COPRODUCT} +\endsetslot + + + +\begincomment +\subsection{Accents} +\endcomment + +\nextslot{"63} +\setslot{hatwider} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \nextlarger{hatwiderr} +\endsetslot + +\setslot{hatwiderr} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} +\endsetslot + +\skipslots{1} + +\setslot{tildewider} + \Unicode{0303}{COMBINING TILDE} + \nextlarger{tildewiderr} +\endsetslot + +\setslot{tildewiderr} + \Unicode{0303}{COMBINING TILDE} +\endsetslot + + +\begincomment +\subsection{Radicals} +\endcomment + +\nextslot{"71} +\setslot{radicalBig} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalbigg} +\endsetslot + +\setslot{radicalbigg} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalBigg} +\endsetslot + +\setslot{radicalBigg} + \Unicode{221A}{SQUARE ROOT} + \nextlarger{radicalbt} +\endsetslot + +\setslot{radicalbt} + \Unicode{221A}{SQUARE ROOT} + \varchar + \varbot{radicalbt} + \vartop{radicaltp} + \varrep{radicalvertex} + \endvarchar +\endsetslot + +\setslot{radicalvertex} + \comment{This is the repeatable, vertically middle part of an + extensible \textunicode{221A}{SQUARE ROOT}.} +\endsetslot + +\setslot{radicaltp} + \comment{This is the top corner part of an extensible + \textunicode{221A}{SQUARE ROOT}.} +\endsetslot + + + + + +\begincomment +\section{Fontdimens and codingscheme} + +\texttt{OMX} fonts have the necessary fontdimens to serve as a math +group 3 font. +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . + +\setfontdimen{8}{defaultrulethickness} % default rule thickness +\setfontdimen{9}{bigopspacing1} % bigopspacing 1 +\setfontdimen{10}{bigopspacing2} % bigopspacing 2 +\setfontdimen{11}{bigopspacing3} % bigopspacing 3 +\setfontdimen{12}{bigopspacing4} % bigopspacing 4 +\setfontdimen{13}{bigopspacing5} % bigopspacing 5 + +\setstr{codingscheme}{TEX MATH EXTENSION} + + + + + +\endencoding + + +\section{Discussion} + + + +\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx new file mode 100644 index 00000000000..6f07bbd6f4a --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/ot1draft.etx @@ -0,0 +1,1027 @@ +\relax +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2004/11/28] + +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} + +\showbranches + +\begin{document} + +\title{\texttt{OT1} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2004/12/16} +\maketitle + +\begin{abstract} + The \texttt{OT1} encoding is an attempt to describe the encoding of + the text fonts in Donald~E.~Knuth's \emph{Computer Modern} family + of fonts~\cite{ComputerModern}. This is an impossibile goal, since + these fonts present no less than five different encodings, but they + are nontheless largely treated by \LaTeX\ as having identical + encodings. Due to the ambiguities this creates, and in view of that + the \texttt{T1} encoding supersedes \texttt{OT1} as text font + encoding, there is little point in using the text commands for + distiguishing mandatory features of \texttt{OT1} from the ordinary. + + \texttt{OT1} is however also used as a math font encoding (to go + with \texttt{OML}, \texttt{OMS}, and \texttt{OMX}), and that use is + today the by far most important since there is no obvious alternative + to the standard math font set-up. Therefore this specification + considers a feature of the encoding to be mandatory if it is + (i)~necessary for the standard math set-up or (ii)~is a text feature + which works for all encoding variants. +\end{abstract} + +\encoding +\needsfontinstversion{1.928} + + + +\begincomment +\section{Encoding variants} + +This document aims to record all the encoding variations that are +present within the set of fonts classified by \LaTeX\ as having the +\texttt{OT1} encoding. It turns out that they can all be described +using only two parameters. One of these might be called +`\textit{ligaturing}' as one factor it affects is how many ligatures +there will be in the font. The other parameter is best called +`\textit{italicizing}' as it is different between italic and +non-italic fonts. Most of the Computer Modern fonts have +\(\mathit{ligaturing} = 2\) and \(\mathit{italicizing} = 0\). + +\endcomment +\setint{ligaturing}{2} +\setint{italicizing}{0} + + +\begincomment + + +\section{Mandatory characters} + +\subsection{Latin letters} +\endcomment + +\nextslot{16} +\setslot{dotlessi} + \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} + \comment{A dotless i `\i', used to produce accented letters such as + `\=\i'. It is not used for math.} +\endsetslot + +\setslot{dotlessj} + \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} + \comment{A dotless j `\j', used to produce accented letters such as + `\=\j'. It is not used for math. The Unicode standard does not + define this character, but Adobe has assigned code point + \texttt{U+F6BE} (which is in the private use subarea assigned by + Adobe) to it.} +\endsetslot + +\nextslot{25} +\setslot{germandbls} + \Unicode{00DF}{LATIN SMALL LETTER SHARP S} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{ae} + \Unicode{00E6}{LATIN SMALL LETTER AE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{oe} + \Unicode{0153}{LATIN SMALL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `oe'. + It is not used in math.} +\endsetslot + +\setslot{oslash} + \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{AE} + \Unicode{00C6}{LATIN CAPITAL LETTER AE} + \comment{This slot is not used in math.} +\endsetslot + +\setslot{OE} + \Unicode{0152}{LATIN CAPITAL LIGATURE OE} + \comment{This is a single letter, and should not be faked with + `OE'. It is not used in math.} +\endsetslot + +\setslot{Oslash} + \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} + \comment{This slot is not used in math.} +\endsetslot + + +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} + \label{A} +\endsetslot + +\setslot{B} + \Unicode{0042}{LATIN CAPITAL LETTER B} +\endsetslot + +\setslot{C} + \Unicode{0043}{LATIN CAPITAL LETTER C} +\endsetslot + +\setslot{D} + \Unicode{0044}{LATIN CAPITAL LETTER D} +\endsetslot + +\setslot{E} + \Unicode{0045}{LATIN CAPITAL LETTER E} +\endsetslot + +\setslot{F} + \Unicode{0046}{LATIN CAPITAL LETTER F} +\endsetslot + +\setslot{G} + \Unicode{0047}{LATIN CAPITAL LETTER G} +\endsetslot + +\setslot{H} + \Unicode{0048}{LATIN CAPITAL LETTER H} +\endsetslot + +\setslot{I} + \Unicode{0049}{LATIN CAPITAL LETTER I} +\endsetslot + +\setslot{J} + \Unicode{004A}{LATIN CAPITAL LETTER J} +\endsetslot + +\setslot{K} + \Unicode{004B}{LATIN CAPITAL LETTER K} +\endsetslot + +\setslot{L} + \Unicode{004C}{LATIN CAPITAL LETTER L} +\endsetslot + +\setslot{M} + \Unicode{004D}{LATIN CAPITAL LETTER M} +\endsetslot + +\setslot{N} + \Unicode{004E}{LATIN CAPITAL LETTER N} +\endsetslot + +\setslot{O} + \Unicode{004F}{LATIN CAPITAL LETTER O} +\endsetslot + +\setslot{P} + \Unicode{0050}{LATIN CAPITAL LETTER P} +\endsetslot + +\setslot{Q} + \Unicode{0051}{LATIN CAPITAL LETTER Q} +\endsetslot + +\setslot{R} + \Unicode{0052}{LATIN CAPITAL LETTER R} +\endsetslot + +\setslot{S} + \Unicode{0053}{LATIN CAPITAL LETTER S} +\endsetslot + +\setslot{T} + \Unicode{0054}{LATIN CAPITAL LETTER T} +\endsetslot + +\setslot{U} + \Unicode{0055}{LATIN CAPITAL LETTER U} +\endsetslot + +\setslot{V} + \Unicode{0056}{LATIN CAPITAL LETTER V} +\endsetslot + +\setslot{W} + \Unicode{0057}{LATIN CAPITAL LETTER W} +\endsetslot + +\setslot{X} + \Unicode{0058}{LATIN CAPITAL LETTER X} +\endsetslot + +\setslot{Y} + \Unicode{0059}{LATIN CAPITAL LETTER Y} + \label{Y} +\endsetslot + +\setslot{Z} + \Unicode{005A}{LATIN CAPITAL LETTER Z} +\endsetslot + + +\nextslot{97} +\setslot{a} + \Unicode{0061}{LATIN SMALL LETTER A} +\endsetslot + +\setslot{b} + \Unicode{0062}{LATIN SMALL LETTER B} +\endsetslot + +\setslot{c} + \Unicode{0063}{LATIN SMALL LETTER C} +\endsetslot + +\setslot{d} + \Unicode{0064}{LATIN SMALL LETTER D} +\endsetslot + +\setslot{e} + \Unicode{0065}{LATIN SMALL LETTER E} +\endsetslot + +\setslot{f} + \Unicode{0066}{LATIN SMALL LETTER F} + \ifnumber{\int{ligaturing}}={2}\then + \ligature{LIG}{f}{ff} + \ligature{LIG}{i}{fi} + \ligature{LIG}{l}{fl} + \Fi +\endsetslot + +\setslot{g} + \Unicode{0067}{LATIN SMALL LETTER G} +\endsetslot + +\setslot{h} + \Unicode{0068}{LATIN SMALL LETTER H} +\endsetslot + +\setslot{i} + \Unicode{0069}{LATIN SMALL LETTER I} +\endsetslot + +\setslot{j} + \Unicode{006A}{LATIN SMALL LETTER J} +\endsetslot + +\setslot{k} + \Unicode{006B}{LATIN SMALL LETTER K} +\endsetslot + +\setslot{l} + \Unicode{006C}{LATIN SMALL LETTER L} +\endsetslot + +\setslot{m} + \Unicode{006D}{LATIN SMALL LETTER M} +\endsetslot + +\setslot{n} + \Unicode{006E}{LATIN SMALL LETTER N} +\endsetslot + +\setslot{o} + \Unicode{006F}{LATIN SMALL LETTER O} +\endsetslot + +\setslot{p} + \Unicode{0070}{LATIN SMALL LETTER P} +\endsetslot + +\setslot{q} + \Unicode{0071}{LATIN SMALL LETTER Q} +\endsetslot + +\setslot{r} + \Unicode{0072}{LATIN SMALL LETTER R} +\endsetslot + +\setslot{s} + \Unicode{0073}{LATIN SMALL LETTER S} +\endsetslot + +\setslot{t} + \Unicode{0074}{LATIN SMALL LETTER T} +\endsetslot + +\setslot{u} + \Unicode{0075}{LATIN SMALL LETTER U} +\endsetslot + +\setslot{v} + \Unicode{0076}{LATIN SMALL LETTER V} +\endsetslot + +\setslot{w} + \Unicode{0077}{LATIN SMALL LETTER W} +\endsetslot + +\setslot{x} + \Unicode{0078}{LATIN SMALL LETTER X} +\endsetslot + +\setslot{y} + \Unicode{0079}{LATIN SMALL LETTER Y} +\endsetslot + +\setslot{z} + \Unicode{007A}{LATIN SMALL LETTER Z} +\endsetslot + + +\begincomment +\subsection{Greek letters} +\endcomment + +\nextslot{0} +\setslot{Gamma} + \Unicode{0393}{GREEK CAPITAL LETTER GAMMA} +\endsetslot + +\setslot{Delta} + \Unicode{0394}{GREEK CAPITAL LETTER DELTA} +\endsetslot + +\setslot{Theta} + \Unicode{0398}{GREEK CAPITAL LETTER THETA} +\endsetslot + +\setslot{Lambda} + \Unicode{039B}{GREEK CAPITAL LETTER LAMBDA} + % Unicode's preferred name for this character seems to be + % GREEK CAPITAL LETTER LAMDA, i.e., without the `B'. Why? + % GREEK CAPITAL LETTER LAMBDA is listed as an alternative name. +\endsetslot + +\setslot{Xi} + \Unicode{039E}{GREEK CAPITAL LETTER XI} +\endsetslot + +\setslot{Pi} + \Unicode{03A0}{GREEK CAPITAL LETTER PI} +\endsetslot + +\setslot{Sigma} + \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA} +\endsetslot + +\setslot{Upsilon1} + \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL} + \comment{This is primarily a math character and it is should + be visually distinct from the character in slot~\ref{Y}. This is + not generally the case for the normal Upsilon + \textunicode{03A5}{GREEK CAPITAL LETTER UPSILON}, which is by + the way what usually has the glyph name \texttt{Upsilon}. + An argument for the latter is however that all the purely + mathematical Upsilons that exist in the Unicode standard are + described as variants of the non-hook character.} +\endsetslot + +\setslot{Phi} + \Unicode{03A6}{GREEK CAPITAL LETTER PHI} +\endsetslot + +\setslot{Psi} + \Unicode{03A8}{GREEK CAPITAL LETTER PSI} +\endsetslot + +\setslot{Omega} + \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA} +\endsetslot + + +\begincomment +\subsection{Digits} +\endcomment + +\nextslot{48} +\setslot{zero} + \Unicode{0030}{DIGIT ZERO} +\endsetslot + +\setslot{one} + \Unicode{0031}{DIGIT ONE} +\endsetslot + +\setslot{two} + \Unicode{0032}{DIGIT TWO} +\endsetslot + +\setslot{three} + \Unicode{0033}{DIGIT THREE} +\endsetslot + +\setslot{four} + \Unicode{0034}{DIGIT FOUR} +\endsetslot + +\setslot{five} + \Unicode{0035}{DIGIT FIVE} +\endsetslot + +\setslot{six} + \Unicode{0036}{DIGIT SIX} +\endsetslot + +\setslot{seven} + \Unicode{0037}{DIGIT SEVEN} +\endsetslot + +\setslot{eight} + \Unicode{0038}{DIGIT EIGHT} +\endsetslot + +\setslot{nine} + \Unicode{0039}{DIGIT NINE} +\endsetslot + + +\begincomment +\subsection{Accents} +\endcomment + +\nextslot{18} +\setslot{grave} + \Unicode{0300}{COMBINING GRAVE ACCENT} +\endsetslot + +\setslot{acute} + \Unicode{0301}{COMBINING ACUTE ACCENT} +\endsetslot + +\setslot{caron} + \Unicode{030C}{COMBINING CARON} + \comment{The caron or h\'a\v cek accent `\v{}'.} +\endsetslot + +\setslot{breve} + \Unicode{0306}{COMBINING BREVE} +\endsetslot + +\setslot{macron} + \Unicode{0304}{COMBINING MACRON} +\endsetslot + +\setslot{ring} + \Unicode{030A}{COMBINING RING ABOVE} + \comment{The text definition of `\verb|\r{A}|' assumes that this + glyph has the same width as that in slot~\ref{A}.} +\endsetslot + +\setslot{cedilla} + \Unicode{0327}{COMBINING CEDILLA} + \comment{This slot is not required for math, but is used by + the \cs{c} \LaTeX\ command.} +\endsetslot + + +\nextslot{94} +\setslot{circumflex} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} + \Unicode{005E}{CIRCUMFLEX ACCENT} +\endsetslot + +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{dotaccent} + \Unicode{0307}{COMBINING DOT ABOVE} + \label{dotaccent} +\endsetslot + +\begincomment +\par\medskip +Note that the \(\mathit{ligaturing} = 0\) assignment to +slot~\ref{underscore} is ordinary, not mandatory. +\endcomment + +\Fi + + +\nextslot{126} +\setslot{tilde} + \Unicode{0303}{COMBINING TILDE} + \Unicode{007E}{TILDE} +\endsetslot + +\setslot{dieresis} + \Unicode{0308}{COMBINING DIAERESIS} +\endsetslot + + +\begincomment +\subsection{Symbols} +\endcomment + +\nextslot{33} +\setslot{exclam} + \Unicode{0021}{EXCLAMATION MARK} + \Ligature{LIG}{quoteleft}{exclamdown} +\endsetslot + +\skipslots{1} + +\setslot{numbersign} + \Unicode{0023}{NUMBER SIGN} + \comment{This slot is not used for math.} +\endsetslot + +\ifnumber{\int{italicizing}}={0}\then + +\setslot{dollar} + \Unicode{0024}{DOLLAR SIGN} +\endsetslot + +\Else + +\setslot{sterling} + \Unicode{00A3}{POUND SIGN} +\endsetslot + +\Fi + +\setslot{percent} + \Unicode{0025}{PERCENT SIGN} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{ampersand} + \Unicode{0026}{AMPERSAND} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{quoteright} + \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{quoteright}{quotedblright} + \Fi +\endsetslot + +\setslot{parenleft} + \Unicode{0028}{LEFT PARENTHESIS} +\endsetslot + +\setslot{parenright} + \Unicode{0029}{RIGHT PARENTHESIS} +\endsetslot + +\setslot{asterisk} + \Unicode{002A}{ASTERISK} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{plus} + \Unicode{002B}{PLUS SIGN} +\endsetslot + +\setslot{comma} + \Unicode{002C}{COMMA} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{hyphen} + \Unicode{002D}{HYPHEN-MINUS} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{hyphen}{endash} + \Fi +\endsetslot + +\setslot{period} + \Unicode{002E}{FULL STOP} + \comment{This slot is not used for math.} +\endsetslot + +\setslot{slash} + \Unicode{002F}{SOLIDUS} +\endsetslot + +\nextslot{58} +\setslot{colon} + \Unicode{003A}{COLON} +\endsetslot + +\setslot{semicolon} + \Unicode{003B}{SEMICOLON} +\endsetslot + +\skipslots{1} + +\setslot{equal} + \Unicode{003D}{EQUALS SIGN} +\endsetslot + +\skipslots{1} + +\setslot{question} + \Unicode{003F}{QUESTION MARK} + \Ligature{LIG}{quoteleft}{questiondown} +\endsetslot + +\setslot{at} + \Unicode{0040}{COMMERCIAL AT} + \comment{This slot is not used for math.} +\endsetslot + +\nextslot{91} +\setslot{bracketleft} + \Unicode{005B}{LEFT SQUARE BRACKET} +\endsetslot + +\skipslots{1} + +\setslot{bracketright} + \Unicode{005D}{RIGHT SQUARE BRACKET} +\endsetslot + +\nextslot{96} +\setslot{quoteleft} + \Unicode{2018}{LEFT SINGLE QUOTATION MARK} + \comment{This slot is not used for math.} + \ifnumber{\int{ligaturing}}>{0}\then + \Ligature{LIG}{quoteleft}{quotedblleft} + \Fi +\endsetslot + + + +\begincomment +\section{Ordinary characters} + +\subsection{Letters} +\endcomment + +\ifnumber{\int{ligaturing}}={2}\then + +\nextslot{11} +\setslot{ff} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + } + \comment{This glyph should be two characters wide in a monowidth + font.} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} +\endsetslot + +\setslot{fi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{fl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\Fi + +\nextslot{"8A} +\setslot{Lslash} + \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} + \comment{The letter `\L'.} +\endsetslot + +\nextslot{"AA} +\setslot{lslash} + \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} + \comment{The letter `\l'.} +\endsetslot + + +\begincomment +\subsection{Accents} +\endcomment + +\ifnumber{\int{ligaturing}}>{0}\then + +\nextslot{125} +\setslot{hungarumlaut} + \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} + \comment{The long Hungarian umlaut `\H{}'.} +\endsetslot + +\Fi + +\begincomment +\subsection{Symbols} +\endcomment + +\ifnumber{\int{ligaturing}}<{2}\then + +\nextslot{11} +\setslot{arrowup} + \Unicode{2191}{UPWARDS ARROW} +\endsetslot + +\setslot{arrowdown} + \Unicode{2193}{DOWNWARDS ARROW} +\endsetslot + +\setslot{quotesingle} + \Unicode{0027}{APOSTROPHE} +\endsetslot + +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\Fi + +\nextslot{32} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{lslashslash} + \comment{When this character is followed by + \textunicode{004C}{LATIN CAPITAL LETTER L} then the combined + result is \textunicode{0141}{LATIN CAPITAL LETTER L WITH STROKE}; + this is used by the \cs{L} command. When this character is + followed by \textunicode{006C}{LATIN SMALL LETTER L} then the + combined result is \textunicode{0142}{LATIN SMALL LETTER L WITH + STROKE}; this is used by the \cs{l} command. There are no further + semantics for this character.} + \ligature{LIG}{L}{Lslash} + \ligature{LIG}{l}{lslash} + \comment{These ligatures, and the characters they point to, were + added by Alan Jeffrey early in \textsf{fontinst} development in + order to allow the character in this slot to exhibit the correct + behaviour even in fonts where there is no corresponding glyph.} +\endsetslot + +\Else + +\setslot{visiblespace} + \Unicode{2423}{OPEN BOX} + \comment{A visible space glyph `\textvisiblespace'.} +\endsetslot + +\Fi + + +\nextslot{34} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{quotedblright} + \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} +\endsetslot + +\Else + +\setslot{quotedbl} + \Unicode{0022}{QUOTATION MARK} +\endsetslot + +\Fi + +\nextslot{60} +\ifnumber{\int{ligaturing}}={2}\then + +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\skipslots{1} + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\Else + +\setslot{less} + \Unicode{003C}{LESS-THAN SIGN} +\endsetslot + +\skipslots{1} + +\setslot{greater} + \Unicode{003E}{GREATER-THAN SIGN} +\endsetslot + +\Fi + +\nextslot{92} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{quotedblleft} + \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} +\endsetslot + +\Else + +\setslot{backslash} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + +\nextslot{95} +\setslot{underscore} + \Unicode{005F}{LOW LINE} + \label{underscore} +\endsetslot + +\begincomment +\par\medskip +Note that the \(\mathit{ligaturing} > 0\) assignment to +slot~\ref{dotaccent} is mandatory, not ordinary. +\endcomment + +\Fi + + +\nextslot{123} +\ifnumber{\int{ligaturing}}>{0}\then + +\setslot{endash} + \Unicode{2013}{EN DASH} + \Ligature{LIG}{hyphen}{emdash} +\endsetslot + +\setslot{emdash} + \Unicode{2014}{EM DASH} + \comment{In a monowidth font this character is preferably given the + width of two normal characters.} +\endsetslot + +\Else + +\setslot{braceleft} + \Unicode{007B}{LEFT CURLY BRACKET} +\endsetslot + +\setslot{bar} + \Unicode{007C}{VERTICAL LINE} +\endsetslot + +\setslot{braceright} + \Unicode{007D}{RIGHT CURLY BRACKET} +\endsetslot + +\Fi + + +\begincomment +\section{Fontdimens} +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . + + +\begincomment +\section{Coding scheme} +\endcomment + +\ifnumber{\int{ligaturing}}={2}\then + +\setstr{codingscheme}{TEX TEXT} + +\Else\ifnumber{\int{ligaturing}}={1}\then + +\setstr{codingscheme}{TEX TEXT WITHOUT F-LIGATURES} + +\Else + +\setstr{codingscheme}{TEX TYPEWRITER TEXT} + +\Fi\Fi + + +\endencoding + + +\section{Discussion} + + +\subsection{\texttt{OT1} as math font encoding} + +As source for the math requirements on the \texttt{OT1} encoding +was used the standard \LaTeX\ math set-up~\cite{fontdef}. Those +definitions that make use of \texttt{OT1} fonts either use the +\texttt{operators} symbol font\slash font family~0 or have math +class~7 (\cs{mathalpha}). + +There are two slots used for math that have different assignments +in different encoding variants. Slot 36 (\texttt{dollar}\slash +\texttt{sterling}) depends on the $\mathit{italicizing}$, and is used +by the commands \cs{mathdollar} (called by \verb|\$|) and +\cs{mathsterling} (called by \cs{pounds}). This works because these +commands explicitly take the character from a font with the correct +$\mathit{italicizing}$. + +Slot~95 (\texttt{dotaccent}\slash \texttt{underline}) depends on the +$\mathit{ligaturing}$ and is used by the \cs{dot} command. This +command does \emph{not} work for fonts with \(\mathit{ligaturing}=0\), +and hence e.g.\ the formula \verb|$\mathtt{\dot{x}}$| does not produce +a typewriter dotted `x', but rather an `x' and underscore printed on +top of each other. This is thus an error, but due to that it is +unlikely that the error will be missed by the author who encounters +it, the error is probably harmless. + + +\subsection{\texttt{OT1} as text font encoding} + +The sources used to determine the text requirements on the +\texttt{OT1} encoding were~\cite{ltoutenc}. + +It turns out that there are LICR commands which rely on non-mandatory +features of the font. It is mostly for the \(\mathit{ligaturing} = 0\) +fonts that commands produce incorrect results. The following commands +work with all \texttt{OT1} fonts which have \(\mathit{ligaturing} > 0\) +but fail with the others: \cs{L}, \cs{l}, \cs{.}, \cs{H}, +\cs{textemdash}, \cs{textendash}, and \cs{textquotedblleft}. +In addition, the command \cs{textquotedblright} produces a +reasonable, but not exactly correct, result. + +Traditionally the \cs{textexclamdown} and \cs{textquestiondown} have +only worked for fonts which have \(\mathit{ligaturing} = 2\), but +that can be fixed; see~\cite{latex/3368}. + + +\section{Changes} + +The changes made to this specification since the original 2001/09/09 +version are as follows. + +2004/12/16: Changed the f-ligatures to character sequences, which +makes more sense for \texttt{CMap}s. Incremented needed versions +accordingly. /LH + + +\begin{thebibliography}{9} +\bibitem{ltoutenc} + Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach, + Chris Rowley, and Rainer Sch\"opf: + \textit{ltoutenc.dtx}, v\,1.91 (2000); + the file \texttt{ltoutenc.dtx} in the \LaTeX\ base distribution. +\bibitem{latex/3368} + Lars Hellstr\"om: + \textit{\texttt{OT1} def.\ of \cs{textexclamdown} and + \cs{textquestiondown}}, \LaTeX\ bugs database entry + \textbf{latex/3368}, 2001. +% ; \textsc{http:}/\slash \texttt{www.latex-project.org}\slash +% \texttt{cgi-bin}\slash \texttt{ltxbugs2html\discretionary{?}{}{?}% +% pr=latex/3368}. +\bibitem{ComputerModern} + Donald E. Knuth: + \textit{Computer Modern Typefaces}, + volume E of \textit{Computers \& Typesetting}, + Ad\-di\-son--Wes\-ley, 1986, xvi+588\,pp.; + ISBN~0-201-13446-2. +\bibitem{fontdef} + Frank Mittelbach and Rainer Sch\"opf: + \textit{The \texttt{fontdef.dtx} file}, v\,2.2x (1999); + the file \texttt{fontdef.dtx} in the \LaTeX\ base distribution. +\end{thebibliography} + + +\end{document} + + + diff --git a/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx new file mode 100644 index 00000000000..d82c9e53ed0 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/fontinst/encspecs/t1draft.etx @@ -0,0 +1,1484 @@ +\relax +\documentclass[twocolumn]{article} +\usepackage[specification]{fontdoc}[2004/11/28] +\usepackage{shortvrb} + +\MakeShortVerb{\|} + +\begin{document} +\title{\texttt{T1} encoding draft specification} +\author{Lars Hellstr\"om} +\date{2002/07/05} +\maketitle + +\begin{abstract} + The \texttt{T1} encoding covers most\footnote{But not quite all.} + letters in the latin script that are used in European languages. + Code points 32--126 coincide with ASCII\footnote{As defined in + Appendix C of \emph{The \TeX book}~\cite{TeXbook}, not as defined + by the ANSI.} and code points 192--255 are mainly the same as in + the latin-1 encoding~\cite{ISO8859-1,latin-page}, but there are + exceptions. +\end{abstract} + +\encoding + +\needsfontinstversion{1.928} + +\begincomment +\section{Mandatory characters} +\endcomment + +\begincomment +\subsection{Letters} +More than two thirds of the characters in the encoding are letters. +This is a deliberate choice: \TeX's hyphenation algorithm requires +that all characters in a word are taken from the same font, hence it +is advantageous\footnote{Probably less so than what was thought when +the encoding was designed, but still advantageous.} to keep as many +letters as possible in the same font. Taking symbols from other fonts +is less of a disadvantage. + +\subsubsection{``Unaccented'' letters in slots 0--127} +\endcomment + +\nextslot{25} +\setslot{dotlessi} + \Unicode{0131}{LATIN SMALL LETTER DOTLESS I} + \comment{A dotless i `\i', used to produce accented letters such as + `\=\i'.} +\endsetslot + +\setslot{dotlessj} + \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J} + \comment{A dotless j `\j', used to produce accented letters such as + `\=\j'. The Unicode standard does not define this character, but + Adobe has assigned code point \texttt{U+F6BE} (which lies + in the private use subarea assigned by Adobe) to it.} +\endsetslot + + +\nextslot{65} +\setslot{A} + \Unicode{0041}{LATIN CAPITAL LETTER A} +\endsetslot + +\setslot{B} + \Unicode{0042}{LATIN CAPITAL LETTER B} +\endsetslot + +\setslot{C} + \Unicode{0043}{LATIN CAPITAL LETTER C} +\endsetslot + +\setslot{D} + \Unicode{0044}{LATIN CAPITAL LETTER D} +\endsetslot + +\setslot{E} + \Unicode{0045}{LATIN CAPITAL LETTER E} +\endsetslot + +\setslot{F} + \Unicode{0046}{LATIN CAPITAL LETTER F} +\endsetslot + +\setslot{G} + \Unicode{0047}{LATIN CAPITAL LETTER G} +\endsetslot + +\setslot{H} + \Unicode{0048}{LATIN CAPITAL LETTER H} +\endsetslot + +\setslot{I} + \Unicode{0049}{LATIN CAPITAL LETTER I} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{J}{IJ} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{j}{IJ} +\endsetslot + +\setslot{J} + \Unicode{004A}{LATIN CAPITAL LETTER J} +\endsetslot + +\setslot{K} + \Unicode{004B}{LATIN CAPITAL LETTER K} +\endsetslot + +\setslot{L} + \Unicode{004C}{LATIN CAPITAL LETTER L} +\endsetslot + +\setslot{M} + \Unicode{004D}{LATIN CAPITAL LETTER M} +\endsetslot + +\setslot{N} + \Unicode{004E}{LATIN CAPITAL LETTER N} +\endsetslot + +\setslot{O} + \Unicode{004F}{LATIN CAPITAL LETTER O} +\endsetslot + +\setslot{P} + \Unicode{0050}{LATIN CAPITAL LETTER P} +\endsetslot + +\setslot{Q} + \Unicode{0051}{LATIN CAPITAL LETTER Q} +\endsetslot + +\setslot{R} + \Unicode{0052}{LATIN CAPITAL LETTER R} +\endsetslot + +\setslot{S} + \Unicode{0053}{LATIN CAPITAL LETTER S} +\endsetslot + +\setslot{T} + \Unicode{0054}{LATIN CAPITAL LETTER T} +\endsetslot + +\setslot{U} + \Unicode{0055}{LATIN CAPITAL LETTER U} +\endsetslot + +\setslot{V} + \Unicode{0056}{LATIN CAPITAL LETTER V} +\endsetslot + +\setslot{W} + \Unicode{0057}{LATIN CAPITAL LETTER W} +\endsetslot + +\setslot{X} + \Unicode{0058}{LATIN CAPITAL LETTER X} +\endsetslot + +\setslot{Y} + \Unicode{0059}{LATIN CAPITAL LETTER Y} +\endsetslot + +\setslot{Z} + \Unicode{005A}{LATIN CAPITAL LETTER Z} +\endsetslot + + +\nextslot{97} +\setslot{a} + \Unicode{0061}{LATIN SMALL LETTER A} +\endsetslot + +\setslot{b} + \Unicode{0062}{LATIN SMALL LETTER B} +\endsetslot + +\setslot{c} + \Unicode{0063}{LATIN SMALL LETTER C} +\endsetslot + +\setslot{d} + \Unicode{0064}{LATIN SMALL LETTER D} +\endsetslot + +\setslot{e} + \Unicode{0065}{LATIN SMALL LETTER E} +\endsetslot + +\setslot{f} + \Unicode{0066}{LATIN SMALL LETTER F} + \ligature{LIG}{f}{ff} + \ligature{LIG}{i}{fi} + \ligature{LIG}{l}{fl} +\endsetslot + +\setslot{g} + \Unicode{0067}{LATIN SMALL LETTER G} +\endsetslot + +\setslot{h} + \Unicode{0068}{LATIN SMALL LETTER H} +\endsetslot + +\setslot{i} + \Unicode{0069}{LATIN SMALL LETTER I} + \oddligature{This ligature only occurs in Dutch typography.} + {LIG}{j}{ij} +\endsetslot + +\setslot{j} + \Unicode{006A}{LATIN SMALL LETTER J} +\endsetslot + +\setslot{k} + \Unicode{006B}{LATIN SMALL LETTER K} +\endsetslot + +\setslot{l} + \Unicode{006C}{LATIN SMALL LETTER L} +\endsetslot + +\setslot{m} + \Unicode{006D}{LATIN SMALL LETTER M} +\endsetslot + +\setslot{n} + \Unicode{006E}{LATIN SMALL LETTER N} +\endsetslot + +\setslot{o} + \Unicode{006F}{LATIN SMALL LETTER O} +\endsetslot + +\setslot{p} + \Unicode{0070}{LATIN SMALL LETTER P} +\endsetslot + +\setslot{q} + \Unicode{0071}{LATIN SMALL LETTER Q} +\endsetslot + +\setslot{r} + \Unicode{0072}{LATIN SMALL LETTER R} +\endsetslot + +\setslot{s} + \Unicode{0073}{LATIN SMALL LETTER S} +\endsetslot + +\setslot{t} + \Unicode{0074}{LATIN SMALL LETTER T} +\endsetslot + +\setslot{u} + \Unicode{0075}{LATIN SMALL LETTER U} +\endsetslot + +\setslot{v} + \Unicode{0076}{LATIN SMALL LETTER V} +\endsetslot + +\setslot{w} + \Unicode{0077}{LATIN SMALL LETTER W} +\endsetslot + +\setslot{x} + \Unicode{0078}{LATIN SMALL LETTER X} +\endsetslot + +\setslot{y} + \Unicode{0079}{LATIN SMALL LETTER Y} +\endsetslot + +\setslot{z} + \Unicode{007A}{LATIN SMALL LETTER Z} +\endsetslot + + +\begincomment +\subsubsection{Mainly East-European accented letters + in slots 128--191} +\endcomment + +\nextslot{128} +\setslot{Abreve} + \Unicode{0102}{LATIN CAPITAL LETTER A WITH BREVE} +\endsetslot + +\setslot{Aogonek} + \Unicode{0104}{LATIN CAPITAL LETTER A WITH OGONEK} +\endsetslot + +\setslot{Cacute} + \Unicode{0106}{LATIN CAPITAL LETTER C WITH ACUTE} +\endsetslot + +\setslot{Ccaron} + \Unicode{010C}{LATIN CAPITAL LETTER C WITH CARON} +\endsetslot + +\setslot{Dcaron} + \Unicode{010E}{LATIN CAPITAL LETTER D WITH CARON} +\endsetslot + +\setslot{Ecaron} + \Unicode{011A}{LATIN CAPITAL LETTER E WITH CARON} +\endsetslot + +\setslot{Eogonek} + \Unicode{0118}{LATIN CAPITAL LETTER E WITH OGONEK} +\endsetslot + +\setslot{Gbreve} + \Unicode{011E}{LATIN CAPITAL LETTER G WITH BREVE} +\endsetslot + +\setslot{Lacute} + \Unicode{0139}{LATIN CAPITAL LETTER L WITH ACUTE} +\endsetslot + +\setslot{Lcaron} + \Unicode{013D}{LATIN CAPITAL LETTER L WITH CARON} + \comment{The normal glyph for this character consists of a capital + L and a right single quote, but the underlying accent is a caron. + The glyph name \texttt{Lquoteright} is not uncommon, but + \cite{AGL} uses \texttt{Lcaron}.} +\endsetslot + +\setslot{Lslash} + \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE} + \comment{The letter `\L'.} +\endsetslot + +\setslot{Nacute} + \Unicode{0143}{LATIN CAPITAL LETTER N WITH ACUTE} +\endsetslot + +\setslot{Ncaron} + \Unicode{0147}{LATIN CAPITAL LETTER N WITH CARON} +\endsetslot + +\setslot{Eng} + \Unicode{014A}{LATIN CAPITAL LETTER ENG} +\endsetslot + +\setslot{Ohungarumlaut} + \Unicode{0150}{LATIN CAPITAL LETTER O WITH DOUBLE ACUTE} + \comment{The letter `\H{O}'.} +\endsetslot + +\setslot{Racute} + \Unicode{0154}{LATIN CAPITAL LETTER R WITH ACUTE} +\endsetslot + +\setslot{Rcaron} + \Unicode{0158}{LATIN CAPITAL LETTER R WITH CARON} +\endsetslot + +\setslot{Sacute} + \Unicode{015A}{LATIN CAPITAL LETTER S WITH ACUTE} +\endsetslot + +\setslot{Scaron} + \Unicode{0160}{LATIN CAPITAL LETTER S WITH CARON} +\endsetslot + +\setslot{Scedilla} + \Unicode{015E}{LATIN CAPITAL LETTER S WITH CEDILLA} + \comment{In Romanian, character \textunicode{0218}{latin + capital letter s with comma below} is preferred, but that + wasn't known when this encoding was designed.} +\endsetslot + +\setslot{Tcaron} + \Unicode{0164}{LATIN CAPITAL LETTER T WITH CARON} +\endsetslot + +\setslot{Tcommaaccent} + \Unicode{021A}{LATIN CAPITAL LETTER T WITH COMMA BELOW} +\endsetslot + +\setslot{Uhungarumlaut} + \Unicode{0170}{LATIN CAPITAL LETTER U WITH DOUBLE ACUTE} + \comment{The letter `\H{U}'.} +\endsetslot + +\setslot{Uring} + \Unicode{016E}{LATIN CAPITAL LETTER U WITH RING ABOVE} +\endsetslot + +\setslot{Ydieresis} + \Unicode{0178}{LATIN CAPITAL LETTER Y WITH DIAERESIS} +\endsetslot + +\setslot{Zacute} + \Unicode{0179}{LATIN CAPITAL LETTER Z WITH ACUTE} +\endsetslot + +\setslot{Zcaron} + \Unicode{017D}{LATIN CAPITAL LETTER Z WITH CARON} +\endsetslot + +\setslot{Zdotaccent} + \Unicode{017B}{LATIN CAPITAL LETTER Z WITH DOT ABOVE} +\endsetslot + +\skipslots{1} +\setslot{Idotaccent} + \Unicode{0130}{LATIN CAPITAL LETTER I WITH DOT ABOVE} + \comment{This character's |\lccode| value points to slot 105 + (\texttt{i}), as does that of slot 73 (\texttt{I}).} +\endsetslot + +\setslot{dcroat} + \Unicode{0111}{LATIN SMALL LETTER D WITH STROKE} +\endsetslot + + +\nextslot{160} +\setslot{abreve} + \Unicode{0103}{LATIN SMALL LETTER A WITH BREVE} +\endsetslot + +\setslot{aogonek} + \Unicode{0105}{LATIN SMALL LETTER A WITH OGONEK} +\endsetslot + +\setslot{cacute} + \Unicode{0107}{LATIN SMALL LETTER C WITH ACUTE} +\endsetslot + +\setslot{ccaron} + \Unicode{010D}{LATIN SMALL LETTER C WITH CARON} +\endsetslot + +\setslot{dcaron} + \Unicode{010F}{LATIN SMALL LETTER D WITH CARON} + \comment{The normal glyph for this character consists of a + lower case d and a right single quote, but the underlying + accent is a caron.} +\endsetslot + +\setslot{ecaron} + \Unicode{011B}{LATIN SMALL LETTER E WITH CARON} +\endsetslot + +\setslot{eogonek} + \Unicode{0119}{LATIN SMALL LETTER E WITH OGONEK} +\endsetslot + +\setslot{gbreve} + \Unicode{011F}{LATIN SMALL LETTER G WITH BREVE} +\endsetslot + +\setslot{lacute} + \Unicode{013A}{LATIN SMALL LETTER L WITH ACUTE} +\endsetslot + +\setslot{lcaron} + \Unicode{013E}{LATIN SMALL LETTER L WITH CARON} + \comment{The normal glyph for this character consists of a + lower case l and a right single quote, but the underlying + accent is a caron. The glyph name \texttt{lquoteright} is + not uncommon, but \cite{AGL} uses \texttt{lcaron}.} +\endsetslot + +\setslot{lslash} + \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE} +\endsetslot + +\setslot{nacute} + \Unicode{0144}{LATIN SMALL LETTER N WITH ACUTE} +\endsetslot + +\setslot{ncaron} + \Unicode{0148}{LATIN SMALL LETTER N WITH CARON} +\endsetslot + +\setslot{eng} + \Unicode{014B}{LATIN SMALL LETTER ENG} +\endsetslot + +\setslot{ohungarumlaut} + \Unicode{0151}{LATIN SMALL LETTER O WITH DOUBLE ACUTE} + \comment{The letter `\H{o}'.} +\endsetslot + +\setslot{racute} + \Unicode{0155}{LATIN SMALL LETTER R WITH ACUTE} +\endsetslot + +\setslot{rcaron} + \Unicode{0159}{LATIN SMALL LETTER R WITH CARON} +\endsetslot + +\setslot{sacute} + \Unicode{015B}{LATIN SMALL LETTER S WITH ACUTE} +\endsetslot + +\setslot{scaron} + \Unicode{0161}{LATIN SMALL LETTER S WITH CARON} +\endsetslot + +\setslot{scedilla} + \Unicode{015F}{LATIN SMALL LETTER S WITH CEDILLA} + \comment{In Romanian, character \textunicode{0219}{latin + small letter s with comma below} is preferred, but that + wasn't known when this encoding was designed.} +\endsetslot + +\setslot{tcaron} + \Unicode{0165}{LATIN SMALL LETTER T WITH CARON} + \comment{The normal glyph for this character consists of a + lower case t and a right single quote, but the underlying + accent is a caron.} +\endsetslot + +\setslot{tcommaaccent} + \Unicode{021B}{LATIN SMALL LETTER T WITH COMMA BELOW} +\endsetslot + +\setslot{uhungarumlaut} + \Unicode{0171}{LATIN SMALL LETTER U WITH DOUBLE ACUTE} +\endsetslot + +\setslot{uring} + \Unicode{016F}{LATIN SMALL LETTER U WITH RING ABOVE} +\endsetslot + +\setslot{ydieresis} + \Unicode{00FF}{LATIN SMALL LETTER Y WITH DIAERESIS} +\endsetslot + +\setslot{zacute} + \Unicode{017A}{LATIN SMALL LETTER Z WITH ACUTE} +\endsetslot + +\setslot{zcaron} + \Unicode{017E}{LATIN SMALL LETTER Z WITH CARON} +\endsetslot + +\setslot{zdotaccent} + \Unicode{017C}{LATIN SMALL LETTER Z WITH DOT ABOVE} +\endsetslot + + +\begincomment +\subsubsection{Mainly West-European accented letters in slots 192--255} +\endcomment + +\nextslot{192} +\setslot{Agrave} + \Unicode{00C0}{LATIN CAPITAL LETTER A WITH GRAVE} +\endsetslot + +\setslot{Aacute} + \Unicode{00C1}{LATIN CAPITAL LETTER A WITH ACUTE} +\endsetslot + +\setslot{Acircumflex} + \Unicode{00C2}{LATIN CAPITAL LETTER A WITH CIRCUMFLEX} +\endsetslot + +\setslot{Atilde} + \Unicode{00C3}{LATIN CAPITAL LETTER A WITH TILDE} +\endsetslot + +\setslot{Adieresis} + \Unicode{00C4}{LATIN CAPITAL LETTER A WITH DIAERESIS} +\endsetslot + +\setslot{Aring} + \Unicode{00C5}{LATIN CAPITAL LETTER A WITH RING ABOVE} +\endsetslot + +\setslot{AE} + \Unicode{00C6}{LATIN CAPITAL LETTER AE} +\endsetslot + +\setslot{Ccedilla} + \Unicode{00C7}{LATIN CAPITAL LETTER C WITH CEDILLA} +\endsetslot + +\setslot{Egrave} + \Unicode{00C8}{LATIN CAPITAL LETTER E WITH GRAVE} +\endsetslot + +\setslot{Eacute} + \Unicode{00C9}{LATIN CAPITAL LETTER E WITH ACUTE} +\endsetslot + +\setslot{Ecircumflex} + \Unicode{00CA}{LATIN CAPITAL LETTER E WITH CIRCUMFLEX} +\endsetslot + +\setslot{Edieresis} + \Unicode{00CB}{LATIN CAPITAL LETTER E WITH DIAERESIS} +\endsetslot + +\setslot{Igrave} + \Unicode{00CC}{LATIN CAPITAL LETTER I WITH GRAVE} +\endsetslot + +\setslot{Iacute} + \Unicode{00CD}{LATIN CAPITAL LETTER I WITH ACUTE} +\endsetslot + +\setslot{Icircumflex} + \Unicode{00CE}{LATIN CAPITAL LETTER I WITH CIRCUMFLEX} +\endsetslot + +\setslot{Idieresis} + \Unicode{00CF}{LATIN CAPITAL LETTER I WITH DIAERESIS} +\endsetslot + +\setslot{Eth} + \Unicode{00D0}{LATIN CAPITAL LETTER ETH} + \Unicode{0110}{LATIN CAPITAL LETTER D WITH STROKE} + \comment{This slot is being used to represent two different + letters whose capital forms are identical. The |\lccode| value + points to slot \ref{eth}.} +\endsetslot + +\setslot{Ntilde} + \Unicode{00D1}{LATIN CAPITAL LETTER N WITH TILDE} +\endsetslot + +\setslot{Ograve} + \Unicode{00D2}{LATIN CAPITAL LETTER O WITH GRAVE} +\endsetslot + +\setslot{Oacute} + \Unicode{00D3}{LATIN CAPITAL LETTER O WITH ACUTE} +\endsetslot + +\setslot{Ocircumflex} + \Unicode{00D4}{LATIN CAPITAL LETTER O WITH CIRCUMFLEX} +\endsetslot + +\setslot{Otilde} + \Unicode{00D5}{LATIN CAPITAL LETTER O WITH TILDE} +\endsetslot + +\setslot{Odieresis} + \Unicode{00D6}{LATIN CAPITAL LETTER O WITH DIAERESIS} +\endsetslot + +\setslot{OE} + \Unicode{0152}{LATIN CAPITAL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `OE'.} +\endsetslot + +\setslot{Oslash} + \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE} +\endsetslot + +\setslot{Ugrave} + \Unicode{00D9}{LATIN CAPITAL LETTER U WITH GRAVE} +\endsetslot + +\setslot{Uacute} + \Unicode{00DA}{LATIN CAPITAL LETTER U WITH ACUTE} +\endsetslot + +\setslot{Ucircumflex} + \Unicode{00DB}{LATIN CAPITAL LETTER U WITH CIRCUMFLEX} +\endsetslot + +\setslot{Udieresis} + \Unicode{00DC}{LATIN CAPITAL LETTER U WITH DIAERESIS} +\endsetslot + +\setslot{Yacute} + \Unicode{00DD}{LATIN CAPITAL LETTER Y WITH ACUTE} +\endsetslot + +\setslot{Thorn} + \Unicode{00DE}{LATIN CAPITAL LETTER THORN} +\endsetslot + +\setslot{SS} + \comment{This is an ``uppercased'' sharp s (`\ss') which always + looks exactly like two S's next to each other. In a monowidth + font it should be two letters wide. There are other characters + which could have made better use of this slot; the only function + of this slot which could not have been handled using macros is + that |\SS| and |SS| can have different hyphenation.} + \label{SS} + \charseq{ + \Unicode{0053}{LATIN CAPITAL LETTER S} + \Unicode{0053}{LATIN CAPITAL LETTER S} + } +\endsetslot + +\setslot{agrave} + \Unicode{00E0}{LATIN SMALL LETTER A WITH GRAVE} +\endsetslot + +\setslot{aacute} + \Unicode{00E1}{LATIN SMALL LETTER A WITH ACUTE} +\endsetslot + +\setslot{acircumflex} + \Unicode{00E2}{LATIN SMALL LETTER A WITH CIRCUMFLEX} +\endsetslot + +\setslot{atilde} + \Unicode{00E3}{LATIN SMALL LETTER A WITH TILDE} +\endsetslot + +\setslot{adieresis} + \Unicode{00E4}{LATIN SMALL LETTER A WITH DIAERESIS} +\endsetslot + +\setslot{aring} + \Unicode{00E5}{LATIN SMALL LETTER A WITH RING ABOVE} +\endsetslot + +\setslot{ae} + \Unicode{00E6}{LATIN SMALL LETTER AE} +\endsetslot + +\setslot{ccedilla} + \Unicode{00E7}{LATIN SMALL LETTER C WITH CEDILLA} +\endsetslot + +\setslot{egrave} + \Unicode{00E8}{LATIN SMALL LETTER E WITH GRAVE} +\endsetslot + +\setslot{eacute} + \Unicode{00E9}{LATIN SMALL LETTER E WITH ACUTE} +\endsetslot + +\setslot{ecircumflex} + \Unicode{00EA}{LATIN SMALL LETTER E WITH CIRCUMFLEX} +\endsetslot + +\setslot{edieresis} + \Unicode{00EB}{LATIN SMALL LETTER E WITH DIAERESIS} +\endsetslot + +\setslot{igrave} + \Unicode{00EC}{LATIN SMALL LETTER I WITH GRAVE} +\endsetslot + +\setslot{iacute} + \Unicode{00ED}{LATIN SMALL LETTER I WITH ACUTE} +\endsetslot + +\setslot{icircumflex} + \Unicode{00EE}{LATIN SMALL LETTER I WITH CIRCUMFLEX} +\endsetslot + +\setslot{idieresis} + \Unicode{00EF}{LATIN SMALL LETTER I WITH DIAERESIS} +\endsetslot + +\setslot{eth} + \Unicode{00F0}{LATIN SMALL LETTER ETH} + \label{eth} +\endsetslot + +\setslot{ntilde} + \Unicode{00F1}{LATIN SMALL LETTER N WITH TILDE} +\endsetslot + +\setslot{ograve} + \Unicode{00F2}{LATIN SMALL LETTER O WITH GRAVE} +\endsetslot + +\setslot{oacute} + \Unicode{00F3}{LATIN SMALL LETTER O WITH ACUTE} +\endsetslot + +\setslot{ocircumflex} + \Unicode{00F4}{LATIN SMALL LETTER O WITH CIRCUMFLEX} +\endsetslot + +\setslot{otilde} + \Unicode{00F5}{LATIN SMALL LETTER O WITH TILDE} +\endsetslot + +\setslot{odieresis} + \Unicode{00F6}{LATIN SMALL LETTER O WITH DIAERESIS} +\endsetslot + +\setslot{oe} + \Unicode{0153}{LATIN SMALL LIGATURE OE} + \comment{This is a single letter, and should not be faked with `oe'.} +\endsetslot + +\setslot{oslash} + \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE} +\endsetslot + +\setslot{ugrave} + \Unicode{00F9}{LATIN SMALL LETTER U WITH GRAVE} +\endsetslot + +\setslot{uacute} + \Unicode{00FA}{LATIN SMALL LETTER U WITH ACUTE} +\endsetslot + +\setslot{ucircumflex} + \Unicode{00FB}{LATIN SMALL LETTER U WITH CIRCUMFLEX} +\endsetslot + +\setslot{udieresis} + \Unicode{00FC}{LATIN SMALL LETTER U WITH DIAERESIS} +\endsetslot + +\setslot{yacute} + \Unicode{00FD}{LATIN SMALL LETTER Y WITH ACUTE} +\endsetslot + +\setslot{thorn} + \Unicode{00FE}{LATIN SMALL LETTER THORN} +\endsetslot + +\setslot{germandbls} + \Unicode{00DF}{LATIN SMALL LETTER SHARP S} +\endsetslot + + +\begincomment +\subsection{Accents} +The Unicode equivalents of the accents are taken to be the combining +forms of the accents found in code point \texttt{U+0300} and upwards. +The reasons for this are (i) that they are primarily used with the +|\accent| primitive, i.e., as combining characters, (ii) that some +of them (e.g. \texttt{tilde}) have non-combining counterparts +elsewhere in the encoding, and (iii) that they are not primarily +phonetic marks. +\endcomment + +\nextslot{0} +\setslot{grave} + \Unicode{0300}{COMBINING GRAVE ACCENT} +\endsetslot + +\setslot{acute} + \Unicode{0301}{COMBINING ACUTE ACCENT} +\endsetslot + +\setslot{circumflex} + \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT} +\endsetslot + +\setslot{tilde} + \Unicode{0303}{COMBINING TILDE} +\endsetslot + +\setslot{dieresis} + \Unicode{0308}{COMBINING DIAERESIS} +\endsetslot + +\setslot{hungarumlaut} + \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT} + \comment{The long Hungarian umlaut `\H{}'.} +\endsetslot + +\setslot{ring} + \Unicode{030A}{COMBINING RING ABOVE} +\endsetslot + +\setslot{caron} + \Unicode{030C}{COMBINING CARON} + \comment{The caron or h\'a\v cek accent `\v{}'.} +\endsetslot + +\setslot{breve} + \Unicode{0306}{COMBINING BREVE} +\endsetslot + +\setslot{macron} + \Unicode{0304}{COMBINING MACRON} +\endsetslot + +\setslot{dotaccent} + \Unicode{0307}{COMBINING DOT ABOVE} +\endsetslot + +\setslot{cedilla} + \Unicode{0327}{COMBINING CEDILLA} +\endsetslot + +\setslot{ogonek} + \Unicode{0328}{COMBINING OGONEK} +\endsetslot + + +\begincomment +\subsection{Digits} +\endcomment + +\nextslot{48} +\setslot{zero} + \Unicode{0030}{DIGIT ZERO} +\endsetslot + +\setslot{one} + \Unicode{0031}{DIGIT ONE} +\endsetslot + +\setslot{two} + \Unicode{0032}{DIGIT TWO} +\endsetslot + +\setslot{three} + \Unicode{0033}{DIGIT THREE} +\endsetslot + +\setslot{four} + \Unicode{0034}{DIGIT FOUR} +\endsetslot + +\setslot{five} + \Unicode{0035}{DIGIT FIVE} +\endsetslot + +\setslot{six} + \Unicode{0036}{DIGIT SIX} +\endsetslot + +\setslot{seven} + \Unicode{0037}{DIGIT SEVEN} +\endsetslot + +\setslot{eight} + \Unicode{0038}{DIGIT EIGHT} +\endsetslot + +\setslot{nine} + \Unicode{0039}{DIGIT NINE} +\endsetslot + + +\begincomment +\subsection{Symbols and punctuation} +\endcomment + +\nextslot{13} +\setslot{quotesinglbase} + \Unicode{201A}{SINGLE LOW-9 QUOTATION MARK} +\endsetslot + +\setslot{guilsinglleft} + \Unicode{2039}{SINGLE LEFT-POINTING ANGLE QUOTATION MARK} + \comment{In French typography this is an opening quotation mark, + but in German typography it is a closing quotation mark. The + character should kern well in both cases.} +\endsetslot + +\setslot{guilsinglright} + \Unicode{203A}{SINGLE RIGHT-POINTING ANGLE QUOTATION MARK} + \comment{In French typography this is a closing quotation mark, + but in German typography it is an opening quotation mark. The + character should kern well in both cases.} +\endsetslot + +\setslot{quotedblleft} + \Unicode{201C}{LEFT DOUBLE QUOTATION MARK} +\endsetslot + +\setslot{quotedblright} + \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK} + \comment{In English typography this quotation mark is always + closing, but in Swedish typography it is also an opening + quotation mark. The character should kern well in both cases.} +\endsetslot + +\setslot{quotedblbase} + \Unicode{201E}{DOUBLE LOW-9 QUOTATION MARK} +\endsetslot + +\setslot{guillemotleft} + \Unicode{00AB}{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK} + \comment{In French typography this is an opening quotation mark, + but in German typography it is a closing quotation mark. The + character should kern well in both cases. The glyph name is + misspelt (it should be \texttt{guillemetleft}), but this + incorrect name is \emph{de facto} the glyph name used.} +\endsetslot + +\setslot{guillemotright} + \Unicode{00BB}{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK} + \comment{In French typography this is a closing quotation mark, + but in German typography it is an opening quotation mark. The + character should kern well in both cases. The glyph name is + misspelt (it should be \texttt{guillemetright}), but this + incorrect name is \emph{de facto} the glyph name used.} +\endsetslot + +\setslot{endash} + \Unicode{2013}{EN DASH} + \label{endash} + \Ligature{LIG}{hyphen}{emdash} +\endsetslot + +\setslot{emdash} + \Unicode{2014}{EM DASH} + \comment{In a monowidth font this character is preferably given the + width of two normal characters.} +\endsetslot + +\nextslot{32} +\setslot{visiblespace} + \Unicode{2423}{OPEN BOX} + \comment{A visible space glyph `\textvisiblespace'.} +\endsetslot + +\setslot{exclam} + \Unicode{0021}{EXCLAMATION MARK} + \Ligature{LIG}{quoteleft}{exclamdown} +\endsetslot + +\setslot{quotedbl} + \Unicode{0022}{QUOTATION MARK} + \comment{The `neutral' double quotation mark, included for use in + monowidth fonts, or for setting computer programs.} +\endsetslot + +\setslot{numbersign} + \Unicode{0023}{NUMBER SIGN} +\endsetslot + +\setslot{dollar} + \Unicode{0024}{DOLLAR SIGN} +\endsetslot + +\setslot{percent} + \Unicode{0025}{PERCENT SIGN} +\endsetslot + +\setslot{ampersand} + \Unicode{0026}{AMPERSAND} +\endsetslot + +\setslot{quoteright} + \Unicode{2019}{RIGHT SINGLE QUOTATION MARK} + \Ligature{LIG}{quoteright}{quotedblright} +\endsetslot + +\setslot{parenleft} + \Unicode{0028}{LEFT PARENTHESIS} +\endsetslot + +\setslot{parenright} + \Unicode{0029}{RIGHT PARENTHESIS} +\endsetslot + +\setslot{asterisk} + \Unicode{002A}{ASTERISK} +\endsetslot + +\setslot{plus} + \Unicode{002B}{PLUS SIGN} +\endsetslot + +\setslot{comma} + \Unicode{002C}{COMMA} + \Ligature{LIG}{comma}{quotedblbase} +\endsetslot + +\setslot{hyphen} + \Unicode{002D}{HYPHEN-MINUS} + \Ligature{LIG}{hyphen}{endash} + \Ligature{LIG}{hyphenchar}{hyphenchar} + \comment{See also slot \ref{hyphenchar}.} + \label{hyphen} +\endsetslot + +\setslot{period} + \Unicode{002E}{FULL STOP} +\endsetslot + +\setslot{slash} + \Unicode{002F}{SOLIDUS} +\endsetslot + +\skipslots{10} +\setslot{colon} + \Unicode{003A}{COLON} +\endsetslot + +\setslot{semicolon} + \Unicode{003B}{SEMICOLON} +\endsetslot + +\setslot{less} + \Unicode{003C}{LESS-THAN SIGN} + \Ligature{LIG}{less}{guillemotleft} +\endsetslot + +\setslot{equal} + \Unicode{003D}{EQUALS SIGN} +\endsetslot + +\setslot{greater} + \Unicode{003E}{GREATER-THAN SIGN} + \Ligature{LIG}{greater}{guillemotright} +\endsetslot + +\setslot{question} + \Unicode{003F}{QUESTION MARK} + \Ligature{LIG}{quoteleft}{questiondown} +\endsetslot + +\setslot{at} + \Unicode{0040}{COMMERCIAL AT} +\endsetslot + +\nextslot{91} +\setslot{bracketleft} + \Unicode{005B}{LEFT SQUARE BRACKET} +\endsetslot + +\setslot{backslash} + \Unicode{005C}{REVERSE SOLIDUS} +\endsetslot + +\setslot{bracketright} + \Unicode{005D}{RIGHT SQUARE BRACKET} +\endsetslot + +\setslot{asciicircum} + \Unicode{005E}{CIRCUMFLEX ACCENT} + \comment{The ASCII upward-pointing arrow head `\textasciicircum'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\setslot{underscore} + \Unicode{005F}{LOW LINE} + \comment{The ASCII underline character `\textunderscore', usually + set on the baseline. This is included for compatibility with + typewriter fonts used for computer listings.} +\endsetslot + +\setslot{quoteleft} + \Unicode{2018}{LEFT SINGLE QUOTATION MARK} + \Ligature{LIG}{quoteleft}{quotedblleft} +\endsetslot + +\nextslot{123} +\setslot{braceleft} + \Unicode{007B}{LEFT CURLY BRACKET} +\endsetslot + +\setslot{bar} + \Unicode{007C}{VERTICAL LINE} + \comment{The ASCII vertical bar `\textbar'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\setslot{braceright} + \Unicode{007D}{RIGHT CURLY BRACKET} +\endsetslot + +\setslot{asciitilde} + \Unicode{007E}{TILDE} + \comment{The ASCII tilde `\textasciitilde'. + This is included for compatibility with typewriter fonts used + for computer listings.} +\endsetslot + +\nextslot{159} +\setslot{section} + \Unicode{00A7}{SECTION SIGN} +\endsetslot + +\nextslot{189} +\setslot{exclamdown} + \Unicode{00A1}{INVERTED EXCLAMATION MARK} +\endsetslot + +\setslot{questiondown} + \Unicode{00BF}{INVERTED QUESTION MARK} +\endsetslot + +\setslot{sterling} + \Unicode{00A3}{POUND SIGN} +\endsetslot + + + +\begincomment +\subsection{Miscellanea} +\endcomment + +\nextslot{23} +\setslot{compwordmark} + \Unicode{200C}{ZERO WIDTH NON-JOINER} + \comment{An invisible glyph, with zero width and depth, but the + height of lower case letters without ascenders. + It is used to stop ligaturing in words like `shelf{}ful'. + It is possible that this character should be considered a + letter (and that hyphenation patterns should be designed to + include it), but since its |\lccode| is 0, \TeX's hyphenation + mechanism considers it to be a nonletter which ends the + hyphenatable part of a word.} +\endsetslot + +\setslot{perthousandzero} + \comment{A glyph which is placed after `\%' to produce a + `per-thousand', or twice to produce `per-ten-thousand'. + Your guess is as good as mine as to what this glyph should look + like in a monowidth font. Since most fonts don't include this + glyph anyway, its use is discouraged.} +\endsetslot + +\nextslot{127} +\setslot{hyphenchar} + \label{hyphenchar} + \comment{This character is provided as a discretionary hyphen + symbol and may only appear at the end of a line, since it is often + hanging out of the character box, but apart from that it is almost + always the same as the \texttt{hyphen} character. Since \LaTeX\ + sets the |\hyphenchar| of \texttt{T1} fonts to slot \ref{hyphen} + rather than this slot, this feature is usually not used.} +\endsetslot + + + +\begincomment +\section{Usual characters} +The following characters are only accessed through ligatures and can +therefore be replaced by others or completely left out if the +ligature programs are modified accordingly. +\endcomment + + +\nextslot{27} +\setslot{ff} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + } + \comment{This glyph should be two characters wide in a monowidth + font.} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} +\endsetslot + +\setslot{fi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{fl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be two characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffi} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0069}{LATIN SMALL LETTER I} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\setslot{ffl} + \charseq{ + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{0066}{LATIN SMALL LETTER F} + \Unicode{006C}{LATIN SMALL LETTER L} + } + \comment{This glyph should be three characters wide in a monowidth + font.} +\endsetslot + +\nextslot{156} +\setslot{IJ} + \Unicode{0132}{LATIN CAPITAL LIGATURE IJ} + \comment{This is a single letter, and in a monowidth font should + ideally be one letter wide.} +\endsetslot + +\nextslot{188} +\setslot{ij} + \Unicode{0133}{LATIN SMALL LIGATURE IJ} + \comment{This is a single letter, and in a monowidth font should + ideally be one letter wide.} +\endsetslot + + +\begincomment +\section{Fontdimens} +\endcomment + +\setfontdimen{1}{italicslant} % italic slant +\setfontdimen{2}{interword} % interword space +\setfontdimen{3}{stretchword} % interword stretch +\setfontdimen{4}{shrinkword} % interword shrink +\setfontdimen{5}{xheight} % x-height +\setfontdimen{6}{quad} % quad +\setfontdimen{7}{extraspace} % extra space after . +\setfontdimen{8}{capheight} % cap height +\setfontdimen{9}{ascender} % ascender +\setfontdimen{10}{acccapheight} % accented cap height +\setfontdimen{11}{descender} % descender's depth +\setfontdimen{12}{maxheight} % max height +\setfontdimen{13}{maxdepth} % max depth +\setfontdimen{14}{digitwidth} % digit width +\setfontdimen{15}{verticalstem} % dominant width of verical stems +\setfontdimen{16}{baselineskip} % baselineskip + + +\begincomment +\section{Coding scheme} +\endcomment + +\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN} + + +\endencoding + + +\section{Discussion} + +As the \texttt{T1} encoding is an established standard, the discussion +of it has already been published elsewhere. [Unfortunately, I do not +know where as it all happened long before I started using \TeX. This +part of the document definitely needs to be improved. To begin with, I +would like to know if the TUGboat articles whose bibliography entries +appear in Figure~\ref{Bib-entries} are relevant for the matter. +\begin{figure*} +\small +\begin{verbatim} +@Article{Beebe:TB11-2-171, + author = "Nelson Beebe", + title = "{Character set encoding}", + journal = j-TUGboat, + volume = "11", + number = "2", + pages = "171--175", + month = jun, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +@Article{Bien:TB11-2-175, + author = "Janusz S. Bie{\'n}", + title = "{On standards for computer modern font extensions}", + journal = j-TUGboat, + volume = "11", + number = "2", + pages = "175--183", + month = jun, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +@Article{Ferguson:TB11-4-514, + author = "Michael Ferguson", + title = "{Report on multilingual activities}", + journal = j-TUGboat, + volume = "11", + number = "4", + pages = "514--516", + month = nov, + year = "1990", + ISSN = "0896-3207", + bibdate = "Fri Jun 4 18:08:09 MDT 1999", + bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib; + http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat", + acknowledgement = ack-bnb # " and " # ack-nhfb, +} +\end{verbatim} +\normalsize + +\caption{Entries in \texttt{tugboat.bib} which may describe papers +that contain (at least part of) the discussion regarding the +\texttt{T1} encoding} +\label{Bib-entries} +\end{figure*} +Actually reading them would be nice too, as would of course getting +the references for whatever other papers there might be that +constituted the discussion of the \texttt{T1} encoding. The file +\texttt{cork.enc} in the \textit{Fontname} standard makes a cryptic +reference to ``TTN 1(4), December 1992'', whatever that might be.] + +I can however answer questions on the more immediate matter of how the +interpretation of the established standard that this file expresses was +constructed. It is mainly the result of a comparison between the +file \texttt{t1.etx}~\cite{t1.etx}, the Unicode +standard~\cite{Unicode}, and the Adobe glyph list~\cite{AGL}. + +(Some concerns have been expressed about the fact that the glyph name +listed for slot~0 is `\texttt{grave}', although that glyph name in +\cite{AGL} corresponds to \textunicode{0060}{GRAVE ACCENT}, whereas +\textunicode{0300}{COMBINING GRAVE ACCENT} is listed as corresponding +to `\texttt{gravecomb}'. This is however formally irrelevant, since +the glyph names are formally only internal labels in the encoding +specification. `\texttt{gravecomb}' would furthermore be a more +impractical label, since most font contains a `\texttt{grave}' glyph +that is used as a combining accent but no `\texttt{gravecomb}' +glyph.) + + +\section{Changes} + +The changes made to this specification since the original 2001/06/19 +version are as follows. + +2001/09/01: Corrected some typos (reported by Vladimir Volovich). /LH + +2001/09/16: Added \cite{latin-page} to the bibliography. /LH + +2001/09/21: Removed comment on \textunicode{2012}{FIGURE DASH} from +slot~\ref{endash}. \cite[Sec.~6.1]{Unicode} makes quite clear that +it's not to be used for ranges. /LH + +2002/07/05: Added the Ferguson:TB11-4-514 and ``TTN~1(4)'' references +to the discussion section. Also added remark on \texttt{grave} versus +\texttt{gravecomb}. /LH + +2004/11/28: Changed the f-ligatures to character sequences, which +makes more sense for \texttt{CMap}s. Added equivalent for +slot~\ref{SS}. /LH + + +\begin{thebibliography}{9} +\bibitem{AGL} + Adobe Systems Incorporated: \textit{Adobe Glyph List}, 1998; + \textsc{http}:/\slash \texttt{partners.adobe.com}\slash + \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash + \texttt{glyphlist.txt} +\bibitem{latin-page} + Roman Czyborra: \textit{The ISO 8859 Alphabet Soup}, web page at + \textsc{http:}/\slash \texttt{czyborra.com}\slash + \texttt{charsets}\slash \texttt{iso8859.html}, 1998. +\bibitem{ISO8859-1} + International Organization for Standardization: + \textit{ISO/IEC standard 8859-1} (Information technology -- + 8-bit single-byte coded graphic character sets -- + Part 1: Latin alphabet No. 1). + See also~\cite{latin-page}. +\bibitem{t1.etx} + Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth: + \textit{The \TeX\ extended text encoding vector}, + version~1.801, 1998, + \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{fonts}\slash + \texttt{utilities}\slash \texttt{fontinst}\slash + \texttt{inputs}\slash \texttt{etx}\slash \texttt{t1.etx}. +\bibitem{TeXbook} + Donald E.\ Knuth, Duane Bibby (illustrations): + \textit{The \TeX book}, Ad\-di\-son--Wes\-ley, 1986; + ISBN~0-201-13447-0. +\bibitem{Unicode} + The Unicode Consortium (editor), \emph{et al.}: + \textit{The Unicode Standard, Version 3.0}, + Addison Wesley Longman Publisher, 2000; ISBN~0-201-61633-5. + Most of the information in this book is also available online at + the Unicode consortium website, at \textsc{http}:/\slash + \texttt{www.unicode.org}\slash \texttt{unicode}\slash + \texttt{uni2book}\slash \texttt{u2.html}. +\end{thebibliography} + + + +\end{document}
\ No newline at end of file |