From 5a42c3ec738076a6e520e630ad837b687729a492 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen <janneke@gnu.org> Date: Thu, 12 Nov 1998 14:24:25 +0100 Subject: [PATCH] patch::: 1.1.4.jcn1 pl4.jcn1 - read (cmr12)afm for text char widths --- NEWS | 3 + VERSION | 2 +- input/test/alphabet.ly | 64 +++++++++++++++++++++ lily/lookup.cc | 50 +++++++++++++++- lily/text-def.cc | 19 ++---- mf/GNUmakefile | 4 +- mf/cmr12.afm.in | 128 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 250 insertions(+), 20 deletions(-) create mode 100644 input/test/alphabet.ly create mode 100644 mf/cmr12.afm.in diff --git a/NEWS b/NEWS index 78c854e1cd..3879229f44 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +pl4.jcn1 + - read (cmr12)afm for text char widths + 1.1.4 pl 3.tca1 diff --git a/VERSION b/VERSION index 66f4cf93b6..704da620af 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 PATCH_LEVEL=4 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=jcn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/alphabet.ly b/input/test/alphabet.ly new file mode 100644 index 0000000000..b53c5ba50c --- /dev/null +++ b/input/test/alphabet.ly @@ -0,0 +1,64 @@ +\score{ + < + \type Staff \notes{ c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c } + \type Lyrics \lyrics{ +aaaaaaaaaaaaaaaaaaa +bbbbbbbbbbbbbbbbbbb +ccccccccccccccccccc +ddddddddddddddddddd +eeeeeeeeeeeeeeeeeee +fffffffffffffffffff +ggggggggggggggggggg +hhhhhhhhhhhhhhhhhhh +iiiiiiiiiiiiiiiiiii +jjjjjjjjjjjjjjjjjjj +kkkkkkkkkkkkkkkkkkk +lllllllllllllllllll +mmmmmmmmmmmmmmmmmmm +nnnnnnnnnnnnnnnnnnn +ooooooooooooooooooo +ppppppppppppppppppp +qqqqqqqqqqqqqqqqqqq +rrrrrrrrrrrrrrrrrrr +sssssssssssssssssss +ttttttttttttttttttt +uuuuuuuuuuuuuuuuuuu +vvvvvvvvvvvvvvvvvvv +wwwwwwwwwwwwwwwwwww +xxxxxxxxxxxxxxxxxxx +yyyyyyyyyyyyyyyyyyy +zzzzzzzzzzzzzzzzzzz +................... +AAAAAAAAAAAAAAAAAAA +BBBBBBBBBBBBBBBBBBB +CCCCCCCCCCCCCCCCCCC +DDDDDDDDDDDDDDDDDDD +EEEEEEEEEEEEEEEEEEE +FFFFFFFFFFFFFFFFFFF +GGGGGGGGGGGGGGGGGGG +HHHHHHHHHHHHHHHHHHH +IIIIIIIIIIIIIIIIIII +JJJJJJJJJJJJJJJJJJJ +KKKKKKKKKKKKKKKKKKK +LLLLLLLLLLLLLLLLLLL +MMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNN +OOOOOOOOOOOOOOOOOOO +PPPPPPPPPPPPPPPPPPP +QQQQQQQQQQQQQQQQQQQ +RRRRRRRRRRRRRRRRRRR +SSSSSSSSSSSSSSSSSSS +TTTTTTTTTTTTTTTTTTT +UUUUUUUUUUUUUUUUUUU +VVVVVVVVVVVVVVVVVVV +WWWWWWWWWWWWWWWWWWW +XXXXXXXXXXXXXXXXXXX +YYYYYYYYYYYYYYYYYYY +ZZZZZZZZZZZZZZZZZZZ +aaaaaaaaaaaaaaaaaaa + } + > + \paper { + castingalgorithm = \Wordwrap; + } +} diff --git a/lily/lookup.cc b/lily/lookup.cc index 300439b3dd..22518b575d 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -12,6 +12,7 @@ Glissando */ +#include <ctype.h> #include "lookup.hh" #include "debug.hh" #include "dimensions.hh" @@ -19,6 +20,7 @@ #include "scalar.hh" #include "paper-def.hh" #include "string-convert.hh" +#include "file-path.hh" #include "main.hh" #include "lily-guile.hh" @@ -311,6 +313,9 @@ Lookup::streepje (int type) const 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 { @@ -319,10 +324,53 @@ 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; - } diff --git a/lily/text-def.cc b/lily/text-def.cc index 06eccd3fe6..33d6da977e 100644 --- a/lily/text-def.cc +++ b/lily/text-def.cc @@ -6,12 +6,12 @@ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */ +#include <ctype.h> #include "debug.hh" #include "lookup.hh" #include "paper-def.hh" #include "molecule.hh" #include "text-def.hh" -#include <ctype.h> Direction Text_def::staff_dir () const @@ -24,17 +24,7 @@ Text_def::staff_dir () const Real Text_def::guess_width_f(Atom& a) const { - // Count each TeX command as one character, ugh - int index, length=0; - int total_length=text_str_.length_i(); - const char* str=text_str_.ch_C(); - for (index=0;index<total_length;index++) { - length++; - if (str[index]=='\\') - for (index++;(index < total_length) && isalpha(str[index]);index++) - ; - } - return length * a.dim_.x ().length (); // ugh + return a.dim_.x ().length (); } Interval @@ -42,9 +32,8 @@ Text_def::width (Paper_def * p) const { Atom a = get_atom (p,CENTER); - - Interval i (0, guess_width_f(a)); - i += - (align_dir_ + 1)* i.center(); + Interval i (0, guess_width_f (a)); + i += - (align_dir_ + 1)* i.center (); return i; } diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 88c89cdeff..c8ea733bfa 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -12,13 +12,11 @@ FET_FILES = $(wildcard feta[0-9]*.mf) LYTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.ly)) LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log)) TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex)) -AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm)) +AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm)) $(outdir)/cmr12.afm XPM_FONTS = feta20 ALL_GEN_FILES=$(LYTABLES) $(TEXTABLES) $(LOG_FILES) $(AFM_FILES) -OUT_DIST_FILES += $(AFM_FILES) - #PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)" INSTALLATION_DIR=$(datadir)/mf/ INSTALLATION_FILES=$(MF_FILES) diff --git a/mf/cmr12.afm.in b/mf/cmr12.afm.in new file mode 100644 index 0000000000..c43ac865e2 --- /dev/null +++ b/mf/cmr12.afm.in @@ -0,0 +1,128 @@ +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 -- 2.39.5