diff options
Diffstat (limited to 'macros/jptex/latex/pxufont/pxufont.sty')
-rw-r--r-- | macros/jptex/latex/pxufont/pxufont.sty | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/macros/jptex/latex/pxufont/pxufont.sty b/macros/jptex/latex/pxufont/pxufont.sty new file mode 100644 index 0000000000..a1b1168c0a --- /dev/null +++ b/macros/jptex/latex/pxufont/pxufont.sty @@ -0,0 +1,186 @@ +%% +%% 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{<at>}{<target>} +\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{<body>} +\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 |