OSDN Git Service

bugfix: \mdseries@jtt causes infinite loop
[luatex-ja/luatexja.git] / src / patches / lltjdefs.sty
1 %
2 % lltjdefs.sty
3 %
4
5 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{lltjdefs}[2019/09/26 Default font settings of LuaTeX-ja]
7
8 \ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi
9 \ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi
10 \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi
11 \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi
12 \InputIfFileExists{luatexja.cfg}{%
13   \typeout{*************************^^J%
14            * Loading luatexja.cfg.^^J%
15            *************************}%
16 }{}
17
18 \DeclareKanjiEncodingDefaults{}{}
19 \DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10}
20 \kanjifamily{mc}
21 \kanjiseries{m}
22 \kanjishape{n}
23 \fontsize{10}{10}
24 \DeclareYokoKanjiEncoding{JY3}{}{}
25 \DeclareKanjiSubstitution{JY3}{mc}{m}{n}
26 \DeclareTateKanjiEncoding{JT3}{}{}
27 \DeclareKanjiSubstitution{JT3}{mc}{m}{n}
28
29 \newcommand\mcdefault{mc}
30 \newcommand\gtdefault{gt}
31 \newcommand\jttdefault{\mcdefault}
32 \newcommand\kanjiencodingdefault{JY3}
33 \newcommand\kanjifamilydefault{\mcdefault}
34 \newcommand\kanjiseriesdefault{\mddefault}
35 \newcommand\kanjishapedefault{\updefault}
36
37 \DeclareKanjiFamily{JY3}{mc}{}
38 \DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdmcfont:jfm=\ltj@stdyokojfm}{}
39 \DeclareKanjiFamily{JY3}{gt}{}
40 \DeclareFontShape{JY3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdyokojfm}{}
41 \DeclareFontShape{JY3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
42 \DeclareFontShape{JY3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
43 \DeclareFontShape{JY3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
44 \DeclareFontShape{JY3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
45
46 \DeclareKanjiFamily{JT3}{mc}{}
47 \DeclareFontShape{JT3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdmcfont:jfm=\ltj@stdtatejfm}{}
48 \DeclareKanjiFamily{JT3}{gt}{}
49 \DeclareFontShape{JT3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdtatejfm}{}
50 \DeclareFontShape{JT3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
51 \DeclareFontShape{JT3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
52 \DeclareFontShape{JT3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
53 \DeclareFontShape{JT3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
54 \KanjiEncodingPair{JY3}{JT3}
55
56 \DeclareRelationFont{JY3}{gt}{m}{}{TU}{lmr}{bx}{}
57 \DeclareRelationFont{JY3}{mc}{m}{}{TU}{lmr}{m}{}
58 \DeclareRelationFont{JY3}{mc}{bx}{}{TU}{lmr}{bx}{}
59 \DeclareRelationFont{JY3}{mc}{b}{}{TU}{lmr}{b}{}
60 \DeclareRelationFont{JT3}{gt}{m}{}{TU}{lmr}{bx}{}
61 \DeclareRelationFont{JT3}{mc}{m}{}{TU}{lmr}{m}{}
62 \DeclareRelationFont{JT3}{mc}{bx}{}{TU}{lmr}{bx}{}
63 \DeclareRelationFont{JT3}{mc}{b}{}{TU}{lmr}{b}{}
64
65 \kanjiencoding{JY3}\selectfont\adjustbaseline
66
67 \DeclareTextFontCommand{\textmc}{\mcfamily}
68 \DeclareTextFontCommand{\textgt}{\gtfamily}
69 \DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{}
70 \DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{}
71
72 \unless\ifltj@disablejfam
73   \DeclareSymbolFont{mincho}{JY3}{mc}{m}{n}
74   \jfam\symmincho
75   \SetSymbolFont{mincho}{bold}{JY3}{gt}{m}{n}
76   \DeclareSymbolFontAlphabet{\mathmc}{mincho}
77   \DeclareMathAlphabet{\mathgt}{JY3}{gt}{m}{n}
78 \fi
79
80 \ifdefined\fontseriesforce
81 \def\bfseries@mc{bx}
82 \def\bfseries@gt{bx}
83 \def\bfseries@jtt{\bfseries@gt}
84 \def\mdseries@mc{m}
85 \def\mdseries@gt{m}
86 \def\mdseries@jtt{\mdseries@gt}
87 \fi
88
89 \newif\if@ltj@match@family
90 \@ltj@match@familyfalse
91 \def\verbatim@font{\normalfont\ttfamily\kanjifamily\jttdefault\selectfont}
92
93 \def\@ltj@hook@family#1#2{ % #1: csname #2: contents
94   \ifcsname @#1hook\endcsname % LaTeX 2020-02-02
95         \csappto{@#1hook}{#2}%
96   \else
97         \ifcsname #1 \endcsname
98           \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
99         \else
100           \PackageWarningNoLine{luatexja}{%
101                 Patching to \expandafter\string\csname #1\endcsname\space failed
102           }%
103         \fi
104   \fi
105 }
106 \@ltj@hook@family{rmfamily}{%
107   \if@ltj@match@family
108     \prepare@family@series@update@kanji{mc}\mcdefault
109   \fi
110 }
111 \@ltj@hook@family{sffamily}{%
112   \if@ltj@match@family
113     \prepare@family@series@update@kanji{gt}\gtdefault
114   \fi
115 }
116 \@ltj@hook@family{ttfamily}{%
117   \if@ltj@match@family
118     \prepare@family@series@update@kanji{jtt}\jttdefault
119   \fi
120 }
121
122 %%% \eminnershape
123 \expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{}
124 \def\eminnershape{\mcfamily \upshape}
125
126 \ltjdefcharrange{1}{"80-"36F, "1E00-"1EFF}
127 \ltjdefcharrange{2}{"370-"4FF, "1F00-"1FFF}
128 \ltjdefcharrange{3}{%
129   "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF}
130 \ltjdefcharrange{4}{%
131    "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
132   "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A95F, "A980-"ABFF, "E000-"F8FF,
133   "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFFF, "1B170-"1F0FF,
134   "1F300-"1FFFF, "2000-"206F
135 } % non-Japanese
136 \ltjdefcharrange{5}{"D800-"DFFF, "E0000-"E00FF, "E01F0-"10FFFF}
137 \ltjdefcharrange{6}{%
138   "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
139   "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
140   "1B000-"1B16F, "1F100-"1F2FF, "20000-"2FFFF, "E0100-"E01EF
141 }
142 \ltjdefcharrange{7}{%
143   "1100-"11FF, "2F00-"2FFF, "3100-"318F, "31A0-"31EF, "A000-"A4CF,
144   "A960-"A97F, "AC00-"D7FF
145 }
146 \ltjdefcharrange{8}{"A7, "A8, "B0, "B1, "B4, "B6, "D7, "F7}
147 \ltjdefcharrange{9}{
148   "2002, "2010, "2011, "2013, "2014, "2015, "2016, "2018, "2019,
149   "201A, "201C, "201D, "201E, "2020, "2021, "2022, "2025, "2026,
150   "2030, "2032, "2033, "2039, "203A, "203B, "203C, "203E, "203F,
151   "2042, "2044, "2047, "2048, "2049, "2051
152 }
153 \ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8, +9}}
154
155 \directlua{for x=128,255 do luatexja.math.is_math_letters[x] = true end}
156 \protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}
157
158 \directlua{luatexja.jfont.register_vert_replace{
159   [',']='、', ['.']='。', ['“']=0x301D, ['”']=0x301F,
160 }}
161
162 % END OF FILE
163 \endinput
164
165 ======== comment ========
166
167 MIDDLE
168
169 \ltjdefcharrange{1}{"80-"36F, "1E00-"1EFF}
170   %   2  "80-"FF num = 471/128 name = Latin-1 Supplement
171   %   3  "100-"17F num = 484/128 name = Latin Extended-A
172   %   4  "180-"24F num = 87/208 name = Latin Extended-B
173   %   5  "250-"2AF num = 154/96 name = IPA Extensions
174   %   6  "2B0-"2FF num = 42/80 name = Spacing Modifier Letters
175   %   7  "300-"36F num = 98/112 name = Combining Diacritical Marks
176   %  64  "1E00-"1EFF num = 16/256 name = Latin Extended Additional
177
178 \ltjdefcharrange{2}{"370-"4FF, "1F00-"1FFF}
179   % Greek and Coptic, Cyrillic, Greek Extended
180
181 \ltjdefcharrange{3}{%
182   "2070-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF}
183   %   67  "2070-"209F num = 68/48 name = Superscripts and Subscripts
184   %   68  "20A0-"20CF num = 5/48 name = Currency Symbols
185   %   69  "20D0-"20FF num = 2/48 name = Combining Diacritical Marks for Symbols
186   %   70  "2100-"214F num = 46/80 name = Letterlike Symbols
187   %   71  "2150-"218F num = 90/64 name = Number Forms
188   %   72  "2190-"21FF num = 39/112 name = Arrows
189   %   73  "2200-"22FF num = 210/256 name = Mathematical Operators
190   %   74  "2300-"23FF num = 69/256 name = Miscellaneous Technical
191   %   75  "2400-"243F num = 1/64 name = Control Pictures
192   %   78  "2500-"257F num = 241 name = Box Drawing
193   %   79  "2580-"259F num = 17 name = Block Elements
194   %   80  "25A0-"25FF num = 70 name = Geometric Shapes
195   %   81  "2600-"26FF num = 49 name = Miscellaneous Symbols
196   %   82  "2700-"27BF num = 23 name = Dingbats
197   %   86  "2900-"297F num = 2 name = Supplemental Arrows-B
198   %   87  "2980-"29FF num = 4 name = Miscellaneous Mathematical Symbols-B
199   %   89  "2B00-"2BFF num = 3 name = Miscellaneous Symbols and Arrows
200
201 \ltjdefcharrange{4}{%
202    "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF,
203   "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A95F, "A980-"ABFF, "E000-"F8FF,
204   "FB00-"FE0F, "FE20-"FE2F, "FE70-"FEFF, "10000-"1AFFF, "1B170-"1F0FF,
205   "1F300-"1FFFF
206 } % non-Japanese
207
208 \ltjdefcharrange{5}{"D800-"DFFF, "E0000-"E00FF, "E01F0-"10FFFF}
209   % Surrogates, Tags
210   %  208  "F0000-"FFFFF num = 0/65536 name = Supplementary Private Use Area-A
211   %  209  "100000-"10FFFF num = 0/65536 name = Supplementary Private Use Area-B
212
213 POSITIVE
214
215 % Japanese
216 \ltjdefcharrange{6}{%
217   "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
218   "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
219   "1B000-"1B16F, "1F100-"1F2FF, "20000-"2FFFF, "E0100-"E01EF
220 }
221 %   77  "2460-"24FF num = 150/160 name = Enclosed Alphanumerics
222 %   98  "2E80-"2EFF num = 21 name = CJK Radicals Supplement
223 %  101  "3000-"303F num = 144 name = CJK Symbols and Punctuation
224 %  102  "3040-"309F num = 1074 name = Hiragana
225 %  103  "30A0-"30FF num = 985 name = Katakana
226 %  106  "3190-"319F num = 16/16 name = Kanbun
227 %  109  "31F0-"31FF num = 128 name = Katakana Phonetic Extensions
228 %  110  "3200-"32FF num = 143 name = Enclosed CJK Letters and Months
229 %  111  "3300-"33FF num = 255 name = CJK Compatibility
230 %  112  "3400-"4DBF num = 203 name = CJK Unified Ideographs Extension A
231 %  114  "4E00-"9FFF num = 14087 name = CJK Unified Ideographs
232 %  143  "F900-"FAFF num = 110/512 name = CJK Compatibility Ideographs
233 %  147  "FE10-"FE1F num = 0/16 name = Vertical Forms
234 %  149  "FE30-"FE4F num = 8/32 name = CJK Compatibility Forms
235 %  150  "FE50-"FE6F num = 0/32 name = Small Form Variants
236 %       "FF00-"FFEF            name = Halfwidth and Fullwidth Forms
237 %       "1B000-"1B0FF          name = Kana Supplement
238 %       "1B100-"1B12F          name = Kana Extended-A
239 %       "1B130-"1B16F          name = Small Kana Extension
240 %       "1F100-"1F1FF          name = Enclosed Alphanumeric Supplement
241 %       "1F200-"1F2FF          name = Enclosed Ideographic Supplement
242 %  SIP
243 %       "E0000-"E01EF          name = Variation Selectors Supplement
244
245 \ltjdefcharrange{7}{%
246   "1100-"11FF, "2F00-"2FFF, "3100-"318F, "31A0-"31EF, "A000-"A4CF,
247   "A960-"A97F, "AC00-"D7FF
248 }
249   %   35  "1100-"11FF num = 1 name = Hangul Jamo
250   %   99  "2F00-"2FDF num = 0/224 name = Kangxi Radicals
251   %  100  "2FF0-"2FFF num = 0/16 name = Ideographic Description Characters
252   %  104  "3100-"312F num = 0/48 name = Bopomofo
253   %  105  "3130-"318F num = 0/96 name = Hangul Compatibility Jamo
254   %  107  "31A0-"31BF num = 0/32 name = Bopomofo Extended
255   %  108  "31C0-"31EF num = 0/48 name = CJK Strokes
256   %  115  "A000-"A48F num = 0/1168 name = Yi Syllables
257   %  116  "A490-"A4CF num = 0/64 name = Yi Radicals
258   %       "A960-"A97F            name = Hangul Jamo Extended-A
259   %  137  "AC00-"D7AF num = 0/11184 name = Hangul Syllables
260   %  138  "D7B0-"D7FF num = 0/80 name = Hangul Jamo Extended-B