%% %% This is file `xfntinst.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% fibasics.dtx (with options: `pkg') %% ficommon.dtx (with options: `pkg') %% fimain.dtx (with options: `pkg') %% fitrig.dtx (with options: `pkg') %% ficonv.dtx (with options: `pkg') %% filtfam.dtx (with options: `pkg,textcomp,debug,oldstyle') %% fimapgen.dtx (with options: `pkg') %% fibasics.dtx (with options: `pkg2') %% %% This is a generated file. %% %% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, %% hacked and maintained 1997, 1998 Sebastian Rahtz, %% copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 the fontinst %% maintenance team and any individual authors listed elsewhere in %% this file. All rights reserved. %% %% This file is part of the fontinst system version 1.9. %% ----------------------------------------------------- %% %% It may be distributed under the terms of the LaTeX Project Public %% License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.1 or, at your option, any later version. %% %%% From file: fibasics.dtx \catcode`\{=1 \catcode`\}=2 \catcode`\#=6 \catcode`\^=7 \def\fontinstversion{1.933} \ifx\ProvidesPackage\undefined \def\NeedsTeXFormat#1{} \def\ProvidesPackage#1[#2]{} \fi \ProvidesPackage{fontinst} [2007/01/23 v\fontinstversion\space fontinst installation package] \def\a_macro#1{\catcode\number`#1=\the\catcode`#1 } \edef\normalcc{% \a_macro{\ }\a_macro{\^^M}\a_macro{\@}\a_macro{\_}\a_macro{\~} } \def\fontinstcc{% \catcode`\ =9% \catcode`\^^M=9% \catcode`\@=11% \catcode`\_=11% \catcode`\~=10 } \fontinstcc \ifx\@ne\undefined_command \input fontinst.ini\relax \fi \ifx\bye\undefined_command \def\supereject{\par\penalty-\@MM} \outer\expandafter\def \csname bye\endcsname {\par\vfill\supereject\@@end} \fi \newcount\a_count \newcount\b_count \newcount\c_count \newcount\d_count \newcount\e_count \newcount\f_count \newcount\g_count \newdimen\a_dimen \newdimen\b_dimen \newdimen\c_dimen \newdimen\d_dimen \newtoks\a_toks \newtoks\b_toks \newtoks\c_toks \newif\if_a_ \newwrite\out_file \mathchardef\one_thousand=1000 \mathchardef\five_hundred=500 \mathchardef\one_hundred=100 \mathchardef\max_mathchardef="7FFF \mathchardef\two_thousand=2000 \newdimen\half_point \half_point=0.5pt \def\x_cs#1#2{\expandafter#1\csname#2\endcsname} \let\x_relax=\relax \def\g_let{\global\let} \def\empty_command{} \def\gobble_one#1{} \def\gobble_two#1#2{} \def\gobble_three#1#2#3{} \def\identity_one#1{#1} \def\first_of_two#1#2{#1} \def\second_of_two#1#2{#2} \def\swap_two#1#2{#2#1} \def\first_of_three#1#2#3{#1} \bgroup \catcode`\[=1 \catcode`\]=2 \catcode`\#=12 \catcode`\%=12 \catcode`\{=12 \catcode`\}=12 \gdef\hash_char[#] \gdef\percent_char[%] \gdef\left_brace_char[{] \gdef\right_brace_char[}] \egroup \def\first_char#1#2={#1} \def\add_to#1#2{ \ifx#1\x_relax \def#1{#2} \else \expandafter\def\expandafter#1\expandafter{#1#2} \fi } \def\prep_to#1#2{ \ifx#1\x_relax \expandafter\def\expandafter#1\expandafter{\expandafter#2} \else \expandafter\def\expandafter#1\expandafter{\expandafter#2#1} \fi } \def\never_do{\noexpand\do} \newif\if_extensions_warning_ \_extensions_warning_false \ifx \eTeXversion\undefined_command \catcode`\~=14 % 14=comment \fi \def\eTeX#1{ \if_extensions_warning_ \space/\space e-TeX\space version\space #1 ~ \else ~ \ifdim \number\eTeXversion\eTeXrevision\p@ < #1\p@ \else ~ \_a_true ~ \fi \fi } \catcode`\~=10 \ifx \pdftexversion\undefined_command \catcode`\~=14 % 14=comment \fi \def\pdfTeX#1#2{% \if_extensions_warning_ \space/\space pdfTeX\space version\space \ifnum #1<100\space 0.\ifnum #1<10\space 0\fi \else \expandafter\swap_two \expandafter. \fi #1#2% ~ \else ~ \ifdim #1>\pdftexversion \else ~ \ifnum \expandafter\expandafter \expandafter` ~ \expandafter\first_char \pdftexrevision= < ~ \expandafter` \first_char#2= ~ \else \_a_true \fi ~ \fi \fi } \catcode`\~=10 \def\needsTeXextension#1#2{ \_a_false #1 \if_a_ \else \_extensions_warning_true \edef\a_macro{#1} \_extensions_warning_false \fontinstwarningnoline{#2}{ This~file~needs:\messagebreak \expandafter\second_of_two\a_macro \iffalse \if_false \fi \messagebreak You~are~not~using~any~of~them.~This~is~likely~to~cause~errors } \fi } \def\open_out#1{ \immediate\openout\out_file=#1 \xdef\out_filename{#1}} \def\close_out#1{ \immediate\write16{#1~written~on~\out_filename.} \immediate\closeout\out_file} \def\out_line#1{\immediate\write\out_file{#1}} \edef\out_lline#1{\noexpand\out_line{\space\space\space#1}} \edef\out_llline#1{ \noexpand\out_line{\space\space\space\space\space\space#1} } \def\TeX_terminal{\string\TeX\space terminal} \chardef\closed_stream=99 \x_cs\let{out_filename-99}=\TeX_terminal \x_cs\def{out_filename--1}{\jobname.log} \def\allocate_stream{ \a_count=\m@ne \b_count=\m@ne \loop \ifnum \count17>\a_count \advance \a_count \@ne \x_cs\ifx{out_filename-\the\a_count}\TeX_terminal \b_count=\a_count \a_count=\count17 \fi \repeat \ifnum \b_count=\m@ne \global\advance\count17by\@ne \ifnum \count17<\sixt@@n \b_count=\count17 \global\x_cs\let{out_filename-\the\b_count}\TeX_terminal \wlog{\string\write\the\b_count\space allocated~to~the~pool.} \else \global\count17=\sixt@@n \fi \fi } \def\ch@ck#1#2#3{ \ifnum \count1#1<#2 \else \errmessage{No~room~for~a~new~#3} \global\count1#1=#2 \fi } \def\open_pout#1#2{ \allocate_stream \ifnum \b_count=\m@ne \immediate\write\sixt@@n{fontinst~is~out~of~output~streams.^^J Output~file~#2~cannot~be~opened.^^J Writes~will~be~redirected~to~the~log~file. } \gdef#1{\m@ne} \else \immediate\openout\b_count=#2\x_relax \x_cs\xdef{out_filename-\the\b_count}{#2} \global\chardef#1=\b_count \fi } \def\close_pout#1#2{ \ifnum #1=\closed_stream \errmessage{Output~file~\string#1~(#2)~not~closed,^^J since~it~was~not~open} \else \immediate\write\sixt@@n{#2~written~on~ \csname out_filename-\the#1\endcsname.} \ifnum #1=\m@ne \else \immediate\closeout#1 \global\x_cs\let{out_filename-\the#1}=\TeX_terminal \fi \global\chardef#1=\closed_stream \fi } \def\pout_line#1#2{\immediate\write#1{#2}} \edef\pout_lline#1#2{\noexpand\pout_line#1{\space\space\space#2}} \edef\pout_llline#1#2{ \noexpand\pout_line#1{\space\space\space\space\space\space#2} } \def\tempfileprefix#1{\def\temp_prefix{#1}} \tempfileprefix{} \let\then=\iffalse \def\if_false{\iffalse} \def\if_true{\iftrue} \_a_false\eTeX{2.0} \if_a_\else \catcode`\~=14\x_relax \fi ~ \def\if_defined#1\then{ ~ \if ~ \ifcsname#1\endcsname ~ \expandafter\ifx \csname#1\endcsname \x_relax ~ 0 ~ \else ~ 1 ~ \fi ~ \else ~ 0 ~ \fi ~ 1 ~ } ~ \def\if_undefined{\expandafter\unless\if_defined} \catcode`\~=\if_a_ 14 \else 10 \fi \x_relax ~ \def\if_defined#1\then{ ~ \expandafter\ifx \csname#1\endcsname\x_relax ~ \expandafter\if_false ~ \else ~ \expandafter\if_true ~ \fi ~ } ~ \def\if_undefined#1\then{ ~ \expandafter\ifx \csname#1\endcsname\x_relax ~ } \catcode`\~=10\x_relax \def\gobble_if{\iftrue\else} \def\if_or#1\or_else#2\then{ #1\then \expandafter\if_true \else #2\then \expandafter\expandafter\expandafter\if_true \else \expandafter\expandafter\expandafter\if_false \fi \fi } \def\if_equal#1\then{\ifx#1} \def\if_file_exists#1\then{ \immediate\openin1=#1\x_relax \ifeof1\x_relax \immediate\closein1 \expandafter\if_false \else \immediate\closein1 \expandafter\if_true \fi } \let\Else=\else \let\Fi=\fi \x_cs\ifx{@@input}\x_relax \let\primitiveinput=\input \else \let\primitiveinput=\@@input \fi \def\process_csep_list#1#2,{ \ifx\process_csep_list#2 \expandafter\gobble_one \else \expandafter\identity_one \fi{ #1{#2} \process_csep_list{#1} } } \def\make_factor#1{ \ifnum #1<\z@ -\expandafter\make_factor_i\expandafter{\number-#1} \else \expandafter\make_factor_i\expandafter{\number#1} \fi } \def\make_factor_i#1{ \ifnum #1<\one_thousand \make_factor_ii{#1} \else \make_factor_iii #1 \fi #1 } \def\make_factor_ii#1{ 0. \ifnum #1<\one_hundred 0 \ifnum #1<10~ 0\fi \fi } \def\make_factor_iii#1#2#3\fi#4{ \fi #4 \ifnum 1#3<\one_thousand . \else \make_factor_iii#2#3 \fi } { \catcode`\p=12 \catcode`\t=12 \gdef\lose_measure#1pt{#1} } \def\format_hex_i#1#2{ \if #2i \else \b_count=\a_count \divide \a_count \sixt@@n \c_count=\a_count \multiply \c_count \sixt@@n \advance \b_count -\c_count \edef#1{ \ifcase\b_count 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or a\or b\or c\or d\or e\or f\fi #1 } \expandafter\format_hex_i \expandafter#1 \fi } \def\format_hex#1#2#3{ \a_count=#2 \let#1\empty_command \expandafter\format_hex_i \expandafter#1 \romannumeral \expandafter\identity_one\expandafter{\number#3}001~ } \let\messagebreak\x_relax \def\generic_info#1#2{ \begingroup \def\messagebreak{^^J#1} \immediate\write\m@ne{#2\on_line.} \endgroup } \def\generic_warning#1#2{ \begingroup \def\messagebreak{^^J#1} \immediate\write\closed_stream{^^J#2\on_line.^^J} \endgroup } \def\generic_error#1#2#3#4{ \begingroup \immediate\write\closed_stream{} \def\messagebreak{^^J} \edef\a_macro{{#4}} \errhelp\a_macro \def\messagebreak{^^J#1} \errmessage{#2.^^J^^J#3 Type~\space H~~\space for~immediate~help } \endgroup } \def\fontinsterror#1#2#3{ \generic_error{ \four_spaces\four_spaces }{ #1~error:\messagebreak #2 }{ }{#3} } \def\fontinstwarning#1#2{ \generic_warning{ \four_spaces\four_spaces }{ #1~warning:\messagebreak #2 } } \def\fontinstwarningnoline#1#2{ \fontinstwarning{#1}{#2\gobble_one} } \def\fontinstinfo#1#2{ \generic_info{ \four_spaces\four_spaces }{ #1~info:\messagebreak #2 } } \def\on_line{~on~input~line~\the\inputlineno} \edef\four_spaces{\space\space\space\space} \gdef\error_help_a{ Your~command~was~ignored.\messagebreak Type~\space I~~~\space to~replace~it~ with~another~command,\messagebreak or~\space ~\space to~continue~without~it.} \gdef\error_help_c{ Try~typing~\space ~ \space to~proceed.\messagebreak If~that~doesn't~work,~type~\space X~~\space to~quit.} \gdef\error_help_d{ You're~in~trouble~here.~\space\error_help_c} \def\error_help_e#1{You~can~continue,~but~the~#1~wrong.} \newlinechar=`\^^J \errorcontextlines=999 \tracinglostchars=1 %%% From file: ficommon.dtx \def\str#1{\csname~s-#1\endcsname} \def\strint#1{\expandafter\identity_one\expandafter{\number\int{#1}}} \newcount\result \def\eval_expr#1{\global\result=#1\x_relax} \def\eval_expr_to#1#2{\eval_expr{#2}#1=\result} \def\g_eval_expr_to#1#2{\eval_expr{#2}\global#1=\result} \def\add#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \global\advance \result \a_count \egroup } \def\sub#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \advance \a_count -\result \global\result=\a_count \egroup } \def\int#1{\csname i-#1 \endcsname} \def\neg#1{#1 \global\result=-\result} \def\mul#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \global\multiply \result \a_count \egroup } \def\div#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \divide \a_count \result \global\result=\a_count \egroup } \def\max#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \ifnum \a_count>\result \global\result=\a_count \fi \egroup } \def\min#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \ifnum \a_count<\result \global\result=\a_count \fi \egroup } \def\half#1{ #1\x_relax \ifodd\result \global\advance \result \@ne \global\divide \result \tw@ \ifodd\result \global\advance \result \m@ne \fi \else \global\divide \result \tw@ \fi } \def\otherhalf#1{ #1\x_relax \ifodd\result \global\advance \result \@ne \global\divide \result \tw@ \ifodd\result \else \global\advance \result \m@ne \fi \else \global\divide \result \tw@ \fi } \def\scale#1#2{ #1 \bgroup \a_count=\result \eval_expr{#2} \global\multiply \result \a_count \rounded_thousandths \egroup } \def\rounded_thousandths{ \global\divide \result \five_hundred \ifodd \result \global\advance \result by \ifnum 0>\result - \fi 1 \fi \global\divide \result \tw@ } \def\l_rounded_thousandths#1{ \divide #1 \five_hundred \ifodd #1 \advance #1 by \ifnum 0>#1 - \fi\@ne \fi \divide #1 \tw@ } \def\l_inv_scale#1#2{ \multiply #1 \two_thousand \divide #1 #2\x_relax \ifodd#1 \advance #1 \ifnum 0>#1 - \fi\@ne \fi \divide #1 \tw@ } \def\ifnumber#1#2#3\then{ \eval_expr_to\a_count{#1} \eval_expr{#3} \ifnum \a_count#2\result \expandafter\if_true \else \expandafter\if_false \fi } \let\setsomething_global=\x_relax \def\x_setint#1#2{ \x_cs\ifx{i-#1}\x_relax \x_resetint{#1}{#2} \fi } \let\setint=\x_setint \def\x_setstr#1#2{ \x_cs\ifx{s-#1}\x_relax \setsomething_global\x_cs\edef{s-#1}{#2} \fi } \let\setstr=\x_setstr \def\setdim#1#2{ \x_cs\ifx{d-#1}\x_relax \a_dimen=#2\x_relax \setsomething_global\x_cs\edef{d-#1}{\the\a_dimen} \fi } \def\setcommand#1{ \ifx#1\undefined_command \setsomething_global \expandafter\def \expandafter#1 \else \expandafter\def \expandafter\a_macro \fi } \def\x_resetint#1#2{ \eval_expr{#2} \setsomething_global \ifnum\result<\max_mathchardef \ifnum 0>\result \x_cs\edef{i-#1}{\the\result} \else \x_cs\mathchardef{i-#1}=\result \fi \else \x_cs\edef{i-#1}{\the\result} \fi } \let\resetint=\x_resetint \def\resetstr#1#2{\setsomething_global\x_cs\edef{s-#1}{#2}} \def\resetdim#1#2{ \a_dimen=#2 \setsomething_global\x_cs\edef{d-#1}{\the\a_dimen} } \def\resetcommand#1{\setsomething_global\def#1} \def\dim#1{\csname~d-#1\endcsname} \def\ifisint#1\then{\if_defined i-#1\then} \def\ifisstr#1\then{\if_defined s-#1\then} \def\ifisdim#1\then{\if_defined d-#1\then} \def\ifiscommand#1\then{ \ifx#1\undefined_command \expandafter\if_false \else \expandafter\if_true \fi } \def\unsetint#1{\setsomething_global\x_cs\let{i-#1}\x_relax} \def\unsetstr#1{\setsomething_global\x_cs\let{s-#1}\x_relax} \def\unsetdim#1{\setsomething_global\x_cs\let{d-#1}\x_relax} \def\unsetcommand#1{\setsomething_global\let#1=\undefined_command} \def\offcommand#1{ \x_cs\ifx{saved-\string#1}\x_relax \setsomething_global\x_cs\let{saved-\string#1}#1 \x_cs\ifx{off-\string#1}\x_relax \generate_off_command{#1} \else \setsomething_global \expandafter\let \expandafter#1 \csname off-\string#1\endcsname \fi \fi } \def\oncommand#1{ \x_cs\ifx{saved-\string#1}\x_relax \else \setsomething_global \expandafter\let \expandafter#1 \csname saved-\string#1\endcsname \setsomething_global\x_cs\let{saved-\string#1}\x_relax \fi } \def\generate_off_command#1{ \a_count=0 \let\next=\count_hashes \expandafter\next\meaning#1~->\x_relax \b_count=0 \a_toks={} \loop \ifnum \b_count<\a_count \advance \b_count 1 \a_toks=\expandafter{\the\expandafter\a_toks \expandafter#### \the\b_count} \repeat \setsomething_global \expandafter\def \expandafter#1 \the\a_toks {} } \def\count_hashes#1#2{ \if \hash_char#1 \advance \a_count 1 \else \if -#1 \if >#2 \let\next=\gobble_to_xrelax \fi\fi \fi \next#2 } \def\gobble_to_xrelax#1\x_relax{} \def\for(#1)#2#3#4{ \eval_expr_to\a_count{#2} \x_resetint{#1}{\a_count} \eval_expr{#4} \ifnum 0=\result \else \c_count=\result \eval_expr_to\b_count{#3} \setsomething_global\x_cs\edef{for-#1}{ \the\c_count \x_relax \noexpand\ifnum \gobble_one\fi \the\b_count \ifnum 0>\c_count > \else < \fi } \def\next##1##2##3\endfor(#1){##2\for_i{##1}{##3}} \next{#1} \fi } \def\for_i#1#2{ \setsomething_global\x_cs\def{body-#1}{#2} \ifnum \b_count \ifnum0>\c_count >\else<\fi \a_count \expandafter\gobble_two \else \csname body-#1 \expandafter\endcsname \fi \for_ii{#1} } \def\for_ii#1{ \a_count=\int{#1} \advance \a_count \csname for-#1\endcsname \a_count \expandafter\gobble_two \else \x_resetint{#1}\a_count \csname body-#1 \expandafter\endcsname \fi \for_ii{#1} } \def\endfor(#1){} \def\foreach(#1)#2{ \def\next##1\endfor(#1){ \setsomething_global\x_cs\def{body-#1}{##1} \process_csep_list{\foreach_i{#1}}#2,\process_csep_list, } \next } \def\foreach_i#1#2{ \resetstr{#1}{#2} \csname body-#1\endcsname } \let\comment=\gobble_one \let\begincomment=\iffalse \let\endcomment=\fi %%% From file: fimain.dtx \def\inputetx#1{ \edef\lowercase_file{\lowercase{ \edef\noexpand\lowercase_file{#1}}} \lowercase_file \slot_number=0 \def\relax{\let\relax=\x_relax\iffalse} \let\encoding=\fi \primitiveinput \lowercase_file.etx\x_relax \let\relax=\x_relax } \let\encoding=\relax \outer\def\endencoding{\endinput} \def\setslot#1{\edef\slot_name{#1}\do_slot} \def\endsetslot{\end_do_slot\advance\slot_number by 1\x_relax} \let\do_slot\empty_command \let\end_do_slot\empty_command \newcount\slot_number \def\nextslot#1{\eval_expr_to\slot_number{#1}} \def\skipslots#1{\eval_expr{#1} \advance\slot_number by \result} \def\setleftboundary#1{\edef\slot_name{#1}\do_boundary} \let\endsetleftboundary\x_relax \let\do_boundary\x_relax \def\setrightboundary#1{ \makerightboundary{#1} \advance \slot_number 1\x_relax } \let\ligature=\gobble_three \def\Ligature{\ligature} \def\oddligature#1#2#3#4{} \let\nextlarger=\gobble_one \let\usedas=\gobble_two \let\makerightboundary=\gobble_one \let\Unicode=\gobble_two \let\charseq=\gobble_one \let\varchar=\empty_command \let\vartop=\gobble_one \let\varmid=\gobble_one \let\varbot=\gobble_one \let\varrep=\gobble_one \let\endvarchar=\empty_command \let\useexamplefont=\gobble_one \let\slotexample=\empty_command \let\setslotcomment=\gobble_one \let\resetslotcomment=\gobble_one \let\unsetslotcomment=\empty_command \def\setfontdimen#1#2{ \ifisint{#2}\then \setint{fontdimen(#1)}{\int{#2}} \fi } \let\label=\gobble_one \newif\ifdirect \directtrue \def\input_mtx_as_etx#1{ \def\setscaledrawglyph##1##2##3##4##5##6##7##8##9{ \nextslot{##5} \setslot{##1}\endsetslot } \offcommand\setscalednotglyph \let\setglyph=\gobble_glyph \offcommand\setkern \inputmtx{#1} } \def\inputmtx#1{ \def\relax{\let\relax=\x_relax\iffalse} \let\metrics=\fi \primitiveinput #1.mtx\x_relax \let\relax=\x_relax } \let\metrics=\x_relax \edef\endmetrics_text{\string\endmetrics} \outer\def\endmetrics{\endinput} \def\ProvidesMtxPackage#1{\x_cs\let{pack-#1}P} \def\usemtxpackage{\futurelet\next_token\test_UseMtxPkg_arguments} \def\test_UseMtxPkg_arguments{\ifx\next_token[ \expandafter\mtx_package_given_file \else \expandafter\mtx_package_separate_files \fi } \def\mtx_package_given_file[#1]#2{ \_a_false \process_csep_list\load_true_unless_loaded #2,\process_csep_list, \if_a_ \inputmtx{#1} \fi } \def\load_true_unless_loaded#1{ \x_cs\ifx{pack-#1}P\else\_a_true\fi } \def\mtx_package_separate_files#1{ \process_csep_list\load_file_unless_loaded #1,\process_csep_list, } \def\load_file_unless_loaded#1{ \x_cs\ifx{pack-#1}P\else \inputmtx{#1} \fi } \let\glyph_name_modifier=\identity_one \def\setkern#1#2#3{ \x_cs\ifx{i-rawscale}\x_relax \expandafter\set_kern \csname~r-\glyph_name_modifier{#1}\expandafter\endcsname \csname~l-\glyph_name_modifier{#2}\endcsname {#3} \else \expandafter\set_kern \csname~r-\glyph_name_modifier{#1}\expandafter\endcsname \csname~l-\glyph_name_modifier{#2}\endcsname {\scale{#3}{\int{rawscale}}} \fi } \def\set_kern#1#2#3{ \eval_expr{#3} \expandafter\set_kern_cs\csname\the\result\endcsname#1#2 } \def\set_kern_cs#1#2#3{ \add_to#2{\k#3#1} \add_to#3{\k#2#1} } \def\resetkern#1#2#3{ \x_cs\ifx{i-rawscale}\x_relax \expandafter\reset_kern \csname~r-#1\expandafter\endcsname \csname~l-#2\endcsname{#3} \else \expandafter\reset_kern \csname~r-#1\expandafter\endcsname \csname~l-#2\endcsname{\scale{#3}{\int{rawscale}}} \fi } \def\reset_kern#1#2#3{ \eval_expr{#3} \expandafter\reset_kern_cs\csname\the\result\endcsname#1#2 } \def\reset_kern_cs#1#2#3{ \prep_to#2{\k\expandafter#3\expandafter#1} \prep_to#3{\k\expandafter#2\expandafter#1} } \def\setleftkerning#1#2#3{ \eval_expr_to\b_count{#3} \expandafter\set_kerning \csname~l-#1\expandafter\endcsname \csname~l-#2\endcsname } \def\setrightkerning#1#2#3{ \eval_expr_to\b_count{#3} \expandafter\set_kerning \csname~r-#1\expandafter\endcsname \csname~r-#2\endcsname } \def\setleftrightkerning#1#2#3{ \eval_expr_to\b_count{#3} \expandafter\set_kerning \csname~l-#1\expandafter\endcsname \csname~l-#2\endcsname \expandafter\set_kerning \csname~r-#1\expandafter\endcsname \csname~r-#2\endcsname } \def\set_kerning#1#2{ \if\b_count=\one_thousand \def\k##1##2{ \set_kern_cs##2##1#1 } \else \def\k##1##2{ \set_kern##1#1{ \scale\b_count{\expandafter\gobble_one\string##2} } } \fi #2 } \def\kerning#1#2{0\x_relax \def\k##1{\csname~set-\string##1\endcsname\gobble_one} \bgroup \x_cs\def{set-\string\l-#2}##1##2{ \global\result=\expandafter\gobble_one\string##2\egroup } \csname~r-#1\endcsname \csname~set-\string\l-#2\endcsname\gobble_one{00} } \def\ifiskern#1#2\then{ \def\k##1##2{\ifx T##1 \let\k\gobble_two \fi} \bgroup \x_cs\let{l-#2}T \csname r-#1\endcsname \expandafter\egroup \ifx\k\gobble_two } \def\unsetkerns#1#2{ \let\k\k_unless_to_U \process_csep_list\make_slots_U#1,\process_csep_list, \def\do##1{\x_cs\main_remove_Us{l-##1}} \process_csep_list\do#2,\process_csep_list, \process_csep_list\make_slots_relax#1,\process_csep_list, \process_csep_list\make_slots_U#2,\process_csep_list, \def\do##1{\x_cs\main_remove_Us{r-##1}} \process_csep_list\do#1,\process_csep_list, \process_csep_list\make_slots_relax#2,\process_csep_list, } \def\make_slots_U#1{\x_cs\let{slots-#1}U} \def\make_slots_relax#1{\x_cs\let{slots-#1}\x_relax} \def\k_unless_to_U#1#2{ \x_cs\ifx{slots-\expandafter\gobble_three\string#1}U \else \noexpand\k\noexpand#1\noexpand#2 \fi } \def\main_remove_Us#1{ \ifx#1\x_relax \else \edef#1{#1} \ifx#1\empty_command \let#1\x_relax \fi \fi } \def\noleftkerning#1{\no_kerning{l}{#1}} \def\norightkerning#1{\no_kerning{r}{#1}} \def\noleftrightkerning#1{\no_kerning{l}{#1}\no_kerning{r}{#1}} \def\no_kerning#1#2{ \let\k\no_kerning_i \def\do##1{\csname #1-##1\endcsname} \bgroup \aftergroup\def \aftergroup\a_macro \aftergroup{ \process_csep_list\do #2,\process_csep_list, \aftergroup} \egroup \def\do##1{\expandafter\let \csname #1-##1\endcsname \x_relax} \process_csep_list\do #2,\process_csep_list, \let\k\no_kerning_ii \def\do##1{\edef##1{##1}} \a_macro } \def\no_kerning_i#1#2{ \ifx #1\x_relax \else \aftergroup\do \aftergroup#1 \let #1\x_relax \fi } \def\no_kerning_ii#1#2{ \ifx #1\x_relax \else \noexpand\k \noexpand#1 \noexpand#2 \fi } \def\width{\glyph_parameter\first_of_six} \def\height{\glyph_parameter\second_of_six} \def\depth{\glyph_parameter\third_of_six} \def\italic{\glyph_parameter\fourth_of_six} \def\mapcommands{\glyph_parameter\fifth_of_six} \def\mapfonts{\glyph_parameter\sixth_of_six} \def\glyph_parameter#1#2{ \expandafter\expandafter\expandafter #1\csname g-#2\endcsname } \def\first_of_six#1#2#3#4#5#6{#1} \def\second_of_six#1#2#3#4#5#6{#2} \def\third_of_six#1#2#3#4#5#6{#3} \def\fourth_of_six#1#2#3#4#5#6{#4} \def\fifth_of_six#1#2#3#4#5#6{#5} \def\sixth_of_six#1#2#3#4#5#6{#6} \def\glyph_metrics#1#2#3#4#5#6{ \a_count=#1 \b_count=#2 \c_count=#3 \d_count=#4~ } \let\saved_scale\x_relax \let\saved_mapfont\x_relax \let\saved_raw\x_relax \let\saved_rule\x_relax \let\saved_special\x_relax \let\saved_warning\x_relax \let\saved_movert\x_relax \let\saved_moveup\x_relax \let\saved_push\x_relax \let\saved_pop\x_relax \newcount\glyph_width \newcount\glyph_height \newcount\glyph_depth \newcount\glyph_italic \newtoks\glyph_map_commands \newtoks\glyph_map_fonts \newcount\glyph_voffset \newcount\glyph_maxhpos \def\setglyph#1{ \ifisglyph{\glyph_name_modifier{#1}}\then \expandafter\gobble_glyph \else \x_cs\def{g-\glyph_name_modifier{#1}}{ {\the\glyph_width}{\the\glyph_height} {\the\glyph_depth}{\the\glyph_italic} {\the\glyph_map_commands}{\the\glyph_map_fonts} } \resetglyph{\glyph_name_modifier{#1}} \fi } \long\def\gobble_glyph#1\endsetglyph{} \def\resetglyph#1{ \edef\glyphname{#1} \glyph_width=0 \global\glyph_height=0 \global\glyph_depth=0 \global\glyph_italic=0 \glyph_voffset=0 \global\glyph_maxhpos=0 \global\glyph_map_commands={} \global\glyph_map_fonts={} } \def\endsetglyph{ \x_cs\edef{g-\glyphname} {{\the\glyph_width}{\the\glyph_height} {\the\glyph_depth}{\the\glyph_italic} {\the\glyph_map_commands}{\the\glyph_map_fonts}} } \let\endresetglyph=\endsetglyph \def\setrawglyph#1#2#3{ \setscaledrawglyph{#1}{#2}{#3}\one_thousand } \def\setscaledrawglyph#1#2#3#4#5#6#7#8#9{ \if_undefined{g-\glyph_name_modifier{#1}}\then \eval_expr{#4} \ifnum \result=\one_thousand \let\a_macro\identity_one \else \edef\a_macro##1{\saved_scale{\the\result}{##1}} \fi \eval_expr_to\a_count{#6} \eval_expr_to\b_count{#7} \eval_expr_to\c_count{#8} \eval_expr_to\d_count{#9} \ifisint{rawscale}\then \e_count=\int{rawscale} \multiply \a_count \e_count \l_rounded_thousandths\a_count \multiply \b_count \e_count \l_rounded_thousandths\b_count \multiply \c_count \e_count \l_rounded_thousandths\c_count \multiply \d_count \e_count \l_rounded_thousandths\d_count \edef\a_macro##1{\saved_scale{\the\e_count}{\a_macro{##1}}} \fi \x_cs\edef{g-\glyph_name_modifier{#1}}{ {\the\a_count} {\the\b_count} {\the\c_count} {\the\d_count} {\a_macro{\saved_raw{#2}{#5}{#1}}} {\a_macro{\saved_mapfont{#2}{#3}}} } \fi } \def\setnotglyph#1#2#3{ \setscalednotglyph{#1}{#2}{#3}\one_thousand } \def\setscalednotglyph#1#2#3#4#5#6#7#8#9{ \if_undefined{g-\glyph_name_modifier{#1}-not}\then \eval_expr_to\a_count{#6} \eval_expr_to\b_count{#7} \eval_expr_to\c_count{#8} \eval_expr_to\d_count{#9} \ifisint{rawscale}\then \e_count=\int{rawscale} \multiply \a_count \e_count \l_rounded_thousandths\a_count \multiply \b_count \e_count \l_rounded_thousandths\b_count \multiply \c_count \e_count \l_rounded_thousandths\c_count \multiply \d_count \e_count \l_rounded_thousandths\d_count \fi \x_cs\edef{g-\glyph_name_modifier{#1}-not}{ {\the\a_count} {\the\b_count} {\the\c_count} {\the\d_count} {}{} } \fi } \def\unsetglyph#1{\x_cs\let{g-#1}\x_relax} \def\glyph#1#2{ \glyph_parameter\glyph_metrics{#1} \eval_expr_to\e_count{#2} \ifnum \e_count=\one_thousand \edef\a_macro{\mapcommands{#1}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } \edef\a_macro{\mapfonts{#1}} \else \multiply \a_count \e_count \l_rounded_thousandths\a_count \multiply \b_count \e_count \l_rounded_thousandths\b_count \multiply \c_count \e_count \l_rounded_thousandths\c_count \multiply \d_count \e_count \l_rounded_thousandths\d_count \edef\a_macro{\saved_scale{\the\e_count}{\mapcommands{#1}}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } \edef\a_macro{\saved_scale{\the\e_count}{\mapfonts{#1}}} \fi \advance \glyph_width \a_count \advance \b_count \glyph_voffset \ifnum \glyph_height<\b_count \global\glyph_height=\b_count \fi \advance \c_count -\glyph_voffset \ifnum \glyph_depth<\c_count \global\glyph_depth=\c_count \fi \global\glyph_italic=\d_count \global\glyph_map_fonts\expandafter{ \the\expandafter\glyph_map_fonts \a_macro } } \def\glyphrule#1#2{ \eval_expr_to\b_count{#1} \eval_expr_to\c_count{#2} \advance\glyph_width by \b_count \g_eval_expr_to\glyph_depth{\max\glyph_depth{-\glyph_voffset}} \g_eval_expr_to\glyph_height{ \max\glyph_height{\add\glyph_voffset\c_count} } \global\glyph_italic=0 \edef\a_macro{\saved_rule{\the\b_count}{\the\c_count}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } } \def\glyphspecial#1{ \edef\a_macro{\saved_special{#1}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } } \def\glyphwarning#1{ \edef\a_macro{\saved_warning{#1}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } } \def\movert#1{ \eval_expr{#1} \ifnum \glyph_maxhpos<\glyph_width \global\glyph_maxhpos\glyph_width \fi \ifnum 0=\result \else \advance\glyph_width by \result \edef\a_macro{\saved_movert{\the\result}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } \fi } \def\moveup#1{ \eval_expr{#1} \ifnum\result=0\else \advance\glyph_voffset by \result \edef\a_macro{\saved_moveup{\the\result}} \global\glyph_map_commands\expandafter{ \the\expandafter\glyph_map_commands \a_macro } \fi } \def\push{ \bgroup \global\glyph_map_commands\expandafter{ \the\glyph_map_commands \saved_push } } \def\pop{ \ifnum \glyph_maxhpos<\glyph_width \global\glyph_maxhpos\glyph_width \fi \egroup \global\glyph_map_commands\expandafter{ \the\glyph_map_commands \saved_pop } } \def\resetwidth#1{\movert{\sub{#1}\glyph_width}} \def\resetheight{\g_eval_expr_to\glyph_height} \def\resetdepth{\g_eval_expr_to\glyph_depth} \def\resetitalic{\g_eval_expr_to\glyph_italic} \def\glyphpcc#1#2#3{ \ifisglyph{\glyph_name_modifier{#1}}\then \push \movert{#2} \moveup{#3} \glyph{\glyph_name_modifier{#1}}{\one_thousand} \pop \else\ifisglyph{\glyph_name_modifier{#1}-not}\then \fontinstwarning{\string\glyphpcc}{ Base~glyph~`\glyph_name_modifier{#1}'~not~appended,\messagebreak because~it~is~so~far~unencoded~in~the~glyph~base } \else \fontinsterror{\string\glyphpcc}{ Base~glyph~not~set.\messagebreak This~could~be~a~sign~that~the~AFM~file~is~buggy }\error_help_a \fi\fi } \def\glyphbboxright{\max\glyph_width\glyph_maxhpos} \def\samesize#1{ \if_undefined{g-\glyph_name_modifier{#1}}\then \resetwidth{\glyphbboxright} \else \expandafter\expandafter\expandafter \same_size\csname g-\glyph_name_modifier{#1}\endcsname \fi } \def\same_size#1#2#3#4#5#6{ \movert{\sub{#1}\glyph_width} \global\glyph_height=#2 \global\glyph_depth=#3 \global\glyph_italic=#4 } \def\ifisglyph#1\then{\if_defined{g-#1}\then} \def\ifareglyphs#1\then{ \process_csep_list{\if_is_glyph}#1,\process_csep_list, \if_true } \def\if_is_glyph#1{ \if_undefined{g-#1}\then \expandafter\if_false \fi } \def\etxtovpl#1#2{{ \def\vpl_extension{vpl} \def\vpl_title{COMMENT} \def\vpl_font{virtual~font} \def\vpl_Font{Virtual~font} \def\vpl_call{\string\etxtovpl{#1}{#2}} \def\vpl_to_vf##1{vptovf~##1.vpl~##1.vf~##1.tfm} \a_toks={} \process_csep_list\make_inputetx #1,\process_csep_list, \expandafter\etx_to_font \expandafter{\the\a_toks}{#2} }} \def\etxtopl#1#2{{ \def\vpl_extension{pl} \def\vpl_title{COMMENT} \def\vpl_font{font} \def\vpl_Font{Font} \def\vpl_call{\string\etxtopl{#1}{#2}} \def\vpl_to_vf##1{pltotf~##1.pl~##1.tfm} \_including_map_false \global\rawfont_scaling=-\p@ \a_toks={} \process_csep_list\make_inputetx #1,\process_csep_list, \expandafter\etx_to_font \expandafter{\the\a_toks}{#2} }} \newif\if_including_map_ \_including_map_true \def\make_inputetx#1{ \def\a_macro{\noexpand\inputetx{\file_name}} \get_file_name #1~{}~\par \edef\a_macro{\a_macro} \a_toks=\expandafter{ \the\expandafter\a_toks \a_macro} } \x_cs\def{IFKW-mtxasetx}{ \def\a_macro{\noexpand\input_mtx_as_etx{\file_name}} \get_keyword } \def\etx_to_font#1#2{ \make_assignments{#1} \open_out{#2.\vpl_extension} \top_of_pl_hook \out_line{(\vpl_title\space\vpl_font\space #2~created~by~fontinst~v\fontinstversion)} \out_line{} \out_line{(COMMENT~Filename:~#2.\vpl_extension)} \out_line{(COMMENT~Created~by:~tex~\jobname)} \out_line{(COMMENT~Created~using:~\vpl_call)} \out_line{} \out_line{(COMMENT~This~file~can~be~turned~into~a~\vpl_font\space with)} \out_line{(COMMENT~\vpl_to_vf{#2})} \out_line{} \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)} \out_line{} \make_header{#1} \if_including_map_ \make_mapfonts{#1} \fi \make_fontdimens{#1} \make_ligtable{#1} \make_characters{#1} \make_tidy{#1} \out_line{} \out_line{(COMMENT~END~OF~FILE~#2.\vpl_extension)} \close_out{\vpl_Font} } \let\pre_first_etx_pass_hook\x_relax \let\pre_second_etx_pass_hook\x_relax \let\pre_third_etx_pass_hook\x_relax \let\pre_fourth_etx_pass_hook\x_relax \let\post_first_etx_pass_hook\x_relax \let\post_second_etx_pass_hook\x_relax \let\post_third_etx_pass_hook\x_relax \let\post_fourth_etx_pass_hook\x_relax \let\tidying_up_hook\x_relax \let\top_of_pl_hook\x_relax \def\make_assignments#1{ \let\do_slot=\assign_slot \let\end_do_slot=\end_assign_slot \def\do_boundary{\bgroup \let\makerightboundary=\bad_makerightboundary } \let\endsetleftboundary=\egroup \let\makerightboundary=\assign_rboundary \pre_first_etx_pass_hook #1 \post_first_etx_pass_hook \let\end_do_slot=\empty_command \let\do_boundary=\x_relax \let\endsetleftboundary=\x_relax \let\makerightboundary=\gobble_one } \def\assign_slot{\a_toks={\do}} \begingroup \catcode0=12 \gdef\end_assign_slot{ \ifisglyph\slot_name\then \lccode0=\slot_number \lowercase{ \expandafter\add_to \csname slots-\slot_name\expandafter\endcsname \expandafter{\the\a_toks^^@} } \fi } \gdef\assign_rboundary#1{ \lccode0=\slot_number \lowercase{\x_cs\add_to{slots-#1}{\rboundary_do^^@}} \x_setint{\percent_char boundarychar}\slot_number \a_toks={\rbserver_do} } \endgroup \def\bad_makerightboundary#1{ \errhelp={The~left~boundary~is~not~a~slot,~so~it~cannot~serve~ as~right~boundary.} \errmessage{Incorrect~use~of~\string\makerightboundary} } \def\get_slot_num#1{ \global\result=-1 \bgroup \def\do{\global\result=`} \let\rbserver_do=\do \let\rboundary_do=\gobble_one \csname slots-#1\endcsname \egroup } \def\ifisinslot#1#2\then{ \ifx \makerightboundary\gobble_one \eval_expr{#2} \begingroup \def\do##1{\ifnum `##1=\result \let\do=\gobble_one \fi} \def\rbserver_do{\do} \let\rboundary_do=\gobble_one \csname slots-#1\endcsname \expandafter\endgroup \ifx \do\gobble_one \expandafter\expandafter \expandafter\if_true \else \expandafter\expandafter \expandafter\if_false \fi \else \expandafter\gobble_if \fi } \newdimen\mapfont_scaling \mapfont_scaling=1pt \newdimen\rawfont_scaling \def\vpl_real#1{R~\expandafter\lose_measure\the#1} \def\vpl_int#1{D~\the#1} \newdimen\side_bearings \newdimen\curr_bearings \def\make_header#1{ \global\font_count=0 \setdim{designsize}{10pt} \a_dimen=\dim{designsize} \out_line{(DESIGNSIZE~\vpl_real\a_dimen)} \x_setstr{codingscheme}{UNKNOWN} \out_line{(CODINGSCHEME~\str{codingscheme})} \ifisint{\percent_char boundarychar}\then \a_count=\int{\percent_char boundarychar} \out_line{(BOUNDARYCHAR~\vpl_int\a_count)} \fi \x_setint{letterspacing}{0} \side_bearings=\make_factor{\int{letterspacing}}\half_point \x_setint{minimumkern}{0} \minimum_kern=\int{minimumkern} \out_line{} } \def\make_mapfonts#1{ \let\saved_scale\vpl_scale \let\saved_mapfont\vpl_mapfont \let\do_slot=\do_mapfont \pre_second_etx_pass_hook #1 \post_second_etx_pass_hook \out_line{} } \def\do_mapfont{ \ifisglyph\slot_name\then \mapfonts\slot_name \fi } \def\vpl_scale#1#2{{ \mapfont_scaling=\make_factor{#1}\mapfont_scaling #2 }} \def\vpl_mapfont#1#2{ \a_dimen=#2 \if_undefined{\the\mapfont_scaling-#1}\then \global\x_cs\mathchardef{\the\mapfont_scaling-#1}=\font_count \x_cs\xdef{f-\the\font_count}{\the\mapfont_scaling-#1} \out_line{(MAPFONT~\vpl_int\font_count\space (FONTNAME~#1)~ (FONTDSIZE~\vpl_real\a_dimen)~ (FONTAT~\vpl_real\mapfont_scaling))} \record_usage{#1} \global\advance\font_count by 1 \fi } \def\pl_mapfont#1#2{\global\rawfont_scaling=\mapfont_scaling} \newcount\font_count \newcount\next_mapfont \newcount\prev_mapfont \def\make_fontdimens#1{ \out_line{(FONTDIMEN} \a_count=1 \loop\ifnum 256>\a_count \ifisint{fontdimen(\the\a_count)}\then \out_lline{(PARAMETER~\vpl_int\a_count\space R~\make_factor{\int{fontdimen(\the\a_count)}})} \fi \advance \a_count \@ne \repeat \out_lline{)} \out_line{} } \def\make_ligtable#1{ \begingroup \out_line{(LIGTABLE} \let\do_slot=\bgroup \let\end_do_slot=\vpl_kerning \def\do_boundary{\bgroup \let\vpl_liglabel=\boundary_liglabel} \let\endsetleftboundary=\vpl_kerning \let\ligature=\vpl_ligature \let\k=\vpl_kern \let\rbserver_do=\vpl_rbserver_do \let\rboundary_do=\vpl_rboundary_do \pre_third_etx_pass_hook #1 \post_third_etx_pass_hook \out_lline{)} \endgroup \out_line{} } \def\vpl_rbserver_do#1{ \do{#1} \let\rboundary_do=\wrn_rboundary_do } \def\vpl_rboundary_do#1{ \do{#1} \let\rbserver_do=\wrn_rboundary_do } \def\wrn_rboundary_do#1{ \do{#1} \immediate\write16{Boundarychar~slot~usage~collision~in~ `\slot_name'~ligkern~program.} } \def\vpl_ligature#1#2#3{ \get_slot_num{#3} \ifnum -1=\result \immediate\write16{Warning:~\string\ligature\space for~unknown~slot~`#3'.} \else \x_cs\ifx{slots-#2}\x_relax \immediate\write16{Warning:~\string\ligature\space for~unknown~slot~`#2'.} \else \def\do##1{ \vpl_liglabel \out_lline{(#1~D~\number`##1~\space\vpl_int\result)~ (COMMENT~#2~#3)} } \csname slots-#2\endcsname \fi \fi } \def\vpl_kerning{ \let\do=\vpl_kern_do \csname~r-\slot_name\endcsname \vpl_ligstop \egroup } \def\vpl_kern#1#2{ \edef\a_macro{\expandafter\gobble_three\string#1} \a_count=\expandafter\gobble_one\string#2\x_relax \ifnum \ifnum -\a_count>\a_count - \fi\a_count>\minimum_kern \edef\b_macro{~R~\make_factor\a_count} \csname slots-\a_macro\endcsname \fi \x_cs\let{slots-\a_macro}=\x_relax } \def\vpl_kern_do#1{ \vpl_liglabel \out_lline{ (KRN~D~\number`#1~\b_macro)~ (COMMENT~\a_macro) } } \def\out_liglabel{ \out_lline{(LABEL~\vpl_int\slot_number)~(COMMENT~\slot_name)} \let\vpl_liglabel=\x_relax \let\vpl_ligstop=\out_ligstop } \def\boundary_liglabel{ \out_lline{(LABEL~BOUNDARYCHAR)~(COMMENT~\slot_name)} \let\vpl_liglabel=\x_relax \let\vpl_ligstop=\out_ligstop } \let\vpl_liglabel=\out_liglabel \def\out_ligstop{\out_lline{(STOP)} \let\vpl_liglabel=\out_liglabel \let\vpl_ligstop=\x_relax} \let\vpl_ligstop=\x_relax \def\make_characters#1{ \bgroup \let\do_slot=\do_character \let\end_do_slot=\end_do_character \let\nextlarger=\vpl_nextlarger \let\varchar=\vpl_varchar \let\endvarchar=\end_vpl_varchar \let\vartop=\vpl_vartop \let\varmid=\vpl_varmid \let\varbot=\vpl_varbot \let\varrep=\vpl_varrep \if_including_map_ \let\saved_raw\vpl_raw \let\saved_rule\vpl_rule \let\saved_special\vpl_special \let\saved_warning\vpl_warning \let\saved_movert\vpl_movert \let\saved_moveup\vpl_moveup \let\saved_push\vpl_push \let\saved_pop\vpl_pop \else \def\do_character_map{ \ifdim \rawfont_scaling=-\p@ \mapfonts\slot_name \else \let\do_character_map=\x_relax \fi } \let\saved_mapfont\pl_mapfont \let\saved_scale\vpl_scale \fi \pre_fourth_etx_pass_hook #1 \post_fourth_etx_pass_hook \egroup } \def\do_character{ \if_undefined{g-\slot_name}\then \ifisint{requireglyphs}\then \fontinstwarning{ETX~to~(V)PL}{ Undefined~glyph~`\slot_name'~requested\message_break for~slot~\the\slot_number\message_number} \fi \expandafter\gobble_setslot \else \ifx\slot_name\notdef_name\else \out_line{(CHARACTER~\vpl_int\slot_number\space (COMMENT~\slot_name)} \glyph_parameter\glyph_metrics\slot_name \a_dimen=\make_factor\a_count \p@ \do_character_sidebearings \out_lline{(CHARWD~\vpl_real\a_dimen)} \ifnum \z@=\b_count \else \out_lline{(CHARHT~R~\make_factor\b_count)} \fi \ifnum \z@=\c_count \else \out_lline{(CHARDP~R~\make_factor\c_count)} \fi \ifnum \z@=\d_count \else \out_lline{(CHARIC~R~\make_factor\d_count)} \fi \do_character_map \fi \fi } \def\do_character_sidebearings{ \ifisint{\slot_name-spacing}\then \curr_bearings=\make_factor{\int{\slot_name-spacing}}\half_point \else \curr_bearings=\side_bearings \fi \advance\a_dimen by 2\curr_bearings } \def\do_character_map{ \global\prev_mapfont=0 \out_lline{(MAP} \ifdim 0pt=\curr_bearings \mapcommands\slot_name \else \out_llline{(MOVERIGHT~\vpl_real\curr_bearings)} \mapcommands\slot_name \out_llline{(MOVERIGHT~\vpl_real\curr_bearings)} \fi \out_llline{)} } \long\def\gobble_setslot#1\endsetslot{\endsetslot} \def\end_do_character{ \ifisglyph\slot_name\then \out_lline{)} \fi } \def\notdef_name{.notdef} \def\vpl_nextlarger#1{ \get_slot_num{#1} \ifnum -1<\result \out_lline{(NEXTLARGER~D~\the\result)~(COMMENT~#1)} \else \immediate\write16{Warning:~\string\nextlarger\space for~unknown~slot~`#1'} \fi } \def\vpl_varchar{\out_lline{(VARCHAR}} \def\end_vpl_varchar{\out_llline{)}} \def\vpl_vartop#1{ \get_slot_num{#1} \ifnum -1<\result \out_llline{(TOP~D~\the\result)~(COMMENT~#1)} \else \immediate\write16{Warning:~\string\vartop\space for~unknown~slot~`#1'} \fi } \def\vpl_varmid#1{ \get_slot_num{#1} \ifnum -1<\result \out_llline{(MID~D~\the\result)~(COMMENT~#1)} \else \immediate\write16{Warning:~\string\varmid\space for~unknown~slot~`#1'} \fi } \def\vpl_varbot#1{ \get_slot_num{#1} \ifnum -1<\result \out_llline{(BOT~D~\the\result)~(COMMENT~#1)} \else \immediate\write16{Warning:~\string\varbot\space for~unknown~slot~`#1'} \fi } \def\vpl_varrep#1{ \get_slot_num{#1} \ifnum -1<\result \out_llline{(REP~D~\the\result)~(COMMENT~#1)} \else \immediate\write16{Warning:~\string\varrep\space for~unknown~slot~`#1'} \fi } \def\vpl_raw#1#2#3{ \global\next_mapfont=\csname\the\mapfont_scaling-#1\endcsname \ifnum \next_mapfont=\prev_mapfont \else \out_llline{(SELECTFONT~\vpl_int\next_mapfont)~ (COMMENT~#1~at~ \expandafter\lose_measure \the\mapfont_scaling)} \fi \out_llline{(SETCHAR~D~#2)~(COMMENT~#3)} \global\prev_mapfont=\next_mapfont } \def\vpl_rule#1#2{ \a_dimen=\make_factor{#2}\mapfont_scaling \b_dimen=\make_factor{#1}\mapfont_scaling \out_llline{(SETRULE~\vpl_real\a_dimen\space\vpl_real\b_dimen)} } \def\vpl_special#1{ \out_llline{(SPECIAL~#1)}} \def\vpl_warning#1{ \ifwarningspecials \out_llline{(SPECIAL~Warning:~#1)} \fi \immediate\write16{Warning:~#1.} } \newif\ifwarningspecials \warningspecialstrue \def\vpl_movert#1{ \a_dimen=\make_factor{#1}\mapfont_scaling \out_llline{(MOVERIGHT~\vpl_real\a_dimen)} } \def\vpl_moveup#1{ \a_dimen=\make_factor{#1}\mapfont_scaling \out_llline{(MOVEUP~\vpl_real\a_dimen)} } \def\vpl_push{\out_llline{(PUSH)}} \def\vpl_pop{\out_llline{(POP)}} \def\make_tidy#1{ \tidying_up_hook \if_including_map_ \a_count=0 \loop\ifnum \a_count<\font_count \edef\a_macro{\csname~f-\the\a_count\endcsname} \global\x_cs\let\a_macro\x_relax \advance\a_count by 1 \repeat \global\font_count=0 \else \ifdim \rawfont_scaling<\z@ \fontinstwarning{ETX~to~(V)PL}{The~font~ \out_filename\space doesn't~contain~any~characters} \global\rawfont_scaling=\p@ \fi \ifdim \rawfont_scaling=\p@ \else \out_line{(DESIGNUNITS~\vpl_real\rawfont_scaling)} \fi \fi } \newtoks\family_toks \def\installfonts{ \bgroup \global\family_toks={} \gdef\prev_file_list{} \global\let\setsomething_global=\global } \def\installfamily#1#2#3{ \global\family_toks= \expandafter{\the\family_toks\fd_family{#1}{#2}{#3}} \global\x_cs\let{#1-#2}\empty_command } \def\installfont#1#2#3#4#5#6#7#8{ \global\let\setsomething_global=\x_relax \input_metrics{}{#2} \etxtovpl{#3}{#1} \installfontas{#1}{#4}{#5}{#6}{#7}{#8} \global\let\setsomething_global=\global } \def\installrawfont#1#2#3#4#5#6#7#8{ \global\let\setsomething_global=\x_relax \xdef\out_filename{#1} \input_metrics{\let\storemapdata=\installraw_storemap}{#2} \let\storemapdata=\gobble_three \etxtopl{#3}{#1} \record_usage{#1} \installfontas{ \ifdim \rawfont_scaling=\p@ \else [\expandafter\lose_measure\the\rawfont_scaling]~ \fi #1 }{#4}{#5}{#6}{#7}{#8} \global\let\setsomething_global=\global } \def\installraw_storemap#1#2#3{ \def\a_macro{#1} \ifx \a_macro\out_filename \else \record_transform{\out_filename}{\string\frommtx{#1}}{}\if_false \fi } \def\input_metrics#1#2{ \let\metrics=\file_list_metrics \xdef\curr_file_list{#2,} \let\metrics=\x_relax \ifx\prev_file_list\curr_file_list\else \egroup\bgroup #1 \expandafter\process_csep_list \expandafter\input_mtx_file \curr_file_list\process_csep_list, \global\let\prev_file_list=\curr_file_list \fi } \def\file_list_metrics#1,{ \iffalse{\fi} \a_toks=\expandafter{\curr_file_list\x_relax#1,} \xdef\curr_file_list{\the\a_toks \iffalse}\fi } \def\installfontas#1#2#3#4#5#6{ \if_undefined{#2-#3-#4-#5}\then \let\do_shape=\x_relax \if_undefined{#2-#3}\then \x_cs\let{#2-#3}\empty_command \autoinstallfamily{#2}{#3} \fi \x_cs\xdef{#2-#3}{ \csname#2-#3\endcsname \do_shape{#2}{#3}{#4}{#5} } \fi \let\do_size=\x_relax \x_cs\xdef{#2-#3-#4-#5}{ \if_defined{#2-#3-#4-#5}\then \csname#2-#3-#4-#5\endcsname \fi \do_size{#6}{#1} } } \def\autoinstallfamily#1#2{\installfamily{#1}{#2}{}} \def\endinstallfonts{ \global\let\setsomething_global=\x_relax \let\do_shape=\fd_shape \let\do_size=\fd_size \the\family_toks \global\family_toks{} \egroup } \def\input_mtx_file#1{ \reset_modifiers_hook \ifx\x_relax#1\x_relax \else \identity_one{\get_file_name #1~}~\par \ifx \pl_encoding\empty_command \fromany\file_name \else \metrics_given_encoding{\file_name}{\pl_encoding} \fi \ifisstr{afm-name}\then \inputmtx{\str{afm-name}} \else \fontinsterror{\string\install...}{ Font/MTX~file~\file_name\space not~found }{ You~can~insert~an~\string\inputmtx\space command~here \messagebreak to~input~some~other~MTX~file~instead. \ifisint{rawscale}\then \messagebreak The~requested~raw~scaling~will~then~be~applied~on~that. \fi } \fi \fi } \def\metrics_given_encoding#1#2{ \x_cs\edef{s-afm-name}{#1-#2} \if_file_exists{#1.pl}\then \generalpltomtx{#1}{#1-#2}{pl}{#2} \else \if_file_exists{#1.vpl}\then \generalpltomtx{#1}{#1-#2}{vpl}{#2} \else \unsetstr{afm-name} \fi\fi } \def\reset_modifiers_hook{ \unsetint{rawscale} \let\glyph_name_modifier\identity_one \let\pl_encoding\empty_command \let\list_of_options\empty_command } \def\get_file_name #1~{ \edef\file_name{#1} \get_keyword } \def\get_keyword #1~{ \if_defined{IFKW-#1}\then \csname IFKW-#1 \expandafter\endcsname \else \fontinsterror{\string\install...}{ `#1'~is~not~a~defined~keyword }{ \error_help_a\messagebreak Extra~tokens~will~be~flushed. } \expandafter\gobble_keywords \fi } \def\gobble_keywords#1\par{} \x_cs\let{IFKW-}=\gobble_keywords \x_cs\def{IFKW-scaled}#1~{ \ifnum #1=\one_thousand \unsetint{rawscale} \else \x_resetint{rawscale}{#1} \fi \get_keyword } \x_cs\def{IFKW-suffix}#1~{ \def\glyph_name_modifier##1{##1#1} \get_keyword } \x_cs\def{IFKW-encoding}#1~{ \def\pl_encoding{#1} \get_keyword } \let\pl_encoding=\empty_command \x_cs\def{IFKW-option}#1~{ \add_to\list_of_options{\do{#1}} } \def\ifoption#1\then{ \_a_false \edef\a_macro{#1} \def\do##1{ \if_a_ \else \def\b_macro{##1} \ifx \a_macro\b_macro \_a_true \fi \fi } \list_of_options \if_a_ } \let\list_of_options\empty_command \def\fd_family#1#2#3{ \a_toks{#3} \edef\lowercase_file{\lowercase{ \edef\noexpand\lowercase_file{#1#2.fd}}} \lowercase_file \open_out{\lowercase_file} \out_line{\percent_char~Filename:~\lowercase_file} \out_line{\percent_char~Created~by:~tex~\jobname} \out_line{\percent_char~Created~using~fontinst~v\fontinstversion} \out_line{} \out_line{\percent_char~THIS~FILE~SHOULD~BE~PUT~IN~A~TEX~INPUTS~ DIRECTORY} \out_line{} \out_line{\string\ProvidesFile{\lowercase_file}} \out_lline{[ \the\year/ \ifnum10>\month0\fi\the\month/ \ifnum10>\day0\fi\the\day\space Fontinst~v\fontinstversion\space font~definitions~for~#1/#2. ]} \out_line{} \out_line{\string\DeclareFontFamily{#1}{#2}{\the\a_toks}} { \csname #1-#2\endcsname \out_line{} \let\do_shape=\substitute_shape \csname #1-#2\endcsname \let\do_shape=\remove_shape \csname #1-#2\endcsname } \x_cs\g_let{#1-#2}\x_relax \out_line{} \out_line{\string\endinput} \close_out{Font~definitions} } \def\fd_shape#1#2#3#4{ \out_line{} \out_line{\string\DeclareFontShape{#1}{#2}{#3}{#4}\left_brace_char} \csname #1-#2-#3-#4\endcsname \x_cs\g_let{#1-#2-#3-#4}\empty_command \out_line{\right_brace_char{}} } \def\fd_size#1#2{ \x_cs\ifx{siz-#1}\x_relax \out_lline{#1~#2} \else \out_lline{\csname siz-#1\endcsname\space #2} \fi } \def\remove_shape#1#2#3#4{ \x_cs\g_let{#1-#2-#3-#4}\x_relax } \def\substitute_shape#1#2#3#4{ \edef\orig_shape{#4} \substitute_series{#1}{#2}{#3}{\orig_shape} \x_cs\ifx{sub-\orig_shape}\x_relax\else \edef\subst_shape{\csname sub-\orig_shape\endcsname} \x_cs\ifx{#1-#2-#3-\subst_shape}\x_relax \out_line{ \string\DeclareFontShape{#1}{#2}{#3}{\subst_shape}{ <->\csname typ-\orig_shape\endcsname\space *~#2/#3/\orig_shape }{} } \x_cs\let{#1-#2-#3-\subst_shape}\empty_command \substitute_shape{#1}{#2}{#3}{\subst_shape} \fi \fi } \def\substitute_series#1#2#3#4{ \edef\orig_series{#3} \x_cs\ifx{sub-\orig_series}\x_relax\else \edef\subst_series{\csname sub-\orig_series\endcsname} \x_cs\ifx{#1-#2-\subst_series-#4}\x_relax \out_line{ \string\DeclareFontShape{#1}{#2}{\subst_series}{#4}{ <->\csname typ-\orig_series\endcsname\space *~#2/\orig_series/#4 }{} } \x_cs\let{#1-#2-\subst_series-#4}\empty_command \substitute_series{#1}{#2}{\subst_series}{#4} \fi \fi } \def\substitute_generic#1#2#3{ \edef\a_macro{#2} \edef\b_macro{#3} \ifx \a_macro \b_macro \x_cs\let{sub-#3}\undefined_command \else \x_cs\let{sub-#3}\a_macro \x_cs\def{typ-#3}{#1} \fi } \def\substitutesilent{\substitute_generic{ssub}} \def\substitutenoisy{\substitute_generic{sub}} \substitutesilent{bx}{b} \substitutesilent{b}{bx} \substitutesilent{b}{sb} \substitutesilent{b}{db} \substitutesilent{m}{mb} \substitutesilent{m}{l} \substitutenoisy{ui}{it} \substitutesilent{sl}{it} \substitutesilent{it}{sl} \def\declareencoding#1#2{\x_cs\edef{enc-#1}{#2}} \declareencoding{TEX~TEXT}{ot1} \declareencoding{TEX~TEXT~WITHOUT~F-LIGATURES}{ot1} \declareencoding{TEX~TYPEWRITER~TEXT}{ot1tt} \declareencoding{TEX~MATH~ITALIC}{oml} \declareencoding{TEX~MATH~SYMBOLS}{oms} \declareencoding{TEX~MATH~EXTENSION}{omx} \declareencoding{LATEX~SYMBOLS}{lasy} \declareencoding{TEX~TEXT~SUBSET}{eufrak} \declareencoding{TEX~MATH~ITALIC~SUBSET}{eurm} \declareencoding{TEX~MATH~SYMBOLS~SUBSET}{euscr} \declareencoding{EULER~SUBSTITUTIONS~ONLY}{euex} \declareencoding{EXTENDED~TEX~FONT~ENCODING~-~LATIN}{t1} \declareencoding{TEX~TEXT~COMPANION~SYMBOLS~1---TS1}{ts1} \declareencoding{TEXBASE1ENCODING}{8r} \declareencoding{TEX~TYPEWRITER~AND~WINDOWS~ANSI}{8y} \def\declaresize#1#2{\x_cs\edef{siz-#1}{#2}} \declaresize{}{<->} \declaresize{5}{<5>} \declaresize{6}{<6>} \declaresize{7}{<7>} \declaresize{8}{<8>} \declaresize{9}{<9>} \declaresize{10}{<10>} \declaresize{11}{<10.95>} \declaresize{12}{<12>} \declaresize{14}{<14.4>} \declaresize{17}{<17.28>} \declaresize{20}{<20.74>} \declaresize{25}{<24.88>} \def\NOFILES{ \def\transformfont##1##2{ \touch_file{##1.mtx} \touch_file{##1.pl} } \def\reglyphfont##1##2{\touch_file{##1.mtx}} \def\installfonts{} \def\endinstallfonts{} \def\installfont##1##2##3##4##5##6##7##8{ \touch_file{##1.vpl} } \def\installrawfont##1##2##3##4##5##6##7##8{ \touch_file{##1.pl} } \def\installfamily##1##2##3{\touch_file{##1##2.fd}} } \def\touch_file#1{ \edef\lowercase_file{\lowercase{ \edef\noexpand\lowercase_file{#1}}} \lowercase_file \open_out{\lowercase_file} \out_line{\percent_char~TEST~FILE.} \out_line{\percent_char~Created~whilst~debugging~fontinst.} \close_out{Test~file} } %%% From file: fitrig.dtx \chardef\nin@ty=90 \chardef\@clxxx=180 \chardef\@lxxi=71 \mathchardef\@mmmmlxviii=4068 \chardef\@coeffz=72 \chardef\@coefb=42 \mathchardef\@coefc=840 \mathchardef\@coefd=5040 \def\TG@rem@pt#1{\expandafter\lose_measure\the#1\space} \def\TG@term#1{ \dimen@\@tempb\dimen@ \advance\dimen@ #1\p@ } \def\TG@series{ \dimen@\@lxxi\dimen@ \divide \dimen@ \@mmmmlxviii \edef\@tempa{\TG@rem@pt\dimen@} \dimen@\@tempa\dimen@ \edef\@tempb{\TG@rem@pt\dimen@} \divide\dimen@\@coeffz \advance\dimen@\m@ne\p@ \TG@term\@coefb \TG@term{-\@coefc}% \TG@term\@coefd \dimen@\@tempa\dimen@ \divide\dimen@ \@coefd } \def\CalculateSin#1{{% \if_undefined{sin(\number#1)}\then \dimen@=#1\p@ \TG@@sin \x_cs\xdef{sin(\number#1)}{\TG@rem@pt\dimen@} \fi }} \def\CalculateCos#1{{% \if_undefined{cos(\number#1)}\then \dimen@=\nin@ty\p@ \advance \dimen@ -#1\p@ \TG@@sin \x_cs\xdef{cos(\number#1)}{\TG@rem@pt\dimen@} \fi }} \def\TG@@sin{% \ifdim\TG@reduce>+% \else\ifdim\TG@reduce<-% \else\TG@series\fi\fi } \def\TG@reduce#1#2{ \dimen@#1#2\nin@ty\p@ \advance\dimen@#2-\@clxxx\p@ \dimen@-\dimen@ \TG@@sin } \def\UseSin#1{\csname sin(\number#1)\endcsname} \def\UseCos#1{\csname cos(\number#1)\endcsname} \chardef\z@num\z@ \x_cs\let{sin(0)} \z@num \x_cs\let{cos(0)} \@ne \x_cs\let{sin(90)} \@ne \x_cs\let{cos(90)} \z@num \x_cs\let{sin(-90)}\m@ne \x_cs\let{cos(-90)}\z@num \x_cs\let{sin(180)}\z@num \x_cs\let{cos(180)}\m@ne \def\CalculateTan#1{{% \if_undefined{tan(\number#1)}\then \CalculateSin{#1}% \CalculateCos{#1}% \a_dimen\UseCos{#1}\p@ \divide \a_dimen \@iv \b_dimen\UseSin{#1}\p@ \b_dimen\two@fourteen\b_dimen \divide\b_dimen\a_dimen \x_cs\xdef{tan(\number#1)}{\TG@rem@pt\b_dimen} \fi }} \def\UseTan#1{\csname tan(\number#1)\endcsname} \mathchardef\two@fourteen=16384 \chardef\@iv=4 \x_cs\def{tan(90)}{\errmessage{Infinite tan !}} \expandafter\let \csname tan(-90)\expandafter\endcsname \csname tan(90)\endcsname %%% From file: ficonv.dtx \def\afmtomtx#1#2{{ \let\setsomething_global=\x_relax \open_out{\temp_prefix#2.mtx} \edef\raw_font_name{#2} \edef\source_font_name{#1} \x_resetint{italicslant}{0} \let\italcorr_expression=\uprightitalcorr \x_setint{minimumkern}{0} \minimum_kern=\int{minimumkern} \out_line{\percent_char~Filename:~#2.mtx} \out_line{\percent_char~Created~by:~tex~\jobname} \out_line{\percent_char~Created~using:~\string\afmtomtx{#1}{#2}} \out_line{} \out_line{\percent_char~This~file~contains~the~ information~of~#1.afm~in~a~form} \out_line{\percent_char~more~easily~read~by~TeX.~ It~is~used~by~the~fontinst~package.} \out_line{} \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} \out_line{} \out_line{\string\relax} \out_line{\string\metrics} \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} \catcode`\^^M=12 \catcode`\ =10 \expandafter\afm_line\primitiveinput #1.afm\x_relax \out_line{} \out_line{\endmetrics_text} \close_out{Metrics} }} \newcount\minimum_kern \def\afm_length#1#2{ \a_dimen=#2\afm_unit_dimen #1=\a_dimen \divide #1 by \afm_unit_dimen \advance \a_dimen by -#1\afm_unit_dimen \ifdim \a_dimen>0.5\afm_unit_dimen \advance #1 by 1 \else \ifdim \a_dimen<-0.5\afm_unit_dimen \advance #1 by -1 \fi\fi \x_relax } \newdimen\afm_unit_dimen \afm_unit_dimen=1000sp {\catcode`\^^M=12 \gdef\afm_line#1 {\afm_command#1~\end_of_line\afm_line}} \def\afm_command#1~{\csname~afm-#1\endcsname\gobble_one_line} \def\gobble_one_line#1\end_of_line{} \x_cs\def{afm-EndFontMetrics}#1\afm_line{\endinput} \def\afm_def#1(#2)#3{ \x_cs\def{afm-#1}\gobble_one_line#2\end_of_line{#3} } \def\afm_let#1#2{ \expandafter\let \csname afm-#1\expandafter\endcsname \csname afm-#2\endcsname } \afm_def{CharWidth}(#1){\afm_length\char_x_width{#1}} \afm_def{ItalicAngle}(#1~){\calculate_it_slant{#1}} \afm_def{XHeight}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{xheight}{\the\a_count}}} \afm_def{CapHeight}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{capheight}{\the\a_count}}} \afm_def{Ascender}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{ascender}{\the\a_count}}} \afm_def{Descender}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{descender_neg}{\the\a_count}}} \afm_def{UnderlineThickness}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{underlinethickness}{\the\a_count}}} \afm_def{FontBBox}(#1~#2~#3~#4){ \afm_length\a_count{#4} \out_line{\string\setint{maxheight}{\the\a_count}} \afm_length\a_count{#2} \out_line{\string\setint{maxdepth_neg}{\the\a_count}}} \afm_def{StdVW}(#1){ \afm_length\a_count{#1} \out_line{\string\setint{verticalstem}{\the\a_count}}} \afm_def{IsFixedPitch}(#1){ \if\first_char#1=f \else\out_line{\string\setint{monowidth}{1}} \fi } \afm_def{FontName}(#1~){ \record_transform{\raw_font_name} {\string\fromafm{\source_font_name}{#1}}{}\iftrue } \afm_def{KP}(#1~#2~#3~#4){ \if\first_char#1=.\else \if\first_char#2=.\else \afm_length\a_count{#3} \ifnum \a_count>\minimum_kern \afm_write_setkern{#1}{#2}{\the\a_count} \else\ifnum \a_count<-\minimum_kern \afm_write_setkern{#1}{#2}{\the\a_count} \fi\fi \fi\fi } \afm_let{KPX}{KP} \def\afm_write_setkern#1#2#3{\out_line{\string\setkern{#1}{#2}{#3}}} \afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} \afm_def{CH}(<#1>~;#2){\uppercase{\init_afm{"#1}}\do_list[#2]\afm_char} \afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char} \newcount\char_slot \newcount\char_x_width \newcount\x_width \newcount\bbox_llx \newcount\bbox_lly \newcount\bbox_urx \newcount\bbox_ury \let\char_name=\empty_command \def\init_afm#1{ \char_slot=#1\x_relax \x_width=\char_x_width \bbox_llx=0 \bbox_lly=0 \bbox_urx=0 \bbox_ury=0 \let\char_name=\empty_command } \def\afm_char{ \eval_expr{ \italcorr_expression\x_width\bbox_llx\bbox_urx\bbox_lly\bbox_ury } \out_line{ \ifnum -1<\char_slot \string\setrawglyph \else \string\setnotglyph \fi {\char_name} {\raw_font_name} {10pt} {\the\char_slot} {\the\x_width} {\the\bbox_ury} {\number -\bbox_lly} {\the\result} } } \def\init_cc#1{% \out_line{\string\setglyph{#1}} \def\char_name{#1} } \def\cc_char{% \out_lline{\string\samesize{\char_name-not}} \out_line{\string\endsetglyph} } \def\uprightitalcorr#1#2#3#4#5{0} \def\slanteditalcorr#1#2#3#4#5{\max{\sub{#3}{#1}}{0}} \def\calculate_it_slant#1{ \edef\theangle{#1} \CalculateTan{\theangle} \a_dimen=-\one_thousand sp \a_dimen=\UseTan{\theangle}\a_dimen \a_count=\a_dimen \out_line{\string\setint{italicslant}{\the\a_count}} \x_resetint{italicslant}{\a_count} \ifnum 0<\a_count \let\italcorr_expression=\slanteditalcorr \else \let\italcorr_expression=\uprightitalcorr \fi } \def\do_list[~#1~#2;~#3]{ \csname~list-#1\endcsname\gobble_one_semi#2; \ifx\x_relax#3\x_relax\expandafter\gobble_one \else\expandafter\identity_one\fi {\do_list[~#3]} } \def\gobble_one_semi#1;{} \def\list_def#1(#2)#3{\x_cs\def{list-#1}\gobble_one_semi#2~;{#3}} \list_def{W}(#1~#2){\afm_length\x_width{#1}} \list_def{WX}(#1){\afm_length\x_width{#1}} \list_def{WY}(#1){} \list_def{N}(#1){\def\char_name{#1}} \list_def{B}(#1~#2~#3~#4){ \afm_length\bbox_llx{#1} \afm_length\bbox_lly{#2} \afm_length\bbox_urx{#3} \afm_length\bbox_ury{#4} } \list_def{PCC}(#1~#2~#3){ \afm_length\a_count{#2} \afm_length\b_count{#3} \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} } \def\definealias#1#2#3{ \expandafter\def \csname GN-#1 \expandafter\endcsname \expandafter{ \csname g-#2 \expandafter\endcsname \csname i-#3\endcsname} } \def\glyph_alias#1{ \expandafter\expandafter \expandafter\glyph_alias_i \csname GN-#1\endcsname } \def\glyph_alias_i#1#2{ \expandafter\gobble_three \string#1 } \let\charnameprefix\empty \def\charnamealias#1{ \if_defined{GN-\charnameprefix#1}\then \glyph_alias{\charnameprefix#1} \else\if_defined{GN-#1}\then \glyph_alias{#1} \else #1 \fi\fi } \def\alias_incr#1{ \expandafter\expandafter \expandafter\alias_incr_i \csname GN-#1\endcsname } \def\alias_incr_i#1#2{ \ifx#2\x_relax \mathchardef#2=\@ne \else \a_count=#2 \advance\a_count\@ne \mathchardef#2=\a_count \fi } \def\alias_char_name#1{ \if_defined{GN-\charnameprefix#1}\then \edef\char_name{ \string\aliased{#1}{\glyph_alias{\charnameprefix#1}} } \alias_incr{\charnameprefix#1} \else\if_defined{GN-#1}\then \edef\char_name{ \string\aliased{#1}{\glyph_alias{#1}} } \alias_incr{#1} \else \edef\char_name{#1} \fi\fi } \def\autoaliasafm{ \begingroup \list_def{N}(##1){\alias_char_name{##1}} \def\afm_write_setkern##1##2##3{ \out_line{ \string\setkern{\charnamealias{##1}}{\charnamealias{##2}}{##3} } } \def\init_cc##1{% \edef\char_name{\charnamealias{##1}} \out_line{\string\setglyph{\char_name}} } \list_def{PCC}(##1~##2~##3){ \afm_length\a_count{##2} \afm_length\b_count{##3} \out_lline{\string\glyphpcc {\charnamealias{##1}}{\the\a_count}{\the\b_count}} } } \def\endautoaliasafm{\endgroup} \def\generalpltomtx#1#2#3#4{{ \let\setsomething_global=\x_relax \let\setfontdimen=\pl_setfontdimen \if _#4_ \else \def\do_slot{\x_cs\let{name-\the\slot_number}\slot_name} \def\do_boundary{\x_cs\let{name-BOUNDARYCHAR}\slot_name} \inputetx{#4} \let\CODINGSCHEME=\ignore_parens \fi \pl_to_mtx{#1}{#2}{#3}{\string\generalpltomtx{#1}{#2}{#3}{#4}} }} \def\pltomtx#1#2{\generalpltomtx{#1}{#2}{pl}{}} \def\pl_to_mtx#1#2#3#4{ \edef\raw_font_name{#1} \open_out{\temp_prefix#2.mtx} \out_line{\percent_char~Filename:~#2.mtx} \out_line{\percent_char~Created~by:~tex~\jobname} \out_line{\percent_char~Created~using:~#4} \out_line{} \out_line{\percent_char~This~file~contains~the~ information~of~#1.#3~in~a~form} \out_line{\percent_char~more~easily~read~by~TeX.~ It~is~used~by~the~fontinst~package.} \out_line{} \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} \out_line{} \out_line{\string\relax} \out_line{\string\metrics} \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} \lowercase{ \record_transform{#2}{ \string\from#3 \x_cs\ifx{from#3}\frompl {#1} \fi }{}\iftrue } \out_line{} \catcode`\(=0 \catcode`\)=9 \let\/=\ignore_parens \let\do_pl_glyph=\x_relax \primitiveinput #1.#3\x_relax \do_pl_glyph \out_line{} \ifisint{\percent_char boundarychar}\then \f_count=\int{\percent_char boundarychar} \x_cs\ifx{name-\the\f_count}\x_relax \else \out_line{\string\setstr{rightboundary} {\csname name-\the\f_count\endcsname} } \out_line{} \fi \fi \out_line{\endmetrics_text} \close_out{Metrics} } \def\ignore_parens{\bgroup\catcode`(=1 \catcode`)=2 \x_relax \expandafter\expandafter\expandafter\gobble_parens \iftrue\expandafter{\else}\fi} \def\gobble_parens#1{\egroup} \def\pl_real#1{\pl_realer(#1000)} \def\pl_realer(#1.#2#3#4#5){#1#2#3#4} \def\pl_rounded_real(#1.#2#3#4#5){ \global\result=#1#2#3#4\relax \ifnum \first_char#5= >4 \global\advance \result \if - \first_char#1= \m@ne \else \@ne \fi \fi } \def\pl_int#1#2{ \ifx#1C `#2 \else\ifx#1D #2 \else\ifx#1O '#2 \else\ifx#1H "#2 \else -1\errmessage{Unknown~PL~number~prefix~`#1'} \fi\fi\fi\fi } \let\FAMILY=\ignore_parens \let\FACE=\ignore_parens \let\CHECKSUM=\ignore_parens \def\HEADER~#1~#2~#3~#4~{} \def\SEVENBITSAFEFLAG~#1~{} \let\COMMENT=\ignore_parens \let\LIG=\ignore_parens \let\NEXTLARGER=\ignore_parens \let\VARCHAR=\ignore_parens \let\VTITLE=\ignore_parens \let\MAPFONT=\ignore_parens \let\MAP=\ignore_parens \def\CODINGSCHEME{\bgroup\catcode`\)=12\x_relax\CODINGSCHEME_cont} \def\CODINGSCHEME_cont#1){ \egroup \if_undefined{enc-#1}\then \errhelp{The~encoding~for~`#1'~has~not~been~declared.^^J You~should~declare~it~with~ \string\declareencoding{#1}{ETXFILE}.^^J Press~~to~carry~on~with~fingers~crossed,^^J or~X~~to~exit.} \errmessage{Undeclared~encoding~`#1'} \else \def\do_slot{\x_cs\let{name-\the\slot_number}\slot_name} \def\do_boundary{\x_cs\let{name-BOUNDARYCHAR}\slot_name} \catcode`\(=12 \catcode`\)=12 \x_cs\inputetx{enc-#1}\x_relax \catcode`\(=0 \catcode`\)=9 \fi } \def\DESIGNSIZE~#1~#2~{ \a_dimen=#2pt \out_line{\string\setdim{designsize}{\the\a_dimen}} } \def\DESIGNUNITS~#1~#2~{ \b_dimen=#2pt\x_relax \ifdim 1pt=\b_dimen \else \fontinsterror{PL-to-MTX}{Nondefault~unit~used~in~PL~file} {You~may~continue,~but~the~metrics~for~this~font~will~be~wrong.} \fi \out_line{\string\setdim{designunits}{\the\b_dimen}} } \def\BOUNDARYCHAR~#1~#2~{ \x_setint{\percent_char boundarychar}{\pl_int{#1}{#2}} } \def\pl_setfontdimen#1#2{\x_cs\def{fdimen-#1}{#2}} \def\PARAMETER~#1~#2~R~#3~{ \f_count=\pl_int{#1}{#2}\x_relax \if_defined{fdimen-\the\f_count}\then \pl_rounded_real(#3 0000) \out_line{\string\setint{\csname fdimen-\the\f_count\endcsname} {\the\result}} \fi } \let\FONTDIMEN=\x_relax \def\SLANT{\PARAMETER D~1~} \pl_setfontdimen{1}{italicslant} \def\SPACE{\PARAMETER D~2~} \pl_setfontdimen{2}{interword} \def\STRETCH{\PARAMETER D~3~} \pl_setfontdimen{3}{stretchword} \def\SHRINK{\PARAMETER D~4~} \pl_setfontdimen{4}{shrinkword} \def\XHEIGHT{\PARAMETER D~5~} \pl_setfontdimen{5}{xheight} \def\QUAD{\PARAMETER D~6~} \pl_setfontdimen{6}{quad} \def\EXTRASPACE{\PARAMETER D~7~} \pl_setfontdimen{7}{extraspace} \def\NUM#1~#2~#3~{ \ifcase #1\or \PARAMETER D~8~#2~#3~ \or \PARAMETER D~9~#2~#3~ \or \PARAMETER D~10~#2~#3~ \fi } \def\DENOM#1~#2~#3~{ \ifcase #1\or \PARAMETER D~11~#2~#3~ \or \PARAMETER D~12~#2~#3~ \fi } \def\SUP#1~#2~#3~{ \ifcase #1\or \PARAMETER D~13~#2~#3~ \or \PARAMETER D~14~#2~#3~ \or \PARAMETER D~15~#2~#3~ \fi } \def\SUB#1~#2~#3~{ \ifcase #1\or \PARAMETER D~16~#2~#3~ \or \PARAMETER D~17~#2~#3~ \fi } \def\SUPDROP{\PARAMETER D~18~} \def\SUBDROP{\PARAMETER D~19~} \def\AXISHEIGHT{\PARAMETER D~22~} \def\DELIM#1~#2~#3~{ \ifcase #1\or \PARAMETER D~20~#2~#3~ \or \PARAMETER D~21~#2~#3~ \fi } \def\DEFAULTRULETHICKNESS{\PARAMETER D~8~} \def\BIGOPSPACING#1~#2~#3~{ \ifcase #1\or \PARAMETER D~9~#2~#3~ \or \PARAMETER D~10~#2~#3~ \or \PARAMETER D~11~#2~#3~ \or \PARAMETER D~12~#2~#3~ \or \PARAMETER D~13~#2~#3~ \fi } \def\LABEL~#1{\ifx #1B \expandafter\LABEL_boundarychar \else \expandafter\LABEL_slot \expandafter#1 \fi } \def\LABEL_slot #1~#2~{ \f_count=\pl_int{#1}{#2} \edef\a_macro{\a_macro \x_cs\do_if_defined{name-\the\f_count} } } \def\LABEL_boundarychar OUNDARYCHAR{ \edef\a_macro{\a_macro \x_cs\do_if_defined{name-BOUNDARYCHAR} } } \def\do_if_defined#1{\ifx #1\x_relax \else \do{#1} \fi} \def\LIGTABLE{\let\do=\never_do\let\a_macro\empty_command} \def\STOP{\let\a_macro\empty_command} \def\SKIP~#1~#2~{\immediate\write16{Warning:~SKIP~instruction~ignored.}} \def\KRN~#1~#2~R~#3~{ \pl_rounded_real(#3 0000) \edef\do{\noexpand\write_pl_krn{\pl_int{#1}{#2}}{\the\result}} \a_macro \let\do=\never_do } \def\write_pl_krn#1#2#3{ \f_count=#1\x_relax \x_cs\ifx{name-\the\f_count}\x_relax \else \out_line{\string\setkern{#3} {\csname name-\the\f_count\endcsname}{#2} } \fi } \def\CHARWD~R~#1~{\pl_rounded_real(#1 0000) \b_count=\result} \def\CHARHT~R~#1~{\pl_rounded_real(#1 0000) \c_count=\result} \def\CHARDP~R~#1~{\pl_rounded_real(#1 0000) \d_count=\result} \def\CHARIC~R~#1~{\pl_rounded_real(#1 0000) \e_count=\result} \def\CHARACTER~#1~#2~{ \do_pl_glyph \a_count=\pl_int{#1}{#2} \b_count=0 \c_count=0 \d_count=0 \e_count=0 \let\do_pl_glyph=\write_pl_glyph } \def\write_pl_glyph{ \x_cs\ifx{name-\the\a_count}\x_relax\else \out_line{\string\setrawglyph {\csname~name-\the\a_count\endcsname} {\raw_font_name} {\the\a_dimen} {\the\a_count} {\the\b_count} {\the\c_count} {\the\d_count} {\the\e_count}} \fi } \def\mtxtopl#1#2{{ \let\setsomething_global=\x_relax \open_out{#2.pl} \top_of_pl_hook \out_line{(COMMENT~raw~font~#2~created~by~fontinst~ v\fontinstversion)} \out_line{} \out_line{(COMMENT~Filename:~#2.pl)} \out_line{(COMMENT~Created~by:~tex~\jobname)} \out_line{(COMMENT~Created~using:~\string\mtxtopl{#1}{#2})} \out_line{} \out_line{(COMMENT~This~file~can~be~turned~into~ a~ligless~TeX~font~with)} \out_line{(COMMENT~pltotf~#2.pl~#2.tfm)} \out_line{} \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)} \out_line{} \out_line{(DESIGNSIZE~R~10.0)} \out_line{} \let\setglyph=\iffalse \let\endsetglyph=\fi \let\setkern=\gobble_three \let\setscaledrawglyph=\first_pl_raw_glyph \def\setscalednotglyph##1##2##3##4##5##6##7##8##9{} \inputmtx{#1} \out_line{} \out_line{(COMMENT~END~OF~FILE~#2.pl)} \close_out{Raw~font} }} \def\first_pl_raw_glyph#1#2#3#4{ \out_line{(DESIGNUNITS~R~\make_factor{#4})} \let\setscaledrawglyph=\pl_raw_glyph \pl_raw_glyph{#1}{#2}{#3}{#4} } \def\pl_raw_glyph#1#2#3#4#5#6#7#8#9{ \out_line{(CHARACTER~D~\number#5~\space(COMMENT~#1)} \out_lline{(CHARWD~R~\make_factor{#6})} \out_lline{(CHARHT~R~\make_factor{#7})} \out_lline{(CHARDP~R~\make_factor{#8})} \out_lline{(CHARIC~R~\make_factor{#9})} \out_lline{)} } \def\transformfont#1#2{{ \let\setsomething_global=\x_relax \unsetstr{afm-name} \unsetstr{etx-name} \x_resetint{x-scale}{\one_thousand} \x_resetint{y-scale}{\one_thousand} \x_resetint{slant-scale}{0} #2 \ifisstr{afm-name}\then \mtxtomtx{\str{afm-name}}{#1} \mtxtopl{#1}{#1} \else \fontinsterror{Transformfont}{ Failed~to~make~transformed~font~#1;\messagebreak source~font~metrics~file~not~found }\error_help_a \fi }} \def\fromafm#1{ \if_file_exists{#1.afm}\then \x_setstr{afm-name}{#1} \afmtomtx{#1}{#1} \mtxtopl{#1}{#1} \fi } \def\frommtx#1{ \if_file_exists{#1.mtx}\then \x_setstr{afm-name}{#1} \fi } \def\frompl#1{ \if_file_exists{#1.pl}\then \x_setstr{afm-name}{#1} \generalpltomtx{#1}{#1}{pl}{} \fi } \def\fromplgivenetx#1#2{ \if_file_exists{#1.pl}\then \x_setstr{afm-name}{#1} \generalpltomtx{#1}{#1}{pl}{#2} \fi } \def\fromany#1{ \x_cs\edef{s-afm-name}{#1} \if_file_exists{#1.mtx}\then\else \if_file_exists{#1.pl}\then \generalpltomtx{#1}{#1}{pl}{} \else \if_file_exists{#1.afm}\then \afmtomtx{#1}{#1} \mtxtopl{#1}{#1} \else \if_file_exists{#1.vpl}\then \generalpltomtx{#1}{#1}{vpl}{} \else \unsetstr{afm-name} \fi\fi\fi\fi } \def\scalefont#1#2{ \eval_expr_to\d_count{#1} \x_resetint{x-scale}{\scale{\d_count}{\int{x-scale}}} \x_resetint{y-scale}{\scale{\d_count}{\int{y-scale}}} \x_resetint{slant-scale}{\scale{\d_count}{\int{slant-scale}}} #2 } \def\xscalefont#1#2{ \x_resetint{x-scale}{\scale{#1}{\int{x-scale}}} #2 } \def\yscalefont#1#2{ \eval_expr_to\d_count{#1} \x_resetint{y-scale}{\scale{\d_count}{\int{y-scale}}} \x_resetint{slant-scale}{\scale{\d_count}{\int{slant-scale}}} #2 } \def\slantfont#1#2{ \x_resetint{slant-scale}{ \add{\scale{#1}{\int{x-scale}}}{\int{slant-scale}} } #2 } \def\reencodefont#1#2{ #2 \resetstr{etx-name}{#1} } \def\mtxtomtx#1#2{{ \let\a_macro=\empty_command \_a_true \ifnum \int{x-scale}=\int{y-scale} \ifnum \int{slant-scale}=\z@ \_a_false \fi \fi \if_a_ \a_count=\int{x-scale} \l_inv_scale\a_count{\int{y-scale}} \b_count=\int{slant-scale} \l_inv_scale\b_count{\int{y-scale}} \edef\a_macro{\a_macro \string\transformfont{\the\a_count}{\the\b_count} } \fi \open_out{\temp_prefix#2.mtx} \edef\raw_font_name{#2} \out_line{\percent_char~Filename:~#2.mtx} \out_line{\percent_char~Created~by:~tex~\jobname} \out_line{\percent_char~Created~using:~\string\mtxtomtx{#1}{#2}} \out_line{} \out_line{\percent_char~This~file~is~used~by~the~fontinst~package.} \out_line{} \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} \out_line{} \out_line{\string\relax} \out_line{\string\metrics} \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} \ifisstr{etx-name}\then \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} \def\declarepsencoding##1##2##3{ \a_toks={{##1}{##2}{##3}} \out_line{\string\providepsencoding\the\a_toks} \ifnum \transform_record_file=\closed_stream \else \pout_line\transform_record_file {\string\providepsencoding\the\a_toks} \fi } \directfalse \inputetx{\str{etx-name}} \edef\a_macro{\a_macro\string\reencodefont{\str{etx-name}}} \fi \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue \out_line{} \mtxtomtx_redefinitions \inputmtx{#1} \out_line{} \out_line{\endmetrics_text} \close_out{Transformed~metrics} }} \def\mtxtomtx_redefinitions{ \let\setint=\mtxtomtx_setint \let\setdim=\mtxtomtx_setdim \let\setstr=\mtxtomtx_setstr \let\setscaledrawglyph=\mtxtomtx_setscaledrawglyph \let\setscalednotglyph=\mtxtomtx_setscaledrawglyph \let\setkern=\mtxtomtx_setkern \let\setglyph=\mtxtomtx_setglyph \let\glyphpcc=\mtxtomtx_glyphpcc \let\samesize=\mtxtomtx_samesize \let\endsetglyph=\mtxtomtx_endsetglyph \def\aliased{\string\aliased} } \let\aliased=\second_of_two \def\mtxtomtx_setint#1#2{ \def\a_macro{#1} \ifx \a_macro\italicslant_name \eval_expr{#2} \global\multiply \result \int{x-scale} \a_count=\int{slant-scale} \multiply \a_count \one_thousand \advance \a_count \result \divide \a_count \int{y-scale}\x_relax \else \def\do##1{ \def\b_macro{##1} \ifx \a_macro\b_macro \expandafter\if_false \fi } \gobble_one\iftrue \width_ints_list \if_true \eval_expr_to\a_count{\scale{#2}{\int{y-scale}}} \else \eval_expr_to\a_count{\scale{#2}{\int{x-scale}}} \fi \fi \out_line{\string\setint{#1}{\the\a_count}} } \def\italicslant_name{italicslant} \def\width_ints_list{ \do{interword}\do{stretchword}\do{shrinkword}\do{quad} \do{extraspace}\do{digitwidth}\do{verticalstem} } \def\mtxtomtx_setdim#1#2{ \out_line{\string\setdim{#1}{#2}} } \def\mtxtomtx_setstr#1#2{ \out_line{\string\setstr{#1}{#2}} } \def\mtxtomtx_setscaledrawglyph#1#2#3#4#5#6#7#8#9{ \eval_expr_to\a_count{\scale{#6}{\int{x-scale}}} \eval_expr_to\b_count{\scale{#7}{\int{y-scale}}} \eval_expr_to\c_count{\scale{#8}{\int{y-scale}}} \eval_expr_to\d_count{#9} \eval_expr{#7} \multiply \d_count \int{x-scale} \global\multiply \result \int{slant-scale} \global\advance \result \d_count \rounded_thousandths \d_count=\result \eval_expr{\scale{#4}{\int{y-scale}}} \ifisstr{etx-name}\then \bgroup \let\aliased=\first_of_two \if_undefined{slots-#1}\then \egroup \e_count=\m@ne \else \expandafter\egroup \expandafter\e_count \csname slots-#1\endcsname \fi \else \e_count=#5 \fi \out_line{ \ifnum \e_count>\m@ne \string\setscaledrawglyph \else \string\setscalednotglyph \fi {#1}{\raw_font_name}{#3}{\the\result}{\the\e_count} {\the\a_count}{\the\b_count}{\the\c_count}{\the\d_count} } } \def\mtxtomtx_setkern#1#2#3{ \eval_expr{\scale{\int{x-scale}}{#3}} \out_line{\string\setkern{#1}{#2}{\the\result}} } \def\mtxtomtx_setglyph#1{\out_line{\string\setglyph{#1}}} \def\mtxtomtx_samesize#1{\out_lline{\string\samesize{#1}}} \def\mtxtomtx_endsetglyph{\out_line{\string\endsetglyph}} \def\mtxtomtx_glyphpcc#1#2#3{ \eval_expr_to\b_count{\scale{\int{y-scale}}{#3}} \eval_expr_to\a_count{#2} \eval_expr{#3} \multiply \a_count \int{x-scale} \global\multiply \result \int{slant-scale} \global\advance \result \a_count \rounded_thousandths \out_lline{\string\glyphpcc{#1}{\the\result}{\the\b_count}} } \def\reglyphfonts{ \begingroup \let\setsomething_global=\x_relax \x_setint{renameweight}{1} \x_setint{killweight}{-10} \setcommand\iftokeep##1\then{\ifnum -1<##1} } \def\endreglyphfonts{\endgroup} \def\offmtxcommand#1{ \x_cs\offcommand{reglyph_\expandafter\gobble_one\string#1} } \def\onmtxcommand#1{ \x_cs\oncommand{reglyph_\expandafter\gobble_one\string#1} } \begingroup \catcode`\-=11 \gdef\renameglyph#1#2{ \x_cs\edef{slots-#2}{ \noexpand\rename_glyph{#1}\noexpand\i-renameweight } } \endgroup \def\renameglyphweighted#1#2#3{ \eval_expr{#3} \x_cs\edef{slots-#2}{\noexpand\rename_glyph{#1}{\the\result}} } \begingroup \catcode`\-=11 \gdef\killglyph#1{ \x_cs\def{slots-#1}{\kill_glyph\i-killweight} } \endgroup \def\killglyphweighted#1#2{ \eval_expr{#2} \x_cs\edef{slots-#1}{\noexpand\kill_glyph{\the\result}} } \def\reglyphfont#1#2{ \fromany{#2} \ifisstr{afm-name}\then \reglyph_font{#1}{#2} \else \fontinsterror{Reglyph}{Could~not~find~font~metrics~for~#2.} \error_help_a \fi } \def\reglyph_font#1#2{{ \open_out{\temp_prefix#1.mtx} \out_line{\percent_char~Filename:~#1.mtx} \out_line{\percent_char~Created~by:~tex~\jobname} \out_line{\percent_char~Created~using:~\string\reglyphfont{#1}{#2}} \out_line{} \out_line{\percent_char~This~file~is~used~by~the~fontinst~package.} \out_line{} \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} \out_line{} \out_line{\string\relax} \out_line{\string\metrics} \out_line{} \out_line{\string\needsfontinstversion{\fontinstversion}} \out_line{} \record_transform{#1}{\string\frommtx{#2}}{\string\reglyphfont} \iftrue \out_line{} \reglyph_redefinitions \inputmtx{#2} \out_line{} \out_line{\endmetrics_text} \close_out{Reglyphed~metrics} }} \def\reglyph_redefinitions{ \let\setint=\reglyph_setint \let\setdim=\reglyph_setdim \let\setstr=\reglyph_setstr \let\setscaledrawglyph=\reglyph_setscaledrawglyph \let\setscalednotglyph=\reglyph_setscaledrawglyph \let\setkern=\reglyph_setkern \let\setglyph=\reglyph_setglyph \let\glyphpcc=\reglyph_glyphpcc \let\samesize=\reglyph_samesize \let\endsetglyph=\reglyph_endsetglyph } \def\reglyph_setint#1#2{\out_line{\string\setint{#1}{#2}}} \def\reglyph_setdim#1#2{\out_line{\string\setdim{#1}{#2}}} \def\reglyph_setstr#1#2{\out_line{\string\setstr{#1}{#2}}} \newcount\command_survivance \def\rename_glyph#1{\def\glyphname{#1}\kill_glyph} \def\kill_glyph#1{\advance \command_survivance #1\x_relax} \def\reglyph_setscaledrawglyph#1#2#3#4#5#6#7#8#9{ \command_survivance=0 \def\glyphname{#1} \csname slots-#1\endcsname \iftokeep\command_survivance\then \out_line{ \ifnum #5<\z@ \string\setscalednotglyph \else \string\setscaledrawglyph \fi {\glyphname}{#2}{#3}{\number#4}{#5}{#6}{#7}{#8}{#9} } \fi } \def\reglyph_setkern#1#2#3{ \command_survivance=0 \def\glyphname{#1} \csname slots-#1\endcsname \let\a_macro=\glyphname \def\glyphname{#2} \csname slots-#2\endcsname \iftokeep\command_survivance\then \out_line{\string\setkern{\a_macro}{\glyphname}{#3}} \fi } \def\reglyph_setglyph#1{ \command_survivance=0 \def\glyphname{#1} \csname slots-#1\endcsname \edef\a_macro{\noexpand\out_line{\string\setglyph{\glyphname}}} \a_toks=\expandafter{\a_macro} } \x_cs\def{off-\string\reglyph_setglyph}#1{\gobble_glyph} \def\reglyph_glyphpcc#1#2#3{ \def\glyphname{#1} \csname slots-#1\endcsname \edef\a_macro{\noexpand\out_lline{ \string\glyphpcc{\glyphname}{#2}{#3} }} \a_toks=\expandafter{\the\expandafter\a_toks \a_macro} } \def\reglyph_samesize#1{ \def\glyphname{#1} \csname slots-#1\endcsname \edef\a_macro{\noexpand\out_lline{ \string\samesize{\glyphname} }} \a_toks=\expandafter{\the\expandafter\a_toks \a_macro} } \def\reglyph_endsetglyph{ \iftokeep\command_survivance\then \the\a_toks \out_line{\string\endsetglyph} \fi \a_toks={} } %%% From file: filtfam.dtx \def\latinfamily#1#2{{ \edef\a_macro{#1} \expandafter\parse_family\a_macro \empty_command\empty_command\end_parse_family \installfonts \if_file_exists{\raw_encoding.mtx}\then \installfamily{\raw_encoding}{\latex_family}{#2} \fi \installfamily{OT1}{\latex_family}{#2} \installfamily{T1}{\latex_family}{#2} \installfamily{TS1}{\latex_family}{#2} \latin_weights \endinstallfonts }} \def\parse_family #1#2#3#4#5\end_parse_family{ \gdef\font_family{#1#2#3} \gdef\font_variant{#4#5} \gdef\raw_variant{#4#5} \gdef\latex_family{#1#2#3#4#5} \_expert_false \_oldstyle_false \ifx#4x \_expert_true \gdef\raw_variant{#5} \gdef\font_variant{#5} %\setcommand\digit##1{##1} \else\ifx#4j \_expert_true \_oldstyle_true \gdef\raw_variant{#5} \gdef\font_variant{#5} %\setcommand\digit##1{##1oldstyle} \else\ifx#49 \gdef\latex_family{#1#2#3j#5} \_expert_true \_oldstyle_true \gdef\raw_variant{#5} \gdef\font_variant{#5} %\setcommand\digit##1{##1oldstyle} \else \_expert_false \_oldstyle_false %\setcommand\digit##1{##1} \fi\fi\fi \if_oldstyle_ \immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(oldstyle)} \else\if_expert_ \immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(expert)} \else \immediate\write16{INFO>~parse~family~<#1#2#3><#4#5>} \fi\fi } \newif\if_expert_ \newif\if_oldstyle_ \def\latin_weight#1#2{ \gdef\font_weight{#1}% \gdef\latex_weight{#2}% \latin_widths } \def\latin_width#1#2{ \gdef\font_width{#1} \gdef\latex_width{#2} \latin_shapes } \def\latin_shape#1#2#3#4#5{ \gdef\font_shape{#1} \gdef\raw_shape{#2} \gdef\encoding_shape{#3} \if_oldstyle_ \gdef\encoding_shape{#3\oldstyle_shape} \fi \gdef\latex_shape{#4} \gdef\encoding_switches{#5} \immediate\write16{ INFO>~to~make~LaTeX~font~shape~<\latex_family, \latex_weight,\latex_shape,\latex_width>~seek~ \font_family\font_weight\raw_shape \raw_variant\raw_encoding\font_width.mtx} \csname fake_width_\font_width\endcsname \csname fake_shape_\raw_shape\endcsname \if_file_exists{ \font_family\font_weight\raw_shape \raw_variant\raw_encoding\font_width.mtx }\then \latin_encodings \fi } \def\fake_shape_{ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width.afm }\then \fake_shape_raw_encoding \fi \if_expert_ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \expert_encoding\font_width.afm }\then \fake_shape_expert_encoding \fi \fi \if_oldstyle_ \gdef\oldstyle_variant{\oldstyle_shape} \if_file_exists{ \font_family\font_weight\raw_shape\oldstyle_variant \adobe_encoding\font_width.afm }\then \fake_shape_oldstyle_encoding \else \gdef\oldstyle_variant{\caps_shape} \if_file_exists{ \font_family\font_weight\raw_shape\oldstyle_variant \adobe_encoding\font_width.afm }\then \fake_shape_oldstyle_encoding \fi \fi \fi } \def\fake_shape_raw_encoding{ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width>~from~ <\font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width> } \transformfont{ \font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width }{ \reencodefont{\raw_encoding}{ \fromafm{ \font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width } } } \if_file_exists{ \raw_encoding.mtx }\then \immediate\write16{ INFO>~run~\string\installrawfont\space <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width> <\font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width, \raw_encoding> <\raw_encoding> <\raw_encoding> <\latex_family> <\latex_weight\latex_width> <\latex_shape>} \installrawfont{ \font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width }{ \font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width, \raw_encoding }{ \raw_encoding }{ \raw_encoding }{ \latex_family }{ \latex_weight\latex_width }{ \latex_shape }{} \fi \fi } \def\fake_shape_expert_encoding{ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \expert_encoding\font_width.mtx }\then % no action required \else \fromafm{ \font_family\font_weight\raw_shape\raw_variant \expert_encoding\font_width } \fi } \def\fake_shape_oldstyle_encoding{ \if_file_exists{ \font_family\font_weight\raw_shape\oldstyle_variant \adobe_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\raw_shape\oldstyle_variant \raw_encoding\font_width>~from~ <\font_family\font_weight\raw_shape\oldstyle_variant \adobe_encoding\font_width> } \transformfont{ \font_family\font_weight\raw_shape\oldstyle_variant \raw_encoding\font_width }{ \reencodefont{\raw_encoding}{ \fromafm{ \font_family\font_weight\raw_shape\oldstyle_variant \adobe_encoding\font_width } } } \fi } \def\fake_shape_c{ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width.afm }\then \fake_shape_ \else % If real smallcaps font doesn't exist, fake it from the roman. \gdef\raw_shape{} \if_oldstyle_ \gdef\encoding_shape{cj} \else \gdef\encoding_shape{c} \fi \fake_shape_ \fi } \def\fake_shape_o{ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width.afm }\then \fake_shape_ \else \fake_shape_o_raw_encoding \if_expert_ \fake_shape_o_expert_encoding \fi \if_oldstyle_ \fake_shape_o_oldstyle_encoding \fi \fi } \def\fake_shape_o_raw_encoding{ \if_file_exists{ \font_family\font_weight\raw_variant \raw_encoding\font_width.mtx }\then \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width>~from~ <\font_family\font_weight\raw_variant \raw_encoding\font_width>~(faking~oblique) } %%% WARNING: famtool.pl relies on this message format!!! \immediate\write16{ Faking~oblique~font~ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width \space from~ \font_family\font_weight\raw_variant \raw_encoding\font_width } \transformfont{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width }{ \slantfont{\SlantAmount}{ \frommtx{ \font_family\font_weight\raw_variant \raw_encoding\font_width } } } \if_file_exists{ \raw_encoding.mtx }\then \immediate\write16{ INFO>~run~\string\installrawfont\space <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width> <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width, \raw_encoding> <\raw_encoding> <\raw_encoding> <\latex_family> <\latex_weight\latex_width> <\latex_shape>} \installrawfont{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width }{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width, \raw_encoding }{ \raw_encoding }{ \raw_encoding }{ \latex_family }{ \latex_weight\latex_width }{ \latex_shape }{} \fi \fi \fi } \def\fake_shape_o_expert_encoding{ \if_file_exists{ \font_family\font_weight\raw_variant \expert_encoding\font_width.mtx }\then \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width>~from~ <\font_family\font_weight\raw_variant \expert_encoding\font_width>~(faking~oblique) } %%% WARNING: famtool.pl relies on this message format!!! \immediate\write16{ Faking~oblique~font~ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width \space from~ \font_family\font_weight\raw_variant \expert_encoding\font_width } \transformfont{ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width }{ \slantfont{\SlantAmount}{ \frommtx{ \font_family\font_weight\raw_variant \expert_encoding\font_width } } } \fi \fi } \def\fake_shape_o_oldstyle_encoding{ \if_file_exists{ \font_family\font_weight\oldstyle_variant \raw_encoding\font_width.mtx }\then \if_file_exists{ \font_family\font_weight\font_shape\oldstyle_variant \raw_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\font_shape\oldstyle_variant \raw_encoding\font_width>~from~ <\font_family\font_weight\oldstyle_variant \raw_encoding\font_width>~(faking~oblique) } %%% WARNING: famtool.pl relies on this message format!!! \immediate\write16{ Faking~oblique~font~ \font_family\font_weight\font_shape\oldstyle_variant \raw_encoding\font_width \space from~ \font_family\font_weight\oldstyle_variant \raw_encoding\font_width } \transformfont{ \font_family\font_weight\font_shape\oldstyle_variant \raw_encoding\font_width }{ \slantfont{\SlantAmount}{ \frommtx{ \font_family\font_weight\oldstyle_variant \raw_encoding\font_width } } } \fi \fi } \let\fake_shape_i\fake_shape_ % We must do this again! \newif\if_fake_narrow_ \_fake_narrow_false \def\fakenarrow#1{ \_fake_narrow_true \gdef\fake_narrow_width{#1} } \def\fake_width_{} \def\fake_width_c{} \def\fake_width_n{ \if_fake_narrow_ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \adobe_encoding\font_width.afm }\then % no action required \else \fake_width_n_raw_encoding \if_expert_ \fake_width_n_expert_encoding \fi \fi \fi } \def\fake_width_n_raw_encoding{ \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \raw_encoding.mtx }\then \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width>~from~ <\font_family\font_weight\font_shape\raw_variant \raw_encoding>~(faking~narrow) } %%% WARNING: famtool.pl relies on this message format!!! \immediate\write16{ Faking~narrow~font~ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width \space from~ \font_family\font_weight\font_shape\raw_variant \raw_encoding } \transformfont{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width }{ \xscalefont{\fake_narrow_width}{ \frommtx{ \font_family\font_weight\font_shape\raw_variant \raw_encoding } } } \if_file_exists{ \raw_encoding.mtx }\then \immediate\write16{ INFO>~run~\string\installrawfont\space <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width> <\font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width, \raw_encoding> <\raw_encoding> <\raw_encoding> <\latex_family> <\latex_weight\latex_width> <\latex_shape>} \installrawfont{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width }{ \font_family\font_weight\font_shape\raw_variant \raw_encoding\font_width, \raw_encoding }{ \raw_encoding }{ \raw_encoding }{ \latex_family }{ \latex_weight\latex_width }{ \latex_shape }{} \fi \fi \fi } \def\fake_width_n_expert_encoding{ \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \expert_encoding.mtx }\then \if_file_exists{ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width.mtx }\then % no action required \else \immediate\write16{ INFO>~run~\string\transformfont\space\space <\font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width>~from~ <\font_family\font_weight\font_shape\raw_variant \expert_encoding>~(faking~narrow) } %%% WARNING: famtool.pl relies on this message format!!! \immediate\write16{ Faking~narrow~font~ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width \space from~ \font_family\font_weight\font_shape\raw_variant \expert_encoding } \transformfont{ \font_family\font_weight\font_shape\raw_variant \expert_encoding\font_width }{ \xscalefont{\fake_narrow_width}{ \frommtx{ \font_family\font_weight\font_shape\raw_variant \expert_encoding } } } \fi \fi } \def\latin_encoding#1#2#3#4#5{ \gdef\latex_encoding{#4} \gdef\latex_mtx{#5} \if_oldstyle_ \gdef\font_encoding{#3} \else\if_expert_ \gdef\font_encoding{#2} \else \gdef\font_encoding{#1} \fi\fi \gdef\expert_font{} \gdef\oldstyle_font{} \if_expert_ \if_file_exists{ \font_family\font_weight\raw_shape\raw_variant \expert_encoding\font_width.mtx }\then \gdef\expert_font{ \font_family\font_weight\raw_shape\raw_variant \expert_encoding\font_width, } \fi \fi \if_oldstyle_ \if_file_exists{ \font_family\font_weight\raw_shape\oldstyle_variant \raw_variant\raw_encoding\font_width.mtx }\then \gdef\oldstyle_font{ unsetnum, \font_family\font_weight\raw_shape\oldstyle_variant \raw_variant\raw_encoding\font_width, resetosf, } \fi \fi \immediate\write16{ INFO>~run~\string\installfont\space <\font_family\font_weight\font_shape\font_variant \font_encoding\font_width> <\font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width, \if_oldstyle_ \ifx\raw_shape\caps_shape resetosf, \fi \fi \expert_font \oldstyle_font \latex_mtx> <\latex_encoding\encoding_shape> <\latex_encoding> <\latex_family> <\latex_weight\latex_width> <\latex_shape>} \installfont{ \font_family\font_weight\font_shape\font_variant \font_encoding\font_width }{ \font_family\font_weight\raw_shape\raw_variant \raw_encoding\font_width, \if_oldstyle_ \ifx\raw_shape\caps_shape resetosf, \fi \fi \expert_font \oldstyle_font \latex_mtx }{ \latex_encoding\encoding_shape }{ \latex_encoding }{ \latex_family }{ \latex_weight\latex_width }{ \latex_shape }{} } \def\latin_weights{ \latin_weight{r}{m} \latin_weight{k}{m} \latin_weight{b}{b} \latin_weight{s}{sb} \latin_weight{d}{db} % was {d}{sb}, SPQR changed \latin_weight{m}{mb} % was {m}{m}, UV changed \latin_weight{c}{eb} % UV added \latin_weight{h}{eb} % UV added \latin_weight{x}{eb} \latin_weight{u}{ub} \latin_weight{l}{l} %\latin_weight{j}{el} %\latin_weight{a}{ul} % UV added } \def\latin_widths{ \latin_width{}{} \latin_width{n}{c} %latin_width{c}{c} %latin_width{x}{x} } \def\latin_shapes{ \latin_shape{} {} {} {n} {\_textcomp_true } \latin_shape{c}{c}{} {sc}{\_textcomp_false} \latin_shape{o}{o}{} {sl}{\_textcomp_true } \latin_shape{i}{i}{i}{it}{\_textcomp_true } } \def\latin_encodings{ \latin_encoding{7t}{9t}{9o}{OT1}{newlatin} \latin_encoding{8t}{9e}{9d}{T1} {newlatin} \encoding_switches \if_textcomp_ \latin_encoding{8c}{9c}{9c}{TS1}{textcomp} \fi } \newif\if_textcomp_ \def\raw_encoding{8r} \def\adobe_encoding{8a} \def\expert_encoding{8x} \def\caps_shape{c} \def\oldstyle_shape{j} \def\SlantAmount{167} %%% From file: fimapgen.dtx \def\mapfrags_subsystem{Map~fragments~writer} \def\recordtransforms#1{\open_pout\transform_record_file{#1}} \def\endrecordtransforms{ \close_pout\transform_record_file{Font~transformation~records} } \chardef\transform_record_file=\closed_stream \let\storemapdata=\gobble_three \def\record_transform#1#2#3#4{ \ifnum \transform_record_file=\closed_stream \else \pout_line\transform_record_file{\string\storemapdata{#1}{#2}{#3}} \fi #4 \out_line{\string\storemapdata{#1}{#2}{#3}} \fi } \def\record_usage#1{ \ifnum \transform_record_file=\closed_stream \else \pout_line\transform_record_file{\string\makemapentry{#1}} \fi } \let\declarepsencoding=\gobble_three \let\providepsencoding=\gobble_three %%% From file: fibasics.dtx \def\needsfontinstversion#1{{ \a_dimen=#1pt \b_dimen=\fontinstversion~pt\x_relax \ifnum\a_dimen>\b_dimen \immediate\write16{} \immediate\write16{Warning:~This~file~needs~fontinst~version~#1.} \immediate\write16{Warning:~You~are~using~version~ \fontinstversion.} \immediate\write16{Warning:~This~may~cause~errors.} \immediate\write16{} \fi }} \if_file_exists{fontinst.rc}\then \primitiveinput fontinst.rc \else \immediate\write16{No~file~fontinst.rc.} \fi \normalcc \endinput %% %% End of file `xfntinst.sty'.