% 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;
