]> git.donarmstrong.com Git - lilypond.git/commitdiff
* buildscripts/gen-emmentaler-scripts.py (i): generate
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 6 Mar 2005 15:43:02 +0000 (15:43 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 6 Mar 2005 15:43:02 +0000 (15:43 +0000)
emmentaler-X.fontname as well.

* buildscripts/ps-embed-cff.py: new script

* scm/lily-library.scm: remove ps-embed-cff.

* scm/framework-ps.scm (write-preamble): don't use kpathsea for
font loading.

* scm/font.scm (add-music-fonts): load dynamics/numbers through
fontconfig as well.

* lily/font-config.cc (init_fontconfig): add cff/ too.

* mf/GNUmakefile: generate .commonff to not confuse fontconfig.

* ly/generate-embedded-cff.ly: capitalize.

* lily/pango-select.cc (select_pango_font): use ::find_pango_font,
so as to register the pango font.

* lily/font-config.cc (init_fontconfig): add
prefix/{otf,type1,mf/out} to fontconfig path.

* lily/main.cc: only look at one prefix directory, LILYPONDPREFIX
overrides all.

* scm/framework-ps.scm (dump-page): use output-units for landscape.

* buildscripts/gen-emmentaler-scripts.py (i): lower case file
name.

ChangeLog
buildscripts/gen-emmentaler-scripts.py
buildscripts/ps-embed-cff.py [new file with mode: 0644]
lily/font-config.cc
lily/pango-font.cc
ly/generate-embedded-cff.ly [deleted file]
mf/GNUmakefile
scm/font.scm
scm/framework-ps.scm
scm/lily-library.scm

index e5283499d3b3917df22874fd8a51c441a4a078fd..d93628d5b61ec35eadb68dd5b5a9cae715fde8fd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2005-03-06  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * buildscripts/gen-emmentaler-scripts.py (i): generate
+       emmentaler-X.fontname as well.
+
+       * buildscripts/ps-embed-cff.py: new script
+
+       * scm/lily-library.scm: remove ps-embed-cff.
+
+       * scm/framework-ps.scm (write-preamble): don't use kpathsea for
+       font loading. 
+
+       * scm/font.scm (add-music-fonts): load dynamics/numbers through
+       fontconfig as well.
+
+       * lily/font-config.cc (init_fontconfig): add cff/ too.
+
        * mf/GNUmakefile: generate .commonff to not confuse fontconfig.
 
        * ly/generate-embedded-cff.ly: capitalize.
index bf2d4b4e9456d4033a680cf6a12d6333f4e4a6a0..34b306c3d9a0db6687c5e2cca81d63aa455cc053 100644 (file)
@@ -61,7 +61,7 @@ endloop
 MergeFonts("feta-alphabet%(design_size)d.pfa");
 MergeKern("feta-alphabet%(design_size)d.tfm");
 
-LoadTableFromFile("LILF", "%(name)s-%(design_size)d.subfonts")
+LoadTableFromFile("LILF", "%(filename)s-%(design_size)d.subfonts")
 LoadTableFromFile("LILC", "feta%(design_size)d.otf-table")
 LoadTableFromFile("LILY", "feta%(design_size)d.otf-gtable")
 
@@ -70,7 +70,8 @@ Generate("%(filename)s-%(design_size)d.cff");
 Generate("%(filename)s-%(design_size)d.svg");
 ''' % vars()
 
-       path = os.path.join (outdir, '%s-%d.pe' % (filename, design_size))
+       basename = '%s-%d' % (filename, design_size)
+       path = os.path.join (outdir, basename + '.pe')
        open (path, 'w').write (script)
 
        subfonts = ['feta%(design_size)d',
@@ -83,13 +84,15 @@ Generate("%(filename)s-%(design_size)d.svg");
                
        subfonts_str = string.join (ns)
        
-       open (os.path.join (outdir, '%(name)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
+       open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
 
-       path = os.path.join (outdir, '%s-%d.dep' % (name, design_size))
+       path = os.path.join (outdir, '%s-%d.dep' % (filename, design_size))
 
-       deps = r'''%(name)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
+       deps = r'''%(filename)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
   $(outdir)/parmesan%(design_size)d.pfa  \
   $(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-table \
   $(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-gtable
 ''' % vars()
        open (path, 'w').write (deps)
+
+       open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))
diff --git a/buildscripts/ps-embed-cff.py b/buildscripts/ps-embed-cff.py
new file mode 100644 (file)
index 0000000..8eabaed
--- /dev/null
@@ -0,0 +1,35 @@
+#!@PYTHON@
+import sys
+
+file  = sys.argv[1]
+font_set_name  = sys.argv[2]
+output = sys.argv[3]
+body = open (file).read() 
+body_length  = len (body)
+version = '0'
+binary_data = "/%(font_set_name)s %(body_length)d StartData "  % vars() \
+  + body
+binary_length = len (binary_data)
+
+header = r"""%%%%BeginResource: font %(font_set_name)s
+%%!PS-Adobe-3.0 Resource-FontSet
+%%%%DocumentNeededResources: ProcSet (FontSetInit)
+%%%%Title: (FontSet/%(font_set_name)s)
+%%%%Version: %(version)s
+%%%%EndComments
+%%%%IncludeResource: ProcSet (FontSetInit)
+%%%%BeginResource: FontSet (%(font_set_name)s)
+/FontSetInit /ProcSet findresource begin
+%%%%BeginData: %(binary_length)d Binary Bytes
+""" % vars()
+
+
+footer = """\n%%%%EndData
+%%%%EndResource
+%%%%EOF
+%%%%EndResource\n""" % vars()
+
+fo = open (output,'w')
+fo.write (header)
+fo.write (binary_data)
+fo.write (footer)
index 48b4fba100b95591e41ae71d0a92f0292c1f6390..4871c583032484225c36121b63e3d41f93bb53a2 100644 (file)
@@ -32,6 +32,7 @@ init_fontconfig ()
   dirs.push (prefix_directory + "/otf/");
   dirs.push (prefix_directory + "/mf/out/");
   dirs.push (prefix_directory + "/type1/");
