This is the file cyoutenc.dtx of the T2 package.

Cyrillic X2 and T2A, T2B, T2C beta (Feb 98) encodings.

1 The Cyrillic font encodings

Since the number of Cyrillic glyphs exceeds the limit for a ‘T’ encoding, it is necessary to create multiple glyph containers. The output encodings ‘T2A’, ‘T2B’, and ‘T2C’ are the result of long discussions in various Internet mailing lists; they emerged from the ‘X2’ glyph container which was previously called ‘T2’. Please consult section 6.4 (‘Naming conventions’) in the file fntguide.tex of the base L^{A}TEX 2ε distribution for details on the differences between L^{A}TEX font encodings.

 1 ⟨X2⟩\ProvidesFile{x2enc.def}
 2 ⟨T2A⟩\ProvidesFile{t2aenc.def}
 3 ⟨T2B⟩\ProvidesFile{t2benc.def}
 4 ⟨T2C⟩\ProvidesFile{t2cenc.def}
 5 [1998/05/12 v1.0 Cyrillic encoding definition file]

The following macro (or a variant) should probably be moved into the L^{A}TEX

kernel (to ltoutenc.dtx or ltfssdcl.dtx).

It was written by Werner Lemberg <wl@gnu.org>.

Parameters are: name, encoding, category, math character class, and slot.

6 ⟨∗X2 | T2A | T2B | T2C⟩

 7 \def\DeclareTextMathSymbol#1#2#3#4#5{%
 8 % \ifx#1\undefined
 9  \DeclareTextSymbol#1{#2}{#5}%
