]> git.donarmstrong.com Git - lilypond.git/blobdiff - buildscripts/mf-to-table.py
Run `make grand-replace'.
[lilypond.git] / buildscripts / mf-to-table.py
index 24b0971d7a94987f46959379883dbe6dbdb17c3b..2c1df75f7fa6d55c7150f455cba950b44b7cbf03 100644 (file)
@@ -4,12 +4,11 @@
 #
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1997--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# (c) 1997--2008 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 import os
 import sys
 import getopt
-import string
 import re
 import time
 
@@ -41,7 +40,7 @@ class Char_metric:
 font_family = 'feta'
 
 def parse_logfile (fn):
-    (autolines, deps) = read_log_file (fn)
+    autolines, deps = read_log_file (fn)
     charmetrics = []
     
     global_info = {
@@ -50,7 +49,7 @@ def parse_logfile (fn):
     group = ''
 
     for l in autolines:
-        tags = string.split (l, '@:')
+        tags = l.split ('@:')
         if tags[0] == 'group':
             group = tags[1]
         elif tags[0] == 'puorg':
@@ -58,19 +57,18 @@ def parse_logfile (fn):
         elif tags[0] == 'char':
             name = tags[9]
 
-            name = re.sub ('-', 'M', name)
             if group:
                 name = group + '.' + name
             m = {
                 'description': tags[1],
                 'name': name,
-                'code': string.atoi (tags[2]),
-                'breapth': string.atof (tags[3]),
-                'width': string.atof (tags[4]),
-                'depth': string.atof (tags[5]),
-                'height': string.atof (tags[6]),
-                'wx': string.atof (tags[7]),
-                'wy': string.atof (tags[8]),
+                'code': int (tags[2]),
+                'breapth': float (tags[3]),
+                'width': float (tags[4]),
+                'depth': float (tags[5]),
+                'height': float (tags[6]),
+                'wx': float (tags[7]),
+                'wy': float (tags[8]),
             }
             charmetrics.append (m)
         elif tags[0] == 'font':
@@ -85,11 +83,10 @@ def parse_logfile (fn):
             encoding = re.sub (' ','-', tags[5])
             tags = tags[:-1]
             name = tags[1:]
-            global_info['design_size'] = string.atof (tags[4])
-            global_info['FontName'] = string.join (name, '-')
-            global_info['FullName'] = string.join (name,' ')
-            global_info['FamilyName'] = string.join (name[1:-1],
-                                '-')
+            global_info['design_size'] = float (tags[4])
+            global_info['FontName'] = '-'.join (name)
+            global_info['FullName'] = ' '.join (name)
+            global_info['FamilyName'] = '-'.join (name[1:-1])
             if 1:
                 global_info['Weight'] = tags[4]
             else: # testing
@@ -107,9 +104,7 @@ def parse_logfile (fn):
 
 
 
-
-
-def write_character_lisp_table (file, global_info, charmetrics):
+def character_lisp_table (global_info, charmetrics):
 
     def conv_char_metric (charmetric):
         f = 1.0
@@ -130,11 +125,14 @@ def write_character_lisp_table (file, global_info, charmetrics):
 
         return s
 
+    s = ''
     for c in charmetrics:
-        file.write (conv_char_metric (c))
+        s += conv_char_metric (c)
+
+    return s
 
 
-def write_global_lisp_table (file, global_info):
+def global_lisp_table (global_info):
     str = ''
 
     keys = ['staffsize', 'stafflinethickness', 'staff_space',
@@ -146,29 +144,31 @@ def write_global_lisp_table (file, global_info):
         if global_info.has_key (k):
             str = str + "(%s . %s)\n" % (k,global_info[k])
 
-    file.write (str)
+    return str
 
     
-def write_ps_encoding (name, file, global_info, charmetrics):
+def ps_encoding (name, global_info, charmetrics):
     encs = ['.notdef'] * 256
     for m in charmetrics:
         encs[m['code']] = m['name']
 
-    file.write ('/%s [\n' % name)
-    for m in range (0, 256):
-        file.write ('  /%s %% %d\n' % (encs[m], m))
-    file.write ('] def\n')
 
+    s =  ('/%s [\n' % name)
+    for m in range (0, 256):
+        s += ('  /%s %% %d\n' % (encs[m], m))
+    s +=  ('] def\n')
+    return s
 
-def write_deps (file, deps, targets):
+def get_deps (deps, targets):
+    s = ''
     for t in targets:
         t = re.sub ( '^\\./', '', t)
-        file.write ('%s '% t)
-    file.write (": ")
+        s += ('%s '% t)
+    s += (": ")
     for d in deps:
-        file.write ('%s ' % d)
-    file.write ('\n')
-
+        s += ('%s ' % d)
+    s += ('\n')
+    return s
 
 def help ():
     sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs
@@ -234,11 +234,11 @@ for filenm in files:
     elif re.search ('feta-alphabet', filenm):
         enc_name = 'FetaAlphabetEncoding';
 
-    write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m)
-    write_character_lisp_table (open (char_lisp_nm, 'w'), g, m)  
-    write_global_lisp_table (open (global_lisp_nm, 'w'), g)  
+    open (enc_nm, 'w').write (ps_encoding (enc_name, g, m))
+    open (char_lisp_nm, 'w').write (character_lisp_table (g, m))
+    open (global_lisp_nm, 'w').write (global_lisp_table (g))
     if depfile_nm:
-        write_deps (open (depfile_nm, 'wb'), deps,
-              [base + '.log', base + '.dvi', base + '.pfa',
-               depfile_nm,
-               base + '.pfb'])
+        open (depfile_nm, 'wb').write (get_deps (deps,
+                                                 [base + '.log', base + '.dvi', base + '.pfa',
+                                                  depfile_nm,
+                                                  base + '.pfb']))