+  dirs.push (prefix_directory + "/cff/");
   
   for (int i = 0; i < dirs.size(); i++)
     {
index 92fe8aea50c2d3399a689ac1d098f1a2a7c802f9..5770a7e14f5af9d7f5651979934da47b6ac61f32 100644 (file)
@@ -130,21 +130,30 @@ Pango_font::pango_item_string_stencil (PangoItem *item, String str, Real dx) con
   FcPatternGetString(fcpat, FC_FILE, 0, (FcChar8 **) &filename);
   char const *ps_name_str0 = FT_Get_Postscript_Name (ftface);
   
+  if (!ps_name_str0)
+    warning (_f ("No PS font name for font `%s'", filename)); 
 
-  /*
-    UGH: kludge a PS name for OTF fonts.
-   */
   String ps_name;
   if (!ps_name_str0
       && filename
-      && String (filename).index (".otf") >= 0)
+      && (String (filename).index (".otf") >= 0
+         || String (filename).index (".cff") >= 0))
     {
+
+      /*
+       UGH: kludge a PS name for OTF/CFF fonts.
+    
+      */
+
       String name = filename;
-      name = name.left_string (name.length () - name.index (".otf"));
+      int idx = String (filename).index (".otf")
+       >? String (filename).index (".cff");
+
+      name = name.left_string (idx);
 
       int slash_idx = name.index_last ('/');   // UGh. What's happens on windows?  
       if (slash_idx >=  0)
-       name = name.right_string (name.length() - slash_idx);
+       name = name.right_string (name.length() - slash_idx - 1);
 
       String initial = name.cut_string (0,1);
       initial.to_upper();
diff --git a/ly/generate-embedded-cff.ly b/ly/generate-embedded-cff.ly
deleted file mode 100644 (file)
index 1d7882a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "2.4.0"
-#(define (write-cff name filename)
-  (let*
-      ((body (ly:gulp-file filename))
-       (outname (format "~a.ps" filename))
-       (out-port (open-output-file outname))
-       )
-    
-
-    (display (ps-embed-cff body name 0)
-            out-port)
-  ))
-
-#(write-cff "Emmentaler-26" "emmentaler-26.commonff")
-#(write-cff "Emmentaler-23" "emmentaler-23.commonff")
-#(write-cff "Emmentaler-20" "emmentaler-20.commonff")
-#(write-cff "Emmentaler-18" "emmentaler-18.commonff")
-#(write-cff "Emmentaler-16" "emmentaler-16.commonff")
-#(write-cff "Emmentaler-14" "emmentaler-14.commonff")
-#(write-cff "Emmentaler-13" "emmentaler-13.commonff")
-#(write-cff "Emmentaler-11" "emmentaler-11.commonff")
-#(write-cff "aybabtu" "aybabtu.commonff")
index 8082c40058a6b264b456425ed685ec8a1fc4b5ac..15a82bbed67afb20bc14eb41ef026c743c023f37 100644 (file)
@@ -26,7 +26,7 @@ OTF_TABLES = $(addsuffix .otf-table, $(addprefix $(outdir)/feta, $(STAFF_SIZES))
  $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
 FETA_FONTS = $(FETA_MF_FILES:.mf=)
 SVG_FILES = $(OTF_FILES:%.otf=%.svg) $(ALL_FONTS:%=$(outdir)/%.svg)
-COMMONFF_FILES = $(OTF_FILES:%.otf=%.commonff)
+CFF_FILES = $(OTF_FILES:%.otf=%.cff)
 CFF_PS_FILES = $(OTF_FILES:%.otf=%.cff.ps)
 
 
@@ -59,22 +59,22 @@ foe:
        echo $(TEXMF)
        kpsewhich exbase.mf
 
-$(outdir)/%.commonff $(outdir)/%.otf $(outdir)/%.svg: $(outdir)/%.pe
-       (cd $(outdir) && fontforge -script $(notdir $<) \
-        && mv $(notdir $(basename $<)).cff $(notdir $(basename $<)).commonff)
+$(outdir)/%.cff.ps $(outdir)/%.cff $(outdir)/%.otf $(outdir)/%.svg: $(outdir)/%.pe
+       (cd $(outdir) && fontforge -script $(notdir $<))
+       $(PYTHON) $(buildscript-dir)/ps-embed-cff.py $(basename $<).cff `cat $(basename $<).fontname` $(basename $<).cff.ps
 
-$(CFF_PS_FILES): $(COMMONFF_FILES)
-       cd $(outdir) && $(builddir)/lily/$(outconfbase)/lilypond --verbose $(abs-srcdir)/ly/generate-embedded-cff
 
 $(outdir)/%.otf-table: $(outdir)/%.lisp $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) 
        cat $< \
                $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
                $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
 
