]> git.donarmstrong.com Git - lilypond.git/commitdiff
*** empty log message ***
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 8 Jan 2005 00:35:03 +0000 (00:35 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 8 Jan 2005 00:35:03 +0000 (00:35 +0000)
buildscripts/gen-emmentaler-scripts.py
lily/all-font-metrics.cc
lily/arpeggio-engraver.cc
lily/font-config.cc [new file with mode: 0644]
lily/include/main.hh
lily/include/tfm.hh
lily/main.cc
lily/tfm.cc
scm/font.scm
scm/framework-ps.scm
scm/output-ps.scm

index d4091e82f14171a8b513916e780adac6e5546bbd..24691b9f3538aca9434182046c194ba74e1a1c63 100644 (file)
@@ -23,14 +23,14 @@ for opt in options:
 
 
 for design_size in [11,13,14,16,18,20,23,26]:
-       name = 'bigcheese
+       name = 'emmentaler
        script = '''#!@FONTFORGE@
 New();
 
 # Separate Feta versioning?
 # Naming: * expose LilyPond20/LilyPond rather than %(name)s
 #         *  using 20 as Weight works for gnome-font-select widget: gfs
-SetFontNames("%(name)s%(design_size)d", "LilyPond", "LilyPond %(name)s %(design_size)d", "%(design_size)d", "GNU GPL", "@TOPLEVEL_VERSION@");
+SetFontNames("%(name)s-%(design_size)d", "%(name)s", "%(name)s %(design_size)d", "%(design_size)d", "GNU GPL", "@TOPLEVEL_VERSION@");
 
 MergeFonts("feta%(design_size)d.pfa");
 MergeFonts("parmesan%(design_size)d.pfa");
index 11c799e3970bca5dfe5ef2a49a51836b91b2fba6..19be65b8cc821c9da77fe7d3ca557b06d03ea2e3 100644 (file)
@@ -143,7 +143,7 @@ All_font_metrics::find_afm (String name)
          
          /* FIXME: better warning message
             (maybe check upon startup for feta16.afm, feta16.tfm?) */
-         if (tfm && tfm->info_.checksum != afm->checksum_)
+         if (tfm && tfm->info ().checksum != afm->checksum_)
            {
              // FIXME: broken sentence
              String s = _f ("checksum mismatch for font file: `%s'",
@@ -151,7 +151,7 @@ All_font_metrics::find_afm (String name)
              s += " " + _f ("does not match: `%s'",
                             tfm->file_name_.to_str0 ());
              s += "\n";
-             s += " TFM: " + to_string ((int) tfm->info_.checksum);
+             s += " TFM: " + to_string ((int) tfm->info ().checksum);
              s += " AFM: " + to_string ((int) afm->checksum_);
              s += "\n";
              s += _ ("Rebuild all .afm files, and remove all .pk and .tfm files.");
index 028d6aee5aeb7adbfc7bb1dd091950667bc4f530..17bb41dc28bf16960d26e0a8cce1393c23efcc02 100644 (file)
 class Arpeggio_engraver : public Engraver
 {
 public:
-  TRANSLATOR_DECLARATIONS (Arpeggio_engraver); 
+  TRANSLATOR_DECLARATIONS (Arpeggio_engraver);
+  
 protected:
   virtual void acknowledge_grob (Grob_info);
   virtual void process_music ();
-
   virtual void stop_translation_timestep ();
   virtual bool try_music (Music *);
-
 private:
-  Itemarpeggio_; 
+  Item *arpeggio_; 
   Music *arpeggio_req_;
 };
 
@@ -37,7 +36,7 @@ Arpeggio_engraver::Arpeggio_engraver ()
 }
 
 bool
-Arpeggio_engraver::try_music (Musicm)
+Arpeggio_engraver::try_music (Music *m)
 {
   if (!arpeggio_req_)
     {
@@ -56,7 +55,9 @@ Arpeggio_engraver::acknowledge_grob (Grob_info info)
          if (!arpeggio_->get_parent  (Y_AXIS))
            arpeggio_->set_parent (info.grob_, Y_AXIS);
       
-         Pointer_group_interface::add_grob (arpeggio_, ly_symbol2scm ("stems"), info.grob_);
+         Pointer_group_interface::add_grob (arpeggio_,
+                                            ly_symbol2scm ("stems"),
+                                            info.grob_);
        }
       
       /*
@@ -90,9 +91,6 @@ Arpeggio_engraver::stop_translation_timestep ()
   arpeggio_req_ = 0;
 }
 
-
-
-
 ADD_TRANSLATOR (Arpeggio_engraver,
 /* descr */       "Generate an Arpeggio from a Arpeggio_req",
 /* creats*/       "Arpeggio",
diff --git a/lily/font-config.cc b/lily/font-config.cc
new file mode 100644 (file)
index 0000000..5c8fa80
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+  font-config.cc -- implement Font_config related functions
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+*/
+
+#include "config.hh"
+
+#ifdef HAVE_PANGO_FT2
+#include <fontconfig/fontconfig.h>
+
+#include "main.hh"
+#include "warn.hh"
+
+void
+init_fontconfig ()
+{
+  if (!FcInit())
+    {
+      error ("FontConfig failed to initialize"); 
+    }
+
+  char const **dirs = prefix_directories;
+  for (; *dirs; dirs++)
+    {
+      String path = String (*dirs) + "/" + "otf";
+      
+      if (!FcConfigAppFontAddDir (0, (FcChar8*)path.to_str0 ()))
+       {
+         error (_f ("Failed to add lilypond directory %s", path.to_str0 ()));
+       }
+    }     
+}
+
+#else
+
+void init_fontconfig() {}
+#endif
index e5553eb40fe97efabc9a87e1582a8fb3e5bcd05d..8a99d1f6d9598a5a4051429ce24afe3c9c3112f5 100644 (file)
@@ -35,6 +35,7 @@ extern bool be_verbose_global;
 extern bool store_locations_global;
 extern bool do_internal_type_checking_global;
 extern bool is_pango_format_global;
+extern char const *prefix_directories[];
 
 /*
   todo: collect in Output_option struct? 
index 7c37eb5326a5daee1c251997b839e6c138e8a038..29ce45d8a77bd4448f9b71fcac523178670193a9 100644 (file)
@@ -145,21 +145,24 @@ struct Tex_font_char_metric
 class Tex_font_metric : public Simple_font_metric
 {
 public:
-  static  SCM make_tfm (String file_name);
+  static SCM make_tfm (String file_name);
 
   virtual int count () const;
   virtual Box get_ascii_char (int) const;
   virtual Real design_size () const;
   virtual void derived_mark () const;
   virtual int name_to_index (String) const;
+  virtual String font_name () const;
+
+  Tfm_info const &info () const;
   
-  
+protected:
   Tfm_info info_;
   Tfm_header header_;
   Array<Tex_font_char_metric> char_metrics_;
   Array<int> ascii_to_metric_idx_;
   SCM encoding_table_;
-  
+  String font_name_;
 private:
   Tex_font_char_metric const *find_ascii (int ascii, bool warn = true) const;
   Tex_font_metric ();
index 225779a68b8079961b03e59df80d8de05b03f5cb..4e04b8b7b282956d0c1554bead386bbf67199e76 100644 (file)
@@ -110,7 +110,7 @@ _i ("    This program is free software; you can redistribute it and/or\n"
 /* Where the init files live.  Typically:
    LILYPOND_DATADIR = /usr/share/lilypond
    LOCAL_LILYPOND_DATADIR = /usr/share/lilypond/<VERSION> */
-char const *prefix_directory[] = {LILYPOND_DATADIR, LOCAL_LILYPOND_DATADIR, 0};
+char const *prefix_directories[] = {LILYPOND_DATADIR, LOCAL_LILYPOND_DATADIR, 0};
 
 /*  The option parser */
 static Getopt_long *option_parser = 0;
@@ -220,7 +220,7 @@ static void
 setup_paths ()
 {
   if (char const *lilypond_prefix = getenv ("LILYPONDPREFIX"))
-    prefix_directory[1] = lilypond_prefix;
+    prefix_directories[1] = lilypond_prefix;
 
   global_path.append ("");
 
@@ -228,10 +228,10 @@ setup_paths ()
      LILYPONDPREFIX to lilypond-x.y.z */
   char *suffixes[] = {"ly", "otf", "mf/out", "scm", "tfm", "ps", "svg", 0};
 
-  for (unsigned i = 0; prefix_directory[i]; i++)
+  for (unsigned i = 0; prefix_directories[i]; i++)
     for (char **s = suffixes; *s; s++)
       {
-       String p = prefix_directory[i] + to_string ('/') + String (*s);
+       String p = prefix_directories[i] + to_string ('/') + String (*s);
        global_path.prepend (p);
        
 #if !KPATHSEA
@@ -251,17 +251,19 @@ prepend_load_path (String dir)
 }
 
 void init_global_tweak_registry ();
+void init_fontconfig ();
+
 
 static void
 main_with_guile (void *, int, char **)
 {
   /* Engravers use lily.scm contents, need to make Guile find it.
      Prepend onto GUILE %load-path, very ugh. */
-  for (unsigned i = 0; prefix_directory[i]; i++)
+  for (unsigned i = 0; prefix_directories[i]; i++)
     {
-      prepend_load_path (prefix_directory[i]);
+      prepend_load_path (prefix_directories[i]);
       /* Junk this.  We should make real modules iso. just loading files. */
-      prepend_load_path (String (prefix_directory[i]) + "/scm");
+      prepend_load_path (String (prefix_directories[i]) + "/scm");
     }
 
   if (be_verbose_global)
@@ -270,6 +272,7 @@ main_with_guile (void *, int, char **)
   ly_c_init_guile ();
   call_constructors ();
   init_global_tweak_registry ();
+  init_fontconfig ();
   init_freetype ();
   all_fonts_global = new All_font_metrics (global_path.to_string ());
 
index 29c16cd210741a94ed0f13c23fb0a2d80d895d35..2786291ae2a4c2c4c0bda3cf70aa809a968ec5f1 100644 (file)
@@ -8,6 +8,7 @@
   some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c
  */
 
+#include "file-name.hh"
 #include "tfm.hh"
 #include "tfm-reader.hh"
 #include "string-convert.hh"
@@ -98,17 +99,31 @@ Tex_font_metric::make_tfm (String file_name)
   tfm->char_metrics_ = reader.char_metrics_;
   tfm->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_;
 
+  File_name fn (file_name);
+  tfm->font_name_ = fn.base_;
   return tfm->self_scm ();
 }
 
+Tfm_info const &
+Tex_font_metric::info () const
+{
+  return info_;
+}
+
 Real
 Tex_font_metric::design_size () const
 {
   return info_.design_size * point_constant;
 }
 
+String
+Tex_font_metric::font_name () const
+{
+  return font_name_;
+}
+
 int
-Tex_font_metric::name_to_index (String s) const
+Tex_font_metric::name_to_index (String) const
 {
   assert (false);
 }
index b6a533dba6c279570e2e40618d17f1f96d91331b..3b10f93a594d4e7d9da11d39ea66b8c9076081c1 100644 (file)
               (list (cons 'font-encoding (car x)))
               (cons (* factor (cadr x))
                     (caddr x))))
-   `(
-     (fetaNumber ,(ly:pt 20)
-                #(
-                  ,(delay  (ly:font-load "feta-alphabet11"))
+   `((fetaNumber ,(ly:pt 20)
+                #(,(delay  (ly:font-load "feta-alphabet11"))
                   ,(delay  (ly:font-load "feta-alphabet13"))
                   ,(delay  (ly:font-load "feta-alphabet14"))
                   ,(delay  (ly:font-load "feta-alphabet16"))             
                   ,(delay  (ly:font-load "feta-alphabet23"))             
                   ,(delay  (ly:font-load "feta-alphabet26"))))
      
-     (fetaDynamic ,(ly:pt 20.0)  #(
-                         ,(delay  (ly:font-load "feta-alphabet11"))
-                         ,(delay  (ly:font-load "feta-alphabet13"))              
-                         ,(delay  (ly:font-load "feta-alphabet14"))
-                         ,(delay  (ly:font-load "feta-alphabet16"))              
-                         ,(delay  (ly:font-load "feta-alphabet18"))
-                         ,(delay  (ly:font-load "feta-alphabet20"))              
-                         ,(delay  (ly:font-load "feta-alphabet23"))              
-                         ,(delay  (ly:font-load "feta-alphabet26"))))
+     (fetaDynamic ,(ly:pt 20.0)  #(,(delay  (ly:font-load "feta-alphabet11"))
+                                  ,(delay  (ly:font-load "feta-alphabet13"))
+                                  ,(delay  (ly:font-load "feta-alphabet14"))
+                                  ,(delay  (ly:font-load "feta-alphabet16"))
+                                  ,(delay  (ly:font-load "feta-alphabet18"))
+                                  ,(delay  (ly:font-load "feta-alphabet20"))
+                                  ,(delay  (ly:font-load "feta-alphabet23"))
+                                  ,(delay  (ly:font-load "feta-alphabet26"))))
      
      (fetaMusic ,(ly:pt 20.0)
-               #(
-                 ,(delay  (ly:font-load "bigcheese11"))
-                 ,(delay  (ly:font-load "bigcheese13"))                  
-                 ,(delay  (ly:font-load "bigcheese14"))
-                 ,(delay  (ly:font-load "bigcheese16"))                  
-                 ,(delay  (ly:font-load "bigcheese18"))
-                 ,(delay  (ly:font-load "bigcheese20"))                  
-                 ,(delay  (ly:font-load "bigcheese23"))                  
-                 ,(delay  (ly:font-load "bigcheese26"))))
+               #(,(delay  (ly:font-load "emmentaler11"))
+                 ,(delay  (ly:font-load "emmentaler13"))                 
+                 ,(delay  (ly:font-load "emmentaler14"))
+                 ,(delay  (ly:font-load "emmentaler16"))                 
+                 ,(delay  (ly:font-load "emmentaler18"))
+                 ,(delay  (ly:font-load "emmentaler20"))                 
+                 ,(delay  (ly:font-load "emmentaler23"))                 
+                 ,(delay  (ly:font-load "emmentaler26"))))
 
      (fetaBraces 100.0 #(,(delay
                            (ly:font-load "aybabtu")))))))
index a0330f7557d13b0cbc58ee9113492765fc864383..6343e9dba158e4542c843b169617515ff7b0d158 100644 (file)
@@ -99,8 +99,8 @@
       ;; FIXME - don't support Bluesky? 
       (if (standard-tex-font? fontname)
          (set! fontname (string-upcase fontname)))
-      
-      
+      (if (equal? fontname "unknown")
+         (display (list font fontname)))
       (define-font plain fontname scaling)))
 
   (apply string-append
index ddf6925c34a4303ad692181c19c01e175c3ceae8..65ecc55deb1040c05c03329e03506217f1d01c4b 100644 (file)
   (let* ((space-length (cdar (ly:text-dimension font " ")))
         (space-move (string-append (number->string space-length)
                                    " 0.0 rmoveto "))
-        (input-enc (assoc-get 'input-name
-                              (ly:font-encoding-alist font)
-                              'latin1))
+        (input-enc 'latin1)
         (out-vec (decode-byte-string input-enc s)))
 
     (string-append
 ;;(define text old-text)
 (define (text font str)
   (ly:warn "TEXT backend-command encountered in Pango backend\nargs: ~a ~a" font str)
-  "")
+  (new-text font str))
 
 ;; FIXME: BARF helvetica?
 (define (white-text scale s)