diff options
Diffstat (limited to 'Master/texmf-dist/doc/pdftex/thanh/ext/ufntinst.sty')
-rw-r--r-- | Master/texmf-dist/doc/pdftex/thanh/ext/ufntinst.sty | 442 |
1 files changed, 442 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/pdftex/thanh/ext/ufntinst.sty b/Master/texmf-dist/doc/pdftex/thanh/ext/ufntinst.sty new file mode 100644 index 00000000000..1eecffe51bc --- /dev/null +++ b/Master/texmf-dist/doc/pdftex/thanh/ext/ufntinst.sty @@ -0,0 +1,442 @@ +\input fontinst.sty + +\def\fontinstcc{% + \catcode`\ =9 + \catcode`\^^M=9 + \catcode`\@=11 + \catcode`\_=11 + \catcode`\~=10 + }% + +\def\normalcc{% + \catcode`\@=\atcatcode + \catcode`\^^M=\nlcatcode + \catcode`\ =\spacecatcode + \catcode`\~=\tildecatcode + \catcode`\_=\underscorecatcode + }% + +\fontinstcc + +\def\llx{\glyph_bb_parameter\first_of_four} +\def\lly{\glyph_bb_parameter\second_of_four} +\def\urx{\glyph_bb_parameter\third_of_four} +\def\ury{\glyph_bb_parameter\fourth_of_four} + +\def\glyph_bb_parameter#1#2{ + \expandafter\expandafter\expandafter + #1\csname gb-#2\endcsname +} + +\def\first_of_four#1#2#3#4{#1} +\def\second_of_four#1#2#3#4{#2} +\def\third_of_four#1#2#3#4{#3} +\def\fourth_of_four#1#2#3#4{#4} + +\def\afm_char{ + \a_count=-\bbox_lly + \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} + {\the\a_count} + {\the\result} + } + \outglyphbb % bbox support patch +} + +\def\outglyphbb{ + \out_line{ + \string\setglyphbbox + {\char_name} + {\raw_font_name} + {\the\bbox_llx} + {\the\bbox_lly} + {\the\bbox_urx} + {\the\bbox_ury} + } +} + +\def\setglyphbbox#1#2#3#4#5#6{ + \if_undefined{gb-#1}\then + \eval_expr_to\a_count{#3} + \eval_expr_to\b_count{#4} + \eval_expr_to\c_count{#5} + \eval_expr_to\d_count{#6} + \ifisint{i-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{gb-#1}{ + {\the\a_count} + {\the\b_count} + {\the\c_count} + {\the\d_count} + } + \fi +} + +\def\mtxtomtx_setglyphbbox#1#2#3#4#5#6{ + \eval_expr_to\a_count{\scale{#3}{\int{x-scale}}} +% \eval_expr_to\a_count{\add{\scale{#3}{\int{x-scale}}} +% {\scale{#4}{\int{slant-scale}}}} + \eval_expr_to\b_count{\scale{#4}{\int{y-scale}}} + \eval_expr_to\c_count{\scale{#5}{\int{x-scale}}} +% \eval_expr_to\c_count{\add{\scale{#5}{\int{x-scale}}} +% {\scale{#5}{\int{slant-scale}}}} + \eval_expr_to\d_count{\scale{#6}{\int{y-scale}}} + \out_line{ + \string\setglyphbbox + {#1}{\raw_font_name}{\the\a_count}{\the\b_count}{\the\c_count}{\the\d_count} + } +} + +\def\mtxtomtx#1#2{{ + \ifisstr{etx-name}\then + \def\do_slot{\x_cs\edef{slots-\slot_name}{\the\slot_number}} + \inputetx{\str{etx-name}} + \edef\a_macro{\string\reencodefont{\str{etx-name}}} + \else + \let\a_macro=\empty_command + \fi + \_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{} + \record_transform{#2}{\string\frommtx{#1}}{\a_macro}\iftrue + \out_line{} + \let\setint=\mtxtomtx_setint + \let\setdim=\mtxtomtx_setdim + \let\setstr=\mtxtomtx_setstr + \let\setscaledrawglyph=\mtxtomtx_setscaledrawglyph + \let\setscalednotglyph=\mtxtomtx_setscaledrawglyph + \let\setglyphbbox=\mtxtomtx_setglyphbbox % bbox support patch + \let\setkern=\mtxtomtx_setkern + \let\setglyph=\mtxtomtx_setglyph + \let\glyphpcc=\mtxtomtx_glyphpcc + \let\samesize=\mtxtomtx_samesize + \let\endsetglyph=\mtxtomtx_endsetglyph + \inputmtx{#1} + \out_line{} + \out_line{\endmetrics_text} + \close_out{Transformed~metrics} +}} + +\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{} + \let\setint=\reglyph_setint + \let\setdim=\reglyph_setdim + \let\setstr=\reglyph_setstr + \let\setscaledrawglyph=\reglyph_setscaledrawglyph + \let\setscalednotglyph=\reglyph_setscaledrawglyph + \let\setglyphbbox=\reglyph_setglyphbbox % bbox support patch + \let\setkern=\reglyph_setkern + \let\setglyph=\reglyph_setglyph + \let\glyphpcc=\reglyph_glyphpcc + \let\samesize=\reglyph_samesize + \let\endsetglyph=\reglyph_endsetglyph + \inputmtx{#2} + \out_line{} + \out_line{\endmetrics_text} + \close_out{Reglyphed~metrics} +}} + +\def\reglyph_setglyphbbox#1#2#3#4#5#6{ + \command_survivance=0 + \def\glyphname{#1} + \csname slots-#1\endcsname + \iftokeep\command_survivance\then + \out_line{ + \string\setglyphbbox + {\glyphname}{#2}{#3}{#4}{#5}{#6} + } + \fi +} + +\def\bbw#1{ + \sub{\urx{#1}}{\llx{#1}} +} + +\def\bbh#1{ + \sub{\ury{#1}}{\lly{#1}} +} + +\setcommand\centeraccent#1#2#3#4{ + \push + \moveup{#4} + \movert{\add{\add{\scale{500}{\sub{\width{#1}}{\width{#2}}}}{#3}} + {\scale{#4}{\int{italicslant}}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} + +\def\composeglyphpac#1#2#3#4#5{ + \resetglyph{#1} + \centeraccent{#2}{#3}{\add{\int{#3-sx}}{#4}}{\add{\int{#3-sy}}{#5}} + \endresetglyph + \setleftrightkerning{#1}{#2}{1000} +} + +\def\putquoteright#1#2#3#4#5{ + \push + \movert{\add{\urx{#1}}{#3}} + \moveup{\sub{#5}{\scale{#2}{\lly{quoteright}}}} + \glyph{quoteright}{#2} + \pop + \glyph{#1}{1000} + \movert{#4} +} + +\def\setsy#1#2#3{ + \setint{#1-sy}{\add{\sub{\int{#2}}{\lly{#1}}}{#3}} +} + +\def\setAsx#1#2#3{ + \setint{#1-sx} + {\add{\scale{\int{italicslant}}{\sub{\lly{#1}}{\lly{#2}}}}{#3}} +} + +\let\iffileexists=\if_file_exists + +\def\log#1{\immediate \write 16 {#1}} + +\def\setkerns#1#2#3{ + \foreach(leftglyph){#1} + \foreach(rightglyph){#2} + \setkern{\str{leftglyph}}{\str{rightglyph}}{#3} + \endfor(rightglyph) + \endfor(leftglyph) +} + +\def\resetkerns#1#2#3{ + \foreach(leftglyph){#1} + \foreach(rightglyph){#2} + \resetkern{\str{leftglyph}}{\str{rightglyph}}{#3} + \endfor(rightglyph) + \endfor(leftglyph) +} + +\def\setnullglyph#1{ + \setglyph{#1} + \endsetglyph + \setint{#1-spacing}{0} +} + +% \installcsfont{texbase}{psbase8r}{expansion}{psbase} +% e.g. \installcsfont{putr8z}{putr8r}{}{putr8a} +% or \installcsfont{putr8z}{putr8r}{+20}{putr8a} + +\def\installcsfont#1#2#3#4{ + \iffileexists{#4#3.afm}\then + \transformfont{#2#3}% + {\reencodefont{8r}{\fromafm{#4#3}}} + \transformfont{#2x#3}% + {\reencodefont{8r}{\yscalefont{700}{\fromafm{#4#3}}}} + \else + \transformfont{#2#3}% + {\reencodefont{8r}{\frommtx{#4#3}}} + \transformfont{#2x#3}% + {\reencodefont{8r}{\yscalefont{700}{\frommtx{#4#3}}}} + \fi +% \transformfont{#2x#3}% +% {\reencodefont{8r}{\yscalefont{700}{\fromafm{#4#3}}}} + \reglyphfonts + \renameglyph{Acute}{acute} + \renameglyph{Caron}{caron} + \renameglyph{Ring}{ring} + \renameglyph{Grave}{grave} + \renameglyph{Dieresis}{dieresis} + \renameglyph{Circumflex}{circumflex} +% \renameglyph{Breve}{breve} +% \renameglyph{Cedilla}{cedilla} +% \renameglyph{Dotaccent}{dotaccent} +% \renameglyph{Hungarumlaut}{hungarumlaut} +% \renameglyph{Ogonek}{ogonek} +% \renameglyph{Slash}{slash} + \resetcommand\iftokeep##1{\ifnumber{##1}>{0}} + \offmtxcommand{\setkern} + \offmtxcommand{\setglyph} + \offmtxcommand{\setint} + \reglyphfont{#2u#3}{#2x#3} + \endreglyphfonts + \iffileexists{mk#1.mtx}\then + \installfont{#1#3}{#2#3,#2u#3,mk#1}{il2}{}{}{}{}{} + \else + \installfont{#1#3}{#2#3,#2u#3,cs}{il2}{}{}{}{}{} + \fi +} + +\def\writecc#1#2#3#4#5#6#7#8{ + \global\let\setsomething_global=\x_relax + \input_metrics{}{#2} + \etxtocc{#3}{#1} + \global\let\setsomething_global=\global +} + +\def\etxtocc#1#2{{ + \make_assignments{#1} + \open_out{#2.cc} + \bgroup + \let\do_slot=\do_cc + \let\end_do_slot=\end_do_cc + \let\saved_raw\cc_raw + \let\saved_scale\cc_scale + \let\saved_movert\cc_movert + \let\saved_moveup\cc_moveup + \inputetx{#1} + \egroup + \close_out{CC~information} +}} + + +\def\do_cc{ + \if_undefined{g-\slot_name}\then + \expandafter\gobble_setslot + \Else + \ifx\slot_name\notdef_name\else + \do_cc_map + \fi + \Fi +} + +\def\do_cc_map{ + \let\cc_list=\empty + \pcc_count=0 + \shift_x=0 + \shift_y=0 + \mapcommands\slot_name +} + +\def\end_do_cc{ + \ifisglyph\slot_name\then\ifnum\pcc_count > 1 + \out_line{CC~\slot_name\space\the\pcc_count\space;~\cc_list} + \fi\fi +} + +\newcount\shift_x +\newcount\shift_y +\newcount\pcc_count + +\def\cc_raw#1#2#3{ + \edef\pcc_raw{PCC~#3~\the\shift_x\space\the\shift_y\space;\space} + \prep_to\cc_list\pcc_raw + \edef\x{\cc_list} + \let\cc_list=\x + \advance\pcc_count 1 + \shift_x=0 + \shift_y=0 +} + +\def\cc_movert#1{ + \advance\shift_x #1 +} + +\def\cc_moveup#1{ + \advance\shift_y #1 +} + +\def\cc_scale#1#2{ + #2 +} + +% \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\setfontdimens{% + \setint{italicslant}{0} + \ifisglyph{x}\then + \setint{xheight}{\height{x}} + \Else + \setint{xheight}{500} + \Fi + \ifisglyph{space}\then + \setint{interword}{\width{space}} + \Else\ifisglyph{i}\then + \setint{interword}{\width{i}} + \Else + \setint{interword}{333} + \Fi\Fi + \setint{fontdimen(1)}{\int{italicslant}} % italic slant + \setint{fontdimen(2)}{\int{interword}} % interword space + \ifisint{monowidth}\then + \setint{fontdimen(3)}{0} % interword stretch + \setint{fontdimen(4)}{0} % interword shrink + \Else + \setint{fontdimen(3)}{\scale{\int{interword}}{600}}% interword stretch + \setint{fontdimen(4)}{\scale{\int{interword}}{240}}% interword shrink + \Fi + \setint{fontdimen(5)}{\int{xheight}} % x-height + \setint{fontdimen(6)}{1000} % quad + \ifisint{typewriter}\then + \setint{fontdimen(7)}{0} % extra space after . + \Else\ifisint{monowidth}\then + \setint{fontdimen(7)}{\int{interword}} % extra space after . + \Else + \setint{fontdimen(7)}{\scale{\int{interword}}{240}}% extra space after . + \Fi\Fi +} + +\normalcc |