\ProvidesPackage{stretch} [1998/04/18 experimental interface to experimental TeX^^J extensions -- DO NOT USE!!!!] \DeclareOption{T1}{% % All fd files for ec fonts use \EC@family, thus we have a convenient % hook to add a sixth argument to the \DeclareFontShape call. \newcommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% <17.28><20.74><24.88><29.86><35.83>genb*#5}% {\addvariants{\fontname\font}{970,980,990,1010,1020,1030}}} % Make sure that LaTeX rereads the preloaded `t1cmr.fd'. \begingroup \nfss@catcodes \input{t1cmr.fd} \endgroup }% \DeclareOption{T1} \ProcessOptions %% #1 is an external font name (including an `at' or `scaled' suffix) %% like `cmr10' or `ecrm1000 at 8.9999pt' %% #2 is a comma-separated list of extension factors multiplied by 1000 \def\enablestretch{\message{enabling\space font stretching...^^J}\hzstate=\@ne} \def\disablestretch{\message{disabling\space font stretching...^^J}\hzstate=\z@} % % This should be used in the sixth argument of \DeclareFontShape, eg %\DeclareFontFamily{OT1}{test}{} %\DeclareFontShape{OT1}{test}{m}{n} % {<10> [0.9]ecrm1000} % {\addvariants{\fontname\font}{970,980,990,1010,1020,1030}} \def\addvariants#1#2{\begingroup \hzstate=\@ne% otherwise \fontvariant would be illegal \expandafter\split@ext#1 \@@nil \message{adding\space variants\space for\space <\f@stem><\f@ext>...^^J}% \let\@tempb\@empty \@tfor\@tempa:=#2,\do{% \if,\@tempa \font\x=\f@stem\ifnum\@tempb<1000 w0\@tempb\else w\@tempb\fi\f@ext \fontvariant\font=\x \message{\fontname\x^^J}% \let\@tempb\@empty \else \edef\@tempc{\@tempb}% \edef\@tempb{\@tempc\@tempa}% \fi}% \endgroup} % Use like \split@ext\@@nil % This splits into a filename part and an `at' % or `scaled' part. The results are returned in \f@stem and \f@ext. \begingroup \catcode`\ =10 \gdef\split@ext#1 #2\@@nil{\def\f@stem{#1}\def\f@ext{ #2}} \endgroup