]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/encoding.scm
* scm/lily-library.scm (char->unicode-index): New function.
[lilypond.git] / scm / encoding.scm
index 254086cf6126f2c76f7400474d6a0041b3c97d45..af4ba61afe850ce5fa4f8e2c4fd7c16e06e1f99f 100644 (file)
 ;;
 
 
-(define-public (read-encoding-file filename)
+(define-public (read-encoding-file file-name)
   "Read .enc file, return (COMMAND-NAME . VECTOR-OF-SYMBOLS)."
-  (let* ((raw (ly:kpathsea-gulp-file filename))
+  (let* ((path (ly:kpathsea-expand-path file-name))
+        (unused (if (string? path) #t (ly:warn "can't find ~s" file-name)))
+        (raw (ly:gulp-file path))
         (string (regexp-substitute/global #f "%[^\n]*" raw 'pre "" 'post))
         (command (match:substring
-               (string-match "/([^ \t\n\r]*)[ \t\n\r]+[[]" string) 1))
+                  (string-match "/([^ \t\n\r]*)[ \t\n\r]+[[]" string) 1))
         (encoding (match:substring (string-match "[[](.*)[]]" string) 1))
         (ps-lst (string-tokenize encoding))
         (lst (map (lambda (x) (string->symbol (substring x 1))) ps-lst))
@@ -58,15 +60,15 @@ vector of symbols."
     (iota 256))))
 
 
-(define (get-coding-from-file filename)
-  "Read FILENAME, return a list containing encoding vector and table"
-   (let* ((coding (read-encoding-file filename))
+(define (get-coding-from-file file-name)
+  "Read FILE-NAME, return a list containing encoding vector and table"
+   (let* ((coding (read-encoding-file file-name))
          (com (car coding))
          (vec (cdr coding))
          (tab (make-encoding-table vec)))
     (list com vec tab)))
 
-;; coding-alist maps NAME -> (list FILENAME COMMAND VECTOR TAB)
+;; coding-alist maps NAME -> (list FILE-NAME COMMAND VECTOR TAB)
 (define coding-alist
   
   (map (lambda (x)
@@ -74,24 +76,25 @@ vector of symbols."
               (cons (cdr x) (delay (get-coding-from-file (cdr x))))))
        
        '(
-        ;; teTeX
-        ("TeX typewriter text" . "09fbbfac.enc") ;; cmtt10
-        ("TeX math symbols" . "10037936.enc") ;; cmbsy
-        ("ASCII caps and digits" . "1b6d048e.enc") ;; cminch
-        ("TeX math italic" . "aae443f0.enc")  ;; cmmi10
-        ("TeX extended ASCII" . "d9b29452.enc")
-        ("TeX text" . "f7b6d320.enc")
-        ("TeX text without f-ligatures" . "0ef0afca.enc")
-        ("Extended TeX Font Encoding - Latin" . "tex256.enc")
-        
+        ;; teTeX font (output) encodings
+        ("TeX-typewriter-text" . "09fbbfac.enc") ;; cmtt10
+        ("TeX-math-symbols" . "10037936.enc") ;; cmbsy
+        ("ASCII-caps-and-digits" . "1b6d048e.enc") ;; cminch
+        ("TeX-math-italic" . "aae443f0.enc")  ;; cmmi10
+        ("TeX-extended-ASCII" . "d9b29452.enc")
+        ("TeX-text" . "cmr.enc")
+        ("TeX-text-without-f-ligatures" . "0ef0afca.enc")
+        ("Extended-TeX-Font-Encoding---Latin" . "tex256.enc")
+        ("AdobeStandardEncoding" . "8a.enc")
         ("T1" . "tex256.enc")
-
-        ;; FIXME: find full Adobe; for testing -- almost Adobe:
-        ("adobe" . "ad.enc")
-
-        ("latin1" . "cork.enc")
+        ("adobe" . "8a.enc")
+        ("ec" . "EC.enc")
         
-        ;; LilyPond.
+        ;; input encodings
+        ("latin1" . "latin1.enc")
+        ("cork" . "cork.enc")
+
+        ;; LilyPond FETA music font
         ("fetaBraces" . "feta-braces-a.enc")
         ("fetaNumber" . "feta-nummer10.enc")
         ("fetaMusic" . "feta20.enc")
@@ -100,9 +103,18 @@ vector of symbols."
 
 (define (get-coding coding-name)
   (let ((entry (assoc-get coding-name coding-alist)))
-    (cons (car entry) (force (cdr entry)))))
-
-(define-public (get-coding-filename coding-name)
+    (if entry
+       (cons (car entry) (force (cdr entry)))
+       (if (equal? coding-name "feta-music")
+           (begin
+             (ly:warn "installation problem: deprecated encoding requested: ~S" coding-name)
+             (exit 1))
+           (let ((fallback "latin1"))
+             (ly:programming-error "no such encoding: ~S" coding-name)
+             (ly:programming-error "programming error: cross thumbs, using: ~S:" fallback)
+             (get-coding fallback))))))
+
+(define-public (get-coding-file-name coding-name)
   (car (get-coding coding-name)))
 
 (define-public (get-coding-command coding-name)