summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pxufont/pxufont.sty
blob: 611e020ebd8afb03353b2110b7c734ff340b9143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
%%
%% This is file 'pxufont.sty'.
%% 
%% Copyright (c) 2017 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}[2017/06/28 v0.2]
\def\pxuf@pkgname{pxufont}
%
\providecommand\bxDebug[1]{}

%--------------------------------------- general

%% packages
\RequirePackage{ifuptex}

%% unique tokens
\def\pxuf@end{\pxuf@end@}
\def\pxuf@mt{\pxuf@mt@}

%% swutch '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

%--------------------------------------- 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.
\edef\pxuf@tmpb{%
  {\expandafter\string\csname<->s\endcsname*[}{]}{$}}
\def\pxuf@tmpa#1#2#3{%
  \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{%
    \expandafter\pxuf@parse@spec@b\string##1#3#1#2#3\pxuf@end}
  \def\pxuf@parse@spec@b##1#1##2#2##3#3##4\pxuf@end{%
    \ifx\pxuf@mt##4\pxuf@mt\else
      \def\pxuf@scale{##2}\def\pxuf@tfm{##3}%
   \fi}%
}\expandafter\pxuf@tmpa\pxuf@tmpb

%% \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{spec=\pxuf@scale:\pxuf@tfm}%
    \DeclareFontShape{#2}{#3}{#4}{#5}{<->s*[\pxuf@scale]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\ifNativeupTeX\else
  \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{%
    \@for\pxuf@x:={hmc,hgt,mg,ruby,rubyg,rubymg}\do{%
      \@for\pxuf@y:={l,m,bx,eb}\do{%
        \expandafter\ifx\csname\pxuf@w/\pxuf@x/\pxuf@y/n\endcsname\relax\else
          \expandafter\let\csname pxuf@DF/\pxuf@x\endcsname=t%
          \pxuf@process@one{t}\pxuf@w\pxuf@x\pxuf@y{n}%
        \fi}}}
\fi\fi
\ifpxuf@otf@used
  \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{%
    \@for\pxuf@x:={cidj,cidjg,cidjmg}\do{%
      \@for\pxuf@y:={l,m,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@x\endcsname\relax
        \expandafter\ifx\csname\pxuf@w/\pxuf@x/m/n\endcsname\relax\else
          \expandafter\let\csname pxuf@DF/\pxuf@x\endcsname=t%
          \pxuf@process@one{t}\pxuf@w\pxuf@x{m}{n}%
        \fi
      \fi}}
\fi

\endgroup
%--------------------------------------- all done
\endinput
%% EOF