]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.1.4.jcn1
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 12 Nov 1998 13:24:25 +0000 (14:24 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 12 Nov 1998 13:24:25 +0000 (14:24 +0100)
pl4.jcn1
- read (cmr12)afm for text char widths

NEWS
VERSION
input/test/alphabet.ly [new file with mode: 0644]
lily/lookup.cc
lily/text-def.cc
mf/GNUmakefile
mf/cmr12.afm.in [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 78c854e1cd22b8aabd0250cd57676c2c44607d59..3879229f447a5579132ac6551087d50402735d27 100644 (file)
--- 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 66f4cf93b6434729ba938ee098b520290fddff70..704da620af90671a8366fc4a05c0af671ce44d73 100644 (file)
--- 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 (file)
index 0000000..b53c5ba
--- /dev/null
@@ -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;
+       }
+}
index 300439b3dd0bec0cd7e4cc13e351ba51ad9c61ac..22518b575d12c271c6c426d879e13d87419777d1 100644 (file)
@@ -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;
-   
 }
   
 
index 06eccd3fe6d120ede73d8110c88cf864b71ba329..33d6da977e3b6688631bef8cc2fe029dfe412e3f 100644 (file)
@@ -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;
 }
 
index 88c89cdeffa5232f3101df17f61bb1bbfbd0e6be..c8ea733bfac3f287648de25bf2ede7b1dabaaabe 100644 (file)
@@ -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 (file)
index 0000000..c43ac86
--- /dev/null
@@ -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