summaryrefslogtreecommitdiff
path: root/language/vietnamese/vntex/fonts/source/vntex
diff options
context:
space:
mode:
Diffstat (limited to 'language/vietnamese/vntex/fonts/source/vntex')
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnaccent.mf505
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnacomp.mf58
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnb10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbase.mf954
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx5.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx6.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx7.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxsl10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxti10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vncligtb.mf159
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vncode.mf339
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vncombac.mf28
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc.mf164
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vndothook.mf19
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vndunh10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnecomp.mf40
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnff10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnfi10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnfib8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnicomp.mf22
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vniligtb.mf135
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnitt10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlacc.mf28
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlai.mf45
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlar.mf112
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnldi.mf55
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnldr.mf70
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlei.mf48
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnler.mf73
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlii.mf62
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlir.mf74
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnloi.mf38
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlor.mf38
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlui.mf50
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlur.mf70
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyi.mf57
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyr.mf101
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnminus.mf39
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnmligtb.mf16
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnocomp.mf65
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr17.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr5.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr6.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr7.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnr9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnrligtb.mf211
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnrm.mf97
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnroman.mf119
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnsltt10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnss10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnss12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnss17.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnss8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnss9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssbx10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssdc10.mf7
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi17.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssq8.mf7
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnssqi8.mf7
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntcsc10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntextit.mf120
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnti10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnti12.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnti7.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnti8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnti9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntt10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntt12.mf9
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntt8.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vntt9.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnu10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuacc.mf28
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuar.mf65
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnucomp.mf47
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnudr.mf58
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuer.mf72
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuir.mf32
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuor.mf44
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuur.mf94
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnuyr.mf63
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnvtt10.mf8
-rw-r--r--language/vietnamese/vntex/fonts/source/vntex/vnr/vnycomp.mf22
98 files changed, 4974 insertions, 0 deletions
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnaccent.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnaccent.mf
new file mode 100644
index 0000000000..1aa76f8db0
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnaccent.mf
@@ -0,0 +1,505 @@
+% 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
+
+% define accents for vietnamese letters
+
+vn_accent_gap# := max(.15x_height#, .5stem#);
+vn_letter_height# := if case_ = small: x_height# else: cap_height# fi;
+vn_max_ac_top# := 0;
+
+vn_tt_corr# := if low_asterisk: crisp# else: 0 fi;
+define_pixels(vn_tt_corr);
+
+if serifs:
+ vn_acute_stem# := .8stem#;
+ vn_acute_hair# := min(hair#, .4vn_acute_stem#);
+else:
+ vn_acute_stem# := .7[vair#, stem#];
+ vn_acute_hair# := .9vair#;
+fi
+
+vn_acute_side_thickness# := .6vn_acute_stem#;
+vn_acute_corner# := .5vn_acute_hair#;
+vn_tt_corner_corr# := .25vn_tt_corr#;
+vn_corner_corr# := vn_acute_corner# + vn_tt_corner_corr#;
+vn_acute_width# := 4u#;
+ds# := vn_acute_corner# + vn_acute_side_thickness#;
+vn_acute_height# := max(.4x_height#, (vn_acute_width# - ds#)*tand(30) + ds#);
+vn_slant_width_corr# := slant*(vn_acute_height# - ds#);
+vn_slant_weight_corr := if slant > 0:
+ if crisp > 0: .2 else: .3 fi slant
+ else: 0 fi;
+define_blacker_pixels(vn_acute_stem, vn_acute_hair, vn_acute_side_thickness);
+
+define_accent_dimens(
+ acute_,
+ vn_acute_width# - vn_slant_width_corr#,
+ vn_acute_height#
+);
+
+begin_accent(acute_);
+ if serifs:
+ pickup crisp.nib;
+ x1 = w - vn_acute_side_thickness;
+ y1 = h - vn_acute_side_thickness;
+ x2 = hp(vn_corner_corr#);
+ y2 = vp(vn_corner_corr#);
+ vn_acute_theta := angle(charwd - vn_corner_corr# - vn_acute_side_thickness#,
+ charht - vn_corner_corr# - vn_acute_side_thickness#);
+ pos1(vn_acute_stem*(1 + vn_slant_weight_corr), vn_acute_theta + 90);
+ pos2(vn_acute_hair*(1 + vn_slant_weight_corr), vn_acute_theta + 90);
+ filldraw circ_stroke z1e -- z2e; % diagonal
+ vn_set_ac_join(acute_, .4w, .4w#, h# - vn_acute_side_thickness#);
+ else:
+ pickup fine.nib;
+ % the following magic lines are to calculate the slope angle according
+ % to vn_acute_stem and vn_acute_hair by solving the equation
+ % tand(theta)*(w - .5(vn_acute_stem + vn_acute_hair)/sind(theta)) = h;
+ A := charwd/charht;
+ B := .5(vn_acute_stem# + vn_acute_hair#)/charht;
+ vn_acute_theta := angle(A*sqrt(A*A + 1 - B*B) - B, A*A + 1);
+ pos1(vn_acute_stem/sind(vn_acute_theta), 0);
+ pos2(vn_acute_hair/sind(vn_acute_theta), 0);
+ rt x1r = w;
+ lft x2l = 0;
+ top y1 = h;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e;
+ vn_set_ac_join(acute_, .3w, .3w#, h#);
+ fi % diagonal
+ penlabels(1, 2);
+end_accent;
+
+define_accent_dimens(
+ grave_,
+ vn_acute_width# + vn_slant_width_corr#,
+ vn_acute_height#
+);
+
+begin_accent(grave_);
+ if serifs:
+ pickup crisp.nib;
+ x1 = vn_acute_side_thickness;
+ y1 = h - vn_acute_side_thickness;
+ x2 = w - hp(vn_corner_corr#);
+ y2 = vp(vn_corner_corr#);
+ vn_grave_theta := 180 - angle(z1 - z2);
+ pos1(vn_acute_stem*(1 - vn_slant_weight_corr), 90 - vn_grave_theta);
+ pos2(vn_acute_hair*(1 - vn_slant_weight_corr), 90 - vn_grave_theta);
+ filldraw circ_stroke z1e -- z2e;
+ vn_set_ac_join(grave_, .7w, .7w#, vn_corner_corr#);
+ else:
+ pickup fine.nib;
+ pos1(vn_acute_stem/sind(vn_acute_theta), 0);
+ pos2(vn_acute_hair/sind(vn_acute_theta), 0);
+ lft x1l = 0;
+ rt x2r = w;
+ top y1 = h;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e;
+ vn_set_ac_join(grave_, .7w, .7w#, 0);
+ fi % diagonal
+ penlabels(1, 2);
+end_accent;
+
+define_accent_dimens(
+ dotless_question_,
+ 4.5u#,
+ if serifs: .6min(asc_height#, 1.5x_height#)
+ else: .6min(asc_height#, 1.3x_height#) fi
+);
+
+hook_scale_stem := .65;
+
+begin_accent(dotless_question_); % based on roman question mark
+ numeric bot_width;
+ bot_width = hook_scale_stem *
+ if hefty: max(hround .8dot_size, fine.breadth) else: hair fi;
+ pickup fine.nib;
+ pos2(hook_scale_stem*vair, 90);
+ pos3(hook_scale_stem*curve, 0);
+ pos4(hook_scale_stem*vair, -90);
+ pos5(hook_scale_stem*bot_width, 0);
+ pos6(hook_scale_stem*bot_width, 0);
+ x2 = x4 = x5 = x6 = .5w - .125u;
+ rt x3r = hround(w - .5u);
+ bot_hook# := .15[dot_size#, x_height#]
+ if serifs: + .2x_height# - .5dot_size# - .75vn_tt_corr#
+ else: + .1x_height# - .5dot_size# fi;
+ define_pixels(bot_hook);
+ bot y6 = 1 + bot_hook;
+ top y2r = h + oo;
+% y3 = .75[y6, y2];
+ y3 = .7[y6, y2];
+ if serifs:
+% y4 = .5[y6, y2];
+ y4 = .45[y6, y2];
+ else:
+ y4 = .45[y6, y2];
+ fi
+ y5 = .1[y6, y2];
+ {{interim superness := more_super;
+ filldraw stroke pulled_super_arc.e(2, 3)(superpull)
+ & subpath (0, 1) of super_arc.e(3, 4) .. z5e --- z6e\\}}; % arc and stem
+ if serifs:
+ pos1(hook_scale_stem*hair, 180);
+ pos0(hook_scale_stem*flare, 180);
+ lft x1r = hround .5u;
+ y1 = y3;
+ bulb(2, 1, 0); % bulb
+ else:
+ pos1(Vround 5/7[hook_scale_stem*vair, hook_scale_stem*flare], 110);
+ lft x1r = hround .5u;
+ top y1r = vround .8[y6, top y2r];
+ filldraw stroke term.e(2, 1, left, 1, 4);
+ fi % terminal
+ penlabels(0, 1, 2, 3, 4, 5, 6);
+% now we need to calculate the accent dimens:
+% lft x1r = hround .5u;
+% rt x3r = hround(w - .5u);
+ vn_hook_width# := w# - u#;
+% bot y6 = 1 + bot_hook;
+% top y2r = h + oo;
+% oo:=vround(.5o#*hppp*o_correction)+eps;
+ vn_hook_height# := h# + .5o#*o_correction - bot_hook#;
+ vn_hook_shift_y := bot_hook;
+ vn_hook_shift_x := .5u + vn_hook_shift_y*slant;
+% x2 = x4 = x5 = x6 = .5w - .125u;
+ vn_hook_join_x := .5w - .125u - .5u;
+ vn_hook_join_x# := .5w# - .25u# - .5u#;
+end_accent;
+
+define_accent_dimens(
+ hook_,
+ vn_hook_width#,
+ vn_hook_height#
+);
+
+def bboxcolor = blue enddef;
+begin_accent(hook_);
+ currentpicture := vn_pic(dotless_question_)
+ shifted -(vn_hook_shift_x, vn_hook_shift_y);
+ vn_set_ac_join(hook_, vn_hook_join_x, vn_hook_join_x#, .75h#);
+end_accent;
+def bboxcolor = red enddef;
+
+vn_circumflex_width# := 1.5vn_acute_width#;
+if serifs:
+vn_left_theta := .8vn_acute_theta;
+vn_right_theta := .8vn_grave_theta;
+vn_circumflex_height# := vn_corner_corr# + .5vn_acute_stem# +
+ (.5vn_circumflex_width# - vn_corner_corr#)*tand(vn_left_theta);
+else:
+vn_circumflex_height# := vn_acute_height#;
+fi
+define_accent_dimens(
+ circumflex_,
+ vn_circumflex_width#,
+ vn_circumflex_height#
+);
+
+begin_accent(circumflex_);
+ if serifs:
+ pickup crisp.nib;
+ x1 = w - x3 = hp(vn_corner_corr#);
+ if vn_tt_corr = 0:
+ y1 = y3 + .3vp(vn_slant_width_corr#)
+ else:
+ y1 = y3
+ fi
+ = vp(vn_corner_corr#);
+ pos1(vn_acute_hair*(1 + vn_slant_weight_corr), vn_left_theta + 90);
+ pos3(vn_acute_hair*(1 - vn_slant_weight_corr), 90 - vn_right_theta);
+ pos2(.9vn_acute_stem, 90);
+ x2 = .5w - .3hp(vn_slant_width_corr#);
+ z1 - z2 = whatever * dir vn_left_theta;
+ filldraw stroke z1e -- z2e -- z3e; % diagonals
+ penlabels(0, 1, 2, 3, 4);
+ vn_set_ac_join(circumflex_, .5w, .5w#, 0);
+ else:
+ pickup fine.nib;
+ % similiarly to acute
+ A := .5(charwd + vn_acute_stem#)/charht;
+ B := .5(vn_acute_stem# + vn_acute_hair#)/charht;
+ theta := angle(A*sqrt(A*A + 1 - B*B) - B, A*A + 1);
+ pos1(vn_acute_hair/sind(theta), 0);
+ pos2(min(stem/sind(theta), .6h), 0);
+ pos3(vn_acute_hair/sind(theta), 0);
+ lft x1l = w - rt x3r = 0;
+ bot y1 = bot y3 = 0;
+ x2 = 1/2w;
+ top y2 = h;
+ z0 = whatever[z1r, z2r] = whatever[z2l, z3l];
+ y4l = y4r = y2;
+ x4l = good.x 1/5[x2l, x2];
+ x4r = w - x4l;
+ filldraw z4l -- z1l -- z1r -- z0 -- z3l -- z3r -- z4r -- cycle;
+ penlabels(0, 1, 2, 3, 4);
+ vn_set_ac_join(circumflex_, .5w, .5w#, 0);
+ fi % diagonals
+end_accent;
+
+vn_breve_width# := .9vn_circumflex_width#;
+vn_breve_height# := min(if not serifs: .8 fi vn_circumflex_height#, .5vn_breve_width#);
+
+define_accent_dimens(
+ breve_,
+ vn_breve_width#,
+ vn_breve_height#
+);
+
+begin_accent(breve_);
+ if serifs:
+ pickup crisp.nib;
+ vn_breve_stem := .8vn_acute_stem;
+ vn_breve_vair := vn_acute_hair;
+ else:
+ pickup fine.nib;
+ vn_breve_stem := .9vair;
+ vn_breve_vair := .9vair;
+ fi
+ pos1(vn_breve_vair, -180);
+ pos3(vn_breve_vair, 0);
+ top y1 = top y3 = h;
+ lft x1r = w - rt x3r = 0;
+ pos2(vn_breve_stem, -90);
+ x2 = .5w;
+ bot y2r = 0;
+ filldraw stroke z1e{down} ... z2e{right} ... {up}z3e;
+ penlabels(1, 2, 3);
+ vn_set_ac_join(breve_, .5w, .5w#, 0);
+end_accent;
+
+vn_tilde_h# := min(asc_height# - x_height#, 3/7x_height# + .5dot_size#);
+if serifs:
+ vn_tilde_width# := vn_breve_width#;
+ vn_tilde_height# := .4vn_tilde_h# + .5vn_tt_corr# + .2stem#
+ if beak_jut < 0: + .4vn_tilde_h# fi;
+else:
+ vn_tilde_width# := vn_circumflex_width#;
+ vn_tilde_height# := .7vn_breve_height# + .2stem#;
+fi
+vn_tilde_h := vp(vn_tilde_h#);
+
+define_accent_dimens(
+ tilde_,
+ vn_tilde_width#,
+ vn_tilde_height#
+);
+
+vn_gap(tilde_) := .1x_height#;
+
+begin_accent(tilde_);
+ if serifs:
+ vn_tilde_stem := min(vn_acute_stem, .2w);
+ vn_tilde_vair := max(vair, .5vn_tilde_stem);
+ theta := angle(1/4(4u - vn_tilde_vair), 1/4vn_tilde_h);
+ pickup crisp.nib;
+ numeric vn_mid_width;
+% vn_mid_width = .4[vn_tilde_vair, vn_tilde_stem];
+ vn_mid_width = .4[vn_tilde_vair, stem];
+ pos1(vn_tilde_vair, theta + 90);
+ pos2(vn_tilde_vair, theta + 90);
+ pos3(vn_tilde_vair, theta + 90);
+ pos4(vn_tilde_vair, theta + 90);
+ z2 - z1 = z4 - z3 = min(vn_mid_width - .8crisp - .2vn_tt_corr, .3w)*dir theta;
+ lft x1r = w - rt x4l = 0;
+ bot y1l = 0;
+ top y4r = vround(top y4r + max(.3vn_tilde_h, y2r + .25vn_tilde_vair) - bot y4l);
+ pair delta;
+ ypart delta = min(3*(y3l - y1l), 1.6h);
+ delta = whatever*dir theta;
+ filldraw z1l .. controls(z1l + delta) and (z3l - delta)
+ .. z3l .. z4l -- z4r .. controls(z4r - delta) and (z2r + delta)
+ .. z2r .. z1r -- cycle; % stroke
+ else:
+ pickup fine.nib;
+ vn_tilde_vair := min(vair, .5vn_tilde_h);
+ pos1(vn_tilde_vair, 180);
+ pos2(vn_tilde_vair, 90);
+ pos3(.5[vn_tilde_vair, slab], 90);
+ pos4(vn_tilde_vair, 90);
+ pos5(vn_tilde_vair, 180);
+ lft x1r = w - rt x5l = 0;
+ x2 - x1 = x3 - x2 = x4 - x3 = x5 - x4;
+ bot y1 = bot y4l = 0;
+ top y2r = top y5 = h;
+ y3 = .5[y2, y4];
+ filldraw stroke z1e{up} ... z2e{right} .. z3e .. {right}z4e ... {up}z5e;
+ fi % stroke
+ vn_set_ac_join(tilde_, .5w, .5w#, 0);
+ penlabels(1, 2, 3, 4, 5);
+end_accent;
+
+vn_dot_diam# := max(.8max(dot_size#, cap_curve#), flare#);
+define_whole_blacker_pixels(vn_dot_diam);
+vn_bot(dot_) := max(vn_accent_gap#, .7vn_dot_diam#) + vn_dot_diam#;
+
+define_accent_dimens(
+ dot_,
+ vn_dot_diam#,
+ vn_dot_diam#
+);
+
+begin_accent(dot_);
+ pickup tiny.nib;
+ pos1(h, 0);
+ pos2(h, 90);
+ lft x1l = 0;
+ x1 = x2;
+ top y2r = h;
+ y1 = 1/2[y2l, y2r];
+ dot(1, 2); % dot
+ vn_set_ac_join(dot_, .5w, .5w#, .5h#);
+ penlabels(1, 2);
+end_accent;
+
+
+if not square_dots:
+ vn_horn_dot_size# := min(dot_size#, .3x_height#);
+% vn_horn_dot_size# := 1.2stem# + .1vn_tt_corr#;
+ vn_horn_stem# := if vn_tt_corr# = 0: 1.3 fi vair#;
+ vn_ohorn_width# := vn_horn_dot_size# + .1stem# + .2vn_tt_corr#;
+ vn_ohorn_height# := 1.6vn_horn_dot_size# + .2vn_tt_corr#;
+ vn_uhorn_width# := vn_horn_dot_size# + .2u# +
+ if case_ = small: .1u# + .4stem# - .2vn_slant_width_corr#
+ else: .4cap_hair# fi;
+ vn_uhorn_height# := 1.7vn_horn_dot_size#;
+else:
+ vn_horn_dot_size# := max(dot_size#, .8cap_curve#);
+ vn_horn_stem# := .7vn_horn_dot_size#;
+ vn_ohorn_width# := vn_horn_dot_size# + .3stem# + .3u#;
+ vn_ohorn_height# := 1.7vn_horn_dot_size#;
+ vn_uhorn_width# := vn_horn_dot_size# + .5stem# + .3u#;
+ vn_uhorn_height# := 1.8vn_horn_dot_size#;
+fi
+
+vn_horn_top# := vn_letter_height# + vn_horn_dot_size#;
+
+define_accent_dimens(
+ ohorn_,
+ vn_ohorn_width#,
+ vn_ohorn_height#
+);
+
+begin_accent(ohorn_);
+ vn_draw_horn(ohorn_, vn_horn_dot_size#, vn_horn_stem#, 45);
+ vn_bot(ohorn_) := vn_horn_top# - vn_height(ohorn_);
+end_accent;
+
+define_accent_dimens(
+ uhorn_,
+ vn_uhorn_width#,
+ vn_uhorn_height#
+);
+
+begin_accent(uhorn_);
+ vn_draw_horn(uhorn_, vn_horn_dot_size#,
+ if case_ <> small: min(vn_horn_stem#, hair#) else: vn_horn_stem# fi, 0);
+ vn_bot(uhorn_) := vn_horn_top# - vn_height(uhorn_);
+end_accent;
+
+vn_ac_top := vn_max_ac_top#;
+
+if serifs:
+ vn_breve_acute_gap# := -.02x_height# + .3stem# + .1vn_tt_corr#;
+else:
+ vn_breve_acute_gap# := .15x_height# - .4stem#;
+ vn_acute_botwidth# := vn_acute_hair#/sind(vn_acute_theta); % arcording to ss acute
+fi
+
+define_double_accent(
+ breve_, acute_,
+ if serifs:
+ .8vn_left_side(breve_) + .2vn_tt_corr#
+ else:
+ vn_left_side(breve_) - .5vn_acute_botwidth# - .5u#
+ fi,
+ vn_breve_acute_gap#
+);
+
+define_double_accent(
+ breve_, grave_,
+ vn_align_right(breve_, grave_)
+ if serifs:
+ - .7vn_right_side(breve_)
+ - vn_sl_shift(breve_)
+ - .2vn_tt_corr#
+ else:
+ - vn_right_side(breve_)
+ + .7vn_acute_botwidth#
+ - vn_sl_shift(breve_)
+ fi,
+ vn_breve_acute_gap#
+);
+
+define_double_accent(
+ breve_, hook_,
+ vn_align_join(breve_, hook_),
+ vn_breve_acute_gap#
+);
+
+vn_breve_tilde_gap# := .04x_height# + .3stem# + .1vn_tt_corr#;
+
+define_double_accent(
+ breve_, tilde_,
+ vn_align_join(breve_, tilde_),
+ vn_breve_tilde_gap#
+);
+
+if not serifs:
+vn_acute_botshift# := .5vn_acute_hair#/sind(vn_acute_theta) +
+ .7vn_acute_stem#/sind(vn_acute_theta) + u#; % arcording to ss acute
+fi
+
+define_double_accent(
+ circumflex_, acute_,
+ if serifs:
+ .3vn_left_side(circumflex_)
+ + .2vn_tt_corr#
+ else:
+ vn_left_side(circumflex_)
+ - vn_acute_botshift#
+ fi,
+ vn_breve_acute_gap#
+);
+
+define_double_accent(
+ circumflex_, grave_,
+ vn_align_right(circumflex_, grave_)
+ if serifs:
+ - .3vn_right_side(circumflex_)
+ - vn_sl_shift(circumflex_)
+ - .2vn_tt_corr#
+ else:
+ - vn_right_side(circumflex_)
+ + vn_acute_botshift#
+ - vn_sl_shift(circumflex_)
+ fi,
+ vn_breve_acute_gap#
+);
+
+define_double_accent(
+ circumflex_, hook_,
+ vn_align_join(circumflex_, hook_)
+ if serifs:
+ + .3vn_right_side(circumflex_)
+ - vn_sl_shift(circumflex_)
+ - .2vn_tt_corr#
+ else:
+ + .7vn_right_side(circumflex_)
+ - vn_sl_shift(circumflex_)
+ fi,
+ vn_breve_acute_gap#
+);
+
+define_double_accent(
+ circumflex_, tilde_,
+ vn_align_join(circumflex_, tilde_),
+ vn_breve_tilde_gap#
+);
+
+vn_double_ac_top := vn_max_ac_top#;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnacomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnacomp.mf
new file mode 100644
index 0000000000..27a172ea5e
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnacomp.mf
@@ -0,0 +1,58 @@
+% 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
+
+% define [aA]-based accented letters
+
+vnchar casename "a with acute";
+define_vnchar(a, acute_);
+
+vnchar casename "a with grave";
+define_vnchar(a, grave_);
+
+vnchar casename "a with hook";
+define_vnchar(a, hook_);
+
+vnchar casename "a with tilde";
+define_vnchar(a, tilde_);
+
+vnchar casename "a with dot";
+define_vnchar_dot(a);
+
+vnchar casename "a with breve ";
+define_vnchar(a, breve_);
+
+vnchar casename "a with breve and acute";
+define_vnchar(a, breve_.acute_);
+
+vnchar casename "a with breve and grave";
+define_vnchar(a, breve_.grave_);
+
+vnchar casename "a with breve and hook";
+define_vnchar(a, breve_.hook_);
+
+vnchar casename "a with breve and tilde";
+define_vnchar(a, breve_.tilde_);
+
+vnchar casename "a with breve and dot";
+define_vnchar_dot_ac(a, breve_);
+
+vnchar casename "a with circumflex ";
+define_vnchar(a, circumflex_);
+
+vnchar casename "a with circumflex and acute";
+define_vnchar(a, circumflex_.acute_);
+
+vnchar casename "a with circumflex and grave";
+define_vnchar(a, circumflex_.grave_);
+
+vnchar casename "a with circumflex and hook";
+define_vnchar(a, circumflex_.hook_);
+
+vnchar casename "a with circumflex and tilde";
+define_vnchar(a, circumflex_.tilde_);
+
+vnchar casename "a with circumflex and dot";
+define_vnchar_dot_ac(a, circumflex_);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnb10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnb10.mf
new file mode 100644
index 0000000000..ddee29dcf6
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnb10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecrb;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbase.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbase.mf
new file mode 100644
index 0000000000..a87e32ce6c
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbase.mf
@@ -0,0 +1,954 @@
+% 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
+
+% basic macros for all vnr fonts
+
+% get_acc_pos := 1;
+% gen_t5_supp := 1;
+
+if known get_acc_pos or known gen_t5_supp:
+ mag := 100.375;
+fi
+
+% define which letters should be generated when testing > 0
+def testchars =
+% a.acute_,
+% a.dot_,
+% a.grave_,
+% a.hook_,
+% a.tilde_,
+% a.breve_,
+% a.breve_.acute_,
+% a.breve_.dot_,
+% a.breve_.grave_,
+% a.breve_.hook_,
+% a.breve_.tilde_,
+% a.circumflex_,
+% a.circumflex_.acute_,
+% a.circumflex_.dot_,
+% a.circumflex_.grave_,
+% a.circumflex_.hook_,
+% a.circumflex_.tilde_,
+% d.bar_,
+% e.acute_,
+% e.dot_,
+% e.grave_,
+% e.hook_,
+% e.tilde_,
+% e.circumflex_,
+% e.circumflex_.acute_,
+% e.circumflex_.dot_,
+% e.circumflex_.grave_,
+% e.circumflex_.hook_,
+% e.circumflex_.tilde_,
+% i.acute_,
+% i.dot_,
+% i.grave_,
+% i.hook_,
+% i.tilde_,
+% o.acute_,
+% o.dot_,
+% o.grave_,
+% o.hook_,
+% o.tilde_,
+% o.circumflex_,
+% o.circumflex_.acute_,
+% o.circumflex_.dot_,
+% o.circumflex_.grave_,
+% o.circumflex_.hook_,
+% o.circumflex_.tilde_,
+o.horn_,
+o.horn_.acute_,
+o.horn_.dot_,
+o.horn_.grave_,
+o.horn_.hook_,
+o.horn_.tilde_,
+% u.acute_,
+% u.dot_,
+% u.grave_,
+% u.hook_,
+% u.tilde_,
+u.horn_,
+u.horn_.acute_,
+u.horn_.dot_,
+u.horn_.grave_,
+u.horn_.hook_,
+u.horn_.tilde_,
+% y.acute_,
+% y.dot_,
+% y.grave_,
+% y.hook_,
+% y.tilde_,
+last
+enddef;
+
+C.l.last := 256;
+C.u.last := 256;
+
+% copied from plain.mf to make metapost run with ec sources, as mfplain.mp is not
+% up-to-date with plain.mf
+vardef whatever = save ?; ? enddef;
+def killtext text t = enddef;
+
+
+if known testing: % turn testing on
+% proofcolor := .4[white, black];
+ defaultfont := "Times-Roman";
+ defaultscale := 1;
+ prologues := 1;
+ show_labels := 1;
+ if known gensize:
+ mag := 20/gensize;
+ else:
+ mag := 2;
+ fi
+fi
+
+if unknown exbase:
+ input exbase;
+fi
+
+if unknown displaying:
+ displaying := 0;
+fi
+
+let vnchar = ecchar;
+let cmchar = ecchar;
+
+input vncode; % character encoding
+
+if known testing:
+string inputstr;
+forsuffixes _u =
+ A_fam_used, D_fam_used, E_fam_used, I_fam_used, O_fam_used, U_fam_used, Y_fam_used,
+ a_fam_used, d_fam_used, e_fam_used, i_fam_used, o_fam_used, u_fam_used, y_fam_used:
+ boolean _u;
+ _u := false;
+endfor;
+
+def test_fam(text _f, _u, _c) =
+ n_ := 0;
+ if not _u:
+ forsuffixes $ = _f(,) 257:
+ n_ := n_ + 1;
+ if (($ < 32) or ($ > 127)) % check for vn chars only
+ and ($ = C.u._c) or ($ = C.l._c):
+ _u := true;
+ fi
+ endfor
+ fi
+enddef;
+
+forsuffixes _c = testchars:
+ test_fam(A_fam)(A_fam_used)(_c);
+ test_fam(D_fam)(D_fam_used)(_c);
+ test_fam(E_fam)(E_fam_used)(_c);
+ test_fam(I_fam)(I_fam_used)(_c);
+ test_fam(O_fam)(O_fam_used)(_c);
+ test_fam(U_fam)(U_fam_used)(_c);
+ test_fam(Y_fam)(Y_fam_used)(_c);
+
+ test_fam(a_fam)(a_fam_used)(_c);
+ test_fam(d_fam)(d_fam_used)(_c);
+ test_fam(e_fam)(e_fam_used)(_c);
+ test_fam(i_fam)(i_fam_used)(_c);
+ test_fam(o_fam)(o_fam_used)(_c);
+ test_fam(u_fam)(u_fam_used)(_c);
+ test_fam(y_fam)(y_fam_used)(_c);
+
+ test_fam(U_horn_fam)(U_fam_used)(_c);
+ test_fam(u_horn_fam)(u_fam_used)(_c);
+endfor
+
+def input_ur_fam =
+ inputstr := "";
+ if A_fam_used: inputstr := inputstr & "input vnuar; "; fi
+ if D_fam_used: inputstr := inputstr & "input vnudr; "; fi
+ if E_fam_used: inputstr := inputstr & "input vnuer; "; fi
+ if I_fam_used: inputstr := inputstr & "input vnuir; "; fi
+ if O_fam_used: inputstr := inputstr & "input vnuor; "; fi
+ if U_fam_used: inputstr := inputstr & "input vnuur; "; fi
+ if Y_fam_used: inputstr := inputstr & "input vnuyr; "; fi
+ scantokens(inputstr);
+enddef;
+
+def input_lr_fam =
+ inputstr := "";
+ if a_fam_used: inputstr := inputstr & "input vnlar; "; fi
+ if d_fam_used: inputstr := inputstr & "input vnldr; "; fi
+ if e_fam_used: inputstr := inputstr & "input vnler; "; fi
+ if i_fam_used: inputstr := inputstr & "input vnlir; "; fi
+ if o_fam_used: inputstr := inputstr & "input vnlor; "; fi
+ if u_fam_used: inputstr := inputstr & "input vnlur; "; fi
+ if y_fam_used: inputstr := inputstr & "input vnlyr; "; fi
+ scantokens(inputstr);
+enddef;
+
+def input_sc_fam =
+ inputstr := "";
+ if a_fam_used: inputstr := inputstr & "input vnuar; "; fi
+ if d_fam_used: inputstr := inputstr & "input vnudr; "; fi
+ if e_fam_used: inputstr := inputstr & "input vnuer; "; fi
+ if i_fam_used: inputstr := inputstr & "input vnuir; "; fi
+ if o_fam_used: inputstr := inputstr & "input vnuor; "; fi
+ if u_fam_used: inputstr := inputstr & "input vnuur; "; fi
+ if y_fam_used: inputstr := inputstr & "input vnuyr; "; fi
+ scantokens(inputstr);
+enddef;
+
+def input_li_fam =
+ inputstr := "";
+ if a_fam_used: inputstr := inputstr & "input vnlai; "; fi
+ if d_fam_used: inputstr := inputstr & "input vnldi; "; fi
+ if e_fam_used: inputstr := inputstr & "input vnlei; "; fi
+ if i_fam_used: inputstr := inputstr & "input vnlii; "; fi
+ if o_fam_used: inputstr := inputstr & "input vnloi; "; fi
+ if u_fam_used: inputstr := inputstr & "input vnlui; "; fi
+ if y_fam_used: inputstr := inputstr & "input vnlyi; "; fi
+ scantokens(inputstr);
+enddef;
+
+% def endchar =
+% scantokens extra_endchar;
+% if proofing>0: makebox(proofrule); fi
+% chardx:=w; % desired width of the character in pixels
+% shipit;
+% endgroup enddef;
+
+% def makebox(text rule) =
+% for y=0,asc_height,body_height,x_height,bar_height,-desc_depth,-body_depth:
+% rule((l,y)t_,(r,y)t_); endfor % horizontals
+% for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals
+% for x=u*(1+floor(l/u)) step u until r-1:
+% rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals
+% if charic<>0:
+% rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction
+% enddef;
+
+def bboxcolor = red enddef;
+def bboxrule(expr w,z) =
+ begingroup interim linecap:=squared;
+ draw w..z withpen pencircle scaled (.4/bp_per_pixel) withcolor bboxcolor;
+ endgroup
+enddef;
+
+def makebox(text rule) =
+ for y=0,(cap_height+acc_height),
+ asc_height,body_height,x_height,bar_height,-desc_depth,-body_depth:
+ rule((l,y),(r,y)); endfor % horizontals
+
+ for y=-3.5pt,8.5pt,(x_height+acc_height):
+ rule((l-4pt,y),(l-2pt,y)); endfor
+ for x=l,r: rule((x,-body_depth),(x,body_height)); endfor % verticals
+ for x=u*(1+floor(l/u)) step u until r-1:
+ rule((x,-body_depth),(x,body_height)); endfor % more verticals
+
+ for x=0.5w:
+ rule((x,-body_depth-1pt),(x,-body_depth-1.5pt));
+ rule((x,cap_height+acc_height+1pt),(x,cap_height+acc_height+1.5pt));
+ endfor
+ if charic<>0:
+ rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction
+ enddef;
+
+def makebbox(text rule) =
+ for x=0,w: bboxrule((x,-d),(x,h)); endfor % verticals
+ for y = 0,h,-d: bboxrule((0, y), (w, y)); endfor
+enddef;
+
+def endchar =
+ scantokens extra_endchar;
+ if proofing>0:
+% makebox(proofrule);
+ makebbox(proofrule);
+ fi
+ shipit;
+endgroup
+enddef;
+
+fi % known testing
+
+% if (known show_labels) and (known testing):
+% if (known show_labels):
+% def makebox(text r) =
+% for y = 0, h, -d:
+% r((0, y), (w, y));
+% endfor % horizontals
+% for x = 0, w:
+% r((x, -d), (x, h));
+% endfor % verticals
+% enddef;
+% def draw_box(expr x, y, w, h, p) =
+% pickup pencircle scaled p;
+% draw (x, y) -- (x, y + h) -- (x + w, y + h) -- (x + w, y) -- (x, y);
+% enddef;
+% else:
+% def makebox(text r) = enddef;
+% def draw_box(expr x, y, w, h) = enddef;
+% def penlabels(text r) = enddef;
+% proofcolor := black;
+% fi;
+
+numeric case_;
+small := 0;
+capital := 1;
+smallcap := 2;
+
+def set_lowercase =
+ case_ := small;
+ def vncase = l enddef;
+enddef;
+
+def set_uppercase =
+ case_ := capital;
+ def vncase = u enddef;
+enddef;
+
+def set_smallcap =
+ case_ := smallcap;
+ def vncase = l enddef;
+enddef;
+
+def casename expr _name =
+if not known testing:
+ "The " &
+ if case_ = capital:
+ "capital"
+ elseif case_ = small:
+ "small"
+ else:
+ "smallcap"
+ fi &
+ " letter " & _name
+fi
+enddef;
+
+def ifknown(suffix _a)(expr _b) =
+ if known _a: _a
+ else: _b
+ fi
+enddef;
+
+def tand(expr _d) =
+ (sind(_d)/cosd(_d))
+enddef;
+
+def vn_code(suffix _n) =
+ C.vncase._n
+enddef;
+
+def vn_pic(suffix _n) =
+ vn.vncase._n.pic
+enddef;
+
+def vn_width(suffix _n) =
+ vn.vncase._n.w#
+enddef;
+
+def vn_height(suffix _n) =
+ vn.vncase._n.h#
+enddef;
+
+def vn_top(suffix _n) =
+ vn.vncase._n.top#
+enddef;
+
+def vn_depth(suffix _n) =
+ vn.vncase._n.d#
+enddef;
+
+def vn_bot(suffix _n) =
+ vn.vncase._n.bot#
+enddef;
+
+def vn_ic(suffix _n) =
+ vn.vncase._n.ic#
+enddef;
+
+def vn_left_adj(suffix _n) =
+ vn.vncase._n.left_adj#
+enddef;
+
+def vn_right_adj(suffix _n) =
+ vn.vncase._n.right_adj#
+enddef;
+
+def vn_gap(suffix _n) =
+ vn.vncase._n.gap#
+enddef;
+
+def vn_join_xp(suffix _n) =
+ vn.vncase._n.join.x
+enddef;
+
+def vn_join_x(suffix _n) =
+ vn.vncase._n.join.x#
+enddef;
+
+def vn_rt(suffix _n) =
+ vn.vncase._n.rt#
+enddef;
+
+def vn_dot_shift_y(suffix _n) =
+ vn.vncase._n.dot_shift.y#
+enddef;
+
+def vn_ac_top =
+ vn.vncase.accent_top#
+enddef;
+
+def vn_double_ac_top =
+ vn.vncase.double_accent_top#
+enddef;
+
+let vn_left_side = vn_join_x;
+
+def vn_right_side(suffix _a) =
+ (vn_width(_a) - vn_left_side(_a))
+enddef;
+
+def align_left(suffix _a, _b) =
+ 0
+enddef;
+
+def vn_align_join(suffix _a, _b) =
+ (vn_join_x(_a) - vn_join_x(_b))
+enddef;
+
+def vn_align_right(suffix _a, _b) =
+ (vn_width(_a) - vn_width(_b))
+enddef;
+
+def define_accent_dimens(suffix _a)(expr _w, _h) =
+ vn_width(_a) := _w;
+ vn_height(_a) := _h;
+ vn_top(_a) := vn_height(_a) + vn_letter_height# + vn_accent_gap#;
+ vn_max_ac_top# := max(vn_max_ac_top#, vn_top(_a));
+enddef;
+
+def vn_set_ac_join(suffix _a)(expr _xp, _x, _rt) =
+ vn_join_xp(_a) := _xp;
+ vn_join_x(_a) := _x;
+ vn_rt(_a) := _rt;
+ if known show_labels:
+ makelabel("j", (vn_join_xp(_a), 0));
+ makelabel("J", (hp(vn_join_x(_a)), 0));
+ makelabel("r", (hp(vn_width(_a)), vp(vn_rt(_a))));
+ makelabel("o", (0,0));
+ fi
+enddef;
+
+def set_letter_join(suffix _l)(expr _xp, _x) =
+ vn_join_xp(_l) := _xp;
+ vn_join_x(_l) := _x;
+ if known show_labels:
+ makelabel("j", (vn_join_xp(_l), vp(vn_height(_l))));
+ makelabel("J", (hp(vn_join_x(_l)), vp(vn_height(_l))));
+ fi
+enddef;
+
+def set_adj_gap(suffix _l, _a) =
+ adj_gap# := ifknown(vn_gap(_l._a), ifknown(vn_gap(_a), 0));
+enddef;
+
+def get_join_xp(suffix _l, _a) =
+ ifknown(vn_join_xp(_l._a), vn_join_xp(_l))
+enddef;
+
+def get_join_x(suffix _l, _a) =
+ ifknown(vn_join_x(_l._a), vn_join_x(_l))
+enddef;
+
+def get_top(suffix _a) =
+ max(vn_top(_a) + adj_gap#,
+ if vn_top(_a) <= vn_ac_top:
+ vn_ac_top
+ else:
+ vn_double_ac_top
+ fi)
+enddef;
+
+def set_shift(suffix _l, _a) =
+ shift.y := vp(vn_top(_a) - vn_height(_a));
+ shift.x := get_join_xp(_l, _a) - vn_join_xp(_a) + slant*shift.y;
+ shift.y# := vn_top(_a) - vn_height(_a);
+ shift.x# := get_join_x(_l, _a) - vn_join_x(_a) + slant*shift.y#;
+enddef;
+
+def set_ic(suffix _l, _a) =
+ italcorr max(vn_ic(_l),
+ vn_width(_a) + shift.x#
+ + slant*(vn_rt(_a) + shift.y#)
+ - w# + .5u#);
+enddef;
+
+def set_lic(suffix _l) =
+ italcorr vn_ic(_l);
+enddef;
+
+def set_fit(suffix _l) =
+ adjust_fit(vn_left_adj(_l), vn_right_adj(_l));
+enddef;
+
+C.l.idot.dot_ = 256;
+C.u.idot.dot_ = 256; % to avoid error when calling set_dot_shift(idot)
+
+def set_dot_shift(suffix _l) =
+ shift.y := - vp(ifknown(vn_dot_shift_y(_l), vn_bot(dot_)));
+ shift.x := get_join_xp(_l, dot_) - vn_join_xp(dot_) + slant*shift.y;
+enddef;
+
+% vardef xpos@#(expr b ,d) =
+% pos@#(max(currentbreadth + eps, b), d)
+% enddef;
+vardef pos@#(expr b,d) =
+ if known b: if b<=currentbreadth:
+ (x@#r-x@#l,y@#r-y@#l)=(eps,0) rotated d;
+ else: (x@#r-x@#l,y@#r-y@#l)=(b-currentbreadth,0) rotated d; fi
+ else: (x@#r-x@#l,y@#r-y@#l)=(b-currentbreadth,0) rotated d; fi
+ x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r)
+enddef;
+
+def hp(expr _x) =
+ hround(_x*hppp)
+enddef;
+
+def vp(expr _y) =
+ vround(_y*vppp)
+enddef;
+
+def begin_pic(suffix _n) =
+ begingroup
+ clearxy;
+ clearit;
+ clearpen;
+ picture vn.vncase._n.pic;
+ vn.vncase._n.pic :=
+ begingroup
+enddef;
+
+def end_pic =
+ if known testing:
+% makebox(proofrule);
+ makebbox(proofrule);
+ fi
+ currentpicture % continuation of `vn_pic(_n) :='
+ endgroup;
+ endgroup
+enddef;
+
+def set_letter_dimens(suffix _l)(expr _w, _h, _d, _ic, _lft, _rt) =
+ set_char_dimens(_w, _h, _d);
+ vn_width(_l) := _w;
+ vn_height(_l) := _h;
+ vn_depth(_l) := _d;
+ vn_ic(_l) := _ic;
+ vn_left_adj(_l) := _lft;
+ vn_right_adj(_l) := _rt;
+ adjust_fit(_lft, _rt);
+enddef;
+
+def begin_accent(suffix _a) =
+ begin_pic(_a);
+ set_char_dimens(vn_width(_a), vn_height(_a), 0)
+enddef;
+let end_accent = end_pic;
+
+let begin_letter = begin_pic;
+let end_letter = end_pic;
+
+def vn_sl_shift(suffix _a) =
+% .5slant*(adj_y# + vn_height(_a))
+ 0
+enddef;
+
+def set_char_dimens(expr _w, _h, _d) =
+ charwd := _w;
+ charht := _h;
+ chardp := _d;
+ w := hp(charwd);
+ h := vp(charht);
+ d := vp(chardp);
+ charic := 0;
+enddef;
+
+def abs_round(expr _e) =
+ if _e < 0:
+ ceiling(_e - .5)
+ else:
+ floor(_e + .5)
+ fi
+enddef;
+
+def write_shift_xy(suffix _l, _a)(expr _sx, _sy) =
+ if known get_acc_pos and known bp_per_pixel:
+ message "CC " &
+ if case_ = capital:
+ "capital"
+ elseif case_ = small:
+ "small"
+ else:
+ "smallcap"
+ fi & " " &
+ str _l & " " &
+ str _a & " " &
+ decimal(abs_round(_sx*bp_per_pixel*10/designsize)) & " " &
+ decimal(abs_round(_sy*bp_per_pixel*10/designsize));
+ fi
+enddef;
+
+
+def define_double_accent(suffix _a, _b)(expr _adj_x, _adj_y) =
+ shift.y# := _adj_y + vn_height(_a);
+ shift.x# := _adj_x + slant*shift.y#;
+ define_accent_dimens(_a._b, vn_width(_a), vn_height(_b) + shift.y#);
+ begin_accent(_a._b);
+ currentpicture := vn_pic(_a);
+ addto currentpicture also vn_pic(_b)
+ shifted (hp(shift.x#), vp(shift.y#));
+ write_shift_xy(_a, _b)(hp(shift.x#), vp(shift.y#));
+ vn_set_ac_join(_a._b, vn_join_xp(_a), vn_join_x(_a),
+ if vn_width(_a) + slant*vn_rt(_a) >
+ vn_width(_b) + shift.x# + slant*(vn_rt(_b) + shift.y#):
+ vn_rt(_a)
+ else:
+ vn_rt(_b) + shift.y#
+ fi);
+ end_accent;
+enddef;
+
+if not known testing:
+vardef used_char(expr _code) = true enddef;
+else:
+vardef used_char(expr _code) =
+ boolean _is_used;
+ _is_used := false;
+ forsuffixes $ = testchars:
+ if _code = vn_code($):
+ _is_used := true;
+ fi;
+ endfor;
+ _is_used
+enddef;
+fi
+
+def define_vnaccent(expr _c)(suffix _a) =
+ beginchar(_c, vn_width(_a), vn_height(_a), 0);
+ currentpicture := vn_pic(_a);
+ endchar
+enddef;
+
+def define_vnchar(suffix _l, _a) =
+if used_char(vn_code(_l._a)):
+ set_adj_gap(_l, _a); % set adj_gap#
+ beginchar(vn_code(_l._a),
+ vn_width(_l),
+ get_top(_a),
+ vn_depth(_l));
+ set_shift(_l, _a); % set shift.x, shift.y, shift.x# and shift.y#
+ set_ic(_l, _a); % call italcorr
+ set_fit(_l); % call adjust_fit
+ currentpicture := vn_pic(_l);
+ addto currentpicture also vn_pic(_a)
+ shifted (shift.x, shift.y + vp(adj_gap#));
+ write_shift_xy(_l, _a)
+ (shift.x + hp(vn_left_adj(_l)) + letter_fit, shift.y + vp(adj_gap#));
+% message "vn_left_adj: " & decimal hp(vn_left_adj(_l));
+% message "letter_fit: " & decimal letter_fit;
+ endchar
+fi
+enddef;
+
+def define_vnchar_dot(suffix _l) =
+if used_char(vn_code(_l.dot_)):
+ % test for the small i letter with dot
+ if (case_ = small) and (vn_code(_l.dot_) = vn_code(i.dot_)):
+ beginchar(vn_code(i.dot_),
+ vn_width(idot),
+ vn_height(idot),
+ vn_bot(dot_));
+ set_dot_shift(idot); % set shift.x and shift.y
+ set_lic(idot); % call italcorr
+ set_fit(idot); % call adjust_fit
+ currentpicture := vn_pic(idot);
+ else:
+ beginchar(vn_code(_l.dot_),
+ vn_width(_l),
+ vn_height(_l),
+ ifknown(vn_depth(_l.dot_), max(vn_bot(dot_), vn_depth(_l))));
+ set_dot_shift(_l);
+ set_lic(_l);
+ set_fit(_l);
+ currentpicture := vn_pic(_l);
+ fi
+ addto currentpicture also vn_pic(dot_)
+ shifted (shift.x, shift.y);
+ write_shift_xy(_l, dot_)
+ (shift.x + hp(vn_left_adj(_l)) + letter_fit, shift.y);
+ endchar
+fi
+enddef;
+
+def define_vnchar_dot_ac(suffix _l, _a) =
+if used_char(vn_code(_l._a.dot_)):
+ set_adj_gap(_l, _a);
+ beginchar(vn_code(_l._a.dot_),
+ vn_width(_l),
+ get_top(_a),
+ max(vn_bot(dot_), vn_depth(_l)));
+ set_shift(_l, _a);
+ set_ic(_l, _a);
+ set_fit(_l);
+ currentpicture := vn_pic(_l);
+ addto currentpicture also vn_pic(_a)
+ shifted (shift.x, shift.y + vp(adj_gap#));
+ set_dot_shift(_l);
+ addto currentpicture also vn_pic(dot_)
+ shifted (shift.x, shift.y);
+ write_shift_xy(_l._a, dot_)
+ (shift.x + hp(vn_left_adj(_l)) + letter_fit, shift.y);
+ endchar
+fi
+enddef;
+
+def define_vnchar_horn(suffix _l) =
+if used_char(vn_code(_l.horn_)):
+ select_horn(_l);
+ set_shift_horn(_l);
+ update_horn_width(_l);
+ beginchar(vn_code(_l.horn_),
+ updated_width#,
+ vn_top(cur_horn_),
+ vn_depth(_l));
+ set_ic(_l, cur_horn_);
+ set_fit(_l);
+ select_letter_u(_l);
+ addto currentpicture also vn_pic(cur_horn_)
+ shifted (shift.x, shift.y);
+ endchar
+fi
+enddef;
+
+def select_horn(suffix _l) = % set cur_horn_ to uhorn_ or ohorn_ according to _l
+ if vn_code(_l.horn_) = vn_code(u.horn_):
+ def cur_horn_ = uhorn_ enddef;
+ else:
+ def cur_horn_ = ohorn_ enddef;
+ fi
+enddef;
+
+def update_horn_width(suffix _l) =
+ _du := (shift.x + hp(vn_width(cur_horn_))) -
+ (hp(vn_width(_l) + vn_left_adj(_l) + vn_right_adj(_l)) + 2letter_fit) -
+ slant*(shift.y + vp(vn_height(cur_horn_)));
+ updated_width# := vn_width(_l)
+ if _du > .5u:
+ + .5u#*floor(_du/.5u)
+ fi
+enddef;
+
+def set_shift_horn(suffix _l) =
+ shift.y := vp(vn_bot(cur_horn_));
+ shift.x := vn_join_xp(_l.horn_join) - vn_join_xp(cur_horn_) +
+ slant*(shift.y);
+enddef;
+
+def select_letter_u(suffix _l) =
+ % test for the serif capital u letter with horn
+ if serifs and (case_ <> small) and (vn_code(_l.horn_) = vn_code(u.horn_)):
+ % use the modified "U" (without right part of the right serif)
+ currentpicture := vn_pic(Uhorn)
+ else:
+ currentpicture := vn_pic(_l)
+ fi
+enddef;
+
+def define_vnchar_horn_ac(suffix _l, _a) =
+if used_char(vn_code(_l.horn_._a)):
+ select_horn(_l); % set cur_horn_ to uhorn_ or ohorn_ according to _l
+ set_adj_gap(_l, _a);
+ set_shift_horn(_l);
+ update_horn_width(_l);
+ beginchar(vn_code(_l.horn_._a),
+ updated_width#,
+ get_top(_a),
+ vn_depth(_l));
+ set_ic(_l, cur_horn_);
+ set_fit(_l);
+ select_letter_u(_l);
+ addto currentpicture also vn_pic(cur_horn_)
+ shifted (shift.x, shift.y);
+ set_shift(_l.horn_, _a);
+% if serifs and (vn_code(_l.horn_._a) = vn_code(o.horn_.grave_)):
+% shift.x := shift.x + max(0, u - .3stem);
+% fi
+ set_ic(_l, _a);
+ addto currentpicture also vn_pic(_a)
+ shifted (shift.x, shift.y + vp(adj_gap#));
+ write_shift_xy(_l.horn_, _a)
+ (shift.x + hp(vn_left_adj(_l)) + letter_fit, shift.y + vp(adj_gap#));
+ endchar
+fi
+enddef;
+
+def define_vnchar_horn_dot(suffix _l) =
+if used_char(vn_code(_l.horn_.dot_)):
+ select_horn(_l); % set cur_horn_ to uhorn_ or ohorn_ according to _l
+ set_shift_horn(_l);
+ update_horn_width(_l);
+ beginchar(vn_code(_l.horn_.dot_),
+ updated_width#,
+ vn_top(cur_horn_),
+ max(vn_bot(dot_), vn_depth(_l)));
+ set_ic(_l, cur_horn_);
+ set_fit(_l);
+ select_letter_u(_l);
+ addto currentpicture also vn_pic(cur_horn_)
+ shifted (shift.x, shift.y);
+ set_dot_shift(_l);
+% if serifs and (vn_tt_corr = 0) and (vn_code(_l.horn_) = vn_code(o.horn_)):
+% shift.x := shift.x + .1dot_size;
+% fi
+ addto currentpicture also vn_pic(dot_)
+ shifted (shift.x, shift.y);
+ write_shift_xy(_l.horn_, dot_)
+ (shift.x + hp(vn_left_adj(_l)) + letter_fit, shift.y);
+ endchar
+fi
+enddef;
+
+% hook_arc is based on super_arc from exbase.mf
+vardef hook_arc.r(suffix $, $$)(expr _superness, _swap) =
+ pair center, corner;
+ if (y$ = y$r) or _swap:
+ center = (x$$r, y$r);
+ corner = (x$r, y$$r);
+ else:
+ center = (x$r, y$$r);
+ corner = (x$$r, y$r);
+ fi
+ z$.r{corner - z$.r} ... _superness[center, corner]{z$$.r - z$.r} ...
+ {z$$.r - corner}z$$.r
+enddef;
+
+vardef hook_arc.l(suffix $, $$)(expr _superness, _swap) =
+ pair center, corner;
+ if (y$ = y$r) or _swap:
+ center = (x$$l, y$l);
+ corner = (x$l, y$$l);
+ else:
+ center = (x$l, y$$l);
+ corner = (x$$l, y$l);
+ fi
+ z$l{corner - z$l} ... _superness[center, corner]{z$$l - z$l} ...
+ {z$$l - corner}z$$l
+enddef;
+
+% vn_hook_bulb is based on bulb from exbase.mf
+def vn_hook_bulb(suffix $, $$, $$$) =
+ z$$$r = z$$r;
+ path_.l := z$l{x$$r - x$r, 0} ... {0, y$$r - y$r}z$$l;
+ filldraw path_.l -- z$$r{0, y$r - y$$r} ... {x$r - x$$r, 0}z$r -- cycle; % link
+ path_.r := z$$$l{0, y$r - y$$r} .. z$$$r{0, y$$r - y$r}; % near - circle
+ filldraw subpath(0, xpart(path_.r intersectiontimes path_.l)) of path_.r
+ -- z$$r{0, y$$r - y$r} .. cycle; % bulb
+enddef;
+
+def vn_draw_horn(suffix _a)(expr _dotsize, _horn_stem, _horn_bot_theta) =
+ cur_dotsize# := _dotsize;
+ cur_stem# := _horn_stem;
+ define_blacker_pixels(cur_dotsize, cur_stem);
+ if not square_dots:
+ pickup crisp.nib;
+ pos4(cur_dotsize, 90);
+ top y4r = h;
+ x4 = w - .5cur_dotsize;
+ pos1(cur_stem, 90);
+ pos2(cur_stem, 0);
+ pos3(cur_stem, _horn_bot_theta - 90);
+ z1r = z4r;
+ rt x2r = hround(x4 + .5cur_dotsize) + 2eps;
+ lft x3l = 0;
+ bot y3r = 0;
+ y2 = 1/3[y1, y3];
+ y_ := ypart((z1{right} ... z2{down} ... z3)
+ intersectiontimes (z4l{right} .. {left}z4r));
+ if y_ < 0:
+ y_ := 1;
+ fi
+ filldraw z4r{left} .. subpath (0, y_) of (z4l{right} .. {left}z4r)
+ -- cycle; % dot
+ filldraw stroke z1e{right} ... z2e{down} ... {left}z3e;
+ filldraw z1r--z2r--z4l--cycle;
+ penlabels(0, 1, 2, 3, 4);
+ vn_set_ac_join(_a, x3, .5cur_stem*sind(_horn_bot_theta),
+ h# - .5cur_dotsize#);
+ else:
+ pickup fine.nib;
+ pos4(cur_dotsize, 90);
+ top y4r = h;
+ x4 = w - .5cur_dotsize;
+ pos4'(cur_dotsize, 0);
+ z4' = z4;
+ dot(4', 4); % squarish dot
+ horn_join := max(fine.breadth, floor cur_stem);
+ horn_bot := max(fine.breadth, floor .8cur_stem);
+ pos0(horn_join, 0);
+ pos1(horn_join, 0);
+ pos2(horn_bot, 0);
+ y0 = y4;
+ y1 = y4l;
+ x0r = x1r = x4'r;
+ lft x2l = 0;
+ bot y2r = 0;
+ z2' = whatever[z1, z2];
+ numeric _vn_bot_width;
+ pos2'(_vn_bot_width, -90 + _horn_bot_theta);
+ z2l = z2'l;
+ filldraw stroke z0e -- z1e .. z2'e; % tail
+ penlabels(0, 1, 2', 3, 4);
+ vn_set_ac_join(_a, x2', 0, h#);
+ fi
+ vn_bot(_a) := vn_top(_a) - vn_height(_a);
+enddef;
+
+def set_horn_join(suffix _l)(expr _pl, _pr) =
+ select_horn(_l); % set cur_horn_ to uhorn_ or ohorn_ according to _l
+ path bot_line;
+ pair L, R;
+ bot_line := (.5w, vp(vn_bot(cur_horn_))) -- (w, vp(vn_bot(cur_horn_)));
+ L := point xpart(bot_line intersectiontimes _pl) of bot_line;
+ R := point xpart(bot_line intersectiontimes _pr) of bot_line;
+ vn_set_ac_join(_l.horn_join, xpart .5[L, R], 0, 0);
+enddef;
+
+def lig_CGQ_table(expr k) =
+ "C" kern k, "G" kern k, "Q" kern k
+enddef;
+
+def end_ligtable = 0 kern 0 enddef;
+
+% define input_lig to generate only char oct"031" from excspl.mf
+def input_lig suffix @# =
+ let save_endchar = endchar;
+ let endchar = lig_endchar;
+ scantokens("input " & str @#);
+ relax;
+ let endchar = save_endchar;
+enddef;
+
+def lig_endchar =
+ if charcode = oct"031":
+ save_endchar
+ else:
+ endgroup
+ fi
+enddef;
+
+def generate suffix @# =
+ scantokens("input null"); % can't figure out why it's needed
+ scantokens("input vn" & substring(2, length(str @#)) of str @#);
+enddef;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx10.mf
new file mode 100644
index 0000000000..f93910b82b
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx12.mf
new file mode 100644
index 0000000000..5a7d6884bc
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx5.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx5.mf
new file mode 100644
index 0000000000..63079ae073
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx5.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=5;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx6.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx6.mf
new file mode 100644
index 0000000000..ca194c2945
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx6.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=6;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx7.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx7.mf
new file mode 100644
index 0000000000..4144d6d1e2
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx7.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=7;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx8.mf
new file mode 100644
index 0000000000..a4870a73e7
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx9.mf
new file mode 100644
index 0000000000..2cdaeea5da
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbx9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecbx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxsl10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxsl10.mf
new file mode 100644
index 0000000000..4766ea9b3b
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxsl10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecbl;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxti10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxti10.mf
new file mode 100644
index 0000000000..869f08b832
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnbxti10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecbi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vncligtb.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncligtb.mf
new file mode 100644
index 0000000000..8e5b35e2af
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncligtb.mf
@@ -0,0 +1,159 @@
+% 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
+
+% ligatures and kerns for smallcap fonts
+
+ligtable
+ "-": "-" =: oct"025",
+ oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+ligtable
+ oct"025": "-"=:oct"026"; % "---" => emdash
+
+ligtable "<": "<" =: oct"023"; % "<<"
+ligtable ">": ">" =: oct"024"; % ">>"
+ligtable ",": "," =: oct"022"; % ",,"
+
+ligtable
+ "`": "`"=:oct"020",
+ oct"020" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ligtable
+ "'": "'"=:oct"021",
+ oct"021" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ k#:=-.5u#; ku#:=-1.0u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
+
+ligtable boundarychar:
+ oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
+ oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;
+
+ligtable oct"022":
+ oct"015" kern 2u#, "," kern 2u#,
+ oct"015":
+ oct"022" kern 2u#,
+ y_fam(kern ku#,)
+ "v" kern ku#, "w" kern k#, "V" kern kkk#, "W" kern kk#, Y_fam(kern kk#,)
+
+ O_fam(kern k#,) lig_CGQ_table(k#),
+ boundarychar kern -kk#;
+
+ligtable oct"020":
+ oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"021":
+ oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"024": % ">>"
+ "." kern kk#, "," kern kk#;
+
+ ligtable
+ "P":
+ "T":
+ Y_fam(:) a_fam(kern kk#,)
+ A_fam(kern kk#,)
+ end_ligtable;
+ ligtable
+ "F":
+ "V":
+ "W":
+ if serifs:
+ a_fam(kern kkk#,)
+ A_fam(kern kkk#,)
+ else:
+ a_fam(kern kk#,)
+ A_fam(kern kk#,)
+ fi
+ "K":
+ "X": o_fam(kern k#,)
+ O_fam(kern k#,)
+ "c" kern k#,
+ lig_CGQ_table(k#),
+ "g" kern k#,
+ "q" kern k#;
+ ligtable
+ O_fam(:)
+ D_fam(:) "x" kern k#,
+ "X" kern k#,
+ "w" kern k#,
+ "W" kern k#,
+ a_fam(kern k#,)
+ A_fam(kern k#,)
+ y_fam(kern k#,)
+ Y_fam(kern k#,)
+ "v" kern k#,
+ "V" kern k#;
+ ligtable
+ A_fam(:)
+ if serifs:
+ "R":
+ fi
+ "c" kern k#,
+ lig_CGQ_table(k#),
+ o_fam(kern k#,)
+ O_fam(kern k#,)
+ "g" kern k#,
+ u_fam(kern k#,)
+ U_fam(kern k#,)
+ "q" kern k#,
+ "L":
+ "T" kern kk#,
+ "t" kern kk#,
+ Y_fam(kern kk#,)
+ y_fam(kern kk#,)
+ "V" kern kkk#,
+ "v" kern kkk#,
+ "W" kern kkk#,
+ "w" kern kkk#;
+ ligtable
+ "I": "I" kern -k#; % Richard III
+
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+
+ ligtable
+ "p":
+ "t":
+ y_fam(:) a_fam(kern kk#,)
+ end_ligtable;
+ ligtable
+ "f":
+ "v":
+ "w":
+ if serifs:
+ a_fam(kern kkk#,)
+ else:
+ a_fam(kern kk#,)
+ fi
+ "k":
+ "x": o_fam(kern k#,)
+ "c" kern k#,
+ "g" kern k#,
+ "q" kern k#;
+ ligtable
+ o_fam(:)
+ d_fam(:) "x" kern k#,
+ "w" kern k#,
+ a_fam(kern k#,)
+ y_fam(kern k#,)
+ "v" kern k#;
+ ligtable
+ a_fam(:)
+ if serifs: "r": fi
+ "c" kern k#,
+ o_fam(kern k#,)
+ "g" kern k#,
+ u_fam(kern k#,)
+ "q" kern k#,
+ "l": "'" kern kk#,
+ "t" kern kk#,
+ y_fam(kern kk#,)
+ "v" kern kkk#,
+ "w" kern kkk#;
+ ligtable
+ "i": "i" kern -k#; % skiing
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vncode.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncode.mf
new file mode 100644
index 0000000000..b83d225729
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncode.mf
@@ -0,0 +1,339 @@
+% 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
+
+% T5 encoding -- Vietnamese font encoding for TeX
+
+C.u.y.hook_ := 26;
+C.l.y.hook_ := 27;
+C.u.y.dot_ := 28;
+C.l.y.dot_ := 29;
+C.u.d.bar_ := 30;
+C.l.d.bar_ := 31;
+C.u.a.grave_ := 128;
+C.u.a.acute_ := 129;
+C.u.a.tilde_ := 130;
+C.u.a.hook_ := 131;
+C.u.a.dot_ := 132;
+C.u.a.circumflex_ := 133;
+C.u.a.circumflex_.grave_ := 134;
+C.u.a.circumflex_.acute_ := 135;
+C.u.a.circumflex_.tilde_ := 136;
+C.u.a.circumflex_.hook_ := 137;
+C.u.a.circumflex_.dot_ := 138;
+C.u.a.breve_ := 139;
+C.u.a.breve_.grave_ := 140;
+C.u.a.breve_.acute_ := 141;
+C.u.a.breve_.tilde_ := 142;
+C.u.a.breve_.hook_ := 143;
+C.u.a.breve_.dot_ := 144;
+C.u.e.grave_ := 145;
+C.u.e.acute_ := 146;
+C.u.e.tilde_ := 147;
+C.u.e.hook_ := 148;
+C.u.e.dot_ := 149;
+C.u.e.circumflex_ := 150;
+C.u.e.circumflex_.grave_ := 151;
+C.u.e.circumflex_.acute_ := 152;
+C.u.e.circumflex_.tilde_ := 153;
+C.u.e.circumflex_.hook_ := 154;
+C.u.e.circumflex_.dot_ := 155;
+C.u.i.grave_ := 156;
+C.u.i.acute_ := 157;
+C.u.i.tilde_ := 158;
+C.u.i.hook_ := 159;
+C.l.a.grave_ := 160;
+C.l.a.acute_ := 161;
+C.l.a.tilde_ := 162;
+C.l.a.hook_ := 163;
+C.l.a.dot_ := 164;
+C.l.a.circumflex_ := 165;
+C.l.a.circumflex_.grave_ := 166;
+C.l.a.circumflex_.acute_ := 167;
+C.l.a.circumflex_.tilde_ := 168;
+C.l.a.circumflex_.hook_ := 169;
+C.l.a.circumflex_.dot_ := 170;
+C.l.a.breve_ := 171;
+C.l.a.breve_.grave_ := 172;
+C.l.a.breve_.acute_ := 173;
+C.l.a.breve_.tilde_ := 174;
+C.l.a.breve_.hook_ := 175;
+C.l.a.breve_.dot_ := 176;
+C.l.e.grave_ := 177;
+C.l.e.acute_ := 178;
+C.l.e.tilde_ := 179;
+C.l.e.hook_ := 180;
+C.l.e.dot_ := 181;
+C.l.e.circumflex_ := 182;
+C.l.e.circumflex_.grave_ := 183;
+C.l.e.circumflex_.acute_ := 184;
+C.l.e.circumflex_.tilde_ := 185;
+C.l.e.circumflex_.hook_ := 186;
+C.l.e.circumflex_.dot_ := 187;
+C.l.i.grave_ := 188;
+C.l.i.acute_ := 189;
+C.l.i.tilde_ := 190;
+C.l.i.hook_ := 191;
+C.u.i.dot_ := 192;
+C.u.o.grave_ := 193;
+C.u.o.acute_ := 194;
+C.u.o.tilde_ := 195;
+C.u.o.hook_ := 196;
+C.u.o.dot_ := 197;
+C.u.o.circumflex_ := 198;
+C.u.o.circumflex_.grave_ := 199;
+C.u.o.circumflex_.acute_ := 200;
+C.u.o.circumflex_.tilde_ := 201;
+C.u.o.circumflex_.hook_ := 202;
+C.u.o.circumflex_.dot_ := 203;
+C.u.o.horn_ := 204;
+C.u.o.horn_.grave_ := 205;
+C.u.o.horn_.acute_ := 206;
+C.u.o.horn_.tilde_ := 207;
+C.u.o.horn_.hook_ := 208;
+C.u.o.horn_.dot_ := 209;
+C.u.u.grave_ := 210;
+C.u.u.acute_ := 211;
+C.u.u.tilde_ := 212;
+C.u.u.hook_ := 213;
+C.u.u.dot_ := 214;
+C.u.u.horn_ := 215;
+C.u.u.horn_.grave_ := 216;
+C.u.u.horn_.acute_ := 217;
+C.u.u.horn_.tilde_ := 218;
+C.u.u.horn_.hook_ := 219;
+C.u.u.horn_.dot_ := 220;
+C.u.y.grave_ := 221;
+C.u.y.acute_ := 222;
+C.u.y.tilde_ := 223;
+C.l.i.dot_ := 224;
+C.l.o.grave_ := 225;
+C.l.o.acute_ := 226;
+C.l.o.tilde_ := 227;
+C.l.o.hook_ := 228;
+C.l.o.dot_ := 229;
+C.l.o.circumflex_ := 230;
+C.l.o.circumflex_.grave_ := 231;
+C.l.o.circumflex_.acute_ := 232;
+C.l.o.circumflex_.tilde_ := 233;
+C.l.o.circumflex_.hook_ := 234;
+C.l.o.circumflex_.dot_ := 235;
+C.l.o.horn_ := 236;
+C.l.o.horn_.grave_ := 237;
+C.l.o.horn_.acute_ := 238;
+C.l.o.horn_.tilde_ := 239;
+C.l.o.horn_.hook_ := 240;
+C.l.o.horn_.dot_ := 241;
+C.l.u.grave_ := 242;
+C.l.u.acute_ := 243;
+C.l.u.tilde_ := 244;
+C.l.u.hook_ := 245;
+C.l.u.dot_ := 246;
+C.l.u.horn_ := 247;
+C.l.u.horn_.grave_ := 248;
+C.l.u.horn_.acute_ := 249;
+C.l.u.horn_.tilde_ := 250;
+C.l.u.horn_.hook_ := 251;
+C.l.u.horn_.dot_ := 252;
+C.l.y.grave_ := 253;
+C.l.y.acute_ := 254;
+C.l.y.tilde_ := 255;
+
+def A_fam(text _t) =
+ 65 _t % "A"
+ C.u.a.acute_ _t
+ C.u.a.dot_ _t
+ C.u.a.grave_ _t
+ C.u.a.hook_ _t
+ C.u.a.tilde_ _t
+ C.u.a.breve_ _t
+ C.u.a.breve_.acute_ _t
+ C.u.a.breve_.dot_ _t
+ C.u.a.breve_.grave_ _t
+ C.u.a.breve_.hook_ _t
+ C.u.a.breve_.tilde_ _t
+ C.u.a.circumflex_ _t
+ C.u.a.circumflex_.acute_ _t
+ C.u.a.circumflex_.dot_ _t
+ C.u.a.circumflex_.grave_ _t
+ C.u.a.circumflex_.hook_ _t
+ C.u.a.circumflex_.tilde_ _t
+enddef;
+
+def D_fam(text _t) =
+ 68 _t % "D"
+ C.u.d.bar_ _t
+enddef;
+
+def E_fam(text _t) =
+ 69 _t % "E"
+ C.u.e.acute_ _t
+ C.u.e.dot_ _t
+ C.u.e.grave_ _t
+ C.u.e.hook_ _t
+ C.u.e.tilde_ _t
+ C.u.e.circumflex_ _t
+ C.u.e.circumflex_.acute_ _t
+ C.u.e.circumflex_.dot_ _t
+ C.u.e.circumflex_.grave_ _t
+ C.u.e.circumflex_.hook_ _t
+ C.u.e.circumflex_.tilde_ _t
+enddef;
+
+def I_fam(text _t) =
+ 73 _t % "I"
+ C.u.i.acute_ _t
+ C.u.i.dot_ _t
+ C.u.i.grave_ _t
+ C.u.i.hook_ _t
+ C.u.i.tilde_ _t
+enddef;
+
+def O_fam(text _t) =
+ 79 _t % "O"
+ C.u.o.acute_ _t
+ C.u.o.dot_ _t
+ C.u.o.grave_ _t
+ C.u.o.hook_ _t
+ C.u.o.tilde_ _t
+ C.u.o.circumflex_ _t
+ C.u.o.circumflex_.acute_ _t
+ C.u.o.circumflex_.dot_ _t
+ C.u.o.circumflex_.grave_ _t
+ C.u.o.circumflex_.hook_ _t
+ C.u.o.circumflex_.tilde_ _t
+ C.u.o.horn_ _t
+ C.u.o.horn_.acute_ _t
+ C.u.o.horn_.dot_ _t
+ C.u.o.horn_.grave_ _t
+ C.u.o.horn_.hook_ _t
+ C.u.o.horn_.tilde_ _t
+enddef;
+
+def U_fam(text _t) =
+ 85 _t % "U"
+ C.u.u.acute_ _t
+ C.u.u.dot_ _t
+ C.u.u.grave_ _t
+ C.u.u.hook_ _t
+ C.u.u.tilde_ _t
+enddef;
+
+def U_horn_fam(text _t) =
+ C.u.u.horn_ _t
+ C.u.u.horn_.acute_ _t
+ C.u.u.horn_.dot_ _t
+ C.u.u.horn_.grave_ _t
+ C.u.u.horn_.hook_ _t
+ C.u.u.horn_.tilde_ _t
+enddef;
+
+def Y_fam(text _t) =
+ 89 _t % "Y"
+ C.u.y.acute_ _t
+ C.u.y.dot_ _t
+ C.u.y.grave_ _t
+ C.u.y.hook_ _t
+ C.u.y.tilde_ _t
+enddef;
+
+
+def a_fam(text _t) =
+ 97 _t % "a"
+ C.l.a.acute_ _t
+ C.l.a.dot_ _t
+ C.l.a.grave_ _t
+ C.l.a.hook_ _t
+ C.l.a.tilde_ _t
+ C.l.a.breve_ _t
+ C.l.a.breve_.acute_ _t
+ C.l.a.breve_.dot_ _t
+ C.l.a.breve_.grave_ _t
+ C.l.a.breve_.hook_ _t
+ C.l.a.breve_.tilde_ _t
+ C.l.a.circumflex_ _t
+ C.l.a.circumflex_.acute_ _t
+ C.l.a.circumflex_.dot_ _t
+ C.l.a.circumflex_.grave_ _t
+ C.l.a.circumflex_.hook_ _t
+ C.l.a.circumflex_.tilde_ _t
+enddef;
+
+def d_fam(text _t) =
+ 100 _t % "d"
+ C.l.d.bar_ _t
+enddef;
+
+def e_fam(text _t) =
+ 101 _t % "e"
+ C.l.e.acute_ _t
+ C.l.e.dot_ _t
+ C.l.e.grave_ _t
+ C.l.e.hook_ _t
+ C.l.e.tilde_ _t
+ C.l.e.circumflex_ _t
+ C.l.e.circumflex_.acute_ _t
+ C.l.e.circumflex_.dot_ _t
+ C.l.e.circumflex_.grave_ _t
+ C.l.e.circumflex_.hook_ _t
+ C.l.e.circumflex_.tilde_ _t
+enddef;
+
+def i_fam(text _t) =
+ 105 _t % "i"
+ C.l.i.acute_ _t
+ C.l.i.dot_ _t
+ C.l.i.grave_ _t
+ C.l.i.hook_ _t
+ C.l.i.tilde_ _t
+enddef;
+
+def o_fam(text _t) =
+ 111 _t % "o"
+ C.l.o.acute_ _t
+ C.l.o.dot_ _t
+ C.l.o.grave_ _t
+ C.l.o.hook_ _t
+ C.l.o.tilde_ _t
+ C.l.o.circumflex_ _t
+ C.l.o.circumflex_.acute_ _t
+ C.l.o.circumflex_.dot_ _t
+ C.l.o.circumflex_.grave_ _t
+ C.l.o.circumflex_.hook_ _t
+ C.l.o.circumflex_.tilde_ _t
+ C.l.o.horn_ _t
+ C.l.o.horn_.acute_ _t
+ C.l.o.horn_.dot_ _t
+ C.l.o.horn_.grave_ _t
+ C.l.o.horn_.hook_ _t
+ C.l.o.horn_.tilde_ _t
+enddef;
+
+def u_fam(text _t) =
+ 117 _t % "u"
+ C.l.u.acute_ _t
+ C.l.u.dot_ _t
+ C.l.u.grave_ _t
+ C.l.u.hook_ _t
+ C.l.u.tilde_ _t
+enddef;
+
+def u_horn_fam(text _t) =
+ C.l.u.horn_ _t
+ C.l.u.horn_.acute_ _t
+ C.l.u.horn_.dot_ _t
+ C.l.u.horn_.grave_ _t
+ C.l.u.horn_.hook_ _t
+ C.l.u.horn_.tilde_ _t
+enddef;
+
+def y_fam(text _t) =
+ 121 _t % "y"
+ C.l.y.acute_ _t
+ C.l.y.dot_ _t
+ C.l.y.grave_ _t
+ C.l.y.hook_ _t
+ C.l.y.tilde_ _t
+enddef;
+
+% endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vncombac.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncombac.mf
new file mode 100644
index 0000000000..8dd2fa230c
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncombac.mf
@@ -0,0 +1,28 @@
+% 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
+
+% define combining accents
+
+vnchar "Vietnamese grave accent";
+define_vnaccent(oct"000", grave_);
+
+vnchar "Vietnamese acute accent";
+define_vnaccent(oct"001", acute_);
+
+vnchar "Vietnamese circumflex accent";
+define_vnaccent(oct"002", circumflex_);
+
+vnchar "Vietnamese tilde accent";
+define_vnaccent(oct"003", tilde_);
+
+vnchar "Vietnamese dot accent";
+define_vnaccent(oct"005", dot_);
+
+vnchar "Vietnamese breve accent";
+define_vnaccent(oct"010", breve_);
+
+vnchar "Vietnamese hook accent";
+define_vnaccent(oct"014", hook_);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc.mf
new file mode 100644
index 0000000000..ceff20fa1f
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc.mf
@@ -0,0 +1,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;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc10.mf
new file mode 100644
index 0000000000..94931d21c7
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vncsc10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input eccc;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vndothook.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vndothook.mf
new file mode 100644
index 0000000000..e2a25ccb6d
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vndothook.mf
@@ -0,0 +1,19 @@
+% 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
+
+vnchar "Vietnamese dotbelow accent";
+beginchar(oct"005", 5u#, 0, desc_depth#);
+ adjust_fit(0,0);
+ currentpicture := vn_pic(dot_) shifted (.5w - .5hp(vn_width(dot_)),
+ -vn_bot(dot_));
+endchar;
+
+vnchar "Vietnamese hookabove accent";
+beginchar(oct"014",9u#,x_height#+acc_height#,0);
+ adjust_fit(0,0);
+ currentpicture := vn_pic(hook_) shifted (.5w - .5hp(vn_width(hook_)),
+ vp(vn_top(hook_) - vn_height(hook_)));
+endchar;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vndunh10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vndunh10.mf
new file mode 100644
index 0000000000..fb287b695f
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vndunh10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecdh;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnecomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnecomp.mf
new file mode 100644
index 0000000000..109d809f9f
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnecomp.mf
@@ -0,0 +1,40 @@
+% 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
+
+% define [eE]-based accented letters
+
+vnchar casename "e with acute";
+define_vnchar(e, acute_);
+
+vnchar casename "e with grave";
+define_vnchar(e, grave_);
+
+vnchar casename "e with hook";
+define_vnchar(e, hook_);
+
+vnchar casename "e with tilde";
+define_vnchar(e, tilde_);
+
+vnchar casename "e with dot";
+define_vnchar_dot(e);
+
+vnchar casename "e with circumflex ";
+define_vnchar(e, circumflex_);
+
+vnchar casename "e with circumflex and acute";
+define_vnchar(e, circumflex_.acute_);
+
+vnchar casename "e with circumflex and grave";
+define_vnchar(e, circumflex_.grave_);
+
+vnchar casename "e with circumflex and hook";
+define_vnchar(e, circumflex_.hook_);
+
+vnchar casename "e with circumflex and tilde";
+define_vnchar(e, circumflex_.tilde_);
+
+vnchar casename "e with circumflex and dot";
+define_vnchar_dot_ac(e, circumflex_);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnff10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnff10.mf
new file mode 100644
index 0000000000..2e73500b76
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnff10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecff;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfi10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfi10.mf
new file mode 100644
index 0000000000..0270375f24
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfi10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecfi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfib8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfib8.mf
new file mode 100644
index 0000000000..83a2714a75
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnfib8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecfb;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnicomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnicomp.mf
new file mode 100644
index 0000000000..9bd32d45f9
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnicomp.mf
@@ -0,0 +1,22 @@
+% 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
+
+% define [iI]-based accented letters
+
+vnchar casename "i with acute";
+define_vnchar(i, acute_);
+
+vnchar casename "i with grave";
+define_vnchar(i, grave_);
+
+vnchar casename "i with hook";
+define_vnchar(i, hook_);
+
+vnchar casename "i with tilde";
+define_vnchar(i, tilde_);
+
+vnchar casename "i with dot";
+define_vnchar_dot(i);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vniligtb.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vniligtb.mf
new file mode 100644
index 0000000000..7bc8e90b0c
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vniligtb.mf
@@ -0,0 +1,135 @@
+% 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
+
+% ligatures and kerns for italic fonts
+
+ligtable
+ "`": "`"=:oct"020",
+ oct"020" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ligtable
+ "'": "'"=:oct"021",
+ oct"021" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ligtable
+ "-": "-" =: oct"025",
+ oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+
+ligtable
+ oct"025": "-"=:oct"026"; % "---" => emdash
+
+ligtable "<": "<" =: oct"023"; % "<<"
+ligtable ">": ">" =: oct"024"; % ">>"
+ligtable ",": "," =: oct"022"; % ",,"
+
+k#:=-.5u#; ku#:=-1u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
+
+ligtable boundarychar:
+ oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
+ oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;
+
+ligtable oct"022":
+ oct"015" kern 2u#, "," kern 2u#,
+ oct"015":
+ oct"022" kern 2u#,
+ "v" kern kk#, "w" kern kk#,
+ "T" kern kk#, "V" kern kkk#, "W" kern kkk#,
+ Y_fam(kern kk#,)
+ O_fam(kern k#,) lig_CGQ_table(k#),
+ boundarychar kern -kk#;
+
+ligtable oct"020":
+ oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"021":
+ oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"024": % ">>"
+ "." kern kk#, "," kern kk#;
+
+ligtable
+ d_fam(:) "w": "l":
+ "l" kern +u#;
+ligtable
+ "F": "W": "V":
+ o_fam(kern kk#,)
+ e_fam(kern kk#,)
+ u_fam(kern kk#,)
+ "r" kern kk#, "n" kern kk#, "v" kern kk#,
+ a_fam(kern kk#,)
+ A_fam(kern kkk#,)
+ "X": O_fam(kern k#,)
+ lig_CGQ_table(k#);
+
+ligtable
+ "K": "v" kern k#,
+ "w" kern k#,
+ O_fam(kern k#,)
+ lig_CGQ_table(k#);
+
+ligtable
+ "T":
+ y_fam(kern kk#,)
+ Y_fam(:)
+ e_fam(kern kk#,)
+ o_fam(kern kk#,)
+ "r" kern kk#,
+ a_fam(kern kk#,)
+ u_fam(kern kk#,)
+ "P":
+ A_fam(kern kk#,)
+ end_ligtable;
+ligtable
+ O_fam(:)
+ D_fam(:)
+ "X" kern k#,
+ "W" kern k#,
+ A_fam(kern k#,)
+ Y_fam(kern k#,)
+ "V" kern k#;
+ligtable
+ A_fam(:)
+ y_fam(kern k#,)
+ "R":
+ "n" kern k#,
+ "l" kern k#,
+ "r" kern k#,
+ u_fam(kern k#,)
+ "m" kern k#,
+ "t" kern k#,
+ i_fam(kern k#,)
+ "h" kern k#,
+ "b" kern k#,
+ "k" kern k#,
+ "v" kern k#,
+ "w" kern k#,
+ lig_CGQ_table(k#),
+ O_fam(kern k#,)
+ U_fam(kern k#,)
+ "L":
+ "T" kern kk#,
+ Y_fam(kern kk#,)
+ "V" kern kkk#,
+ "W" kern kkk#,
+ "b":
+ "c":
+ e_fam(:)
+ o_fam(:)
+ "p":
+ "r": e_fam(kern -u#,)
+ a_fam(kern -u#,)
+ o_fam(kern -u#,)
+ d_fam(kern -u#,)
+ "c" kern -u#,
+ "g" kern -u#,
+ "q" kern -u#;
+ligtable
+ "n": "'" kern kkk#;
+
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnitt10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnitt10.mf
new file mode 100644
index 0000000000..d051804bbc
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnitt10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecit;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlacc.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlacc.mf
new file mode 100644
index 0000000000..347a3b8515
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlacc.mf
@@ -0,0 +1,28 @@
+% 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
+
+% define lowercase accents
+
+vnchar casename "grave accent";
+define_vnaccent(128, grave_);
+
+vnchar casename "acute accent";
+define_vnaccent(129, acute_);
+
+vnchar casename "circumflex accent";
+define_vnaccent(130, circumflex_);
+
+vnchar casename "tilde accent";
+define_vnaccent(131, tilde_);
+
+vnchar casename "dot accent";
+define_vnaccent(132, dot_);
+
+vnchar casename "breve accent";
+define_vnaccent(133, breve_);
+
+vnchar casename "hook accent";
+define_vnaccent(134, hook_);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlai.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlai.mf
new file mode 100644
index 0000000000..bd5649715e
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlai.mf
@@ -0,0 +1,45 @@
+% 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
+
+% Computer Modern Roman Italic lower case "a" precomposed glyphs:
+% Inclusion:
+% a' a` a? a~ a.
+% a( a(' a(` a(? a(~ a(.
+% a^ a^' a^` a^? a^~ a^.
+
+begin_letter(a);
+ set_letter_dimens(a)(
+ 9u#, x_height#, 0,
+ 1/3x_height#*slant + .5hair# + .5u#,
+ 0, 0
+ );
+ pickup fine.nib;
+ pos0(hair, 0);
+ pos1(vair, 90);
+ pos2(curve, 180);
+ pos3(vair, 270);
+ pos4(stem, 0);
+ x4 = x0;
+ y4 + .5stem = vround .98h;
+ x1 = x3 = .5[x0, x2];
+ lft x2r = hround(1.5u - .5curve);
+ rt x4r = hround(w - 2.5u + .5stem);
+ top y1r = h+oo;
+ bot y3r=-oo;
+ y0 = y2 = .5[y1, y3];
+ filldraw stroke super_arc.e(0, 1) & pulled_arc.e(1, 2)
+ & pulled_arc.e(2, 3) & super_arc.e(3, 0); % bowl
+ x5 = x4;
+ x7 = w;
+ hook_out(5, 6, 7); % closing hook
+ filldraw circ_stroke z4e -- z5e; % stem
+ math_fit( - .3x_height#*slant + .5curve# - u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7);
+ set_letter_join(a, x1 + .25u, 4.5u#);
+ set_letter_join(a.dot_, x1 + .5u, .5w# + .5u#);
+end_letter;
+
+input vnacomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlar.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlar.mf
new file mode 100644
index 0000000000..7f547ba416
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlar.mf
@@ -0,0 +1,112 @@
+% 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
+
+% Computer Modern Roman lower case "a" precomposed glyphs:
+% Inclusion:
+% a' a` a? a~ a.
+% a( a(' a(` a(? a(~ a(.
+% a^ a^' a^` a^? a^~ a^.
+
+begin_letter(a);
+ bh# := min(bar_height#, 1.14x_height# - bar_height#);
+ define_pixels(bh);
+ set_letter_dimens(a)(
+ 9u#, x_height#, 0,
+ 1/3[bh#, x_height#] * slant + .5stem# - serif_fit# - 2u#,
+ 0, serif_fit# if serifs: if hair# + .5stem# > 1.5u#: -.25u# fi\\fi
+ );
+ pickup fine.nib;
+ top y3r = h+vround 1.5oo;
+ if serifs: pos1(flare, 180);
+ pos2(hair, 180);
+ pos3(vair, 90);
+ lft x1r = hround max(u, 2.1u - .5flare);
+ x3 = .5w - .5u;
+ y1 = min(bh + .5flare + 2vair + 2, .9[bh, h] - .5flare);
+ bulb(3, 2, 1); % bulb
+ else: pos1(5/7[vair, flare], 95);
+ x1l = good.x 1.5u;
+ x1r := good.x x1r;
+ pos3(1/8[vair, thin_join], 90);
+ x3 = .5w - .2u;
+ top y1r = vround .82[bh, top y3r];
+ filldraw stroke term.e(3, 1, left, .9, 4);
+ fi % terminal
+ pos4(stem, 0);
+ rt x4r = hround(w - 2.5u + .5stem);
+ y4 = 1/3[bh, h];
+ pos5(stem, 0);
+ x5 = x4;
+ y5 = max(.55bh, 2vair);
+ filldraw stroke super_arc.e(3, 4)&z4e .. z5e; % arc and stem
+ pos6(.3[thin_join, vair], 90);
+ x6 = x4;
+ bot y6 = bh;
+ pos7(hround(curve - 2stem_corr), 180);
+ lft x7r = hround max(.5u, 1.5u - .5curve);
+ y7 = 1/3[top y8l, top y6r];
+ pos8(vair, 270);
+ x8l = .5w - .75u;
+ bot y8r=-oo;
+ pos9(thin_join, 360);
+ z9l = z5l;
+ (x, y8r) = whatever[z8l, z9l];
+ x8r := max(x, x8 - u);
+ {{interim superness := more_super;
+ filldraw stroke z9e{down} ... z8e{left} ... {up}z7e&super_arc.e(7, 6)}}; % bowl
+ if serifs: numeric shaved_stem;
+ shaved_stem = hround(stem - 3stem_corr);
+ if hair# + .5stem# > 1.5u#: pickup tiny.nib;
+ pos5'(shaved_stem, 0);
+ rt x5'r = fine.rt x5r;
+ y5' = y5;
+ pos10(shaved_stem, 0);
+ x10 = x5';
+ y10 = .2[.5tiny, bh];
+ pos11(shaved_stem, 0);
+ rt x11r = hround(w - .25u);
+ bot y11 = 0;
+ pos12(shaved_stem, 0);
+ x11 = x12;
+ top y12 = slab + eps;
+ filldraw z5'l --- z10l ... z11l{right} -- z11r
+ -- z12r{left} ... z10r + .75(z12 - z11) --- z5'r -- cycle; % foot
+ else: pickup crisp.nib;
+ pos5'(shaved_stem, 0);
+ rt x5'r = fine.rt x5r;
+ y5' = y5;
+ pos10(shaved_stem, 0);
+ x10 = x5';
+ y10 = 1/3bh;
+ pos11(.2[vair, stem], 90);
+ x11r = .5[x10r, x12r];
+ bot y11l=-vround .5oo;
+ pos12(hair, 180);
+ rt x12l = hround(w - .1u);
+ y12 = max(y10, y11 + vair);
+ pos13(hair, 180);
+ x13 = x12;
+ top y13 = max(vround .6bh, top y12);
+ (x', y11l) = whatever[z11r, z12r];
+ x11l := max(x', x10);
+ filldraw stroke z5'e --- z10e ... z11e{right} ... z12e --- z13e;
+ fi % hook
+ else: numeric shaved_stem;
+ shaved_stem = hround(stem - stem_corr);
+ pickup tiny.nib;
+ pos5'(shaved_stem, 0);
+ rt x5'r = fine.rt x5r;
+ y5' = y5;
+ pos10(shaved_stem, 0);
+ x10 = x5';
+ bot y10 = 0;
+ filldraw stroke z5'e -- z10e;
+ fi % base of stem
+ set_letter_join(a, x3 if serifs: + .25u fi, .5w#);
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
+end_letter;
+
+input vnacomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldi.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldi.mf
new file mode 100644
index 0000000000..d9b6536db7
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldi.mf
@@ -0,0 +1,55 @@
+% 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
+
+% Computer Modern Roman Italic "d-bar" precomposed glyph:
+% Inclusion:
+% dd
+
+vnchar casename "dd";
+beginchar(vn_code(d.bar_), 9u#, max(asc_height#, 1.45x_height#), 0);
+ italcorr max(1/3x_height#*slant + .5hair# + .5u#,
+ h#*slant + .5stem# - 2u#) if math_fitting: -.5u# fi;
+ adjust_fit(0, 0);
+ pickup fine.nib;
+ pos0(hair, 0);
+ pos1(vair, 90);
+ pos2(curve, 180);
+ pos3(vair, 270);
+ x0 = x4;
+ x1 = x3 = .5[x0, x2];
+ lft x2r = hround(1.5u - .5curve);
+ x4 + .5stem = hround(w - 2.5u + .5stem);
+ top y1r = x_height + oo;
+ bot y3r=-oo;
+ y0 = y2 = .5[y1, y3];
+ filldraw stroke super_arc.e(0, 1) & pulled_arc.e(1, 2)
+ & pulled_arc.e(2, 3) & super_arc.e(3, 0); % bowl
+ x5 = x0;
+ x7 = w;
+ hook_out(5, 6, 7); % closing hook
+ pickup tiny.nib;
+ pos5'(stem, 0);
+ pos4(stem, 0);
+ z5' = z5;
+ top y4 = h;
+ filldraw stroke z4e -- z5'e; % stem
+ sloped_serif.l(4, 5', a, 1/3, jut, serif_drop); % serif
+ bar_thickness := .3[vair, stem];
+ pos8(bar_thickness, 90);
+ pos9(bar_thickness, 90);
+ if serifs:
+ top y8r = top y9r = .6[y1, h - (serif_drop + slab)] + .5bar_thickness;
+ lft x8 = hround(tiny.lft x0l - 1.5max(jut, u)) - eps;
+ rt x9 = hround(tiny.rt x0r + max(jut, u)) + eps;
+ else:
+ top y8r = top y9r = .6[y1, y4] + .5bar_thickness;
+ lft x8 = hround(tiny.lft x0l - 1.5vair) - eps;
+ rt x9 = hround(tiny.rt x0r + vair) + eps;
+ fi
+ filldraw stroke z8e -- z9e; % bar
+ math_fit( - .3x_height#*slant + .5curve# - u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldr.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldr.mf
new file mode 100644
index 0000000000..d06cf78725
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnldr.mf
@@ -0,0 +1,70 @@
+% 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
+
+% Computer Modern Roman "d-bar" precomposed glyph:
+% Inclusion:
+% dd
+
+vnchar casename "d with bar";
+beginchar(vn_code(d.bar_), 10u# + serif_fit#, max(asc_height#, 1.45x_height#), 0);
+ italcorr asc_height#*slant - serif_fit# + .5stem# - 2u#;
+ adjust_fit(0, serif_fit#);
+ pickup tiny.nib;
+ pos1(stem', 0);
+ pos2(stem, 0);
+ pos0'(stem', 0);
+ pos0(stem, 0);
+ z0r = z0'r;
+ x0' = x1;
+ x0 = x2;
+ rt x1r = hround(w - 2.5u + .5stem');
+ top y1 = h;
+ numeric edge;
+ edge = lft x2l;
+ pickup fine.nib;
+ pos3(if hefty: thin_join else: hair fi, 0);
+ pos4(vair, 90);
+ pos5(curve, 180);
+ pos6(vair, 270);
+ penpos7(x3r - x3l, 360);
+ lft x3l = min(lft x3l - (rt x3r - tiny.rt x2r), 1/3[lft x2, edge]);
+ y3 = 1/8[bar_height, x_height];
+ x4l = .5(w - serif_fit) - .3u;
+ top y4r = x_height + oo;
+ lft x5r = hround max(1.35u - .5curve, .6u);
+ y5 = .5x_height;
+ x6l = x4l - .2u;
+ bot y6r=-oo;
+ x7 = x3;
+ y7 = min(y3, y6 + y4 - y3 + .6vair);
+ (x, y4r) = whatever[z3l, z4l];
+ x4r := max(x, .5[x5r, x4]);
+ (x', y6r) = whatever[z7l, z6l];
+ x6r := max(x', .5[x5r, x6]);
+ filldraw stroke z3e{up} ... pulled_arc.e(4, 5)
+ & pulled_arc.e(5, 6) ... {up}z7e; % bowl
+ y0 = ypart(((edge, h) -- (edge, 0))intersectionpoint(z3l{up} ... {left}z4l));
+ pickup tiny.nib;
+ bot y2 = if serifs: -min(oo, serif_drop) else: 0 fi;
+ filldraw stroke z1e -- z0'e -- z0e -- z2e; % stem
+ if serifs: sloped_serif.l(1, 0', a, 1/3, jut, serif_drop); % upper serif
+ sloped_serif.r(2, 0, b, 1/3, jut, min(oo, serif_drop));
+ fi % lower serif
+ bar_thickness := .3[vair, stem];
+ pos8(bar_thickness, 90);
+ pos9(bar_thickness, 90);
+ if serifs:
+ top y8r = top y9r = .6[y4, h - (serif_drop + slab)] + .5bar_thickness;
+ lft x8 = hround(tiny.lft x0l - 1.5max(jut, u)) - eps;
+ rt x9 = hround(tiny.rt x0r + max(jut, u)) + eps;
+ else:
+ top y8r = top y9r = .6[y4, y1] + .5bar_thickness;
+ lft x8 = hround(tiny.lft x0l - 1.5vair) - eps;
+ rt x9 = hround(tiny.rt x0r + vair) + eps;
+ fi
+ filldraw stroke z8e -- z9e; % bar
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlei.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlei.mf
new file mode 100644
index 0000000000..724faa620c
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlei.mf
@@ -0,0 +1,48 @@
+% 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
+
+% Computer Modern Roman Italic lower case "e" precomposed glyphs:
+% Inclusion:
+% e' e` e? e~ e.
+% e^ e^' e^` e^? e^~ e^.
+
+begin_letter(e);
+ set_letter_dimens(e)(
+ 8u#, x_height#, 0,
+ max(1/3x_height#*slant, x_height#*slant + .5(.2[hair#, stem#]) - u#),
+ 0, 0
+ );
+ pickup fine.nib;
+ numeric heavy_hair;
+ heavy_hair = hround .2[hair, stem];
+ pos0(vair, -90);
+ pos1(heavy_hair, 0);
+ pos2(vair, 90);
+ pos3(curve, 180);
+ pos4(vair, 270);
+ pos5(hair, 320);
+ x0 = rt x3l;
+ rt x1r = hround(w - 1.5u + .5heavy_hair);
+ x2 = x4 = .5(w + u);
+ lft x3r = hround(1.5u - .5curve);
+ x5r = good.x(w - eps);
+ x6 = x5;
+ y0 = y3 = y6 = bar_height;
+ y1 = .5[y0, y2];
+ top y2r = h+oo;
+ bot y4r = -oo;
+ top y5l = vround .5bar_height;
+ path p;
+ p = z4{right} .. z5 .. z6;
+ filldraw stroke z0e{right} ... z1e{up} ... pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) ... {direction 1 of p}z5e; % arc
+ math_fit( - .3x_height#*slant + .5curve# - u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5, 6);
+ set_letter_join(e, x2, .5w#);
+% set_letter_join(e.dot_, .5w + .5u, .5w# + .5u#);
+end_letter;
+
+input vnecomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnler.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnler.mf
new file mode 100644
index 0000000000..acfa7d7164
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnler.mf
@@ -0,0 +1,73 @@
+% 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
+
+% Computer Modern Roman lower case "e" precomposed glyphs:
+% Inclusion:
+% e' e` e? e~ e.
+% e^ e^' e^` e^? e^~ e^.
+
+begin_letter(e);
+ set_letter_dimens(e)(
+ 7.25u# + max(.75u#, .5curve#), x_height#, 0,
+ .5[bar_height#, x_height#]*slant + .5min(curve# - 1.5u#, 0),
+ if monospace: .25u#, .5u# else: 0, 0 fi
+ );
+ numeric left_curve, right_curve;
+ left_curve = right_curve + 6stem_corr = curve if not serifs: -3stem_corr fi;
+ if right_curve < tiny.breadth: right_curve := tiny.breadth;
+ fi
+ if left_curve < tiny.breadth: left_curve := tiny.breadth;
+ fi
+ pickup tiny.nib;
+ pos1(right_curve, 0);
+ pos2(vair, 90);
+ pos3(left_curve, 180);
+ y1 = good.y bar_height;
+ top y2r = h+vround 1.5oo;
+ y0l = bot y1;
+ rt x1r = hround min(w - .5u, w - u+.5right_curve);
+ lft x3r = hround max(.5u, 1.25u - .5left_curve);
+ x2 = .5w + .25u;
+ {{interim superness := more_super;
+ filldraw stroke super_arc.e(1, 2)}}; % right bowl
+ y3 = .5[y2, y4];
+ bot y4r=-oo;
+ x4 = x2 + .25u;
+ if serifs: pos4(vair', 270);
+ pos5(hair, 360);
+ y5 = max(good.y(.5bar_height - .9), y4l + vair);
+ x5r = x1r;
+ (x, y4l) = whatever[z4r, z5];
+ x4l := min(x, x4l + .5u);
+ filldraw stroke pulled_arc.e(2, 3) & pulled_arc.e(3, 4)
+ ... {x5 - x4, 5(y5 - y4)}z5e; % left bowl, arc, and terminal
+ else: pos4(vair, 270);
+ filldraw stroke super_arc.e(2, 3) & super_arc.e(3, 4); % left bowl and arc
+ pickup fine.nib;
+ pos4'(vair, 270);
+ z4 = z4';
+ pos5(.5[vair, flare], 275);
+ rt x5r = hround(w - .6u);
+ y5r = good.y(y5r + 1/3bar_height - y5);
+ y5l := good.y y5l;
+ x5l := good.x x5l;
+ filldraw stroke term.e(4', 5, right, 1, 4);
+ fi % terminal
+ path testpath;
+ testpath = super_arc.r(2, 3) & super_arc.r(3, 4);
+ y1'r = y0r = y0l + .6[thin_join, vair];
+ y1'l = y0l;
+ x1'l = x1'r = x1;
+ forsuffixes $ = l, r:
+ x0$ = xpart(((0, y0$) -- (x1, y0$)) intersectionpoint testpath);
+ endfor
+ fill stroke z0e -- z1'e; % crossbar
+ penlabels(0, 1, 2, 3, 4, 5);
+ set_letter_join(e, x2, .5w#);
+% set_letter_join(e.dot_, .5w + .5u, .5w# + .5u#);
+end_letter;
+
+input vnecomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlii.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlii.mf
new file mode 100644
index 0000000000..6c80e1d5dd
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlii.mf
@@ -0,0 +1,62 @@
+% 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
+
+% Computer Modern Roman Italic lower case "i" precomposed glyphs:
+% Inclusion:
+% i' i` i? i~ i.
+
+begin_letter(i);
+ set_letter_dimens(i)(
+ 5u#, x_height#, 0,
+ 1/3x_height#*slant + .5hair# + .5u#,
+ if monospace: u#, u# else: 0, 0 fi
+ );
+ pickup fine.nib;
+ x0 = 0;
+ x5 = w;
+ x2 = .5w + .25u;
+ x3 = .5w - .25u;
+ hook_in(0, 1, 2)(skewed);
+ hook_out(3, 4, 5)(skewed); % hooks
+ filldraw stroke z2e -- z3e; % stem
+ math_fit( - 2/3x_height#*slant + .5hair# + .5u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5);
+ set_letter_join(i, x1, .25w# + .15u#);
+ set_letter_join(i.dot_, x4, .75w# + .1u#);
+end_letter;
+
+begin_letter(idot);
+ idot_h# := min(asc_height#, 10/7x_height# + .5flare#);
+ set_letter_dimens(idot)(
+ 5u#, idot_h#, 0,
+ max(1/3x_height#*slant + .5hair# + .5u#, idot_h#*slant + .5flare# - 2u#),
+ if monospace: u#, u# else: 0, 0 fi
+ );
+ pickup fine.nib;
+ x0 = 0;
+ x5 = w;
+ x2 = .5w + .25u;
+ x3 = .5w - .25u;
+ hook_in(0, 1, 2)(skewed);
+ hook_out(3, 4, 5)(skewed); % hooks
+ filldraw stroke z2e -- z3e; % stem
+ pos8(flare, 0);
+ pos9(flare, 90);
+ x8 = .5w if not monospace: -.4(h - x_height)*slant fi;
+ top y9r = h + 1;
+ if bot y9l - top y1 < slab:
+ y9l := min(y9r - eps, y1 + fine + slab);
+ fi
+ x8 = x9;
+ y8 = .5[y9l, y9r];
+ dot(8, 9); % dot
+ math_fit( - 2/3x_height#*slant + .5hair# + .5u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5, 8, 9);
+ set_letter_join(idot, x1, .25w# + .15u#);
+ set_letter_join(idot.dot_, x4, .75w# + .1u#);
+end_letter;
+
+input vnicomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlir.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlir.mf
new file mode 100644
index 0000000000..e626565502
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlir.mf
@@ -0,0 +1,74 @@
+% 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
+
+% Computer Modern Roman lower case "i" precomposed glyphs:
+% Inclusion:
+% i' i` i? i~ i.
+
+begin_letter(i);
+ set_letter_dimens(i)(
+ 5u#, x_height#, 0,
+ x_height#*slant - serif_fit# + .5stem# - 2u#,
+ serif_fit# + stem_shift# if monospace: +.25u#fi, serif_fit# - stem_shift#
+ );
+ pickup tiny.nib;
+ pos1(stem', 0);
+ pos2(stem', 0);
+ lft x1l = hround(.5w - .5stem');
+ x1 = x2;
+ top y1 = x_height if serifs: + min(oo, serif_drop) fi;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e;
+ % stem
+ if serifs:
+ sloped_serif.l(1, 2, a, 1/3, .95jut, serif_drop); % upper serif
+ dish_serif(2, 1, b, 1/3, jut, c, 1/3, .9jut); % lower serif
+ fi
+ penlabels(1, 2);
+ set_letter_join(i, x1, .5w#);
+end_letter;
+
+begin_letter(idot);
+ idot_h# := min(asc_height#, 10/7x_height# + .5vn_dot_diam#);
+ set_letter_dimens(idot)(
+ 5u#, idot_h#, 0,
+ idot_h#*slant - serif_fit# + .5vn_dot_diam# -2u#,
+ serif_fit# + stem_shift# if monospace: +.25u# fi,
+ serif_fit# - stem_shift#
+ );
+ pickup tiny.nib;
+ pos1(stem', 0);
+ pos2(stem', 0);
+ if odd(w - stem'):
+ change_width;
+ fi
+ lft x1l = hround(.5w - .5stem');
+ x1 = x2;
+ top y1 = x_height if serifs: +min(oo, serif_drop) fi;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e; % stem
+ pos3(vn_dot_diam, 0);
+ pos4(vn_dot_diam, 90);
+ if serifs:
+ x3r = max(x1r, hround(x1 + .5vn_dot_diam - .2jut) - .5tiny)
+ else:
+ x3 = x1 - .5
+ fi;
+ top y4r = h + 1;
+ if bot y4l - top y1 < slab: y4l := min(y4r - eps, y1 + tiny + slab);
+ fi
+ x3 = x4;
+ y3 = .5[y4l, y4r];
+ dot(3, 4); % dot
+ if serifs:
+ sloped_serif.l(1, 2, a, 1/3, .95jut, serif_drop); % upper serif
+ dish_serif(2, 1, b, 1/3, jut, c, 1/3, .9jut);
+ fi % lower serif
+ penlabels(1, 2, 3, 4);
+ set_letter_join(idot, x1, .5w#);
+end_letter;
+
+input vnicomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnloi.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnloi.mf
new file mode 100644
index 0000000000..191e1c3122
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnloi.mf
@@ -0,0 +1,38 @@
+% 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
+
+% Computer Modern Roman Italic lower case "o" precomposed glyphs:
+% Inclusion:
+% o' o` o? o~ o.
+% o+ o+' o+` o+? o+~ o+.
+
+begin_letter(o);
+ set_letter_dimens(o)(
+ 9u#, x_height#, 0,
+ .7x_height#*slant + .5curve# - u# if math_fitting: -.5u# fi,
+ 0, 0
+ );
+ pickup fine.nib;
+ pos1(vair, 90);
+ pos2(curve, 180);
+ pos3(vair, 270);
+ pos4(curve, 360);
+ x1 = x3 = .5w;
+ lft x2r = hround(1.5u - .5curve);
+ x4 = w-x2;
+ top y1r = h+oo;
+ y2 = y4 = .5[y1, y3];
+ bot y3r = -oo;
+ filldraw stroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1); % bowl
+ math_fit( - .3x_height#*slant + .5curve# - u#, ic#);
+ penlabels(1, 2, 3, 4);
+ set_letter_join(o, x1, .5w#);
+ set_letter_join(o.horn_, x1, .5w#);
+ set_horn_join(o, pulled_arc.l(4, 1), pulled_arc.r(4, 1));
+end_letter;
+
+input vnocomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlor.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlor.mf
new file mode 100644
index 0000000000..8f5a34d320
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlor.mf
@@ -0,0 +1,38 @@
+% 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
+
+% Computer Modern Roman lower case "o" precomposed glyphs:
+% Inclusion:
+% o' o` o? o~ o.
+% o^ o^' o^` o^? o^~ o^.
+% o+ o+' o+` o+? o+~ o+.
+
+begin_letter(o);
+ set_letter_dimens(o)(
+ 9u#, x_height#, 0,
+ .7x_height#*slant,
+ if monospace: .5u#, .5u# else: 0, 0 fi
+ );
+ penpos1(vair, 90);
+ penpos3(vair', -90);
+ penpos2(curve, 180);
+ penpos4(curve, 0);
+ x2r = hround max(.5u, 1.25u - .5curve);
+ x4r = w-x2r;
+ x1 = x3 = .5w;
+ y1r = h + vround 1.5oo;
+ y3r = -oo;
+ y2 = y4 = .5h - vair_corr;
+ y2l := y4l := .52h;
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle; % bowl
+ penlabels(1, 2, 3, 4);
+ set_letter_join(o, x1, .5w#);
+ set_letter_join(o.horn_, x1 + .1dot_size, .5w# + .1dot_size#);
+ set_horn_join(o, pulled_arc.l(4, 1), pulled_arc.r(4, 1));
+end_letter;
+
+input vnocomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlui.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlui.mf
new file mode 100644
index 0000000000..91d07df2e9
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlui.mf
@@ -0,0 +1,50 @@
+% 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
+
+% Computer Modern Roman Italic lower case "u" precomposed glyphs:
+% Inclusion:
+% u' u` u? u~ u.
+% u+ u+' u+` u+? u+~ u+.
+
+begin_letter(u);
+ set_letter_dimens(u)(
+ 9.5u#, x_height#, 0,
+ 1/3x_height#*slant + .5hair# + .5u#,
+ 0, 0
+ );
+ pickup fine.nib;
+ interim superness := more_super;
+ x0 = 0;
+ x2 = x3 + .25u;
+ pos3(stem, -180);
+ lft x3r = hround(2.5u - .5stem);
+ hook_in(0, 1, 2)(skewed); % opening hook
+ pos2'(stem, -180);
+ z2' = z2;
+ pos4(vair, -90);
+ pos5(hair, 0);
+ x4 = .5[x3, x5];
+ pos6(stem, 0);
+ rt x6r = hround(w - 2.5u + .5stem);
+ x5 = x6 = x7;
+ x9 = w;
+ hook_out(7, 8, 9); % closing hook
+ y3 = .7[y4, y5];
+ bot y4r=-oo;
+ y5 = .57h;
+ y6 + .5stem = h;
+ filldraw stroke z2'e{ - u, -x_height}
+ ... super_arc.e(3, 4) ... {up}z5e; % left stem and arc
+ filldraw circ_stroke z6e -- z7e; % right stem
+ math_fit( - 2/3x_height#*slant + .5hair# + .5u#, ic#);
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+ set_letter_join(u, x4, .5w#);
+ set_letter_join(u.horn_, x4, .5w#);
+ set_letter_join(u.dot_, x4 + .5u, .5w# + .5u#);
+ set_horn_join(u, z5 -- z6, z5 -- z6);
+end_letter;
+
+input vnucomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlur.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlur.mf
new file mode 100644
index 0000000000..10b02f81e9
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlur.mf
@@ -0,0 +1,70 @@
+% 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
+
+% Computer Modern Roman lower case "u" precomposed glyphs:
+% Inclusion:
+% u' u` u? u~ u.
+% u+ u+' u+` u+? u+~ u+.
+
+begin_letter(u);
+ set_letter_dimens(u)(
+ 10u#, x_height#, 0,
+ x_height#*slant - serif_fit# + .5stem# - 2u#,
+ serif_fit# + stem_shift#, serif_fit# - stem_shift#
+ );
+ numeric light_vair;
+ light_vair = vair if hefty: -vround 2vair_corr fi;
+ if light_vair < fine.breadth: light_vair := fine.breadth;
+ fi
+ pickup tiny.nib;
+ pos1(stem, 0);
+ pos2(stem, 0);
+ pos3(stem, 0);
+ pos4(stem', 0);
+ lft x1l = hround(2.5u - .5stem);
+ x1 = x2;
+ x3 = w - x1;
+ x3r = x4r;
+ if serifs: top y1 = h+min(oo, serif_drop);
+ bot y4 = -min(oo, serif_drop);
+ else: top y1 = h;
+ bot y4 = 0;
+ fi
+ pos0(stem, 0);
+ pos0'(stem', 0);
+ x0 = x3;
+ x0' = x4;
+ y0 = y0';
+ penpos2'(stem - fine, -180);
+ z2' = z2;
+ y3 = y1;
+ y2 = .5bar_height;
+ penpos5(max(eps, light_vair - fine), -90);
+ penpos6(thin_join - fine, 0);
+ y6 = y0 = 2/3bar_height;
+ filldraw stroke z1e -- z2e; % left stem
+ filldraw stroke z3e .. z0e -- z0'e .. z4e; % right stem
+ pickup fine.nib;
+ bot y5r=-oo;
+ x5l = .5w - .25u;
+ lft x6l = tiny.lft x0l;
+ (x, y5r) = whatever[z5l, z6l];
+ x5r := max(x, .5[x5, x2'r]);
+ filldraw stroke {{interim superness := hein_super;
+ pulled_arc.e(2', 5)}} & z5e{right} ... {up}z6e; % arc
+ if serifs: sloped_serif.l(1, 2, a, 1/3, jut, serif_drop); % upper left serif
+ sloped_serif.l(3, 0, b, 1/3, jut, serif_drop); % upper right serif
+ sloped_serif.r(4, 0', c, 1/3, jut, min(oo, serif_drop));
+ fi % lower right serif
+ penlabels(1, 2, 3, 4, 5, 7);
+ labels(6);
+ set_letter_join(u, x5, .5w#);
+ set_letter_join(u.horn_, x5 + .3dot_size, .5w# + .3dot_size#);
+ set_letter_join(u.dot_, x5 + .5u, .5w# + .5u#);
+ set_horn_join(u, z3 -- z4, z3 -- z4);
+end_letter;
+
+input vnucomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyi.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyi.mf
new file mode 100644
index 0000000000..d0c6717298
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyi.mf
@@ -0,0 +1,57 @@
+% 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
+
+% Computer Modern Roman Italic lower case "y" precomposed glyphs:
+% Inclusion:
+% y' y` y? y~ y.
+
+begin_letter(y);
+ set_letter_dimens(y)(
+ 8.5u#, x_height#, desc_depth#,
+ x_height#*slant + .5stem# - u#,
+ 0, 0
+ );
+ pickup fine.nib;
+ interim superness := more_super;
+ x0 = 0;
+ x2 = x3 + .25u;
+ pos3(stem, -180);
+ lft x3r = hround(2.5u - .5stem);
+ hook_in(0, 1, 2)(skewed); % opening hook
+ pos2'(stem, -180);
+ z2' = z2;
+ pos4(vair, -90);
+ pos5(hair, 0);
+ x4 = .5[x3, x5];
+ pos6(stem, 0);
+ rt x6r = hround(w - 1.5u + .5stem);
+ pos7(stem, 0);
+ pos8(vair, -90);
+ y3 = .7[y4, y5];
+ bot y4r=-oo;
+ y5 = .57h;
+ y6 + .5stem = h;
+ y7 = 0;
+ bot y8r=-d - oo;
+ x5 = x6 = x7;
+ x8 = .5w;
+ pos9(hair, -180);
+ pos10(flare, -180);
+ y9=-.5d;
+ lft x9r = hround(2.75u - .5flare);
+ bulb(8, 9, 10); % bulb
+ filldraw stroke z2'e{ - u, -x_height}
+ ... super_arc.e(3, 4) ... {up}z5e; % left stem and arc
+ filldraw circ_stroke z6e --- z7e ... {left}z8e; % right stem and link
+ math_fit( - 2/3x_height#*slant + .5hair# + .5u#, ic# - 1/3x_height#*slant);
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+ set_letter_join(y, x4, .5w#);
+ set_letter_join(y.dot_, x5, .5w#);
+ vn_dot_shift_y(y) := vn_depth(y) + vn_height(dot_);
+ vn_depth(y) := vn_dot_shift_y(y);
+end_letter;
+
+input vnycomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyr.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyr.mf
new file mode 100644
index 0000000000..39edb6b398
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyr.mf
@@ -0,0 +1,101 @@
+% 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
+
+% Computer Modern Roman lower case "y" precomposed glyphs:
+% Inclusion:
+% y' y` y? y~ y.
+
+begin_letter(y);
+ set_letter_dimens(y)(
+ if serifs: 9.5u# else: 9u# fi, x_height#, desc_depth#,
+ x_height#*slant + .25u#,
+ serif_fit# if monospace: +\\.5u#, .5u#+ else: ,fi\\ serif_fit#
+ );
+ numeric left_stem, right_stem, bot_stem, bot_vair, outer_jut;
+ left_stem = fudged.stem - stem_corr;
+ right_stem = fudged.hair if hefty: -2stem_corr fi;
+ bot_stem = fudged.hair if hefty: -8stem_corr fi;
+ bot_vair = Vround(if serifs: vair else: .5[vair, bot_stem] fi);
+ outer_jut = .75jut;
+ x1l = w-x4r = l+letter_fit + outer_jut + .25u;
+ y1 = y4r = h;
+ y2 = y3 = 0;
+ x2l = x3l;
+ numeric alpha, alpha[];
+ x9 = 3u;
+ y9 = bot_vair - d-oo;
+ alpha1 = diag_ratio(2, bot_stem, y1 - y3, x4r - x1l - apex_corr);
+ alpha2 = diag_ratio(1, bot_stem, y1 - y9, x4r - x9);
+ if alpha1 < alpha2: x2l - x1l = x4r - x3r + apex_corr;
+ alpha = alpha1;
+ else: alpha = alpha2;
+ z3l = whatever[z9, z4r - (alpha*bot_stem, 0)];
+ fi
+ penpos3(alpha*bot_stem, 0);
+ penpos4(alpha*right_stem, 0);
+ alpha3 = (y1 ++ (x2l - x1l))/y1;
+ penpos1(alpha3*left_stem, 0);
+ penpos2(alpha3*left_stem, 0);
+ z0 = whatever[z1r, z2r] = z4l + whatever*(z3r - z4r);
+ if y0 > notch_cut: y0 := notch_cut;
+ fill z0 + .5right{up} ... {z4r - z3r}diag_end(0, 4l, 1, 1, 4r, 3r)
+ -- z3r -- z2l -- diag_end(2l, 1l, 1, 1, 1r, 2r){z2 - z1}
+ ... {down}z0 + .5left -- cycle; % left and right diagonals
+ else: fill z0 -- diag_end(0, 4l, 1, 1, 4r, 3r) -- z3r -- z2l
+ -- diag_end(2l, 1l, 1, 1, 1r, 0) -- cycle;
+ fi % left and right diagonals
+ penpos5(alpha*bot_stem, 0);
+ z5r = whatever[z3r, z4r];
+ y5 - .5vair=-.5d;
+ if serifs: numeric light_bulb;
+ light_bulb = hround 7/8[hair, flare];
+ clearpen;
+ penpos6(vair, -90);
+ penpos7(hair, -180);
+ penpos8(light_bulb, -180);
+ x6 = 2u;
+ y6r=-d - oo;
+ y8 - .5light_bulb=-.85d;
+ x8r = hround .35u;
+ fill stroke z3e --- z5e ... {left}z6e;
+ bulb(6, 7, 8); % arc and bulb
+ numeric inner_jut;
+ pickup tiny.nib;
+ prime_points_inside(1, 2);
+ prime_points_inside(4, 3);
+ if rt x1'r + jut + .5u + 1<=lft x4'l - jut: inner_jut = jut;
+ else: rt x1'r + inner_jut + .5u + 1=lft x4'l - inner_jut;
+ fi
+ dish_serif(1', 2, a, 1/3, outer_jut, b, 1/2, inner_jut); % left serif
+ dish_serif(4', 3, c, .6, inner_jut, d, 1/2, outer_jut)(dark); % right serif
+ else: penpos6(bot_vair, -90);
+ x6 = 2.5u;
+ y6r=-d - oo;
+ fill stroke z3e --- z5e ... {left}z6e; % arc
+ pickup fine.nib;
+ pos6'(bot_vair, -90);
+ z6' = z6;
+ pos7(2/3[bot_vair, flare], -85);
+ lft x7l = hround u;
+ bot y7r = vround - .96d - oo;
+ y7l := good.y y7l;
+ filldraw stroke term.e(6', 7, left, 1, 4);
+ fi % arc and terminal
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+ set_letter_join(y, x3, .5w#);
+ path dot_join_line;
+ dot_join_y := vp(max(vn_depth(y), vn_bot(dot_)) - .5vn_height(dot_));
+ dot_join_line := (0, -dot_join_y) -- (w, -dot_join_y);
+ z2' = whatever[z1, z2];
+ y2' = -dot_join_y;
+ set_letter_join(y.dot_, xpart point xpart(dot_join_line intersectiontimes
+ (z2 -- z2')) of dot_join_line,
+ .5w#);
+ vn_dot_shift_y(y) := max(vn_depth(y), vn_bot(dot_));
+ vn_depth(y.dot_) := vn_dot_shift_y(y);
+end_letter;
+
+input vnycomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnminus.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnminus.mf
new file mode 100644
index 0000000000..6bcce5038d
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnminus.mf
@@ -0,0 +1,39 @@
+% 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
+
+iff monospace:
+cmchar "Hyphen";
+beginchar("-",6u#,x_height#,0);
+italcorr .5x_height#*slant-.5u#;
+adjust_fit(0,0);
+numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi;
+pickup crisp.nib; pos1(thickness,90); pos2(thickness,90);
+top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps;
+if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi;
+filldraw stroke z1e--z2e; % bar
+penlabels(1,2); endchar;
+
+% ecchar "Less than sign";
+% compute_spread(5/4x_height#,3/2x_height#);
+% beginchar("<",14u#,v_center(spread#+rule_thickness#));
+% italcorr h#*slant-u#;
+% adjust_fit(0,0); pickup extra_rule.nib;
+% lft x2=hround 1.5u-eps; x1=x3=w-x2;
+% y1-y3=spread; y2=.5[y1,y3]=math_axis;
+% x2' = x2; y2' = y2 if known gen_t5_supp: - .1 fi;
+% draw z1--z2...z2'--z3; % diagonals
+% labels(1,2,2',3); endchar;
+%
+% ecchar "Greater than sign";
+% compute_spread(5/4x_height#,3/2x_height#);
+% beginchar(">",14u#,v_center(spread#+rule_thickness#));
+% italcorr math_axis#*slant-u#;
+% adjust_fit(0,0); pickup extra_rule.nib;
+% rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+% y1-y3=spread; y2=.5[y1,y3]=math_axis;
+% x2' = x2; y2' = y2 if known gen_t5_supp: - .1 fi;
+% draw z1--z2..z2'--z3; % diagonals
+% labels(1,2,3); endchar;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnmligtb.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnmligtb.mf
new file mode 100644
index 0000000000..58fed0c99d
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnmligtb.mf
@@ -0,0 +1,16 @@
+% 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
+
+% ligatures and kerns for monospace fonts
+
+ligtable "`": "`" =: oct"020";
+ligtable "'": "'" =: oct"021";
+ligtable "-": "-" =: oct"025", % number range dash equals "-"
+ oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+ligtable "<": "<" =: oct"023"; % "<<"
+ligtable ">": ">" =: oct"024"; % ">>"
+ligtable ",": "," =: oct"022"; % ",,"
+% ligtable "!": "`" =: oct"275"; % spanish shriek
+% ligtable "?": "`" =: oct"276"; % spanish query
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnocomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnocomp.mf
new file mode 100644
index 0000000000..eb6fa8f3eb
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnocomp.mf
@@ -0,0 +1,65 @@
+% 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
+
+% define [oO]-based accented letters
+
+vnchar casename "o with horn ";
+define_vnchar_horn(o);
+
+if known gen_t5_supp:
+ let next = endinput;
+else:
+ let next = relax;
+fi % known gen_t5_supp
+next;
+
+vnchar casename "o with acute";
+define_vnchar(o, acute_);
+
+vnchar casename "o with grave";
+define_vnchar(o, grave_);
+
+vnchar casename "o with hook";
+define_vnchar(o, hook_);
+
+vnchar casename "o with tilde";
+define_vnchar(o, tilde_);
+
+vnchar casename "o with dot";
+define_vnchar_dot(o);
+
+vnchar casename "o with circumflex ";
+define_vnchar(o, circumflex_);
+
+vnchar casename "o with circumflex and acute";
+define_vnchar(o, circumflex_.acute_);
+
+vnchar casename "o with circumflex and grave";
+define_vnchar(o, circumflex_.grave_);
+
+vnchar casename "o with circumflex and hook";
+define_vnchar(o, circumflex_.hook_);
+
+vnchar casename "o with circumflex and tilde";
+define_vnchar(o, circumflex_.tilde_);
+
+vnchar casename "o with circumflex and dot";
+define_vnchar_dot_ac(o, circumflex_);
+
+vnchar casename "o with horn and acute";
+define_vnchar_horn_ac(o, acute_);
+
+vnchar casename "o with horn and grave";
+define_vnchar_horn_ac(o, grave_);
+
+vnchar casename "o with horn and hook";
+define_vnchar_horn_ac(o, hook_);
+
+vnchar casename "o with horn and tilde";
+define_vnchar_horn_ac(o, tilde_);
+
+vnchar casename "o with horn and dot";
+define_vnchar_horn_dot(o);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr10.mf
new file mode 100644
index 0000000000..ab2b6a1ece
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr12.mf
new file mode 100644
index 0000000000..75f768d8bc
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr17.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr17.mf
new file mode 100644
index 0000000000..ce039f402b
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr17.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=17;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr5.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr5.mf
new file mode 100644
index 0000000000..34081c7eea
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr5.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=5;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr6.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr6.mf
new file mode 100644
index 0000000000..51aa1512ca
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr6.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=6;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr7.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr7.mf
new file mode 100644
index 0000000000..ac5e9c4c21
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr7.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=7;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr8.mf
new file mode 100644
index 0000000000..55696dc078
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr9.mf
new file mode 100644
index 0000000000..4eed29ea52
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnr9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecrm;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrligtb.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrligtb.mf
new file mode 100644
index 0000000000..ab01c05540
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrligtb.mf
@@ -0,0 +1,211 @@
+% 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
+
+% ligatures and kerns for roman fonts
+
+ligtable
+ "`": "`"=:oct"020",
+ oct"020" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ligtable
+ "'": "'"=:oct"021",
+ oct"021" kern 2u#,
+ "?" kern 2u#,
+ "!" kern 2u#;
+
+ligtable
+ "-": "-" =: oct"025",
+ oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+
+ligtable
+ oct"025": "-"=:oct"026"; % "---" => emdash
+
+ligtable "<": "<" =: oct"023"; % "<<"
+ligtable ">": ">" =: oct"024"; % ">>"
+ligtable ",": "," =: oct"022"; % ",,"
+
+k#:=-.5u#; ku#:=-1u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
+
+ligtable boundarychar:
+ oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
+ oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;
+
+ligtable oct"022":
+ oct"015" kern 2u#, "," kern 2u#,
+ oct"015":
+ oct"022" kern 2u#,
+ "j" kern -kkk#, oct"032" kern -kkk#, "g" kern -ku#,
+ y_fam(kern -ku#,)
+ "v" kern kk#, "w" kern ku#, "V" kern kkk#, "W" kern kk#,
+ Y_fam(kern kk#,)
+ O_fam(kern k#,)
+ lig_CGQ_table(k#),
+ boundarychar kern -kk#;
+
+ligtable oct"020":
+ oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"021":
+ oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;
+
+ligtable oct"024": % ">>"
+ "." kern kk#, "," kern kk#;
+
+ligtable
+ "k": "W" kern kk#, "V" kern kk#,
+ if serifs: "v": a_fam(kern -u#,) fi
+ "w": e_fam(kern k#,)
+ a_fam(kern k#,)
+ o_fam(kern k#,)
+ "c" kern k#;
+
+ligtable
+ "P": A_fam(kern kk#,)
+ y_fam(:)
+ o_fam(kern k#,)
+ e_fam(kern k#,)
+ a_fam(kern k#,)
+ "." kern kk#,
+ "," kern kk#;
+ligtable
+ "F":"V": "W":
+ if serifs:
+ o_fam(kern kk#,)
+ a_fam(kern kk#,)
+ e_fam(kern kk#,)
+ y_fam(kern kk#,)
+ u_fam(kern kk#,)
+ "r" kern kk#,
+ "v" kern kk#,
+ "s" kern kk#,
+ "c" kern kk#,
+ d_fam(kern kk#,)
+ "g" kern kk#,
+ "m" kern kk#,
+ "n" kern kk#,
+ "p" kern kk#,
+ "w" kern kk#,
+ "z" kern kk#,
+ A_fam(kern kkk#,)
+ else:
+ o_fam(kern k#,)
+ a_fam(kern k#,)
+ e_fam(kern k#,)
+ y_fam(kern k#,)
+ u_fam(kern k#,)
+ "r" kern k#,
+ "v" kern k#,
+ "s" kern k#,
+ "c" kern k#,
+ d_fam(kern k#,)
+ "g" kern k#,
+ "m" kern k#,
+ "n" kern k#,
+ "p" kern k#,
+ "w" kern k#,
+ "z" kern k#,
+ A_fam(kern kk#,)
+ fi
+ "X": O_fam(kern k#,)
+ lig_CGQ_table(k#);
+
+ligtable "K": if serifs:
+ "v" kern kk#,
+ "w" kern k#,
+ else:
+ "v" kern k#,
+ fi
+ o_fam(kern k#,)
+ lig_CGQ_table(k#);
+
+ligtable
+ "T":
+ y_fam(kern if serifs: k# else: kk# fi,)
+ Y_fam(:)
+ A_fam(kern kk#,)
+ e_fam(kern kk#,)
+ o_fam(kern kk#,)
+ "r" kern kk#,
+ a_fam(kern kk#,)
+ u_fam(kern kk#,)
+ "n" kern kk#,
+ oct"031" kern kk#, % \i
+ "c" kern kk#,
+ d_fam(kern kk#,)
+ "g" kern kk#,
+ "p" kern kk#,
+ "s" kern kk#,
+ "v" kern kk#,
+ "w" kern kk#,
+ "x" kern kk#,
+ "z" kern kk#;
+ligtable
+ O_fam(:)
+ D_fam(:)
+ "X" kern k#,
+ "W" kern k#,
+ A_fam(kern k#,)
+ Y_fam(kern k#,)
+ "V" kern k#;
+if serifs:
+ligtable
+ "m": "n": "h":
+ "W" kern kk#, "V" kern kk#,
+ "t" kern k#,
+ u_fam(kern k#,)
+ "b" kern k#,
+ y_fam(kern k#,)
+ "v" kern k#,
+ "w" kern k#;
+ligtable
+ "c":
+ "h" kern k#,
+ "k" kern k#;
+fi
+ligtable
+ o_fam(:)
+ "b": "p": e_fam(kern -k#,)
+ o_fam(kern -k#,)
+ "x" kern k#,
+ d_fam(kern -k#,)
+ "c" kern -k#,
+ "q" kern -k#,
+ a_fam(:)
+ if serifs:
+ "v" kern k#,
+ "j" kern u#,
+ else:
+ "r" kern k#,
+ fi
+ "t":
+ y_fam(kern k#,)
+ u_fam(:)
+ "w" kern k#;
+ligtable
+ A_fam(:)
+ y_fam(kern if serifs: kk# else: k# fi,)
+ "v" kern if serifs: kkk# else: k# fi,
+ "w" kern if serifs: kk# else: k# fi,
+ "c" kern k#,
+ d_fam(kern k#,)
+ e_fam(kern k#,)
+ o_fam(kern k#,)
+ "q" kern k#,
+ if serifs: "R": fi
+ "t" kern k#,
+ lig_CGQ_table(k#),
+ O_fam(kern k#,)
+ U_fam(kern k#,)
+ "L":
+ "T" kern kk#,
+ Y_fam(kern kk#,)
+ "V" kern kkk#,
+ "W" kern kkk#;
+ligtable "g": "j" kern -k#; % logjam
+ligtable "I": "I" kern -k#; % Richard III
+ligtable e_fam(:) "V" kern kk#; % eV
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrm.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrm.mf
new file mode 100644
index 0000000000..f0d74ef59d
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnrm.mf
@@ -0,0 +1,97 @@
+% 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
+
+% ecrm.mf
+%
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is part of ecfonts version 1.0
+%
+% Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
+% copyrite.txt for further information
+%
+% You find some documentation in ecdoc.tex (needs LaTeX2e)
+%
+% Content:
+%
+% Parameter for
+%
+% European Computer Modern Roman Medium
+%
+%
+font_identifier:="ECRM";
+font_size gensize*pt#;
+basedef ( 5, 6, 7, 8, 9, 10, 12, 17.28);
+gendef [1/36pt#]( u# )( 12.5, 14, 15.5, 17, 18.5, 20, 23.5, 32.5);
+gendef [1/36pt#]( width_adj# )( 0, 0, 0, 0, 0, 0, 0, 0);
+gendef [1/36pt#]( serif_fit# )( 0, 0, 0, 0, 0, 0, 0, 0);
+gendef [1/36pt#]( cap_serif_fit# )( 2, 2.8, 3.5, 4.1, 4.6, 5, 5.8, 8);
+gendef [1/36pt#]( letter_fit# )( 5, 3, 2, 0, 0, 0, 0, [-.1]);
+gendef [1/36pt#]( body_height# )( 135, 162, 189, 216, 243, 270, 324, 466);
+gendef [1/36pt#]( asc_height# )( 125, 150, 175, 200, 225, 250, 300, 432);
+gendef [1/36pt#]( cap_height# )( 123, 147.6, 172.2, 196.8, 221.4, 246, 295.2, 425);
+gendef [1/36pt#]( fig_height# )( 116, 139.2, 162.4, 185.6, 208.8, 232, 278.4, 401);
+gendef [1/36pt#]( x_height# )( 77.5, 93, 108.5, 124, 139.5, 155, 186, 267.8);
+gendef [1/36pt#]( math_axis# )( 45, 54, 63, 72, 81, 90, 108, 155.5);
+gendef [1/36pt#]( bar_height# )( 43.5, 52.2, 60.9, 69.6, 78.3, 87, 104.4, 150);
+gendef [1/36pt#]( comma_depth# )( 35, 42, 49, 56, 63, 70, 84, 121);
+gendef [1/36pt#]( desc_depth# )( 35, 42, 49, 56, 63, 70, 84, 121);
+gendef [1/36pt#]( acc_height# )( 42.5, 49, 55.5, 62, 68.5, 75, 90, 127.5);
+%gendef [1/36pt#]( dot_height# )( 32, 36.6, 41.2, 46, 50.4, 56, 67.2, 90);
+gendef [1/36pt#]( dot_height# )( 42, 46.6, 51.2, 56, 60.4, 66, 77.2, 100);
+gendef [1/36pt#]( udot_height# )( 33.5, 38.5, 43.3, 48.4, 53.1, 59, 70.8, 95);
+gendef [1/36pt#]( crisp# )( 0, 0, 0, 0, 0, 0, 0, 0);
+gendef [1/36pt#]( tiny# )( 6, 7, 7, 8, 8, 8, 8, 8);
+gendef [1/36pt#]( fine# )( 5, 6, 6, 7, 7, 7, 7, 7);
+gendef [1/36pt#]( thin_join# )( 5, 6, 6, 7, 7, 7, 7.5, 9);
+gendef [1/36pt#]( hair# )( 7.5, 8, 8.5, 9, 9, 9, 9.5, 11);
+gendef [1/36pt#]( stem# )( 16, 18, 20, 22, 24, 25, 28, 33);
+gendef [1/36pt#]( curve# )( 18, 20.5, 23, 25.5, 28, 30, 33, 40);
+gendef [1/36pt#]( ess# )( 12, 17, 21, 23, 25, 27, 30, 35);
+gendef [1/36pt#]( flare# )( 19, 21, 24, 27, 30, 33, 36, 45);
+gendef [1/36pt#]( dot_size# )( 22, 26, 29, 32, 35, 38, 42, 51);
+gendef [1/36pt#]( cap_hair# )( 8, 8.5, 9, 9.5, 10, 11, 11.5, 13);
+gendef [1/36pt#]( cap_stem# )( 19, 21.5, 24, 26.5, 29, 32, 35, 41);
+gendef [1/36pt#]( cap_curve# )( 21, 24, 27, 30, 33, 37, 40, 47);
+gendef [1/36pt#]( cap_ess# )( 14, 19, 23, 27, 31, 35, 38, 43);
+gendef [pt#]( rule_thickness#)( .28, .31, .34, .36, .38, .4, .44, .6);
+gendef [1/36pt#]( dish# )( .7, .8, .9, 1, 1, 1, 1, 1);
+gendef [1/36pt#]( bracket# )( 10, 12, 14, 16, 18, 20, 24, 34);
+gendef [1/36pt#]( jut# )( 15, 17, 19, 22, 25, 28, 33, 42);
+gendef [1/36pt#]( cap_jut# )( 20, 23, 26, 29, 33, 37, 41, 50);
+gendef [1/36pt#]( beak_jut# )( 6, 6.8, 7.6, 8.4, 9.2, 10, 11.4, 15);
+gendef [1/36pt#]( beak# )( 35, 42, 49, 56, 63, 70, 84, 121);
+gendef [1/36pt#]( vair# )( 6, 7, 7, 8, 8, 8, 8.5, 10);
+gendef [pt#]( notch_cut# )( 5, 6, 7, 8, 9, 10, 12, 17);
+gendef [1/36pt#]( bar# )( 8, 8.5, 9, 9.5, 10, 11, 12.5, 16);
+gendef [1/36pt#]( slab# )( 8, 8.5, 9, 9.5, 10, 11, 12.5, 16);
+gendef [1/36pt#]( cap_bar# )( 8, 8.5, 9, 9.5, 10, 11, 12.5, 16);
+gendef [1/36pt#]( cap_band# )( 8, 8.5, 9, 9.5, 10, 11, 12.5, 16);
+gendef [pt#]( cap_notch_cut# )( 5, 6, 7, 8, 9, 10, 12, 17);
+gendef [1/36pt#]( serif_drop# )( 2, 2.4, 2.8, 3.2, 3.6, 4, 4.8, 7);
+gendef [1/36pt#]( stem_corr# )( .7, .8, .9, 1, 1, 1, 1, 1);
+gendef [1/36pt#]( vair_corr# )( .5, .7, .9, 1, 1, 1, 1, 1);
+gendef [1/36pt#]( apex_corr# )( 0, 0, 0, 0, 0, 0, 0, 0);
+gendef [1/36pt#]( o# )( 4, 4.5, 5, 6, 7, 8, 9, 10);
+gendef [1/36pt#]( apex_o# )( 4, 4.5, 5, 6, 7, 8, 9, 10);
+slant:=0;
+gendef ( fudge )( 1, 1, 1, 1, 1, 1, 1, 1);
+gendef ( math_spread )( 1, .8, .6, .4, .2, 0, [-.2], [-.2]);
+superness:=1/sqrt 2;
+superpull:=1/6;
+beak_darkness:=11/30;
+square_dots:=false;
+hefty:=false;
+serifs:=true;
+monospace:=false;
+variant_g:=false;
+low_asterisk:=false;
+math_fitting:=false;
+
+clear_extra_memory;
+
+generate vnroman
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnroman.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnroman.mf
new file mode 100644
index 0000000000..daab6e21e7
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnroman.mf
@@ -0,0 +1,119 @@
+% 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 roman fonts (based on exroman.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_lowercase;
+ input vnaccent;
+ input_lr_fam;
+ set_uppercase;
+ input vnaccent;
+ input_ur_fam;
+ let next = endinput;
+else:
+ let next = relax;
+fi % known testing
+next;
+
+if known gen_t5_supp:
+ input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+ input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+ input exaccent; %
+ input exsign; % zero for mille, " # $ % @ pound sign
+ set_lowercase;
+ input vnaccent;
+ input vndothook;% dotbelow and hookabove
+ input vnminus; % minus iff monospace:
+ input vnlacc; % lowercase accents
+ input vnlor; % ohorn
+ input vnlur; % uhorn
+ input vnldr; % dcroat
+ set_uppercase;
+ input vnaccent;
+ input vnuacc; % lowercase accents
+ input vnuor; % Ohorn
+ input vnuur; % Uhorn
+ input vnudr; % Dcroat
+ let next = endinput;
+else:
+ let next = relax;
+fi % known gen_t5_supp
+next;
+
+
+input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+input exaccent; %
+input exsign; % zero for mille, " # $ % @ pound sign
+input exrlig; % dotless i,j; letter ligatures ff fi fl ffi ffl
+input exromp; % (roman punctuation) & ? (spanish ?)
+input exrulett; % upper case (majuscules)
+input exrllett; % lower case (minuscules)
+input exrdigit; % roman digits
+
+set_lowercase; % set `case_' and `vncase' for lowercase letters
+input vnaccent; % define the accents for lowercase letters
+input vnlar; % modified/accented "a"
+input vnler; % modified/accented "e"
+input vnlir; % accented "i"
+input vnlor; % modified/accented "o"
+input vnlur; % modified/accented "u"
+input vnlyr; % accented "y"
+input vnldr; % d-bar
+
+input vndothook;% dotbelow and hookabove
+input vnminus; % minus for monospace font
+
+set_uppercase; % set `case_' and `vncase' for uppercase letters
+input vnaccent; % define the accents for uppercase letters
+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
+
+%
+% 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_baselineskip max(1.2*designsize,body_height#+paren_depth#);
+% font_digit_width % set inside the digits file
+% font_cap_stem % set after the programme of the capital I
+
+if monospace:
+ font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ input vnmligtb; % do the ligature programs for monospaced fonts
+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 vnrligtb; % do the ligature programs, not for monospaced fonts
+fi
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl10.mf
new file mode 100644
index 0000000000..2ec52bdfdf
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecsl;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl12.mf
new file mode 100644
index 0000000000..399da5a8a2
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecsl;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl8.mf
new file mode 100644
index 0000000000..393b97e72e
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecsl;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl9.mf
new file mode 100644
index 0000000000..1bed44e8e1
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsl9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecsl;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsltt10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsltt10.mf
new file mode 100644
index 0000000000..27cdc63c59
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnsltt10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecst;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss10.mf
new file mode 100644
index 0000000000..e083af4645
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecss;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss12.mf
new file mode 100644
index 0000000000..6d8b182ac3
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecss;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss17.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss17.mf
new file mode 100644
index 0000000000..49d097d220
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss17.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=17;
+input vnbase;
+input ecss;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss8.mf
new file mode 100644
index 0000000000..3e69c28b94
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecss;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss9.mf
new file mode 100644
index 0000000000..a4b646a0e8
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnss9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecss;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssbx10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssbx10.mf
new file mode 100644
index 0000000000..cc8d79408a
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssbx10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecsx;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssdc10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssdc10.mf
new file mode 100644
index 0000000000..36be405eb9
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssdc10.mf
@@ -0,0 +1,7 @@
+% 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
+
+input vnbase;
+input ecssdc10;
+end.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi10.mf
new file mode 100644
index 0000000000..5802b1bbb4
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecsi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi12.mf
new file mode 100644
index 0000000000..c523e8c979
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecsi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi17.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi17.mf
new file mode 100644
index 0000000000..72aa1da2a6
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi17.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=17;
+input vnbase;
+input ecsi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi8.mf
new file mode 100644
index 0000000000..6f00ec6ccf
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecsi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi9.mf
new file mode 100644
index 0000000000..3a91300a3c
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssi9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecsi;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssq8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssq8.mf
new file mode 100644
index 0000000000..87cbe040be
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssq8.mf
@@ -0,0 +1,7 @@
+% 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
+
+input vnbase;
+input ecsq8;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssqi8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssqi8.mf
new file mode 100644
index 0000000000..1d407b8e03
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnssqi8.mf
@@ -0,0 +1,7 @@
+% 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
+
+input vnbase;
+input ecqi8;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntcsc10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntcsc10.mf
new file mode 100644
index 0000000000..02eb8d63e8
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntcsc10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ectc;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntextit.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntextit.mf
new file mode 100644
index 0000000000..391925d8d3
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntextit.mf
@@ -0,0 +1,120 @@
+% 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 italic fonts (based on extextit.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_lowercase;
+ input vnaccent;
+ input_li_fam;
+ set_uppercase;
+ input vnaccent;
+ input_ur_fam;
+ let next = endinput;
+else:
+ let next = relax;
+fi % known testing
+next;
+
+if known gen_t5_supp:
+ input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+ input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+ input exaccent; %
+ input exsign; % zero for mille, " # $ % @ pound sign
+ set_lowercase;
+ input vnaccent;
+ input vndothook;% dotbelow and hookabove
+ input vnminus; % minus iff monospace:
+ input vnlacc; % lowercase accents
+ input vnloi; % ohorn
+ input vnlui; % uhorn
+ input vnldi; % dcroat
+ set_uppercase;
+ input vnaccent;
+ input vnuacc; % lowercase accents
+ input vnuor; % Ohorn
+ input vnuur; % Uhorn
+ input vnudr; % Dcroat
+ let next = endinput;
+else:
+ let next = relax;
+fi % known gen_t5_supp
+next;
+
+input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+input exaccent; %
+input exsign; % zero for mille, " # $ % @ pound sign
+input exilig; % dotless i,j; letter ligatures ff fi fl ffi ffl
+input exitalp; % $ ? # &
+input exrulett; % upper case (majuscules)
+input exillett; % lower case (minuscules)
+input exidigit; % digits
+
+set_lowercase; % set `case_' and `vncase' for lowercase letters
+input vnaccent; % define the accents for lowercase letters
+input vnlai; % modified/accented "a"
+input vnlei; % modified/accented "e"
+input vnlii; % accented "i"
+input vnloi; % modified/accented "o"
+input vnlui; % modified/accented "u"
+input vnlyi; % accented "y"
+input vnldi; % d-bar
+
+input vndothook;% dotbelow and hookabove
+input vnminus; % minus iff monospace:
+
+set_uppercase; % set `case_' and `vncase' for uppercase letters
+input vnaccent; % define the accents for uppercase letters
+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
+
+%
+% 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#;
+ letter_fit#:=letter_fit:=0;
+ input vnmligtb; % do the ligature programmes for monospaced fonts
+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 vniligtb; % do the ligature programmes for proportionally spaced fonts
+fi
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti10.mf
new file mode 100644
index 0000000000..358f976f36
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecti;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti12.mf
new file mode 100644
index 0000000000..f240fd61d3
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti12.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ecti;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti7.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti7.mf
new file mode 100644
index 0000000000..73adbda21f
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti7.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=7;
+input vnbase;
+input ecti;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti8.mf
new file mode 100644
index 0000000000..61b918fd7e
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ecti;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti9.mf
new file mode 100644
index 0000000000..2cd6b5ad56
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnti9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ecti;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt10.mf
new file mode 100644
index 0000000000..ae989a1cf1
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ectt;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt12.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt12.mf
new file mode 100644
index 0000000000..d22c26d62e
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt12.mf
@@ -0,0 +1,9 @@
+% 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
+
+gensize:=12;
+input vnbase;
+input ectt;
+bye.
+relax;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt8.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt8.mf
new file mode 100644
index 0000000000..54336b533a
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt8.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=8;
+input vnbase;
+input ectt;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt9.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt9.mf
new file mode 100644
index 0000000000..03052a34f7
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vntt9.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=9;
+input vnbase;
+input ectt;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnu10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnu10.mf
new file mode 100644
index 0000000000..49e45f08c4
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnu10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecui;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuacc.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuacc.mf
new file mode 100644
index 0000000000..aa4616c9be
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuacc.mf
@@ -0,0 +1,28 @@
+% 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
+
+% define uppercase accents
+
+vnchar casename "grave accent";
+define_vnaccent(135, grave_);
+
+vnchar casename "acute accent";
+define_vnaccent(136, acute_);
+
+vnchar casename "circumflex accent";
+define_vnaccent(137, circumflex_);
+
+vnchar casename "tilde accent";
+define_vnaccent(138, tilde_);
+
+vnchar casename "dot accent";
+define_vnaccent(139, dot_);
+
+vnchar casename "breve accent";
+define_vnaccent(140, breve_);
+
+vnchar casename "hook accent";
+define_vnaccent(141, hook_);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuar.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuar.mf
new file mode 100644
index 0000000000..8f7aa11194
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuar.mf
@@ -0,0 +1,65 @@
+% 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
+
+% Computer Modern Roman upper case "A" precomposed glyphs:
+% Inclusion:
+% A' A` A? A~ A.
+% A( A(' A(` A(? A(~ A(.
+% A^ A^' A^` A^? A^~ A^.
+
+begin_letter(a);
+ set_letter_dimens(a)(
+ 13u#, cap_height#, 0,
+ 0,
+ cap_serif_fit#, cap_serif_fit#
+ );
+ numeric left_stem, right_stem, outer_jut, alpha;
+ right_stem = cap_stem - stem_corr;
+ left_stem = min(cap_hair if hefty: -3stem_corr fi, right_stem);
+ outer_jut = .8cap_jut;
+ x1l = w - x4r = l + letter_fit + outer_jut + .5u;
+ y1 = y4 = 0;
+ x2 - x1 = x4 - x3;
+ x3r = x2r + apex_corr;
+ y2 = y3 = h+apex_o + apex_oo;
+ alpha = diag_ratio(2, left_stem, y2 - y1, x4r - x1l - apex_corr);
+ penpos1(alpha*left_stem, 0);
+ penpos2(alpha*left_stem, 0);
+ penpos3(alpha*right_stem, 0);
+ penpos4(alpha*right_stem, 0);
+ z0 = whatever[z1r, z2r] = whatever[z3l, z4l];
+ if y0 < h-cap_notch_cut: y0 := h - cap_notch_cut;
+ fill z0 + .5right{down} ... {z4 - z3}diag_end(3l, 4l, 1, 1, 4r, 3r)
+ -- diag_end(4r, 3r, 1, 1, 2l, 1l) -- diag_end(2l, 1l, 1, 1, 1r, 2r){z2 - z1}
+ ... {up}z0 + .5left -- cycle; % left and right diagonals
+ else: fill z0 -- diag_end(0, 4l, 1, 1, 4r, 3r) -- diag_end(4r, 3r, 1, 1, 2l, 1l)
+ -- diag_end(2l, 1l, 1, 1, 1r, 0) -- cycle;
+ fi % left and right diagonals
+ penpos5(whatever, angle(z2 - z1));
+ z5 = whatever[z1, z2];
+ penpos6(whatever, angle(z3 - z4));
+ z6 = whatever[z3, z4];
+ y6 = y5;
+ if hefty: y5r else: y5 fi =5/12y0;
+ y5r - y5l = y6r - y6l = cap_band;
+ penstroke z5e -- z6e; % bar line
+ if serifs: numeric inner_jut;
+ pickup tiny.nib;
+ prime_points_inside(1, 2);
+ prime_points_inside(4, 3);
+ if rt x1'r + cap_jut + .5u + 1<=lft x4'l - cap_jut: inner_jut = cap_jut;
+ else: rt x1'r + inner_jut + .5u + 1=lft x4'l - inner_jut;
+ fi
+ dish_serif(1', 2, a, 1/2, outer_jut, b, .6, inner_jut)(dark); % left serif
+ dish_serif(4', 3, c, 1/2, inner_jut, d, 1/3, outer_jut);
+ set_letter_join(a, max(x2, x3), 6.5u#);
+ else:
+ set_letter_join(a, x0, 6.5u#);
+ fi % right serif
+ penlabels(0, 1, 2, 3, 4, 5, 6);
+end_pic;
+
+input vnacomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnucomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnucomp.mf
new file mode 100644
index 0000000000..e2088689bd
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnucomp.mf
@@ -0,0 +1,47 @@
+% 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
+
+% define [uU]-based accented letters
+
+vnchar casename "u with horn ";
+define_vnchar_horn(u);
+
+if known gen_t5_supp:
+ let next = endinput;
+else:
+ let next = relax;
+fi % known gen_t5_supp
+next;
+
+vnchar casename "u with acute";
+define_vnchar(u, acute_);
+
+vnchar casename "u with grave";
+define_vnchar(u, grave_);
+
+vnchar casename "u with hook";
+define_vnchar(u, hook_);
+
+vnchar casename "u with tilde";
+define_vnchar(u, tilde_);
+
+vnchar casename "u with dot";
+define_vnchar_dot(u);
+
+vnchar casename "u with horn and acute";
+define_vnchar_horn_ac(u, acute_);
+
+vnchar casename "u with horn and grave";
+define_vnchar_horn_ac(u, grave_);
+
+vnchar casename "u with horn and hook";
+define_vnchar_horn_ac(u, hook_);
+
+vnchar casename "u with horn and tilde";
+define_vnchar_horn_ac(u, tilde_);
+
+vnchar casename "u with horn and dot";
+define_vnchar_horn_dot(u);
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnudr.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnudr.mf
new file mode 100644
index 0000000000..f1567638b3
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnudr.mf
@@ -0,0 +1,58 @@
+% 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
+
+% Computer Modern Roman "D-bar" precomposed glyph:
+% Inclusion:
+% DD
+
+numeric bar_thickness#;
+bar_thickness# := vair#;
+define_whole_pixels(bar_thickness);
+
+vnchar casename "d with bar";
+beginchar(vn_code(d.bar_), 13.5u#, cap_height#, 0);
+ italcorr .7cap_height# * slant - .5u#;
+ adjust_fit(cap_serif_fit#, 0);
+ pickup tiny.nib;
+ pos1(cap_stem', 0);
+ pos2(cap_stem', 0);
+ lft x1l = lft x2l = hround max(2u, 3u - .5cap_stem');
+ top y1 = h;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e; % stem
+ penpos3(cap_band, 90);
+ penpos4(cap_band, 90);
+ penpos5(cap_curve - stem_corr, 0);
+ penpos6(cap_band, -90);
+ penpos7(cap_band, -90);
+ z3r = top z1;
+ y4 = y3;
+ y5 = .51[y4, y6];
+ y6 = y7;
+ z7r = bot z2;
+ x4 = x6 = .5w + .25u;
+ x5r = hround(w - u);
+ x4l := x6l := x4 - .25cap_curve;
+ fill stroke z3e .. pulled_arc.e(4, 5) & pulled_arc.e(5, 6) .. z7e;% lobe
+ if serifs:
+ nodish_serif(1, 2 ,a ,1/3, cap_jut, b, 1/3, .5cap_jut); % upper serif
+ nodish_serif(2, 1, c, 1/3, cap_jut, d, 1/3, .5cap_jut); % lower serif
+ fi
+ pos8(bar_thickness, 90);
+ pos9(bar_thickness, 90);
+ top y8r = top y9r = vround(y5 + .8bar_thickness) + eps;
+ if serifs:
+ lft x8 = hround(tiny.lft x2l - max(cap_jut, cap_hair)) - eps;
+ rt x9 = hround(tiny.rt x2r + max(cap_jut, cap_hair)) + eps;
+ else:
+ lft x8 = hround(tiny.lft x2l - .8vair) - eps;
+ rt x9 = hround(tiny.rt x2r + .8vair) + eps;
+ fi
+ filldraw stroke z8e -- z9e; % bar
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+endinput;
+
+% eof
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuer.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuer.mf
new file mode 100644
index 0000000000..bda37a1964
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuer.mf
@@ -0,0 +1,72 @@
+% 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
+
+% Computer Modern Roman upper case "E" precomposed glyphs:
+% Inclusion:
+% E' E` E? E~ E.
+% E^ E^' E^` E^? E^~ E^.
+
+begin_letter(e);
+ set_letter_dimens(e)(
+ 12u# - width_adj#, cap_height#, 0,
+ cap_height#*slant - beak_jut# - .5u#,
+ cap_serif_fit#, 0
+ );
+ h := vround(h - stem_corr);
+ pickup tiny.nib;
+ pos1(cap_stem, 0);
+ pos2(cap_stem, 0);
+ lft x1l = lft x2l = hround max(2u, 3u - .5cap_stem);
+ top y1 = h;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e; % stem
+ pickup crisp.nib;
+ pos3(slab, 90);
+ pos4(hair, 0);
+ top y3r = h;
+ x3 = x1;
+ rt x4r = hround(w - u);
+ y4 = good.y(y3l - beak) - eps;
+ arm(3, 4, e, beak_darkness, beak_jut); % upper arm and beak
+ pos5(cap_bar, -90);
+ pos6(hair, 0);
+ top y5l = vround(.52[y2, y1] + .5cap_bar);
+ x5 = x1;
+ pos0(cap_bar, 90);
+ pos7(hair, 0);
+ z0 = z5;
+ x6 = x7;
+ y6 - y5l = y0l - y7;
+ if serifs: rt x6r = hround(w - 4.4u + .5hair);
+ y6 = good.y(y5l + .6beak) + eps;
+ rt x9r = hround(w - .5u);
+ else: rt x6r = hround(w - 1.5u);
+ y6 = y5l + eps;
+ rt x9r = hround(w - .75u);
+ fi
+ arm(5, 6, f, beak_darkness, 0);
+ arm(0, 7, g, beak_darkness, 0); % middle arm and serif
+ pos8(slab if not serifs: +2stem_corr fi, -90);
+ pos9(hair, 0);
+ bot y8r = 0;
+ x8 = x2;
+ y9 = good.y(y8l + 7/6beak) + eps;
+ arm(8, 9, h, beak_darkness, 1.5beak_jut); % lower arm and beak
+ if serifs: nodish_serif(1, 2, a, 1/3, cap_jut, b, 1/3, .5cap_jut); % upper serif
+ nodish_serif(2, 1, c, 1/3, cap_jut, d, 1/3, .5cap_jut);
+ fi % lower serif
+ math_fit(0, .5ic#);
+ if serifs:
+ set_letter_join(e, .5[x.a1, max(x4r, x9r)], .5w#);
+% set_letter_join(e, x.f2, .5w#);
+% set_letter_join(e.grave_, x.e2, .5w#);
+ else:
+ set_letter_join(e, .5[x3, x4], .5w#);
+ fi
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+end_letter;
+
+input vnecomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuir.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuir.mf
new file mode 100644
index 0000000000..443f3d87d1
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuir.mf
@@ -0,0 +1,32 @@
+% 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
+
+% Computer Modern Roman upper case "I" precomposed glyphs:
+% Inclusion:
+% I' I` I? I~ I.
+
+begin_letter(i);
+ set_letter_dimens(i)(
+ max(6u#, 4u# + cap_stem#), cap_height#, 0,
+ cap_height#*slant - .25u#,
+ cap_serif_fit#, cap_serif_fit#
+ );
+ pickup tiny.nib;
+ pos1(cap_stem, 0);
+ pos2(cap_stem, 0);
+ lft x1l = lft x2l = hround(.5w - .5cap_stem);
+ top y1 = h;
+ bot y2 = 0;
+ filldraw stroke z1e -- z2e; % stem
+ if serifs: dish_serif(1, 2, a, 1/3, 1.05cap_jut, b, 1/3, 1.05cap_jut); % upper serif
+ dish_serif(2, 1, c, 1/3, 1.05cap_jut, d, 1/3, 1.05cap_jut);
+ fi % lower serif
+ math_fit(0, .5ic#);
+ set_letter_join(i, x1, .5w#);
+ penlabels(1, 2);
+end_letter;
+
+input vnicomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuor.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuor.mf
new file mode 100644
index 0000000000..be36887ae3
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuor.mf
@@ -0,0 +1,44 @@
+% 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
+
+% Computer Modern Roman upper case "O" precomposed glyphs:
+% Inclusion:
+% O' O` O? O~ O.
+% O+ O+' O+` O+? O+~ O+.
+
+begin_letter(o);
+ set_letter_dimens(o)(
+ 14u# - width_adj#, cap_height#, 0,
+ .7cap_height#*slant - .5u#,
+ 0, 0
+ );
+ penpos1(vair', 90);
+ penpos3(vround(vair + 1.5vair_corr), -90);
+ penpos2(cap_curve, 180);
+ penpos4(cap_curve, 0);
+ if monospace: x2r = hround 1.5u;
+ interim superness := sqrt superness; % make |"O"|, not |"0"|
+ else: x2r = hround u;
+ fi
+ x4r = w-x2r;
+ x1 = x3 = .5w;
+ y1r = h+o;
+ y3r=-o;
+ y2 = y4 = .5h - vair_corr;
+ y2l := y4l := .52h;
+ penstroke pulled_super_arc.e(1, 2)(.5superpull)
+ & pulled_super_arc.e(2, 3)(.5superpull)
+ & pulled_super_arc.e(3, 4)(.5superpull)
+ & pulled_super_arc.e(4, 1)(.5superpull) & cycle; % bowl
+ math_fit( - .3cap_height#*slant - .5u#, ic# - .5u#);
+ penlabels(1, 2, 3, 4);
+ set_letter_join(o, x1, .5w#);
+ set_letter_join(o.horn_, x1 + .1dot_size, .5w# + .1dot_size#);
+ set_horn_join(o, pulled_super_arc.l(4, 1)(.5superpull),
+ pulled_super_arc.r(4, 1)(.5superpull));
+end_letter;
+
+input vnocomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuur.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuur.mf
new file mode 100644
index 0000000000..072afda989
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuur.mf
@@ -0,0 +1,94 @@
+% 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
+
+% Computer Modern Roman upper case "U" precomposed glyphs:
+% Inclusion:
+% U' U` U? U~ U.
+% U+ U+' U+` U+? U+~ U+.
+
+begin_letter(u);
+ set_letter_dimens(u)(
+ 13u# + .5width_adj#, cap_height#, 0,
+ cap_height#*slant - cap_serif_fit# + cap_jut# - 2.5u# + min(.5cap_stem#, u#),
+ if monospace:
+ cap_serif_fit# - .5u#, cap_serif_fit# - .5u#
+ else:
+ cap_serif_fit#, cap_serif_fit#
+ fi
+ );
+ pickup tiny.nib;
+ pos1(cap_stem, 0);
+ pos2(cap_stem, 0);
+ pos2'(cap_stem, 180);
+ z2' = z2;
+ pos3(cap_band, -90);
+ pos4(cap_hair, 0);
+ pos5(cap_hair, 0);
+ x1 = x2;
+ x3 = .5[x1, x5];
+ x4 = x5;
+ x1l = w-x5r;
+ top y1 = top y5 = h;
+ y2 = y4 = 1/3h;
+ bot y3r=-o;
+ lft x1l = hround max(2u, 3u - .5cap_stem);
+ filldraw stroke z1e -- z2e; % left stem
+ filldraw stroke pulled_arc.e(2', 3)
+ & pulled_arc.e(3, 4)&z4e -- z5e; % arc and right stem
+ if serifs: dish_serif(1, 2, a, 1/3, cap_jut, b, 1/3, cap_jut); % left serif
+ dish_serif(5, 4, c, 1/2, cap_jut, d, 1/2, cap_jut)(dark);
+ fi % right serif
+ math_fit( - cap_serif_fit# - .3cap_height#*slant - min(cap_height#*slant, u#),
+ max(.5ic# - .5u#, 0));
+ set_letter_join(u, x3, .5w#);
+ set_letter_join(u.dot_, x3 + .5u, .5w# + .5u#);
+ set_horn_join(u, z4 -- z5, z4 -- z5);
+ penlabels(1, 2, 3, 4, 5);
+end_letter;
+
+% for accented capital u with horn we need another letter "U" without right
+% part of the right serif, however all calculations are done via dimensions of
+% the above letter to make the macros simply
+
+begin_letter(Uhorn);
+ set_letter_dimens(Uhorn)(
+ 13u# + .5width_adj#, cap_height#, 0,
+ cap_height#*slant - cap_serif_fit# + cap_jut# - 2.5u# + min(.5cap_stem#, u#),
+ if monospace:
+ cap_serif_fit# - .5u#, cap_serif_fit# - .5u#
+ else:
+ cap_serif_fit#, cap_serif_fit#
+ fi
+ );
+ pickup tiny.nib;
+ pos1(cap_stem, 0);
+ pos2(cap_stem, 0);
+ pos2'(cap_stem, 180);
+ z2' = z2;
+ pos3(cap_band, -90);
+ pos4(cap_hair, 0);
+ pos5(cap_hair, 0);
+ x1 = x2;
+ x3 = .5[x1, x5];
+ x4 = x5;
+ x1l = w - x5r;
+ top y1 = top y5 = h;
+ y2 = y4 = 1/3h;
+ bot y3r = -o;
+ lft x1l = hround max(2u, 3u - .5cap_stem);
+ filldraw stroke z1e -- z2e; % left stem
+ filldraw stroke pulled_arc.e(2', 3)
+ & pulled_arc.e(3, 4)&z4e -- z5e; % arc and right stem
+ if serifs: dish_serif(1, 2, a, 1/3, cap_jut, b, 1/3, cap_jut); % left serif
+ dish_serif(5, 4, c, 1/2, cap_jut, d, 1/2, 0)(dark);
+ fi % right serif
+ math_fit( - cap_serif_fit# - .3cap_height#*slant - min(cap_height#*slant, u#),
+ max(.5ic# - .5u#, 0));
+ set_letter_join(u.horn_, x3 + .2dot_size, .5w# + .2dot_size#);
+ penlabels(1, 2, 3, 4, 5);
+end_letter;
+
+input vnucomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuyr.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuyr.mf
new file mode 100644
index 0000000000..9e95ab3377
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnuyr.mf
@@ -0,0 +1,63 @@
+% 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
+
+% Computer Modern Roman upper case "Y" precomposed glyphs:
+% Inclusion:
+% Y' Y` Y? Y~ Y.
+
+begin_letter(y);
+ set_letter_dimens(y)(
+ 13u#, cap_height#, 0,
+ cap_height#*slant + .45u#,
+ cap_serif_fit#, cap_serif_fit#
+ );
+ numeric left_stem, right_stem, outer_jut, dy, alpha;
+ left_stem = cap_stem - stem_corr;
+ right_stem = min(cap_hair if hefty: -2stem_corr fi, left_stem);
+ outer_jut = .75cap_jut;
+ x1l = w - x4r = l + letter_fit + outer_jut + .05u;
+ x2l = x5l = hround(.5w - .5left_stem);
+ x3r = x5r;
+ y1 = y4 = h;
+ y2 = y3 = y5 = .4h;
+ dy = y1 - y2;
+ alpha = ((x2l - x1l) ++ dy)/dy;
+ penpos1(alpha*left_stem, 0);
+ penpos2(alpha*left_stem, 0);
+ penpos3(alpha*right_stem, 0);
+ penpos4(alpha*right_stem, 0);
+ penpos5(left_stem, 0);
+ penpos6(left_stem, 0);
+ x5 = x6;
+ y6 = 0;
+ z0 = whatever[z1r, z2r] = whatever[z3l, z4l];
+ if y0 > y2 + cap_notch_cut: y0 := y2 + cap_notch_cut;
+ fill z0 + .5right{up} ... {z4 - z3}diag_end(3l, 4l, 1, 1, 4r, 3r) -- z5r
+ -- diag_end(5r, 6r, 1, 1, 6l, 5l) -- z5l -- diag_end(2l, 1l, 1, 1, 1r, 2r){z2 - z1}
+ ... {down}z0 + .5left -- cycle; % diagonals and stem
+ else: fill z0 -- diag_end(0, 4l, 1, 1, 4r, 3r) -- z5r
+ -- diag_end(5r, 6r, 1, 1, 6l, 5l) -- z5l
+ -- diag_end(2l, 1l, 1, 1, 1r, 0) -- cycle;
+ fi % diagonals and stem
+ if serifs: numeric inner_jut;
+ pickup tiny.nib;
+ prime_points_inside(1, 2);
+ prime_points_inside(4, 3);
+ prime_points_inside(6, 5);
+ if rt x1'r + cap_jut + .5u + 1<=lft x4'l - cap_jut: inner_jut = cap_jut;
+ else: rt x1'r + inner_jut + .5u + 1=lft x4'l - inner_jut;
+ fi
+ dish_serif(1', 2, a, 1/3, outer_jut, b, 1/2, inner_jut); % upper left serif
+ dish_serif(4', 3, c, .6, inner_jut, d, 1/2, outer_jut)(dark); % upper right serif
+ dish_serif(6', 5, e, 1/3, cap_jut, f, 1/3, cap_jut);
+ fi % lower serif
+ math_fit(.5u# - cap_height#*slant, ic# - 4u#);
+ set_letter_join(y, x6 if serifs: + .3max(0, left_stem - right_stem) fi,
+ .5w#);
+ penlabels(0, 1, 2, 3, 4, 5, 6);
+end_letter;
+
+input vnycomp;
+
+endinput;
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnvtt10.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnvtt10.mf
new file mode 100644
index 0000000000..3b70f64df2
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnvtt10.mf
@@ -0,0 +1,8 @@
+% 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
+
+gensize:=10;
+input vnbase;
+input ecvt;
+bye.
diff --git a/language/vietnamese/vntex/fonts/source/vntex/vnr/vnycomp.mf b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnycomp.mf
new file mode 100644
index 0000000000..98ca2558fc
--- /dev/null
+++ b/language/vietnamese/vntex/fonts/source/vntex/vnr/vnycomp.mf
@@ -0,0 +1,22 @@
+% 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
+
+% define [yY]-based accented letters
+
+vnchar casename "y with acute";
+define_vnchar(y, acute_);
+
+vnchar casename "y with grave";
+define_vnchar(y, grave_);
+
+vnchar casename "y with hook";
+define_vnchar(y, hook_);
+
+vnchar casename "y with tilde";
+define_vnchar(y, tilde_);
+
+vnchar casename "y with dot";
+define_vnchar_dot(y);
+
+endinput;