Glissando
*/
+#include <ctype.h>
#include "lookup.hh"
#include "debug.hh"
#include "dimensions.hh"
#include "scalar.hh"
#include "paper-def.hh"
#include "string-convert.hh"
+#include "file-path.hh"
#include "main.hh"
#include "lily-guile.hh"
return afm_find ("balls" + String ("-") +to_str (type) + "l");
}
+Dictionary<String> cmr_dict;
+Dictionary<Adobe_font_metric*> afm_p_dict;
+
Atom
Lookup::text (String style, String text) const
{
arr.push (text);
Atom a = (*symtables_p_) ("style")->lookup (style);
a.lambda_ = lambda_scm (a.str_, arr);
+
+// urg
+// if (!cmr_dict.length_i ())
+ if (!cmr_dict.elem_b ("roman"))
+ {
+ cmr_dict.elem ("italic") = "cmri12.afm";
+ cmr_dict.elem ("roman") = "cmr12.afm";
+ }
+
+ if (!afm_p_dict.elem_b (style))
+ {
+ String cmr_str = cmr_dict.elem (style);
+ String font_path = global_path.find (cmr_str);
+ if (!font_path.length_i ())
+ error (_f("can't open file: `%s'", cmr_str.ch_C ()));
+ *mlog << "[" << font_path;
+ Adobe_font_metric* afm_p = new Adobe_font_metric (read_afm (font_path));
+ DOUT << afm_p->str ();
+ *mlog << "]" << flush ;
+ afm_p_dict.elem (style) = afm_p;
+ }
+ Real w = 0;
+ Real guess_w = a.dim_.x ().length ();
+ Adobe_font_metric* afm_p = afm_p_dict.elem (style);
+ DOUT << "\nChars: ";
+ for (int i = 0; i < text.length_i (); i++)
+ {
+ if (text[i]=='\\')
+ for (i++; (i < text.length_i ()) && isalpha(text[i]); i++)
+ ;
+ else
+ {
+ if (afm_p)
+ {
+ Adobe_font_char_metric m = afm_p->char_metrics_[(int)text[i]];
+ w += m.B_.x ().length ();
+ DOUT << to_str (m.B_.x ().length ()) << " ";
+ }
+ else
+ w += guess_w;
+ }
+ }
+ DOUT << "\n" << to_str (w) << "\n";
+ a.dim_.x () = Interval (0, w);
a.str_ = "text";
a.font_ = font_;
return a;
-
}
--- /dev/null
+FontName cmr
+StartFontMetrics
+StartCharMetrics
+C 0; Character-0 ; B 0.00 0.00 6.00 7.00 ;
+C 1; Character-1 ; B 0.00 0.00 6.00 7.00 ;
+C 2; Character-2 ; B 0.00 0.00 6.00 7.00 ;
+C 3; Character-3 ; B 0.00 0.00 6.00 7.00 ;
+C 4; Character-4 ; B 0.00 0.00 6.00 7.00 ;
+C 5; Character-5 ; B 0.00 0.00 6.00 7.00 ;
+C 6; Character-6 ; B 0.00 0.00 6.00 7.00 ;
+C 7; Character-7 ; B 0.00 0.00 6.00 7.00 ;
+C 8; Character-8 ; B 0.00 0.00 6.00 7.00 ;
+C 9; Character-9 ; B 0.00 0.00 6.00 7.00 ;
+C 10; Character-10 ; B 0.00 0.00 6.00 7.00 ;
+C 11; Character-11 ; B 0.00 0.00 6.00 7.00 ;
+C 12; Character-12 ; B 0.00 0.00 6.00 7.00 ;
+C 13; Character-13 ; B 0.00 0.00 6.00 7.00 ;
+C 14; Character-14 ; B 0.00 0.00 6.00 7.00 ;
+C 15; Character-15 ; B 0.00 0.00 6.00 7.00 ;
+C 16; Character-16 ; B 0.00 0.00 6.00 7.00 ;
+C 17; Character-17 ; B 0.00 0.00 6.00 7.00 ;
+C 18; Character-18 ; B 0.00 0.00 6.00 7.00 ;
+C 19; Character-19 ; B 0.00 0.00 6.00 7.00 ;
+C 20; Character-20 ; B 0.00 0.00 6.00 7.00 ;
+C 21; Character-21 ; B 0.00 0.00 6.00 7.00 ;
+C 22; Character-22 ; B 0.00 0.00 6.00 7.00 ;
+C 23; Character-23 ; B 0.00 0.00 6.00 7.00 ;
+C 24; Character-24 ; B 0.00 0.00 6.00 7.00 ;
+C 25; Character-25 ; B 0.00 0.00 6.00 7.00 ;
+C 26; Character-26 ; B 0.00 0.00 6.00 7.00 ;
+C 27; Character-27 ; B 0.00 0.00 6.00 7.00 ;
+C 28; Character-28 ; B 0.00 0.00 6.00 7.00 ;
+C 29; Character-29 ; B 0.00 0.00 6.00 7.00 ;
+C 30; Character-30 ; B 0.00 0.00 6.00 7.00 ;
+C 31; Character-31 ; B 0.00 0.00 6.00 7.00 ;
+C 32; Character-32 ; B 0.00 0.00 6.00 7.00 ;
+C 33; Character-33 ; B 0.00 0.00 6.00 7.00 ;
+C 34; Character-34 ; B 0.00 0.00 6.00 7.00 ;
+C 35; Character-35 ; B 0.00 0.00 6.00 7.00 ;
+C 36; Character-36 ; B 0.00 0.00 6.00 7.00 ;
+C 37; Character-37 ; B 0.00 0.00 6.00 7.00 ;
+C 38; Character-38 ; B 0.00 0.00 6.00 7.00 ;
+C 39; Character-39 ; B 0.00 0.00 6.00 7.00 ;
+C 40; Character-40 ; B 0.00 0.00 6.00 7.00 ;
+C 41; Character-41 ; B 0.00 0.00 6.00 7.00 ;
+C 42; Character-42 ; B 0.00 0.00 6.00 7.00 ;
+C 43; Character-43 ; B 0.00 0.00 6.00 7.00 ;
+C 44; Character-44 ; B 0.00 0.00 6.00 7.00 ;
+C 45; Character-45 ; B 0.00 0.00 6.00 7.00 ;
+C 46; Character-46 ; B 0.00 0.00 6.00 7.00 ;
+C 47; Character-47 ; B 0.00 0.00 6.00 7.00 ;
+C 48; Character-48 ; B 0.00 0.00 6.00 7.00 ;
+C 49; Character-49 ; B 0.00 0.00 6.00 7.00 ;
+C 50; Character-50 ; B 0.00 0.00 6.00 7.00 ;
+C 51; Character-51 ; B 0.00 0.00 6.00 7.00 ;
+C 52; Character-52 ; B 0.00 0.00 6.00 7.00 ;
+C 53; Character-53 ; B 0.00 0.00 6.00 7.00 ;
+C 54; Character-54 ; B 0.00 0.00 6.00 7.00 ;
+C 55; Character-55 ; B 0.00 0.00 6.00 7.00 ;
+C 56; Character-56 ; B 0.00 0.00 6.00 7.00 ;
+C 57; Character-57 ; B 0.00 0.00 6.00 7.00 ;
+C 58; Character-58 ; B 0.00 0.00 6.00 7.00 ;
+C 59; Character-59 ; B 0.00 0.00 6.00 7.00 ;
+C 60; Character-60 ; B 0.00 0.00 6.00 7.00 ;
+C 61; Character-61 ; B 0.00 0.00 6.00 7.00 ;
+C 62; Character-62 ; B 0.00 0.00 6.00 7.00 ;
+C 63; Character-63 ; B 0.00 0.00 6.00 7.00 ;
+C 64; Character-64 ; B 0.00 0.00 6.00 7.00 ;
+C 65; Character-A ; B 0.00 0.00 7.50 7.00 ;
+C 66; Character-B ; B 0.00 0.00 7.50 7.00 ;
+C 67; Character-C ; B 0.00 0.00 7.50 7.00 ;
+C 68; Character-D ; B 0.00 0.00 7.50 7.00 ;
+C 69; Character-E ; B 0.00 0.00 7.50 7.00 ;
+C 70; Character-F ; B 0.00 0.00 7.50 7.00 ;
+C 71; Character-G ; B 0.00 0.00 7.50 7.00 ;
+C 72; Character-H ; B 0.00 0.00 7.50 7.00 ;
+C 73; Character-I ; B 0.00 0.00 4.00 7.00 ;
+C 74; Character-J ; B 0.00 0.00 7.50 7.00 ;
+C 75; Character-K ; B 0.00 0.00 7.50 7.00 ;
+C 76; Character-L ; B 0.00 0.00 7.50 7.00 ;
+C 77; Character-M ; B 0.00 0.00 11.00 7.00 ;
+C 78; Character-N ; B 0.00 0.00 7.50 7.00 ;
+C 79; Character-O ; B 0.00 0.00 7.50 7.00 ;
+C 80; Character-P ; B 0.00 0.00 7.50 7.00 ;
+C 81; Character-Q ; B 0.00 0.00 7.50 7.00 ;
+C 82; Character-R ; B 0.00 0.00 7.50 7.00 ;
+C 83; Character-S ; B 0.00 0.00 7.50 7.00 ;
+C 84; Character-T ; B 0.00 0.00 7.50 7.00 ;
+C 85; Character-U ; B 0.00 0.00 7.50 7.00 ;
+C 86; Character-V ; B 0.00 0.00 7.50 7.00 ;
+C 87; Character-W ; B 0.00 0.00 11.00 7.00 ;
+C 88; Character-X ; B 0.00 0.00 7.50 7.00 ;
+C 89; Character-Y ; B 0.00 0.00 7.50 7.00 ;
+C 90; Character-Z ; B 0.00 0.00 7.50 7.00 ;
+C 81; Character-81 ; B 0.00 0.00 7.50 7.00 ;
+C 92; Character-92 ; B 0.00 0.00 6.00 7.00 ;
+C 93; Character-93 ; B 0.00 0.00 6.00 7.00 ;
+C 94; Character-94 ; B 0.00 0.00 6.00 7.00 ;
+C 95; Character-95 ; B 0.00 0.00 6.00 7.00 ;
+C 96; Character-96 ; B 0.00 0.00 6.00 7.00 ;
+C 97; Character-a ; B 0.00 0.00 6.00 7.00 ;
+C 98; Character-98 ; B 0.00 0.00 6.00 7.00 ;
+C 99; Character-99 ; B 0.00 0.00 6.00 7.00 ;
+C 100; Character-100 ; B 0.00 0.00 6.00 7.00 ;
+C 101; Character-101 ; B 0.00 0.00 6.00 7.00 ;
+C 102; Character-102 ; B 0.00 0.00 6.00 7.00 ;
+C 103; Character-103 ; B 0.00 0.00 6.00 7.00 ;
+C 104; Character-104 ; B 0.00 0.00 6.00 7.00 ;
+C 105; Character-i ; B 0.00 0.00 3.00 7.00 ;
+C 106; Character-j ; B 0.00 0.00 3.50 7.00 ;
+C 107; Character-k ; B 0.00 0.00 6.00 7.00 ;
+C 108; Character-l ; B 0.00 0.00 3.00 7.00 ;
+C 109; Character-m ; B 0.00 0.00 7.00 7.00 ;
+C 110; Character-n ; B 0.00 0.00 6.00 7.00 ;
+C 111; Character-o ; B 0.00 0.00 6.00 7.00 ;
+C 112; Character-p ; B 0.00 0.00 6.00 7.00 ;
+C 113; Character-q ; B 0.00 0.00 6.00 7.00 ;
+C 114; Character-r ; B 0.00 0.00 6.00 7.00 ;
+C 115; Character-s ; B 0.00 0.00 6.00 7.00 ;
+C 116; Character-t ; B 0.00 0.00 6.00 7.00 ;
+C 117; Character-u ; B 0.00 0.00 6.00 7.00 ;
+C 118; Character-v ; B 0.00 0.00 6.00 7.00 ;
+C 119; Character-w ; B 0.00 0.00 7.00 7.00 ;
+C 120; Character-x ; B 0.00 0.00 6.00 7.00 ;
+C 121; Character-y ; B 0.00 0.00 6.00 7.00 ;
+C 122; Character-z ; B 0.00 0.00 6.00 7.00 ;
+EndCharMetrics
+EndFontMetrics