show glyphs.
* scm/encoding.scm (decode-byte-string): new function.
2004-11-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * scm/output-ps.scm (new-text): new function. Use glyphshow to
+ show glyphs.
+
+ * scm/encoding.scm (decode-byte-string): new function.
+
* scripts/convert-ly.py (conv): add warning about
set-global-staff-size.
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=5
-PATCH_LEVEL=0
-MY_PATCH_LEVEL=hwn1
+PATCH_LEVEL=1
+MY_PATCH_LEVEL=
Font_metric *fm = unsmob_metrics (scm_force (SCM_VECTOR_REF (font_vector,
i)));
return find_scaled_font (layout, fm, requested / size, input_encoding);
-
}
Font_metric*
(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)))
+ (command (car coding))
+ (vector (cdr coding))
+ (table (make-encoding-table vector)))
+ (list command vector table)))
;; coding-alist maps NAME -> (list FILE-NAME COMMAND VECTOR TAB)
(define coding-alist
(define-public (get-coding-table coding-name)
(cadddr (get-coding coding-name)))
+
+
+(define-public (decode-byte-string encoding-name str)
+ "Return vector of glyphname symbols that correspond to string,
+assuming that STR is byte-coded using ENCODING-NAME."
+
+ (let*
+ ((coding-vector (get-coding-vector encoding-name))
+ (len (string-length str))
+ (output-vector (make-vector len '.notdef))
+ )
+
+
+ (do
+ ((idx 0 (1+ idx)))
+ ((>= idx len) output-vector)
+ (vector-set! output-vector idx
+ (vector-ref coding-vector
+ (char->integer (string-ref str idx))))
+ )))
))
;;;;;;;;;;;;;;;;
-;; hash
-
+;; vector
+(define-public (vector-for-each proc vec)
+ (do
+ ((i 0 (1+ i)))
+ ((>= i (vector-length vec)) vec)
+
+ (vector-set! vec i
+ (proc (vector-ref vec i)))))
+;;;;;;;;;;;;;;;;
+;; hash
(if (not (defined? 'hash-table?)) ; guile 1.6 compat
(begin
(ly:numbers->string
(list x y width height blotdiam)) " draw_round_box"))
-(define (text font s)
+(define (old-text font s)
(let*
;; ugh, we should find a better way to
(string-join (reverse commands)))
))
+(define (new-text font s)
+ (let*
+ ((space-length (cdar (ly:text-dimension font "t")))
+ (space-move (string-append (number->string space-length) " 0.0 rmoveto "))
+
+ (input-enc (assoc-get 'input-name
+ (ly:font-encoding-alist font)
+ 'latin1))
+ (out-vec (decode-byte-string input-enc s)))
+
+
+ (string-append
+ (ps-font-command font) " setfont "
+ (string-join
+ (vector->list
+ (vector-for-each
+
+ (lambda (sym)
+ (if (eq? sym 'space)
+ space-move
+ (string-append "/" (symbol->string sym) " glyphshow")))
+ out-vec)))
+ )))
+
+(define text old-text)
(define (white-text scale s)
(let ((mystring (string-append "(" s ") " (number->string scale) " /Helvetica-bold "