summaryrefslogtreecommitdiff
path: root/macros/jptex/latex/pxufont/pxufont.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/jptex/latex/pxufont/pxufont.sty')
-rw-r--r--macros/jptex/latex/pxufont/pxufont.sty186
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