10  \expandafter
11  \let\csname text\expandafter\@gobble\string#1\endcsname#1%
12  \expandafter
13  \ifx\csname math\expandafter\@gobble\string#1\endcsname\relax
14  \expandafter\DeclareMathSymbol
15  \csname math\expandafter\@gobble\string#1\endcsname
16  {#3}{#4}{#5}%
17  \fi
18 ⟨cyrdef⟩  \DeclareTextSymbolDefault#1{X2}%
19  \edef#1{%
20  \noexpand\ifmmode
21  \expandafter\noexpand
22  \csname math\expandafter\@gobble\string#1\endcsname
23  \noexpand\else
24  \expandafter\noexpand
25  \csname text\expandafter\@gobble\string#1\endcsname
26  \noexpand\fi}%
27 % \else
28 %   \@latex@info{Command `\string#1' already defined}%
29 % \fi

30 } 31 ⟨/X2 | T2A | T2B | T2C⟩ 32 %

33 ⟨X2⟩\def\@tmpd{X2}
34 ⟨T2A⟩\def\@tmpd{T2A}
35 ⟨T2B⟩\def\@tmpd{T2B}
36 ⟨T2C⟩\def\@tmpd{T2C}

The following commands are used to make the code more compact and robust. The \@tmpa is a wrapper for \DeclareTextMathSymbol; it is defined to use

compact definitions like \@tmpa{\CYRA}{192} instead of the lengthy command

\DeclareTextMathSymbol{\CYRA}{X2}{\mathalpha}{cyrletters}{192}.

37 ⟨∗X2 | T2A | T2B | T2C⟩

38 \def\@tmpa#1#2{%
39 \DeclareTextMathSymbol#1{\@tmpd}{\mathalpha}{cyrletters}{#2}}

40 ⟨/X2 | T2A | T2B | T2C⟩

To assure that \MakeUppercase and \MakeLowercase work correctly we must

extend \@uclclist.

The \@tmpb macro is used to declare uppercase-lowercase letter pairs and to automatically build \@uclclist. It also takes care not to ‘overload’ \@uclclist with the repeated letter pairs (e.g., when X2 and T2A are used simultaneously in one document, \@uclclist will not contain the common letter pairs two times).

41 ⟨∗X2 | T2A | T2B | T2C⟩

42 \def\@tmpb#1#2#3#4{%
43 \ifx#1\undefined
44  \expandafter\def\expandafter\@uclclist\expandafter{\@uclclist#3#1}%
45 \fi \@tmpa#1{#2}\@tmpa#3{#4}}
46 \def\@tmpc#1#2{\DeclareTextAccent{#1}{\@tmpd}{#2}}
47 \DeclareFontEncoding{\@tmpd}{}{}

48 ⟨/X2 | T2A | T2B | T2C⟩

Cyrillic letters in X2/T2* encodings for math mode.

49 ⟨∗X2 | T2A | T2B | T2C⟩

50 \DeclareSymbolFont{cyrletters}{\@tmpd}{cmr}{m}{n}
51 \SetSymbolFont{cyrletters}{bold}{\@tmpd}{cmr}{bx}{n}
52 \DeclareSymbolFontAlphabet{\cyrmath}{cyrletters}

53 %

54 \DeclareMathAlphabet{\cyrmathbf}{\@tmpd}{cmr}{bx}{n}
55 \DeclareMathAlphabet{\cyrmathsf}{\@tmpd}{cmss}{m}{n}
56 \DeclareMathAlphabet{\cyrmathit}{\@tmpd}{cmr}{m}{it}
57 \DeclareMathAlphabet{\cyrmathtt}{\@tmpd}{cmtt}{m}{n}

58 %

59 \SetMathAlphabet\cyrmathsf{bold}{\@tmpd}{cmss}{bx}{n}
60 \SetMathAlphabet\cyrmathit{bold}{\@tmpd}{cmr}{bx}{it}

61 ⟨/X2 | T2A | T2B | T2C⟩

Common accents.

62 ⟨∗X2 | T2A | T2B | T2C⟩

63 \@tmpc{\`}{0}
64 \@tmpc{\'}{1}
65 \@tmpc{\^}{2}

66 \@tmpc{\~}{3}
67 \@tmpc{\"}{4}
68 \@tmpc{\H}{5}
69 \@tmpc{\r}{6}
70 \@tmpc{\v}{7}
71 \@tmpc{\u}{8}     % breve accent
72 \@tmpc{\=}{9}     % macron accent
73 \@tmpc{\.}{10}
74 % 11 cedilla
75 % 12 ogonek
76 \@tmpc{\ibr}{18}  % inverted breve accent
77 \@tmpc{\dgr}{19}  % double grave accent
78 \@tmpc{\br}{20}   % cyrillic breve accent
79 \@tmpc{\acom}{27} % comma above accent

80 %

81 \DeclareTextCommand{\b}{\@tmpd}[1]
82 {{\o@lign{%
83  \relax #1\crcr
84  \hidewidth\sh@ft{29}\vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}}

85 %

86 \DeclareTextCommand{\c}{\@tmpd}[1]
87 {\setbox\z@\hbox{#1}%
88 \ifdim\ht\z@ = 1ex
89  \accent11 #1%
90 \else
91  {\ooalign{\hidewidth\char11\hidewidth\crcr
92  \unhbox\z@}}
93 \fi}

94 %

95 \DeclareTextCommand{\d}{\@tmpd}[1]
96 {{\o@lign{\relax#1\crcr
97  \hidewidth\sh@ft{10}.\hidewidth}}}

98 %

99 \DeclareTextCommand{\k}{\@tmpd}[1]
100 {\oalign{\null\crcr
101  \hidewidth\char12}}
102 \DeclareTextCommand{\perthousand}{\@tmpd}
103 {\%\char 24 }
104 \DeclareTextCommand{\pertenthousand}{\@tmpd}
105 {\%\char 24\char 24 }
106 %\DeclareTextCommand{\perthousand}{\@tmpd}   % AKA \permille
107 %  {\char37 \kern-0.55542pt \perthousandzero}
108 %\DeclareTextCommand{\pertenthousand}{\@tmpd}
109 %  {\char37 \kern-0.55542pt \perthousandzero
110 %           \kern-0.42583pt \perthousandzero}

111 ⟨/X2 | T2A | T2B | T2C⟩

Common symbolic glyphs. We make most of them available both in text and math mode. Thus, \dollar will be usable in any mode and will automatically

choose the \textdollar or \mathdollar, and so on.

112 ⟨∗X2 | T2A | T2B | T2C⟩

113 \@tmpa{\endash}{21}
114 \@tmpa{\emdash}{22}
115 \@tmpa{\compwordmark}{23}
116 %\@tmpa{\perthousandzero}{24}
117 \@tmpa{\visiblespace}{32}
118 \@tmpa{\dollar}{36}
119 \@tmpa{\less}{60}
120 \@tmpa{\greater}{62}
121 % avoid redefinition of |\backslash| math delimiter:
122 \DeclareTextSymbol{\textbackslash}{\@tmpd}{92}
123 \@tmpa{\asciicircum}{94}
124 \@tmpa{\underscore}{95}
125 \@tmpa{\braceleft}{123}
126 % avoid conflict with |\bar| in math mode:
127 \DeclareTextSymbol{\textbar}{\@tmpd}{124}
128 \@tmpa{\braceright}{125}
129 \@tmpa{\asciitilde}{126}
130 \@tmpa{\CYRNo}{157}
131 \@tmpa{\currency}{158}
132 % avoid conflict with |\section| (|\begin{section}|):
133 \DeclareTextSymbol{\textsection}{\@tmpd}{159}

134 %

135 \@tmpa{\quoteleft}{96}
136 \@tmpa{\quoteright}{39}
137 \@tmpa{\quotedblleft}{16}
138 \@tmpa{\quotedblright}{17}
139 \@tmpa{\quotedblbase}{189}
140 \@tmpa{\CYRpalochka}{13}
141 \@tmpa{\cyrlangle}{14}
142 \@tmpa{\cyrrangle}{15}
143 \@tmpa{\guillemotleft}{190}
144 \@tmpa{\guillemotright}{191}

\i and \j are unused in Cyrillic languages!

145 \@tmpa{\i}{25}
146 \@tmpa{\j}{26}

147 ⟨/X2 | T2A | T2B | T2C⟩

Here are the letters common to all font encodings.

148 ⟨∗X2 | T2A | T2B | T2C⟩

149 \@tmpb{\CYRA}{192}{\cyra}{224}
150 \@tmpb{\CYRB}{193}{\cyrb}{225}
151 \@tmpb{\CYRV}{194}{\cyrv}{226}
152 \@tmpb{\CYRG}{195}{\cyrg}{227}
153 \@tmpb{\CYRD}{196}{\cyrd}{228}
154 \@tmpb{\CYRE}{197}{\cyre}{229}
155 \@tmpb{\CYRZH}{198}{\cyrzh}{230}
156 \@tmpb{\CYRZ}{199}{\cyrz}{231}
157 \@tmpb{\CYRI}{200}{\cyri}{232}

158 \@tmpb{\CYRISHRT}{201}{\cyrishrt}{233}
159 \@tmpb{\CYRK}{202}{\cyrk}{234}
160 \@tmpb{\CYRL}{203}{\cyrl}{235}
161 \@tmpb{\CYRM}{204}{\cyrm}{236}
162 \@tmpb{\CYRN}{205}{\cyrn}{237}
163 \@tmpb{\CYRO}{206}{\cyro}{238}
164 \@tmpb{\CYRP}{207}{\cyrp}{239}
165 \@tmpb{\CYRR}{208}{\cyrr}{240}
166 \@tmpb{\CYRS}{209}{\cyrs}{241}
167 \@tmpb{\CYRT}{210}{\cyrt}{242}
168 \@tmpb{\CYRU}{211}{\cyru}{243}
169 \@tmpb{\CYRF}{212}{\cyrf}{244}
170 \@tmpb{\CYRH}{213}{\cyrh}{245}
171 \@tmpb{\CYRC}{214}{\cyrc}{246}
172 \@tmpb{\CYRCH}{215}{\cyrch}{247}
173 \@tmpb{\CYRSH}{216}{\cyrsh}{248}
174 \@tmpb{\CYRSHCH}{217}{\cyrshch}{249}
175 \@tmpb{\CYRHRDSN}{218}{\cyrhrdsn}{250}
176 \@tmpb{\CYRERY}{219}{\cyrery}{251}
177 \@tmpb{\CYRSFTSN}{220}{\cyrsftsn}{252}
178 \@tmpb{\CYREREV}{221}{\cyrerev}{253}
179 \@tmpb{\CYRYU}{222}{\cyryu}{254}
180 \@tmpb{\CYRYA}{223}{\cyrya}{255}

181 ⟨/X2 | T2A | T2B | T2C⟩

And now the remaining letters.

182 ⟨∗X2⟩

183 \@tmpb{\CYRGUP}{128}{\cyrgup}{160}
184 \@tmpb{\CYRGHCRS}{129}{\cyrghcrs}{161}
185 \@tmpb{\CYRGDSC}{130}{\cyrgdsc}{162}
186 \@tmpb{\CYRGHK}{131}{\cyrghk}{163}
187 \@tmpb{\CYRSHHA}{132}{\cyrshha}{164}
188 \@tmpb{\CYRZHDSC}{133}{\cyrzhdsc}{165}
189 \@tmpb{\CYRZDSC}{134}{\cyrzdsc}{166}
190 \@tmpb{\CYRABHDZE}{135}{\cyrabhdze}{167}
191 \@tmpb{\CYRYI}{136}{\cyryi}{168}
192 \@tmpb{\CYRKDSC}{137}{\cyrkdsc}{169}
193 \@tmpb{\CYRKBEAK}{138}{\cyrkbeak}{170}
194 \@tmpb{\CYRKHK}{139}{\cyrkhk}{171}
195 \@tmpb{\CYRLHK}{140}{\cyrlhk}{172}
196 \@tmpb{\CYRNDSC}{141}{\cyrndsc}{173}
197 \@tmpb{\CYRNG}{142}{\cyrng}{174}
198 \@tmpb{\CYRNHK}{143}{\cyrnhk}{175}
199 \@tmpb{\CYROTLD}{144}{\cyrotld}{176}
200 \@tmpb{\CYRSDSC}{145}{\cyrsdsc}{177}
201 \@tmpb{\CYRUSHRT}{146}{\cyrushrt}{178}
202 \@tmpb{\CYRY}{147}{\cyry}{179}
203 \@tmpb{\CYRYHCRS}{148}{\cyryhcrs}{180}
204 \@tmpb{\CYRHDSC}{149}{\cyrhdsc}{181}
205 \@tmpb{\CYRHHK}{150}{\cyrhhk}{182}

206 \@tmpb{\CYRCHLDSC}{151}{\cyrchldsc}{183}
207 \@tmpb{\CYRCHRDSC}{152}{\cyrchrdsc}{184}
208 \@tmpb{\CYRIE}{153}{\cyrie}{185}
209 \@tmpb{\CYRSCHWA}{154}{\cyrschwa}{186}
210 \@tmpb{\CYREPS}{155}{\cyreps}{187}

211 ⟨/X2⟩ 212 % 213 ⟨∗T2A⟩

214 \@tmpb{\CYRGUP}{128}{\cyrgup}{160}
215 \@tmpb{\CYRGHCRS}{129}{\cyrghcrs}{161}
216 \@tmpb{\CYRDJE}{130}{\cyrdje}{162}
217 \@tmpb{\CYRTSHE}{131}{\cyrtshe}{163}
218 \@tmpb{\CYRSHHA}{132}{\cyrshha}{164}
219 \@tmpb{\CYRZHDSC}{133}{\cyrzhdsc}{165}
220 \@tmpb{\CYRZDSC}{134}{\cyrzdsc}{166}
221 \@tmpb{\CYRLJE}{135}{\cyrlje}{167}
222 \@tmpb{\CYRYI}{136}{\cyryi}{168}
223 \@tmpb{\CYRKDSC}{137}{\cyrkdsc}{169}
224 \@tmpb{\CYRKBEAK}{138}{\cyrkbeak}{170}
225 \@tmpb{\CYRKVCRS}{139}{\cyrkvcrs}{171}
226 \@tmpb{\CYRAE}{140}{\cyrae}{172}
227 \@tmpb{\CYRNDSC}{141}{\cyrndsc}{173}
228 \@tmpb{\CYRNG}{142}{\cyrng}{174}
229 \@tmpb{\CYRDZE}{143}{\cyrdze}{175}
230 \@tmpb{\CYROTLD}{144}{\cyrotld}{176}
231 \@tmpb{\CYRSDSC}{145}{\cyrsdsc}{177}
232 \@tmpb{\CYRUSHRT}{146}{\cyrushrt}{178}
233 \@tmpb{\CYRY}{147}{\cyry}{179}
234 \@tmpb{\CYRYHCRS}{148}{\cyryhcrs}{180}
235 \@tmpb{\CYRHDSC}{149}{\cyrhdsc}{181}
236 \@tmpb{\CYRDZHE}{150}{\cyrdzhe}{182}
237 \@tmpb{\CYRCHVCRS}{151}{\cyrchvcrs}{183}
238 \@tmpb{\CYRCHRDSC}{152}{\cyrchrdsc}{184}
239 \@tmpb{\CYRIE}{153}{\cyrie}{185}
240 \@tmpb{\CYRSCHWA}{154}{\cyrschwa}{186}
241 \@tmpb{\CYRNJE}{155}{\cyrnje}{187}

242 ⟨/T2A⟩ 243 % 244 ⟨∗T2B⟩

245 \@tmpb{\CYRGDSCHCRS}{128}{\cyrgdschcrs}{160}
246 \@tmpb{\CYRGHCRS}{129}{\cyrghcrs}{161}
247 \@tmpb{\CYRGDSC}{130}{\cyrgdsc}{162}
248 \@tmpb{\CYRGHK}{131}{\cyrghk}{163}
249 \@tmpb{\CYRSHHA}{132}{\cyrshha}{164}
250 \@tmpb{\CYRZHDSC}{133}{\cyrzhdsc}{165}
251 \@tmpb{\CYRDELTA}{134}{\cyrdelta}{166}
252 \@tmpb{\CYRABHDZE}{135}{\cyrabhdze}{167}
253 \@tmpb{\CYRLJE}{136}{\cyrlje}{168}
254 \@tmpb{\CYRKDSC}{137}{\cyrkdsc}{169}
255 \@tmpb{\CYRLDSC}{138}{\cyrldsc}{170}

256 \@tmpb{\CYRKHK}{139}{\cyrkhk}{171}
257 \@tmpb{\CYRLHK}{140}{\cyrlhk}{172}
258 \@tmpb{\CYRNDSC}{141}{\cyrndsc}{173}
259 \@tmpb{\CYRNG}{142}{\cyrng}{174}
260 \@tmpb{\CYRNHK}{143}{\cyrnhk}{175}
261 \@tmpb{\CYROTLD}{144}{\cyrotld}{176}
262 \@tmpb{\CYRSACRS}{145}{\cyrsacrs}{177}
263 \@tmpb{\CYRUSHRT}{146}{\cyrushrt}{178}
264 \@tmpb{\CYRY}{147}{\cyry}{179}
265 \@tmpb{\CYRHHCRS}{148}{\cyrhhcrs}{180}
266 \@tmpb{\CYRHDSC}{149}{\cyrhdsc}{181}
267 \@tmpb{\CYRHHK}{150}{\cyrhhk}{182}
268 \@tmpb{\CYRCHLDSC}{151}{\cyrchldsc}{183}
269 \@tmpb{\CYRCHRDSC}{152}{\cyrchrdsc}{184}
270 \@tmpb{\CYRNJE}{153}{\cyrnje}{185}
271 \@tmpb{\CYRSCHWA}{154}{\cyrschwa}{186}
272 \@tmpb{\CYREPS}{155}{\cyreps}{187}

273 ⟨/T2B⟩ 274 % 275 ⟨∗T2C⟩

276 \@tmpb{\CYRPHK}{128}{\cyrphk}{160}
277 \@tmpb{\CYRTETSE}{129}{\cyrtetse}{161}
278 \@tmpb{\CYRTDSC}{130}{\cyrtdsc}{162}
279 \@tmpb{\CYRGHK}{131}{\cyrghk}{163}
280 \@tmpb{\CYRSHHA}{132}{\cyrshha}{164}
281 \@tmpb{\CYRRDSC}{133}{\cyrrdsc}{165}
282 \@tmpb{\CYRRGCRS}{134}{\cyrrgcrs}{166}
283 \@tmpb{\CYRABHDZE}{135}{\cyrabhdze}{167}
284 \@tmpb{\CYRMDSC}{136}{\cyrmdsc}{168}
285 \@tmpb{\CYRKDSC}{137}{\cyrkdsc}{169}
286 \@tmpb{\CYRLDSC}{138}{\cyrldsc}{170}
287 \@tmpb{\CYRKHCRS}{139}{\cyrkhcrs}{171}
288 \@tmpb{\CYRLHK}{140}{\cyrlhk}{172}
289 \@tmpb{\CYRNDSC}{141}{\cyrndsc}{173}
290 \@tmpb{\CYRMHK}{142}{\cyrmhk}{174}
291 \@tmpb{\CYRNHK}{143}{\cyrnhk}{175}
292 \@tmpb{\CYROTLD}{144}{\cyrotld}{176}
293 \@tmpb{\CYRABHCH}{145}{\cyrabhch}{177}
294 \@tmpb{\CYRABHCHDSC}{146}{\cyrabhchdsc}{178}
295 \@tmpb{\CYRYAT}{147}{\cyryat}{179}
296 \@tmpb{\CYRIZH}{148}{\cyrizh}{180}
297 \@tmpb{\CYRHDSC}{149}{\cyrhdsc}{181}
298 \@tmpb{\CYRDZHE}{150}{\cyrdzhe}{182}
299 \@tmpb{\CYRABHHA}{151}{\cyrabhha}{183}
300 \@tmpb{\CYRCHRDSC}{152}{\cyrchrdsc}{184}
301 \@tmpb{\CYRNLHK}{153}{\cyrnlhk}{185}
302 \@tmpb{\CYRSCHWA}{154}{\cyrschwa}{186}
303 \@tmpb{\CYRBYUS}{155}{\cyrbyus}{187}

304 ⟨/T2C⟩ 305 %

306 ⟨X2 | T2A | T2B | T2C⟩\@tmpb{\CYRYO}{156}{\cyryo}{188}

The final block of cyrillic letters occupy the space normally ‘reserved’ for Latin letters in ASCII. These letters are only present in X2 encoding (which does not contain Latin letters). However, some Cyrillic glyphs here look exactly like some Latin analogs, and we declare them also for T2* encodings, so that they can be accessible from inputenc files. However, for T2* these letters share the same slots with the corresponding Latin letters. These letters are: \CYRII, \CYRJE, \CYRQ, \CYRDZE, \CYRW (and lowercase variants).

307 ⟨∗X2⟩

308 \@tmpb{\CYRAE}{65}{\cyrae}{97}
309 \@tmpb{\CYRDJE}{66}{\cyrdje}{98}
310 \@tmpb{\CYRTSHE}{67}{\cyrtshe}{99}
311 \@tmpb{\CYRABHCH}{68}{\cyrabhch}{100}
312 \@tmpb{\CYRABHCHDSC}{69}{\cyrabhchdsc}{101}
313 \@tmpb{\CYRKVCRS}{70}{\cyrkvcrs}{102}
314 \@tmpb{\CYRKHCRS}{71}{\cyrkhcrs}{103}
315 \@tmpb{\CYRLDSC}{72}{\cyrldsc}{104}

316 ⟨/X2⟩ 317 ⟨∗X2 | T2A | T2B | T2C⟩

318 \@tmpb{\CYRII}{73}{\cyrii}{105}
319 \@tmpb{\CYRJE}{74}{\cyrje}{106}

320 ⟨/X2 | T2A | T2B | T2C⟩ 321 ⟨∗X2⟩

322 \@tmpb{\CYRLJE}{75}{\cyrlje}{107}
323 \@tmpb{\CYRMDSC}{76}{\cyrmdsc}{108}
324 \@tmpb{\CYRNJE}{77}{\cyrnje}{109}
325 \@tmpb{\CYRABHHA}{78}{\cyrabhha}{110}
326 \@tmpb{\CYRPHK}{79}{\cyrphk}{111}
327 \@tmpb{\CYRRDSC}{80}{\cyrrdsc}{112}

328 ⟨/X2⟩

329 ⟨X2 | T2A | T2B | T2C⟩\@tmpb{\CYRQ}{81}{\cyrq}{113}
330 ⟨X2⟩\@tmpb{\CYRTDSC}{82}{\cyrtdsc}{114}
331 ⟨X2 | T2A | T2B | T2C⟩\@tmpb{\CYRDZE}{83}{\cyrdze}{115}

332 ⟨∗X2⟩

333 \@tmpb{\CYRTETSE}{84}{\cyrtetse}{116}
334 \@tmpb{\CYRDZHE}{85}{\cyrdzhe}{117}
335 \@tmpb{\CYRCHVCRS}{86}{\cyrchvcrs}{118}

336 ⟨/X2⟩

337 ⟨X2 | T2A | T2B | T2C⟩\@tmpb{\CYRW}{87}{\cyrw}{119}

338 ⟨∗X2⟩

339 \@tmpb{\CYRYAT}{88}{\cyryat}{120}
340 \@tmpb{\CYRBYUS}{89}{\cyrbyus}{121}
341 \@tmpb{\CYRIZH}{90}{\cyrizh}{122}

342 ⟨/X2⟩ 343 % 344 ⟨∗X2 | T2A | T2B | T2C⟩

345 \let\@tmpa\undefined
346 \let\@tmpb\undefined

347 \let\@tmpc\undefined
348 \let\@tmpd\undefined

349 ⟨/X2 | T2A | T2B | T2C⟩

Is this a good place to put here the declarations of derivative characters (for use in inputenc)? Should they be added to \@uclclist?

350 %\DeclareTextCommand{\CYRGJE}{X2}{\@tabacckludge'\CYRG}
351 %\DeclareTextCommand{\cyrgje}{X2}{\@tabacckludge'\cyrg}
352 %\DeclareTextCommand{\CYRKJE}{X2}{\@tabacckludge'\CYRK}
353 %\DeclareTextCommand{\cyrkje}{X2}{\@tabacckludge'\cyrk}

This is for compatibility with older Russian packages. (Move to BABEL?)

354 ⟨∗X2 | T2A | T2B | T2C⟩

355 \let\No\CYRNo
356 \let\flqq\guillemotleft
357 \let\frqq\guillemotright

358 ⟨/X2 | T2A | T2B | T2C⟩