diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/plnfss/plnfss.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/plnfss/plnfss.tex | 403 |
1 files changed, 403 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/plnfss/plnfss.tex b/Master/texmf-dist/tex/plain/plnfss/plnfss.tex new file mode 100644 index 00000000000..08d4b07db94 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/plnfss.tex @@ -0,0 +1,403 @@ +% plnfss-1.1 + +% Copyright 2000-2005 Han The Thanh <HanTheThanh@gmx.net> +% and Michal Konecny <mik@konecny.aow.cz> +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +% plnfss.tex - simple NFSS macros for plain TeX + + +\catcode`\@=11 \endlinechar=-1 % + +% general purpose accumulators and shortcuts +\newdimen\dimenA +\newcount\countA +\let\ex=\expandafter + +% how to set \baselineskip (and \strutbox) when switching to another font +\newif\ifupdatebaselineskip % update \baselineskip (and \strutbox) at all? +\updatebaselineskiptrue % do so by default +\def\baselineskipscale{1.2} % the factor \baselineskip : \@fontsize +\def\setbaselineskip{ + \baselineskip=\@fontsize + \baselineskip=\baselineskipscale\baselineskip + \setbox\strutbox=\hbox{\vrule + height .7\baselineskip depth .3\baselineskip width \z@} +} + +\newdimen\@fontsize +\def\setfontencoding#1{\if^^A#1^^A\else\edef\@fontencoding{#1}\fi} +\def\setfontfamily#1{\if^^A#1^^A\else\edef\@fontfamily{#1}\fi} +\def\setfontseries#1{\if^^A#1^^A\else\edef\@fontseries{#1}\fi} +\def\setfontshape#1{\if^^A#1^^A\else\edef\@fontshape{#1}\fi} +\def\setfontsize#1{\if^^A#1^^A\else\@fontsize=#1\fi} + + +\def\addfontsize#1{ + \add\@fontsize #1 + \selectfont +} + +\def\mulfontsize#1{ + \@fontsize=#1\@fontsize + \selectfont +} + +\def\setfont#1/#2/#3/#4/#5/{ + \setfontencoding{#1} + \setfontfamily{#2} + \setfontseries{#3} + \setfontshape{#4} + \setfontsize{#5} + \selectfont +} + +\def\usefont#1#2#3#4{ + \setfontencoding{#1} + \setfontfamily{#2} + \setfontseries{#3} + \setfontshape{#4} + \selectfont +} + +\def\excs#1#2{ + \ex#1\csname#2\endcsname +} + +\def\getsizelist #1(#2){ + \def\fontname{#1} + \def\sizelist{#2,END,} +} + +\def\endsizelist{END} +\def\finish#1END,{} + +\def\selectfontsize#1,{ + \def\cursize{#1} + \ifx\cursize\empty + \def\selectedsize{} + \let\next \finish + \else\ifx\cursize\endsizelist + \edef\selectedsize{\lastsize} + \let\next \relax + \else\ifdim\@fontsize > \cursize\p@ + \edef\lastsize{\cursize} + \let\next \selectfontsize + \else\ifx\lastsize\empty + \edef\selectedsize{\cursize} + \let\next \finish + \else + \dimenA=\@fontsize + \advance \dimenA \dimenA + \advance \dimenA -\cursize\p@ + \advance \dimenA -\lastsize\p@ + \relax + \ifdim\dimenA < \z@ + \edef\selectedsize{\lastsize} + \else + \edef\selectedsize{\cursize} + \fi + \let\next \finish + \fi\fi\fi\fi + \next +} + +\def\loadfontdecl{ + \excs\ifx\fontdecl\relax + \testprefix{cm}{\@fontfamily} + \ifisprefix \loadfd{cm}{pfd}\fi + \fi + \excs\ifx\fontdecl\relax + \testprefix{lm}{\@fontfamily} + \ifisprefix \loadfd{lm}{pfd}\fi + \fi + \excs\ifx\fontdecl\relax + \loadfd{\@fontfamily}{fd} + \fi +} + +\let\plaininput=\input +\let\plainlowercase=\lowercase + +\newread\testfd +\def\loadfd#1#2{ + \let\next=\relax + \edef\inputfd{\plainlowercase{\noexpand\openin\testfd=\@fontencoding#1.#2 }}\inputfd + \ifeof\testfd + \log{PLNFSS: cannot find font definition file for % + family \@fontencoding/#1} + \else + \closein\testfd + \edef\next{\plainlowercase{\noexpand\plaininput \@fontencoding#1.#2 }} + \fi +%% Temporarily set \endlinechar=-1 to prevent spurious spaces. +%% Fix provided by Hartmut Henkel. + \endlinechar=-1 + \next + \endlinechar=13 +} + +\def\selectfont{ + \edef\fontdecl{ + \@fontencoding/\@fontfamily/\@fontseries/\@fontshape + } + \edef\selectedfont{ + \fontdecl/\the\@fontsize/ + } + \excs\ifx\selectedfont\relax + \loadfontdecl + \excs\ifx\fontdecl\relax + \errmessage{Font \fontdecl\space not defined, restore the last font \lastfont} + \ex\setfont\lastfont\relax + \else + \edef\fontdef{\csname\fontdecl\endcsname} + \ex\getsizelist\fontdef + \def\lastsize{} + \ex\selectfontsize\sizelist + \global\ex\font\csname\selectedfont\endcsname + \fontname\selectedsize\space at \@fontsize + \edef\lastfont{\selectedfont} + \csname\selectedfont\endcsname + \ifupdatebaselineskip \setbaselineskip \fi + \relax + \fi + \else + \csname\selectedfont\endcsname + \ifupdatebaselineskip \setbaselineskip \fi + \relax + \fi +} + +\def\getcurfont{\csname\selectedfont\endcsname} + +\newcount\tracingplnfss + +\def\DeclareFont#1#2{ + \ex\gdef\csname#1\endcsname{#2} + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been defined as #2} + \fi +} + +\def\SubstFont#1#2{ + \ex\ifx\csname#1\endcsname\relax + \global\ex\let\csname#1\ex\endcsname \csname#2\endcsname + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been substituted by #2} + \fi + \else + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been already defined, substitution ignored} + \fi + \fi +} + +\def\setrmdefault#1{\edef\rmdefault{#1}} +\def\setsfdefault#1{\edef\sfdefault{#1}} +\def\setttdefault#1{\edef\ttdefault{#1}} + +%% LaTeX PSNFSS support +\def\typeout{\immediate\write17} +\def\@makeother#1{\catcode`#1=12\relax} +\long\def\ProvidesFile#1{ + \begingroup + \endlinechar=-1 % + \catcode`\ 10 % + \@makeother\/% + \@makeother\&% + \checkoptarg +} +\def\checkoptarg#1{ + \global\let\curarg=#1 + \ifx [\curarg + \let\next=\ignoreoptarg + \else + \let\next=\nooptarg + \fi + \next +} +\def\ignoreoptarg#1]{\endgroup} +\def\nooptarg{\endgroup\curarg} +\def\DeclareFontFamily#1#2#3{} +\def\@ifundefined#1#2#3{#2} + +\ex\newcount\csname c:0\endcsname +\ex\newcount\csname c:1\endcsname +\ex\newcount\csname c:2\endcsname +\ex\newcount\csname c:3\endcsname +\ex\newcount\csname c:4\endcsname +\ex\newcount\csname c:5\endcsname +\ex\newcount\csname c:6\endcsname +\ex\newcount\csname c:7\endcsname +\ex\newcount\csname c:8\endcsname +\ex\newcount\csname c:9\endcsname +\chardef\maxprefixlength=10 + +\newif\ifisprefix +\newcount\charindex +\newcount\prefixlength + +\def\stripspaces #1{ + \if #1^^A + \let\next=\relax + \else + \let\next=\stripspaces + \edef\curparam{\curparam#1} + \fi + \next +} + +\def\readprefix#1{ + \if #1^^A + \let\next=\relax + \prefixlength=\charindex + \else + \let\next=\readprefix + \ex\csname c:\the\charindex \endcsname=`#1\relax + \advance\charindex 1\relax + \ifnum \charindex>\maxprefixlength + \errmessage{Prefix too long, try to increase `maxprefixlength'} + \let\next=\skipremain + \fi + \fi + \next +} + +\def\skipremain#1^^A{} +\def\storeremain#1^^A{\def\remain{#1}} + +\def\cmpprefix#1{ + \if #1^^A + \let\next=\relax + \else + \countA=`#1\relax + \ifnum \countA=\csname c:\the\charindex \endcsname + \advance\charindex 1\relax + \ifnum \charindex=\prefixlength + \isprefixtrue + \let\next=\storeremain + \else + \let\next=\cmpprefix + \fi + \else + \let\next=\skipremain + \isprefixfalse + \fi + \fi + \next +} + +\def\testprefix#1#2{ + \charindex=0 \ex\readprefix#1^^A + \charindex=0 \isprefixfalse \ex\cmpprefix#2^^A +} + +\newcount\fontresult % 0. cannot handle; 1. substituted; 2. TFM available + +\def\DeclareFontShape#1#2#3#4#5#6{ + \let\curparam=\empty + \let\next=\relax + \stripspaces #5^^A + \fontresult=-1\relax + \testprefix{<->sub*}{\curparam} + \ifisprefix \fontresult=1 \fi + \ifnum \fontresult<0 + \testprefix{<->ssub*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->subf*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->ssubf*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->fixed*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->sfixed*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->s*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->}{\curparam} + \ifisprefix \fontresult=2 \fi + \fi + \ifnum \fontresult=2 % TFM available + \def\fontshape{#1/#2/#3/#4^^A} + \edef\fontdef{\remain()^^A} + \ex\ex\ex\LaTeXDeclareFont \ex\fontshape \fontdef + \else \ifnum \fontresult=1 % substituted + \def\fontshape{#1/#2/#3/#4^^A} + \edef\fontdef{#1/\remain^^A} + \ex\ex\ex\LaTeXSubstFont \ex\fontshape \fontdef + \else % \fontresult <= 0 + \errmessage{PLNFSS cannot handle form `\curparam' of font declaration} + \fi \fi +} + +\def\LaTeXDeclareFont#1^^A#2^^A{\DeclareFont{#1}{#2}} +\def\LaTeXSubstFont#1^^A#2^^A{\SubstFont{#1}{#2}} + +\newlinechar`^^J +\def\log#1{\immediate \write 16 {^^J#1}} + +%% NFSS high-level commands + +\def\rmfamily{\setfontfamily{\rmdefault}\selectfont} +\def\sffamily{\setfontfamily{\sfdefault}\selectfont} +\def\ttfamily{\setfontfamily{\ttdefault}\selectfont} +\def\mdseries{\setfontseries{m}\selectfont} +\def\bfseries{\setfontseries{b}\selectfont} +\def\upshape{\setfontshape{ui}\selectfont} +\def\itshape{\setfontshape{it}\selectfont} +\def\slshape{\setfontshape{sl}\selectfont} +\def\scshape{\setfontshape{sc}\selectfont} +\def\normalfont{\setfontseries{m}\setfontshape{n}\selectfont} + +\def\textrm#1{{\rmfamily #1}} +\def\textsf#1{{\sffamily #1}} +\def\texttt#1{{\ttfamily #1}} +\def\textmd#1{{\mdseries #1}} +\def\textbf#1{{\bfseries #1}} +\def\textup#1{{\upshape #1}} +\def\textit#1{{\itshape #1\/}} +\def\textsl#1{{\slshape #1\/}} +\def\textsc#1{{\scshape #1}} + +\let\rm=\rmfamily +\let\sf=\sffamily +\let\tt=\ttfamily +\let\md=\mdseries +\let\bf=\bfseries +\let\up=\upshape +\let\it=\itshape +\let\sl=\slshape +\let\sc=\scshape + +%% Default settings + +\setfontencoding{OT1} +\setfontfamily{cmr} +\setfontseries{m} +\setfontshape{n} +\setfontsize{10pt} +\setrmdefault{cmr} +\setttdefault{cmtt} +\setsfdefault{cmss} +\edef\lastfont{ + \@fontencoding/ + \@fontfamily/ + \@fontseries/ + \@fontshape/ + \the\@fontsize/ +} + +\catcode`\@=12 \endlinechar=13 % |