-$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
+$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts  $(outdir)/aybabtu.fontname $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
 
+$(outdir)/aybabtu.fontname:
+       echo -n 'aybabtu' > $@ 
 $(outdir)/aybabtu.subfonts: 
-        echo $(subst .mf,,$(wildcard feta-braces-[a-z].mf)) > $@
+       echo $(subst .mf,,$(wildcard feta-braces-[a-z].mf)) > $@
 
 $(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts.py
        $(PYTHON) $< --dir=$(outdir)
@@ -85,13 +85,13 @@ PFA_FILES = $(ALL_FONTS:%=$(outdir)/%.pfa)
 
 # Make tfm files first, log files last, 
 # so that normally log files aren't made twice
-ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES)  $(OTF_TABLES) $(PFA_FILES) $(outdir)/lilypond.map $(OTF_FILES) $(SVG_FILES) $(CFF_PS_FILES)
+ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES)  $(OTF_TABLES) $(PFA_FILES) $(outdir)/lilypond.map $(OTF_FILES) $(SVG_FILES) $(CFF_PS_FILES) $(CFF_FILES)
 
 #PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
 INSTALLATION_DIR=$(local_lilypond_datadir)/fonts/source
 INSTALLATION_FILES=$(MF_FILES) $(AF_FILES)
 
-INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6 7 9
+INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6 7 9
 
 INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/tex
 INSTALLATION_OUT_FILES1=$(TEXTABLES)
@@ -112,6 +112,9 @@ INSTALLATION_OUT_FILES5=$(PFA_FILES)
 INSTALLATION_OUT_DIR6=$(local_lilypond_datadir)/fonts/map
 INSTALLATION_OUT_FILES6=$(outdir)/lilypond.map
 
+INSTALLATION_OUT_DIR7=$(local_lilypond_datadir)/cff/
+INSTALLATION_OUT_FILES7=$(CFF_FILES)
+
 INSTALLATION_OUT_DIR7=$(local_lilypond_datadir)/ps/
 INSTALLATION_OUT_FILES7=$(ENC_FILES)
 
index 9c083fac87968ead826f75224a8c031a9774c2d5..bede4008e233863f7dba59c11a58549b7ef0d806 100644 (file)
                                        ; Each size family is a vector of fonts, loaded with a delay.
                                        ; The vector should be sorted according to ascending design size.
                                        ;
