% Caps and Small Caps in Computer Modern Cyrillic

let cmchar=message; % `|cmchar|' should precede each character

font_coding_scheme:=if ligs=0: "TeX Cyrillic typewriter text"
 else: "TeX Cyrillic text without f-ligatures" fi;
spanish_shriek=oct"016"; spanish_query=oct"017";

input cycoding;

mode_setup; font_setup;
input cyru;  % upper case (majuscules)
%input romsub;  % substitutes for ligatures
%if ligs>0: input comlig; fi  % ligatures common with italic

%ligtable "!": "`" =: spanish_shriek;
%ligtable "?": "`" =: spanish_query;
font_slant slant; font_x_height x_height#;
if monospace: font_normal_space 9u#; % no stretching or shrinking
 font_quad 18u#;
 font_extra_space 9u#;
else: font_normal_space 6u#+2letter_fit#;
 font_normal_stretch 3u#; font_normal_shrink 2u#;
 font_quad 18u#+4letter_fit#;
 font_extra_space 2u#;
fi;

%%% fine lower
forsuffixes $= u, width_adj, cap_serif_fit, letter_fit,
 body_height, cap_height, x_height, bar_height, comma_depth,
 flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
 cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
 o, apex_o:  $.#:=lower.$.#; endfor
fudge:=lower.fudge;
font_setup; % now try again with |lower| settings
extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
code_offset:= ASCII"A" - ASCII"a";
input cyru;  % majuscules (in lowercase positions)
%code_offset:=-3;
%input romspu;  % \AE, \OE, \O\ (in positions of \ae, \oe, \o)
%code_offset:=0;
%input cscspu;  % substitutes for the remaining characters of romspl
bye.

