%% %% This is file 'pxufont.sty'. %% %% Copyright (c) 2017-2020 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% %% This package is distributed under the MIT License. %% %% package declaration \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{pxufont}[2020/02/09 v0.6] \def\pxuf@pkgname{pxufont} % \providecommand\bxDebug[1]{} %--------------------------------------- general %% packages \RequirePackage{ifuptex} %% unique tokens \def\pxuf@end{\pxuf@end@} \def\pxuf@mt{\pxuf@mt@} %% switch 'pxuf@use@ruby' \newif\ifpxuf@use@ruby \ifx t\pxufontUseRubyFont \pxuf@use@rubytrue \fi %% \pxuf@split{}{} \def\pxuf@split#1#2{% \edef\pxuf@tmpx{{#1}{#2}}% \expandafter\pxuf@split@a\pxuf@tmpx} \def\pxuf@split@a#1#2{% \def\pxuf@tmpx##1#1##2\pxuf@end{\pxuf@split@b{##1}{##2}}% \pxuf@tmpx#2\pxuf@mt#1\pxuf@end} \def\pxuf@split@b#1#2{% \let\pxuf@pre\relax \let\pxuf@post\relax \ifx\pxuf@end#2\pxuf@end\else \pxuf@split@c#2\pxuf@end{#1}% \fi} \def\pxuf@split@c#1\pxuf@mt#2\pxuf@end#3{% \def\pxuf@pre{#3}\def\pxuf@post{#1}} %% switch 'pxuf@otf@used' \newif\ifpxuf@otf@used \@ifpackageloaded{otf}{% \pxuf@otf@usedtrue }{%else \AtBeginDocument{% \@ifpackageloaded{otf}{% \PackageError\pxuf@pkgname {You must load this package after 'otf'}\@ehc }{}}% } %% \pxuf@JY/\pxuf@JT \ifnativeupTeX \def\pxuf@JY{JY2}\def\pxuf@JT{JT2} \else \def\pxuf@JY{JY1}\def\pxuf@JT{JT1} \fi %% \pxuf@edef@detokenized\CS{} \def\pxuf@edef@detokenized#1{% \def\pxuf@tmpx{% \expandafter\pxuf@edef@detokenized@a\meaning#1\pxuf@end#1}% \afterassignment\pxuf@tmpx\edef#1} \def\pxuf@edef@detokenized@a#1>#2\pxuf@end#3{% \def#3{#2}} %--------------------------------------- general \begingroup %% variables % \pxuf@scale % \pxuf@tfm %% \pxuf@reset@size \def\pxuf@reset@size{10} \ifdim\f@size\p@=10\p@\else \edef\pxuf@reset@size{\pxuf@reset@size,\f@size} \fi \ifx\jsc@JYn\@undefined\else %jsclasses \begingroup \footnotesize \xdef\@gtempa{\f@size} \endgroup \edef\pxuf@reset@size{\pxuf@reset@size,\@gtempa} \fi \bxDebug{ufont:reset@size=\pxuf@reset@size} %% \pxuf@parse@spec{E/F/S/S} % Sets \pxuf@scale and \pxuf@tfm. \def\pxuf@parse@spec#1{% \let\pxuf@scale\relax \let\pxuf@tfm\relax \expandafter\expandafter\expandafter\pxuf@parse@spec@a \csname#1\endcsname}% \def\pxuf@parse@spec@a#1{% \bxDebug{ufont:\string#1}% \expandafter\pxuf@parse@spec@b\string#1<-><$} \def\pxuf@parse@spec@b#1<->#2<#3${% \pxuf@parse@spec@c#2**$}% #2=font-info for <-> \def\pxuf@parse@spec@c#1*#2*#3${% \ifx\pxuf@mt#3\pxuf@mt % no * in font-info \pxuf@parse@spec@d#1*$% #1=x-fontarg \else \def\pxuf@tmpb{#1}% #1=size-func \ifx\pxuf@tmpb\pxuf@@s \let\pxuf@tmpb\@empty \fi \ifx\pxuf@tmpb\@empty \pxuf@parse@spec@d#2*$% #2=x-fontarg \fi \fi} \def\pxuf@parse@spec@d#1#2${% \ifx*#1% then no-op \else\ifx[#1\pxuf@parse@spec@e#2$% \else \pxuf@parse@spec@e1]#1#2$% \fi\fi} \def\pxuf@parse@spec@e#1]#2*#3${% \def\pxuf@scale{#1}\def\pxuf@tfm{#2}% \pxuf@change@tfm} \pxuf@edef@detokenized\pxuf@@s{s} %% \pxuf@change@tfm \pxuf@edef@detokenized\pxuf@tmpa{exp/ruby/nml} \def\pxuf@tmpb#1/#2/#3\pxuf@end{% \def\pxuf@change@tfm{% \pxuf@change@tfm@a{#1}{#3}% \ifpxuf@use@ruby\else \pxuf@change@tfm@a{#2}{#3} \fi} }\expandafter\pxuf@tmpb\pxuf@tmpa\pxuf@end \def\pxuf@change@tfm@a#1#2{% \pxuf@split{#1}\pxuf@tfm\ifx\pxuf@pre\relax\else \edef\pxuf@tfm{\pxuf@pre#2\pxuf@post}% \fi} %% \pxuf@process@one \def\pxuf@process@one#1#2#3#4#5{% \bxDebug{ufont:process(#1;#2/#3/#4/#5)}% \pxuf@parse@spec{#2/#3/#4/#5}% \ifx\pxuf@tfm\relax\else \bxDebug{ufont:spec=\pxuf@scale:\pxuf@tfm}% \DeclareFontShape{#2}{#3}{#4}{#5}{<->% \ifdim\pxuf@scale\p@=\p@\else s*[\pxuf@scale]\fi zu-\pxuf@tfm}{}% \if t#1% \@for\pxuf@tmpa:=\pxuf@reset@size\do{% \global\expandafter\let\csname#2/#3/#4/#5/\pxuf@tmpa \endcsname\relax}% \fi \fi} %% process \ifpxuf@otf@used \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{% \@for\pxuf@x:={hmc,hgt,mg,ruby,rubyg,rubymg}\do{% \@for\pxuf@y:={l,m,b,bx,eb}\do{% \expandafter\ifx\csname\pxuf@w/\pxuf@x/\pxuf@y/n\endcsname\relax\else \expandafter\let\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname=t% \pxuf@process@one{t}\pxuf@w\pxuf@x\pxuf@y{n}% \fi}}} \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{% \@for\pxuf@x:={cidj,cidjg,cidjmg}\do{% \@for\pxuf@y:={l,m,b,bx,eb}\do{% \expandafter\ifx\csname\pxuf@w/\pxuf@x/\pxuf@y/0\endcsname\relax\else \@tfor\pxuf@z:=012345\do{% \pxuf@process@one{f}\pxuf@w\pxuf@x\pxuf@y\pxuf@z}% \fi}}} \fi \ifnativeupTeX\else \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{% \@for\pxuf@x:={\mcdefault,\gtdefault,mc,gt}\do{% \expandafter\ifx\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname\relax \expandafter\ifx\csname\pxuf@w/\pxuf@x/m/n\endcsname\relax\else \expandafter\let\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname=t% \pxuf@process@one{t}\pxuf@w\pxuf@x{m}{n}% \fi \fi}} \fi \endgroup %--------------------------------------- all done \endinput %% EOF