summaryrefslogtreecommitdiff
path: root/language/vietnamese/vntex/fonts/source/vntex/vnr/vnlyr.mf
blob: 39edb6b398bcdb62b3b9f5de00a69680ba7ddac4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
% 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;