summaryrefslogtreecommitdiff
path: root/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc.mf
blob: ceff20fa1fa6374bc3ec0bd714340c636a896bef (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>.
% This file is part of vntex.  License: LPPL, version 1.3 or newer,
% according to http://www.latex-project.org/lppl.txt

% driver for cap and smallcap fonts (based on eccsc.mf)

version_check(1,0);  % |version_check| was introduced in dc1.3

input exaccess; % accessories for polish special letters
input expseudo; % pseudoparameters 

mode_setup;
font_setup;
pseudo_setup;

if known testing:
    set_uppercase;
    input vnaccent;
    input_ur_fam;
elseif known gen_t5_supp:
    input exbraces; % ^ ~ cwm  ( ) < | > [ ] \ { } _ - (177) space (040)
    input expunct;  %  < << > >>  ! ` ' *  + , . / = ; : (spanish !)
    input exsign;   %  zero for mille, " # $ % @ pound sign
    set_uppercase;
    input vnaccent;
    input vnuacc;
    input vnuor;    % Ohorn
    input vnuur;    % Uhorn
    input vnudr;    % D-bar
else:
    input exrulett; % upper case (majuscules)
    input exbraces; % ^ ~ cwm  ( ) < | > [ ] \ { } _ - (177) space (040)
    input expunct;  %  < << > >>  ! ` ' *  + , . / = ; : (spanish !)
    input exsign;   %  zero for mille, " # $ % @ pound sign
    input exromp;   % (roman punctuation)  & ? (spanish ?)
    input exrdigit; % roman digits

    set_uppercase;
    input vnaccent;
    input vnuar;    % modified/accented "A"
    input vnuer;    % modified/accented "E"
    input vnuir;    % accented "I"
    input vnuor;    % modified/accented "O"
    input vnuur;    % modified/accented "U"
    input vnuyr;    % accented "Y"
    input vnudr;    % D-bar
fi % known testing/gen_t5_supp

boolean is_small_cap; is_small_cap:=true;
%%% fine higher
% the `higher' values are used while putting accents and attaching ogoneks
forsuffixes $=u,o,letter_fit,x_height,bar_height,body_height,stem:
 higher.$.#:=$.#; higher.$:=$;
endfor

%%% fine lower
begingroup
forsuffixes $= u, width_adj, cap_serif_fit, letter_fit,
 body_height, cap_height, x_height, bar_height, comma_depth,
 flare, dot_size, 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: save $; $.#:=lower.$.#; endfor
fudge:=lower.fudge;

% optional part:
forsuffixes $ = depth_corr, left_corr, top_breadth_corr, tip_breadth_corr,
  tip_xcorr, tip_ycorr, pre_angle, post_angle, pre_limit, post_limit,
  pre_lightness, post_lightness, pre_deflexion, post_deflexion, cap_flat,
  ogonek_pen#: if known lower.$: $:=lower.$; fi
endfor

input expseudo;  % Recalculate pseudoparameters

font_setup;
pseudo_setup;  % now try again with |lower| settings

if unknown testing and unknown gen_t5_supp:
    input_lig excspl;    % dotless i,j; letter ligatures  FF FI FL FFI FFL D-
fi

if known testing:
    set_smallcap;
    input vnaccent;
    input_sc_fam;
    def next= endgroup endinput enddef;
elseif known gen_t5_supp:
    set_smallcap;
    input vnaccent;
    input vnlacc;
    input vnuor;    % Ohorn
    input vnuur;    % Uhorn
    input vnudr;    % D-bar
    input txpseudo; % Recalculate pseudoparameters for capital accents
    font_setup;
    pseudo_setup;
    input txaccent; % Accents for capital letters with small cap parameters
    input vndothook;% dotbelow and hookabove
    input vnminus;  % minus iff monospace:
    def next= endgroup endinput enddef;
else:
    let next=relax;
fi % known testing/gen_t5_supp
next;

extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
code_offset:=ASCII"a" - ASCII"A";

input exrulett;  % upper case (majuscules)

suppress_i_dot := true;

code_offset:=0;

set_smallcap;
input vnaccent;
input vnuar;          % modified/accented "A"
input vnuer;          % modified/accented "E"
input vnuir;          % accented "I"
input vnuor;          % modified/accented "O"
input vnuur;          % modified/accented "U"
input vnuyr;          % accented "Y"
input vnudr;          % D-bar

input txpseudo; % Recalculate pseudoparameters for capital accents
font_setup;
pseudo_setup;
input txaccent; % Accents for capital letters with small cap parameters
input vndothook;% dotbelow and hookabove
input vnminus;  % minus iff monospace:

endgroup;


% Fontparameter
%
font_coding_scheme := "Vietnamese TeX Font Encoding";
boundarychar := oct"027";
font_slant slant; 
font_x_height x_height#;
font_cap_height cap_height#;
font_asc_height asc_height#;
font_acc_cap_height (cap_height#+acc_height#);
font_desc_depth desc_depth#;
font_max_height (max(asc_height#,body_height#, cap_height#+acc_height#));
font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
% font_digit_width % set inside the digits file
% font_cap_stem    % set after the programme of the capital I
font_baselineskip max(1.2*designsize,body_height#+paren_depth#);

if monospace:
    font_normal_space 9u#; % no stretching or shrinking
    font_quad 18u#;
    font_extra_space 9u#;
    input vnmligtb;   % do the monospace ligature programs
else:
    font_normal_space 6u# + 2letter_fit#;
    font_normal_stretch 3u#;
    font_normal_shrink 2u#;
    font_quad 18u# + 4letter_fit#;
    font_extra_space 2u#;
    input vncligtb;    % do the ligature programs, not for monospaced fonts
fi

endinput;