]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-din-code.mf
* mf/feta-params.mf (stafflines): introduce linethickness as
[lilypond.git] / mf / feta-din-code.mf
1
2 %%
3 %
4 % TODO: blot diameter should be fixed, not scalable.
5 %
6 %
7
8
9 save serif_thick;
10 serif_thick# = 1.1 linethickness#;
11 define_blacker_pixels (serif_thick);
12 med_thick = round (1.5 linethickness);
13 bottom_blot = 1.3 serif_thick;
14
15
16 code := 32;
17 fet_beginchar("Space", "space", "space")
18         set_char_box(0, horizontal_space#,  0, ex#);
19 fet_endchar;
20
21
22 %
23 % Couldn't find many z examples. This one is losely inspired 
24 % by a sfz from Mueller etuden fuer Horn (Edition Hofmeister.)
25 %
26
27 code := 121;
28 fet_beginchar ("dynamic z", "z", "dynz");
29         set_char_box (0, .98 ex#, 0, 0.9 ex#);
30
31         save thin_thick, top_narrow, over_shoot;
32         save bot_thick;
33
34         thin_thick = serif_thick;
35         top_narrow = thin_thick;
36         top_overshoot =  .8 serif_thick;
37         top_thick = .3 h ;
38         bot_thick = .2 ex;
39         bot_overshoot = serif_thick;
40
41         x0 = + top_narrow;
42         y0 = .9  [y1r, y1l];
43         y1l = .72 h;
44         x1r = .34 ex;
45         x2 = .66 ex;
46         y2 = y1r - top_overshoot;
47
48
49         y3 = h - .7 thin_thick;
50         x3 = w - .6 top_narrow - .5 thin_thick;
51
52         y4 = .5 thin_thick;
53         x4 = .5 thin_thick;
54
55         x5l =.25 ex;
56         y5l = .4 bot_overshoot;
57         y6l = -bot_overshoot;
58         x6 = w - 3 top_narrow;
59         x7 = w;
60         y7 = .82 [y8r, y6r];
61         x8r = w - .35 top_narrow;
62         x9 = w;
63         y8r = .45 h;
64
65         penpos1(top_thick, 80);
66         penpos3 (thin_thick, angle(z3-z4) + 90);
67         penpos4(thin_thick, angle (z3-z4) + 90);
68         penpos5(bot_thick, 70);
69         penpos6(3/2 bot_thick, 70);
70         penpos8 (thin_thick, 20);
71
72         penlabels(range 0 thru 9);
73
74         save p,q,r;
75         path p,q,r;
76
77         p := z0{down}
78                 ..  z1l{dir(10)}
79
80                 .. simple_serif (z3l, z3r, 90) .. z2{left} .. z1r{left}
81                 .. tension 1.2 
82                 .. cycle;
83         q := z3l -- z3r -- z4r -- z4l -- cycle;
84         r := simple_serif (z4r, z4l, 90) .. z5l{right}
85                 .. z6l{right}
86                 .. z7{up}
87                 .. simple_serif (z8r, z8l, 90)
88                 ..  z6r{left} .. z5r{left} .. cycle;
89         pickup pencircle scaled 1;
90 %       draw p ; draw q ; draw r ;
91
92         fill p; fill q; fill r;
93
94 fet_endchar;
95
96
97 % forte f, grabbed from Ed Breitkopf Mozart horn concerto 3.
98 %
99 % NOTES:
100 %
101 % * the bulbs are open.
102 %
103 % * blotting around the serif
104 %
105 %
106 %
107 % TODO: insert blots around the serif
108 %
109 %
110 %
111 slant_angle = 20;
112
113
114 code := 101;
115 fet_beginchar("dynamic f", "f", "dynf");
116         set_char_box (0, 1.1 ex#, descender#, ex# + ascender#);
117
118         save left_angle, right_angle;
119         save serif_length, serif_excentricity;
120         save f_thick;
121         save bulb_thick, bulb_diam, fill_up;
122         save p;
123         path p; 
124         bulb_diam = 7.5 / 40 ex;
125         bulb_thick = 8.5/40 ex;
126         fill_up = 1.5 serif_thick;
127         save slant;
128         left_angle =   slant_angle - 6;
129         right_angle =  slant_angle - 3;
130         f_thick = 7/16 ex;
131         serif_length = 0.96 ex;
132         serif_excentricity = 0.01 ex;
133
134
135         % z1 is the "base point"
136         z1 = (0.2 ex, - serif_thick);
137         y2 = y1 + ex;
138         z2l = z1 + whatever*dir (90 - left_angle);
139         penpos2 (f_thick, 0);
140
141         y3l = y1 + ex + ascender;
142         x3l = x1 + 1 ex;
143         penpos3 (med_thick, -90);
144         penpos4 (bulb_thick, -20);
145         z3r = whatever [z4r,z4l];
146
147         x4l - x3l = 1/10 ex;
148
149         penpos5(bulb_thick, -45);
150         x5r = 0.1 [x4l, x4r];
151         y5l = y4l - bulb_diam;
152
153         z6 = z2r + whatever* dir (90 - right_angle);
154         y6 = y1 + 3/8 ex;
155
156         x7 = x1 - 1/4 ex;
157         y7r = y1 -descender;
158         penpos7(med_thick, -90);
159
160         penpos8 (bulb_thick, 160);
161         x8l = x7l - 1/10 ex;
162         z7l = whatever [z8r,z8l];
163
164         penpos9 (bulb_thick, 135);
165         x9r = 0.1 [x8l, x8r];
166         y9l = y8l + bulb_diam;
167         labels(1,6,9);
168         penlabels(2, 3,4,5, 7, 8,9);
169
170         p := z1 --- z2l 
171                 .. tension 1.1
172                 .. z3l{right} .. z4r{down}
173                 .. z5r{left} .. z5l{up}
174                 .. tension 0.8
175                 .. z4l{up} .. z3r{left}
176                 .. tension 1.1
177                 .. z2r --- z6 .. tension 1.25 ..  z7r{left}
178                 .. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8
179                 .. z8l{down} .. z7l{right} .. cycle;
180         pickup pencircle scaled 1;
181         fill p;
182 %       draw p;
183
184 %
185 % todo round for pixels...
186 %
187         pickup pencircle scaled round (1.4 serif_thick);
188         (rt x13) - (lft x14) = serif_length;
189         y13 = y14;
190         y14 = y2;
191         0.5 [x13, x14] = x2 + serif_excentricity;
192
193         draw z13 .. z14;
194
195         penlabels(16);
196         labels(13,14,15);
197 fet_endchar;
198
199
200 %
201 % Notes:
202 %  
203 % - The S is trapezoidal (i.e. narrower at the top) 
204 %
205 % - The white space is differently shaped at the top (the bulb's inner
206 % curve is filled up.)
207 %
208 % - less heavy than the f and p signs.
209 %
210
211
212 code := 114;
213 fet_beginchar("dynamic s", "s", "dyns");
214         set_char_box (0, 17/24  ex#, 0, 1 ex#);
215
216         save left_angle, right_angle;
217         save s_thick, s_thin;
218         save base_point;
219         save bulb_diam, bulb_len;
220         save over_shoot;
221         over_shoot = 0; % .2 serif_thick;
222         pair base_point;
223
224         bulb_diam = 11/70 ex;
225         bulb_len = 1.0 bulb_diam;
226         left_angle =  slant_angle - 2;
227         right_angle =  slant_angle -11;
228
229         s_thick = 16/70 ex;
230         s_thin = serif_thick;
231
232         base_point = (0,0);
233
234         penpos1 (bulb_diam, -45);
235         z1 = 0.35 [z2l,z2r] + bulb_len * dir(45);
236         penpos2 (bulb_diam, -25);
237         y2l = 0.845 [y7r, y3r];
238
239         z2l = base_point + whatever * dir (90-left_angle);
240         penpos3 (s_thin, 100);
241         x3l = 1/2 w ;
242         y3l = ypart base_point - over_shoot ;
243         
244         penpos4 (s_thick, 25);
245         ypart z4l  = ypart z1r;
246         z4r = base_point + (w,0) + whatever *dir(90-right_angle);
247         penpos5 (s_thick, 40);
248         z5 = z3l + whatever * dir (90-right_angle);
249         y5 = ypart (0.48 [z7r, z3r]);
250
251         
252         penpos6 (s_thick, 25);
253         z6l = base_point + whatever *dir(90-left_angle);
254         y6r = y9l;
255
256         penpos7 (.9 s_thin, 110);
257         z7l = 0.45 [z6r, z8l] + whatever * dir (90-left_angle);
258         y7r = h + over_shoot;
259
260         penpos8 (.9 bulb_diam, -25);
261         z8 = .6 [z4l,z4r] + whatever *dir(90-right_angle);
262
263         y8r = ypart (0.23 [z7r, z3r]);
264
265         penpos9 (.9 bulb_diam, -45);
266         z9 = .4 [z8r,z8l] + .9 bulb_len * dir (-135);
267
268         penlabels(1,2,3,4,5,6,7,8,9);
269
270         labels(12);
271         save p;
272         path p;
273         p := z2l{down} .. z3l{right} .. z4r{up}
274                 .. z5r
275                 .. z6r{up}
276                 .. z7l{right}
277                 %.. z8l{down}
278                 ..z9l{down}
279                 .. z9r{right} .. z7r{left}
280                 .. z6l{down}
281                 .. z5l
282                 .. z4l{down}
283                 .. z3r{left}
284                 .. z2r{up} .. z1r{up}
285                 .. z1l{left} .. cycle;
286         pickup pencircle scaled 1;
287         fill p;
288 fet_endchar;
289
290
291
292
293 %
294 % piano p, grabbed from Ed Breitkopf Mozart horn concerto 3.
295 %
296 % Notes:
297 %
298 % * there is no dishing in the serif (but we do it anyway)
299 %
300 % * The cheek is a little fatter than the stem 
301
302 % * The slant is extreme: 20 degrees
303 %
304 % * the twiddle (what'sitcalled) is a slightly darker than the serif
305 %
306 % * The hole in the cheek has a straight right side.
307 %
308 % * Corners are filled up.
309 %
310 %
311
312 save slant;
313 slant := ypart (dir(slant_angle));
314 currenttransform := currenttransform slanted slant;
315
316 code := 111;
317
318
319 fet_beginchar("dynamic p", "p", "dynp")
320         %
321         % TODO w really   is 13/12 ex
322         % but should do kerning
323         set_char_box (0, 15/12 ex#, descender#, 1.0 ex#);
324
325         save twiddle_thick, stem_thick, cheek_thick;
326         save updir, fill_up;
327         save serif, dishing_angle, p, q;
328         save cheek_medium, left_serif_protude, right_serif_protude;
329         save lower_overshoot;
330
331         pair updir;
332         path serif,q,p;
333         save my_slant_angle;
334         my_slant_angle = 0; 
335         updir := dir (90 - my_slant_angle );
336         twiddle_thick = med_thick;
337         cheek_medium = 1/6 ex;
338
339         dishing_angle = 5;
340         fill_up := 1.5 serif_thick;
341         straigh_len = 0.5 ex;
342         lower_overshoot  := .3 serif_thick; 
343
344         stem_thick = 2/6 ex;
345         cheek_thick = 13/32 ex;
346         cheek_width = 0.72 ex;
347         left_serif_protude = 18/60 ex;
348         right_serif_protude= 15/60 ex;
349         
350         penpos1 (twiddle_thick, -slant - 5);
351         penpos2 (cheek_medium, 90 - slant );
352         penpos3 (cheek_medium, 90 - slant);
353
354         x4r - x4l = cheek_thick;
355         penpos4 (whatever, 0);
356         penpos5 (whatever, -38);
357         penpos6 (stem_thick, 0);
358         penpos17 (straigh_len, 90 -slant);
359         whatever [z17l, z17r] =  z4l;
360         y17 = 7/16 ex;
361
362         x6l = 0;
363         y6l = - descender + serif_thick/2;
364         z1l = z6l - whatever *dir (90 - my_slant_angle + 20 );
365         y1r = 0.5 ex;
366         y2r = ex;
367         z7 = whatever * updir + z6l;
368         y7 = 43/60  ex;
369         
370         z2l = whatever *updir + 0.3 [z7, z1r];
371         y8 = ypart (0.9 [z7, z2l]);
372         z8 = 2/3 [z6l, z6r] + whatever * updir;
373
374
375         y3r = ex;
376         z3l = 0.58 [(stem_thick, -descender), (stem_thick + cheek_width - cheek_thick, -descender)] + whatever * updir;
377         y4r = .38  ex;
378         z4r = whatever*updir + (stem_thick+  cheek_width, -descender);
379
380         z5l = whatever*updir  + z3l;
381         y5r = -lower_overshoot;
382         y5l = y5r + cheek_medium * ypart dir(55);
383
384         z9 = z6r + whatever*updir;
385         y9 = .2 [y5l, y5r];
386
387         p :=
388                 z2r{right} .. {dir( -60)}z8 & z8{dir 35} .. z3r{right}
389                 .. z4r{-updir}
390                 .. tension 1.1
391                 .. z5r{left} .. z9
392                 & z9 -- z6r -- z6l -- z7{updir} 
393                 ..  z2l{left} .. tension 1.2 ..
394                 % z1r & z1r -- z1l & z1l
395                 simple_serif (z1r, z1l, -90)
396                 .. cycle;
397
398
399         save blot_t, corner_t;
400
401         blot_t := 0.13;
402         corner_t := xpart (p intersectiontimes z9);
403
404         z19 = point corner_t - 2 blot_t of p;
405         z20 = point corner_t + blot_t of p;
406         labels(19,20);
407
408         save blot_path;
409         path blot_path;
410
411         pickup pencircle scaled 1;
412
413         fill z19{up} .. {right}z20{updir} .. z19{-(direction corner_t - 2 blot_t of p)} .. cycle;
414
415         pickup pencircle scaled 1;
416         fill p;
417
418         y12  = 0.5 ex;
419         z12 = z6r + whatever*updir;
420
421         save inner_tension;
422         inner_tension = 1.4;
423         q :=
424                 z17l .. tension 1.5 .. z17r  .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle; 
425         unfill q;
426         penlabels (1, 2, 3, 4, 5, 6, 17);
427
428
429
430
431         pickup pencircle scaled serif_thick;
432         lft x11 = -left_serif_protude;
433         rt x10 = stem_thick+ right_serif_protude;
434         bot y10 = bot y11 = -descender;
435
436         
437         serif := simple_serif (z10, z11, dishing_angle);
438         draw serif;
439
440         labels(7,8, 9, 10, 11,12);
441
442         
443         z13 = point 0.05 of serif;
444         z14 = point 0.85 of serif;
445         z15 = z6l + updir * fill_up +( serif_thick/2, 0);
446         z16 = z6r + updir * 1.2fill_up- +( serif_thick/2, 0);
447         labels(13,14, 15, 16);
448
449 %       pickup pencircle scaled 1;
450         draw z13{direction 0.05 of serif} .. z16{updir};
451         draw z14{-(direction 0.85 of serif)} .. z15{updir};
452 fet_endchar;
453
454 %
455 % NOTES:
456 %
457 % * right stem is fatter and more straight than the left 2 two stems.
458 %
459 % * The twiddle  at the left is similar to the p twiddle 
460 %
461 % * The bottoms of the stems are blotted. 
462 %
463
464 %
465 %
466 % This is cut & paste programming. Somehow 3 i shapes in two chars (p and m)
467 % Doesn't seem worth the trouble of writing a macro.
468 %
469 code := 108;
470
471 fet_beginchar("dynamic m", "m", "dynm");
472         set_char_box (0, 1.5 ex#, 0, 1.0 ex#);
473
474         % should share code with p for twiddle.
475
476         save i_thick, i_angle, i_twiddle_thick,
477                 i_twiddle_start_angle, i_twiddle_start_y, 
478                 i_left_space;
479         save p;
480         save idir, center, right_ending;
481         save overshoot;
482         pair center, idir, right_ending;
483
484         path p;
485
486         overshoot = .25  serif_thick;
487         i_thick := 21 / 80 ex;
488         i_angle := 0;
489         idir := dir(90- i_angle);
490
491         i_left_space = 16/80 ex;
492         i_twiddle_thick = 1.2 serif_thick;
493         i_twiddle_start_y =  8/16 ex;
494         i_twiddle_start_angle = 0;
495         center =(0,0);
496
497         penpos1 (i_twiddle_thick, -i_twiddle_start_angle);
498         y1 = i_twiddle_start_y;
499         z1r = center - (i_left_space,0)  + whatever * idir;
500
501         y3 = 0.5 bottom_blot + ypart center; 
502         penpos3(i_thick, 0);
503         z3l = center + whatever * idir;
504         y4 = ypart center;
505         penpos4 (i_thick - bottom_blot, 0);
506         z4 - z3 = whatever * idir;
507
508         y2l = 1 ex  +  overshoot;
509         z2l = .08 [z3l, z3r] + whatever * idir;
510         z2r = 5/8 [z1r, z3l] + whatever * idir;
511         y2r = y5l + 1/9 ex;
512         z2 = 1/2 [z2l, z2r] ;
513         penpos5(i_thick, 0);
514         z5 = z4 + whatever * idir;
515         y5 = 55 / 80 ex;
516
517         p := simple_serif (z1l, z1r, 90) .. tension 1.2 .. z2r{right} .. z5l --- z3l
518                 ..  z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
519
520         fill p;
521         right_ending := z5r;
522         penlabels (1, 2, 3 , 4,5);
523
524 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
525         clearxy;
526
527         i_angle := -3.2;
528         idir := dir(90 - i_angle);
529         i_left_space := 14/80 ex;
530
531
532         z1r = right_ending;
533         z5l = right_ending + (i_left_space,0);
534         penpos1(serif_thick, - i_twiddle_start_angle);
535
536         y3 = .5 bottom_blot + ypart center; 
537         penpos3(i_thick, 0);
538         z3l = z5l + whatever * idir;
539         y4 = ypart center;
540         penpos4(i_thick - bottom_blot, 0);
541         z4 - z3 = whatever * idir;
542
543         y2l = 1 ex+ overshoot;
544
545         z2l = .08 [z3l, z3r] + whatever * idir;
546         z2r = 5/8 [z1r, z3l] + whatever * idir;
547         y2r = y5l + 1/9 ex;
548         z2 = 1/2 [z2l, z2r] ;
549         penpos5(i_thick, 0);
550
551         p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l
552                 ..  z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
553
554         fill p;
555         right_ending := z5r;
556         penlabels (1, 2, 3 , 4,5);
557         clearxy;
558 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
559
560         i_thick := 23 / 80 ex;
561         i_angle := -6;
562         i_left_space := 14/80 ex;
563
564
565         idir := dir(90- i_angle);
566         z1r = right_ending;
567         z5l = right_ending + (i_left_space,0);
568         penpos5 (whatever, 10);
569         penpos3 (whatever, 20);
570
571         y7 = 0; 
572         penpos7(i_thick ,0);
573         
574         penpos1(serif_thick, - i_twiddle_start_angle);
575         
576         z3l = z7l + whatever * idir;
577         z3r = z7r + whatever * idir;
578         z5l = z7l + whatever * idir;
579         z5r = z7r + whatever * idir;
580
581         save end_twiddle_angle;
582         end_twiddle_angle := 35;
583         penpos6(serif_thick, - end_twiddle_angle);
584         y6l = 23/80 ex + ypart center;
585         z6l = 1.6 [z3l, z3r]  + whatever * idir;
586         
587
588
589         y3l =  1/8 ex + ypart center; 
590         y2l = 1 ex+  overshoot;
591         z2l = .08 [z3l, z3r] + whatever * idir;
592         z2r = 5/8 [z1r, z3l] + whatever * idir;
593         y2r = y5l + 1/9 ex;
594         z2 = 1/2 [z2l, z2r] ;
595         z8 = z7 - (0, 1 overshoot);
596
597         p := simple_serif (z1l, z1r, 90) .. tension 1.05
598                 .. z2r{right} .. z5l --- z3l
599                 .. z8{right}
600                 .. simple_serif(z6r, z6l, 90)
601                 .. tension 0.85
602                 .. z3r --- z5r
603                 .. tension 1.2
604                 .. z2l{left} .. cycle;
605
606 %       pickup pencircle scaled 1;
607 %       draw p;
608         fill p;
609         right_ending := z5r;
610         penlabels (1, 2, 3 , 4,5,6,7, 8);
611         clearxy;
612
613 fet_endchar;
614
615
616 code := 113;
617
618
619 currenttransform := identity slanted ypart(dir(15));
620 fet_beginchar("dynamic r", "r", "dynr");
621         set_char_box (0, .75 ex#, 0, 1ex#);
622
623
624         save base_point, stem_thick, bulb_diam;
625         save twiddle_thick, attach_len, overshoot, taille;
626         stem_thick =.26 ex;
627         bulb_diam = .30 ex;
628         twiddle_thick= 1.1 serif_thick;
629         overshoot = .5 serif_thick;
630
631         taille = -0.3 serif_thick;
632
633         pair base_point;
634         base_point = (0,0);
635
636         x1l = 0;
637         y1l = .5 bottom_blot;
638
639         penpos10(stem_thick - bottom_blot, 0);
640         y10 = 0;
641         x10 = x1;
642
643         penpos1 (stem_thick, 0);
644         y2l - y1l = 36/47 ex;
645         x2l = x1l;
646         penpos2 (stem_thick, 0);
647
648         y3 = .77  ex;
649         x3r = x2l - .2 ex;
650         penpos3(twiddle_thick, -20);
651
652         x9 = 0.15 [x1r, x1l] ;
653         y9 = y4l - .12 ex ;
654
655         x4l = -0.1 [x1l, x1r];
656         y4l = ex + overshoot;
657
658         x4r = 0.62 [x3r, x2l];
659         y4r = 0.5 [y4l, y2l];
660
661         penpos5(whatever, -74);
662         y5l - y5r =  bulb_diam;
663         y5l = ex + overshoot;
664         x5 = x2r + attach_len;
665         attach_len + bulb_diam/2 + stem_thick = w;
666
667         z6 = z5;
668         penpos6 (bulb_diam, 0);
669 %       z7 = z6l + taille* dir(180);
670
671         save alpha;
672         alpha := 35;
673         z7 = z6 + .4 * bulb_diam * dir (-90 -alpha);
674         z8 = 9/10 [z1r, z2r];
675
676
677         save p;
678         path p;
679
680         p := z1r .. z10r --- z10l .. z1l 
681                 --- z2l
682                 .. z4r{left}
683                 .. tension 1.2
684                 .. {down}simple_serif(z3r, z3l,-90){up}
685                 .. tension 0.95
686                 .. z4l
687                 .. z9
688                 & z9{curl 0}
689                 .. z5l
690                 .. z6r{dir(-80)}
691                 .. z5r{left}
692                 .. z7
693                 .. z6l
694                 .. tension 1.2
695                 .. z8 --- cycle;
696         pickup pencircle scaled 1;
697         draw p;
698         fill p;
699         penlabels (1,2,3, 4,5,6,7,8, 9, 10);
700 fet_endchar ;
701
702
703
704
705
706 %%% KERNING
707
708 ligtable "m" : "p" kern 0.2 ex#, "f" kern -0.1 ex#;
709 ligtable "f" : "f" kern -0.13 ex#;
710 ligtable "r" : "f" kern 0.1 ex#;
711
712
713
714
715
716
717
718
719
720
721 %% notes from old dyn code.
722
723 % "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239)
724 % however; perhaps we need two f symbols:
725 %  - a super-slanted one used in "f" "mf" "sfz" "sf", and
726 %  - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241)
727 %
728 % looking at professionally typeset music reveals that typesetters 
729 % are somewhat unsure about slanting in "mf", "fp", "sfz"
730
731 % "f" and "p" (in any combination) are a lot (factor two) fatter than
732 % "s", "m", and "z".  sometimes the "m" and "z" are a bit fatter than
733 % "s".
734
735
736 % Chester, Breitkopf suggest smaller sizes of these other chars,
737 % using the x-height as reference point.