+(define feta-alphabet-size-vector
+  (list->vector
+   (map (lambda (tup)
+         (cons (ly:pt (cdr tup))
+               (format "feta-alphabet~a ~a"
+                       (car tup)
+                       (ly:pt (cdr tup)))))
+       '((11 . 11.22)
+         (13 . 12.60)
+         (14 .  14.14)
+         (16 . 15.87)
+         (18 . 17.82)
+         (20 . 20)
+         (23 . 22.45)
+         (26 . 25.20)))))
 
 (define-public (add-music-fonts node factor)
   (for-each
               (list (cons 'font-encoding (car x)))
               (cons (* factor (cadr x))
                     (caddr x))))
-   `((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-alphabet18"))
-                  ,(delay  (ly:font-load "feta-alphabet20"))             
-                  ,(delay  (ly:font-load "feta-alphabet23"))             
-                  ,(delay  (ly:font-load "feta-alphabet26"))))
-     (fetaTest ,(ly:pt 20)
-                #((cons (ly:pt 20)
-                        "Emmentaler 20 7.02799479")))
-     
-     (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)  ,feta-alphabet-size-vector)
+     (fetaNumber ,(ly:pt 20.0)  ,feta-alphabet-size-vector)
      (fetaMusic ,(ly:pt 20.0)
                #(,(delay  (ly:font-load "emmentaler-11"))
                  ,(delay  (ly:font-load "emmentaler-13"))                
index 63d63488b26a62b503a2485405faf3cd6fc519b2..3c954609e837ea32f85cc9f56d099de1738ac1f1 100644 (file)
                  (lambda (x)
                    (let* ((bare-file-name (ly:find-file x))
                           (cffname (string-append x ".cff.ps"))
-                          (aname (string-append x ".pfa"))
-                          (bname (string-append x ".pfb"))
                           (cff-file-name (ly:find-file cffname))
-                          (a-file-name (ly:kpathsea-find-file aname))
-                          (b-file-name (ly:kpathsea-find-file bname))
                           )
-                     (display  x )(newline)
                      (cond
+                      ((and bare-file-name (string-match "\\.pfa" bare-file-name))
+                       (cached-file-contents bare-file-name))
                       ((and bare-file-name (string-match "\\.pfb" bare-file-name))
                        (ly:pfb->pfa bare-file-name))
                       ((and bare-file-name
-                            (string-match "\\.otf" bare-file-name))
+                            (string-match "\\.(otf|cff)" bare-file-name))
 
-                       (cached-file-contents (string-regexp-substitute "otf" "cff.ps" bare-file-name)))
+                       (cached-file-contents (string-regexp-substitute "(otf|cff)" "cff.ps" bare-file-name)))
                       ((and bare-file-name (string-match "\\.ttf" bare-file-name))
                        (ly:ttf->pfa bare-file-name))
                       (bare-file-name (cached-file-contents bare-file-name))
                       (cff-file-name  (cached-file-contents cff-file-name))
-                      (a-file-name (ps-embed-pfa (cached-file-contents a-file-name) x 0))
-                      (b-file-name (ps-embed-pfa (ly:pfb->pfa b-file-name) x 0))
                       (else
                        (ly:warn "cannot find CFF/PFA/PFB font ~S" x)
                        ""))))
index b7dfacfd43b517db09ae7ce42b606169aea3721c..277d0f7a7cb3530969baaf5d8b754f3f97b86fdf 100644 (file)
@@ -336,39 +336,6 @@ possibly turned off."
     (debugf "design:~S\n" designsize)
     scaling))
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-public (ps-embed-cff body font-set-name version)
-  (let* ((binary-data
-         (string-append
-          (format "/~a ~s StartData " font-set-name (string-length body))
-          body))
-
-        (header
-         (format
-          "%%BeginResource: font ~a
-%!PS-Adobe-3.0 Resource-FontSet
-%%DocumentNeededResources: ProcSet (FontSetInit)
-%%Title: (FontSet/~a)
-%%Version: ~s
-%%EndComments
-%%IncludeResource: ProcSet (FontSetInit)
-%%BeginResource: FontSet (~a)
-/FontSetInit /ProcSet findresource begin
-%%BeginData: ~s Binary Bytes
-"
-          font-set-name font-set-name version font-set-name
-          (string-length binary-data)))
-        (footer "\n%%EndData
-%%EndResource
-%%EOF
-%%EndResource\n"))
-
-    (string-append
-     header
-     binary-data
-     footer)))
-
 (define-public (version-not-seen-message)
   (ly:warn
    (format #f