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