From 91e9203d92dbe96d5d18a591512c6eee8701fec6 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 7 Apr 2004 11:06:08 +0000 Subject: [PATCH] * scm/output-ps.scm (define-fonts): Handle font re-encoding. * lily/scaled-font-metric.cc (ly:font-coding-name): New function. * scm/encoding.scm (get-coding-filename, get-coding-command): New function. (coding-alist): Also hold filename, command. (read-encoding-file): Return symbols. --- ChangeLog | 4 ++++ lily/scaled-font-metric.cc | 20 ++++++++++++++++---- scm/encoding.scm | 4 ---- scm/output-ps.scm | 26 +++++++++++++++----------- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5b379cacb..61ed043069 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-04-07 Jan Nieuwenhuizen + * scm/output-ps.scm (define-fonts): Handle font re-encoding. + + * lily/scaled-font-metric.cc (ly:font-coding-name): New function. + * scm/encoding.scm (get-coding-filename, get-coding-command): New function. (coding-alist): Also hold filename, command. diff --git a/lily/scaled-font-metric.cc b/lily/scaled-font-metric.cc index c84b90a224..f46d22bb67 100644 --- a/lily/scaled-font-metric.cc +++ b/lily/scaled-font-metric.cc @@ -254,13 +254,13 @@ Modified_font_metric::text_dimension (String text) return b; } - -LY_DEFINE (ly_font_enccoding, "ly:font-encoding", 1 , 0, 0, - (SCM font), +LY_DEFINE (ly_font_encoding, "ly:font-encoding", + 1, 0, 0, + (SCM font), "Given the Modified_font_metric @var{font}, return a " "list containing (input-coding, output-coding, permutation).") { - Modified_font_metric * fm + Modified_font_metric *fm = dynamic_cast (unsmob_metrics (font)); SCM_ASSERT_TYPE (fm, font, SCM_ARG1, __FUNCTION__, "Modified_font_metric"); @@ -268,3 +268,15 @@ LY_DEFINE (ly_font_enccoding, "ly:font-encoding", 1 , 0, 0, fm->coding_table_, fm->coding_permutation_); } + +LY_DEFINE (ly_font_coding_name, "ly:font-coding-name", + 1, 0, 0, + (SCM font), + "Return the CODING-NAME of the Modified_font_metric @var{font}.") +{ + Modified_font_metric *fm + = dynamic_cast (unsmob_metrics (font)); + + SCM_ASSERT_TYPE (fm, font, SCM_ARG1, __FUNCTION__, "Modified_font_metric"); + return scm_makfrom0str (fm->coding_scheme ().to_str0 ()); +} diff --git a/scm/encoding.scm b/scm/encoding.scm index 310bf150dd..870abe3a42 100644 --- a/scm/encoding.scm +++ b/scm/encoding.scm @@ -103,17 +103,13 @@ vector of symbols." (cons (car entry) (force (cdr entry))))) (define-public (get-coding-filename coding-name) - (format (current-error-port) "FILENAME: ~S\n" (get-coding coding-name)) (car (get-coding coding-name))) (define-public (get-coding-command coding-name) - (format (current-error-port) "COMMAND: ~S\n" (get-coding coding-name)) (cadr (get-coding coding-name))) (define-public (get-coding-vector coding-name) - (format (current-error-port) "VECTOR: ~S\n" (get-coding coding-name)) (caddr (get-coding coding-name))) (define-public (get-coding-table coding-name) - (format (current-error-port) "TABLE: ~S\n" (get-coding coding-name)) (cadddr (get-coding coding-name))) diff --git a/scm/output-ps.scm b/scm/output-ps.scm index 628700cfab..dfbcf74f17 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -88,10 +88,7 @@ (cons (+ (car a) (car b)) (+ (cdr a) (cdr b)))) -;; WIP -(define font-encoding-alist - '(("ecrm12" . "ISOLatin1Encoding") - ("ecmb12" . "ISOLatin1Encoding"))) +;; ("ecmb12" . "ISOLatin1Encoding"))) (define (ps-encoding text) (escape-parentheses text)) @@ -207,11 +204,12 @@ (let* ((command (font-command font)) (fontname (ly:font-name font)) (mangled (possibly-mangle-fontname fontname)) - (encoding (assoc-get fontname font-encoding-alist)) + ;;(encoding (assoc-get fontname font-encoding-alist)) + (encoding (ly:font-coding-name font)) (designsize (ly:font-design-size font)) (magnification (* (ly:font-magnification font))) (ops (ly:paper-lookup paper 'outputscale)) - (scaling (* ops magnification designsize)) ) + (scaling (* ops magnification designsize))) (if #f @@ -219,20 +217,26 @@ (newline) (format (current-error-port) "fontname ~S\n" fontname) (format (current-error-port) "command ~S\n" command) + (format (current-error-port) "encoding ~S\n" encoding) (format (current-error-port) "mangled ~S\n" mangled) (format (current-error-port) "designsize ~S\n" designsize) - (format (current-error-port) "foo-design ~S\n" foo-design) (format (current-error-port) "magnification ~S\n" magnification) (format (current-error-port) "ops ~S\n" ops) (format (current-error-port) "scaling ~S\n" scaling))) - (if encoding + (if (or (equal? encoding "ISOLatin1Encoding") + ;; UGH, uhg + (equal? fontname "feta20") + (equal? fontname "parmesan20")) + (define-font command mangled scaling) ;; FIXME: should rather tag encoded font - (let ((raw (string-append command "-raw"))) + (let ((raw (string-append command "-raw")) + (vector (get-coding-command encoding)) + (filename (get-coding-filename encoding))) (string-append + (ly:kpathsea-gulp-file filename) (define-font raw mangled scaling) - (reencode-font raw encoding command))) - (define-font command mangled scaling)))) + (reencode-font raw vector command)))))) (apply string-append (map (lambda (x) (font-load-command paper x)) font-list))) -- 2.39.5