Commit 7ca9cfda authored by Kenichi Handa's avatar Kenichi Handa
Browse files

(ps-mule-begin-job): Fix for the case that only ENCODING is set in a font-spec (bug#7197).

parent ad1746f5
2010-10-14 Kenichi Handa <handa@m17n.org>
* ps-mule.el (ps-mule-font-spec-list): Delete it. Not used
anymore.
(ps-mule-begin-job): Fix for the case that only ENCODING is set in
a font-spec (bug#7197).
2010-10-10 Jan Djärv <jan.h.d@swipnet.se>
* term/ns-win.el (ns-right-alternate-modifier): New defvar.
......
......@@ -319,31 +319,19 @@ by `ps-font-family' and `ps-header-font-family'.
See also `ps-mule-font-info-database-bdf'.")
(defvar ps-mule-font-spec-list nil
"Array of FONT-SPEC lists for each font type.
Elements are for `normal' font, `bold' font, `italic' font, and
`bold-italic' font in this order.
Each element is a list of FONT-SPEC which has this form:
(ID CHARSET (FONT-SRC FONT-NAME ENCODING) EXTRA-DATA)
Where
ID is a number for this FONT-SPEC and is unique in the list.
CHARSET, FONT-SRC, FONT-NAME, ENCODING are the same as those in
`ps-mule-font-info-database' (which see).
EXTRA-DATA is a data attached by external libraries.
Each list is ordered by the current charset priorities.
This variable is setup by `ps-mule-begin-job' from
`ps-mule-font-info-database'.")
;; Functions to access each element of FONT-SPEC.
;;
;; FONT-SPEC is a vector of this form:
;; [ID CHARSET FONT-ID FONT-SRC FONT-NAME ENCODING BYTES EXTRA-DATA]
;; Where
;;
;; ID is an identification number for this FONT-SPEC and is unique in the list.
;;
;; CHARSET, FONT-SRC, FONT-NAME, ENCODING, and BYTES are the same as those in
;; `ps-mule-font-info-database' (which see).
;;
;; EXTRA-DATA is a data attached by external libraries.
(defsubst ps-mule-font-spec-id (font-spec) (aref font-spec 0))
(defsubst ps-mule-font-spec-charset (font-spec) (aref font-spec 1))
(defsubst ps-mule-font-spec-font-id (font-spec) (aref font-spec 2))
......@@ -1043,7 +1031,7 @@ It checks if all multi-byte characters in the region are printable or not."
(if (and (not (find-composition from to))
(save-excursion
(goto-char from)
(= (skip-chars-forward "\x00-\xFF" to) to)))
(= (skip-chars-forward "\x00-\x7F" to) to)))
;; All characters can be printed by normal PostScript fonts.
(setq ps-basic-plot-string-function 'ps-basic-plot-string
ps-encode-header-string-function 'identity)
......@@ -1085,17 +1073,19 @@ It checks if all multi-byte characters in the region are printable or not."
(setq font-info-list (cons font-info font-info-list))))
(setq font-info-list (nreverse font-info-list)))
;; Now font-info-list is an alist ordered by charset priority.
;; Store FONT-SPECs in each element of font-spec-alist.
(dolist (font-info font-info-list)
(let ((font-spec-vec (make-vector 4 nil))
(charset (car font-info))
encoding font-spec)
encoding bytes font-spec)
(dolist (e (cdr font-info))
(setq encoding (or (nth 3 e) charset)
font-spec (vector id-max charset font-id
(setq encoding (nth 3 e) bytes (nth 4 e))
(unless encoding
(setq encoding charset bytes (charset-dimension charset)))
(setq font-spec (vector id-max charset font-id
(nth 1 e) (nth 2 e) encoding
(or (nth 4 e) (charset-dimension encoding))
nil)
(or bytes 1) nil)
id-max (1+ id-max))
(if (ps-mule-check-font font-spec)
(aset font-spec-vec
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment