(const bdf-font-except-latin) (const :tag "nil" nil))
:group 'ps-print-font)
-
-(eval-and-compile
- ;; For Emacs 20.2 and the earlier version.
- (if (and (boundp 'mule-version)
- (not (string< (symbol-value 'mule-version) "4.0")))
- ;; mule package is loaded
- (progn
- (defalias 'ps-mule-next-point '1+)
- (defalias 'ps-mule-chars-in-string 'length)
- (defalias 'ps-mule-string-char 'aref)
- (defsubst ps-mule-next-index (str i) (1+ i)))
- ;; mule package isn't loaded or mule version lesser than 4.0
- (defun ps-mule-next-point (arg)
- (save-excursion (goto-char arg) (forward-char 1) (point)))
- (defun ps-mule-chars-in-string (string)
- (/ (length string)
- (charset-bytes (char-charset (string-to-char string)))))
- (defun ps-mule-string-char (string idx)
- (string-to-char (substring string idx)))
- (defun ps-mule-next-index (string i)
- (+ i (charset-bytes (char-charset (string-to-char string)))))
- )
- ;; For Emacs 20.4 and the earlier version.
- (if (and (boundp 'mule-version)
- (string< (symbol-value 'mule-version) "5.0"))
- ;; mule package is loaded and mule version is lesser than 5.0
- (progn
- (defun encode-composition-rule (rule)
- (if (= (car rule) 4) (setcar rule 10))
- (if (= (cdr rule) 4) (setcdr rule 10))
- (+ (* (car rule) 12) (cdr rule)))
- (defun find-composition (pos &rest ignore)
- (let ((ch (char-after pos)))
- (and ch (eq (char-charset ch) 'composition)
- (let ((components (decompose-composite-char ch 'vector t)))
- (list pos (ps-mule-next-point pos) components
- (integerp (aref components 1)) nil
- (char-width ch)))))))
- ;; mule package isn't loaded
- (or (fboundp 'encode-composition-rule)
- (defun encode-composition-rule (rule)
- 130))
- (or (fboundp 'find-composition)
- (defun find-composition (pos &rest ignore)
- nil))
- ))
-
(defvar ps-mule-font-info-database
nil
"Alist of charsets with the corresponding font information.
(defun ps-mule-encode-bit (string delta)
(let* ((dim (charset-dimension (char-charset (string-to-char string))))
- (len (* (ps-mule-chars-in-string string) dim))
+ (len (* (length string) dim))
(str (make-string len 0))
(i 0)
(j 0))
(if (= dim 1)
(while (< j len)
(aset str j
- (+ (nth 1 (split-char (ps-mule-string-char string i))) delta))
- (setq i (ps-mule-next-index string i)
+ (+ (nth 1 (split-char (aref string i))) delta))
+ (setq i (1+ i)
j (1+ j)))
(while (< j len)
- (let ((split (split-char (ps-mule-string-char string i))))
+ (let ((split (split-char (aref string i))))
(aset str j (+ (nth 1 split) delta))
(aset str (1+ j) (+ (nth 2 split) delta))
- (setq i (ps-mule-next-index string i)
+ (setq i (1+ i)
j (+ j 2)))))
str))
;; Special encoding for mule-unicode-* characters.
(defun ps-mule-encode-ucs2 (string)
- (let* ((len (ps-mule-chars-in-string string))
+ (let* ((len (length string))
(str (make-string (* 2 len) 0))
(i 0)
(j 0)
ch hi lo)
(while (< i len)
- (setq ch (encode-char (ps-mule-string-char string i) 'ucs)
+ (setq ch (encode-char (aref string i) 'ucs)
hi (lsh ch -8)
lo (logand ch 255))
(aset str j hi)
(cons from ps-width-remaining)
(cons (if composition
(nth 1 composition)
- (ps-mule-next-point from))
+ (1+ from))
run-width)))
;; We assume that all characters in this range have the same width.
(setq char-width (* char-width (charset-width ps-mule-current-charset)))
- (let ((run-width (* (chars-in-region from to) char-width)))
+ (let ((run-width (* (abs (- from to)) char-width)))
(if (> run-width ps-width-remaining)
(cons (min to
(save-excursion
;; This case is obsolete for Emacs 21.
((eq ps-mule-current-charset 'composition)
- (ps-mule-plot-composition from (ps-mule-next-point from) bg-color))
+ (ps-mule-plot-composition from (1+ from) bg-color))
(t
;; No way to print this charset. Just show a vacant box of an