emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/term/mac-win.el


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] Changes to emacs/lisp/term/mac-win.el
Date: Wed, 13 Jul 2005 05:11:35 -0400

Index: emacs/lisp/term/mac-win.el
diff -c emacs/lisp/term/mac-win.el:1.49 emacs/lisp/term/mac-win.el:1.50
*** emacs/lisp/term/mac-win.el:1.49     Tue Jul 12 11:32:40 2005
--- emacs/lisp/term/mac-win.el  Wed Jul 13 09:11:35 2005
***************
*** 1561,1614 ****
            (if mac-encoded
                (aset table c mac-encoded))))))))
  
  (define-ccl-program ccl-encode-mac-roman-font
    `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-roman-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-roman-encoder r0 r1)))))
    "CCL program for Mac Roman font")
  
  (define-ccl-program ccl-encode-mac-centraleurroman-font
    `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character encode-mac-centraleurroman r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character encode-mac-centraleurroman r0 r1)))))
    "CCL program for Mac Central European Roman font")
  
  (define-ccl-program ccl-encode-mac-cyrillic-font
    `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character encode-mac-cyrillic r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character encode-mac-cyrillic r0 r1)))))
    "CCL program for Mac Cyrillic font")
  
  (define-ccl-program ccl-encode-mac-symbol-font
    `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-symbol-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-symbol-encoder r0 r1)))))
    "CCL program for Mac Symbol font")
  
  (define-ccl-program ccl-encode-mac-dingbats-font
    `(0
!     (if (r0 != ,(charset-id 'ascii))
!       (if (r0 <= ?\x8f)
!           (translate-character mac-dingbats-encoder r0 r1)
!         ((r1 <<= 7)
!          (r1 |= r2)
!          (translate-character mac-dingbats-encoder r0 r1)))))
    "CCL program for Mac Dingbats font")
  
  
--- 1561,1612 ----
            (if mac-encoded
                (aset table c mac-encoded))))))))
  
+ ;; We assume none of official dim2 charsets (0x90..0x99) are encoded
+ ;; to these fonts.
+ 
  (define-ccl-program ccl-encode-mac-roman-font
    `(0
!     (if (r0 <= ?\xef)
!       (translate-character mac-roman-encoder r0 r1)
!       ((r1 <<= 7)
!        (r1 |= r2)
!        (translate-character mac-roman-encoder r0 r1))))
    "CCL program for Mac Roman font")
  
  (define-ccl-program ccl-encode-mac-centraleurroman-font
    `(0
!     (if (r0 <= ?\xef)
!       (translate-character encode-mac-centraleurroman r0 r1)
!       ((r1 <<= 7)
!        (r1 |= r2)
!        (translate-character encode-mac-centraleurroman r0 r1))))
    "CCL program for Mac Central European Roman font")
  
  (define-ccl-program ccl-encode-mac-cyrillic-font
    `(0
!     (if (r0 <= ?\xef)
!       (translate-character encode-mac-cyrillic r0 r1)
!       ((r1 <<= 7)
!        (r1 |= r2)
!        (translate-character encode-mac-cyrillic r0 r1))))
    "CCL program for Mac Cyrillic font")
  
  (define-ccl-program ccl-encode-mac-symbol-font
    `(0
!     (if (r0 <= ?\xef)
!       (translate-character mac-symbol-encoder r0 r1)
!       ((r1 <<= 7)
!        (r1 |= r2)
!        (translate-character mac-symbol-encoder r0 r1))))
    "CCL program for Mac Symbol font")
  
  (define-ccl-program ccl-encode-mac-dingbats-font
    `(0
!     (if (r0 <= ?\xef)
!       (translate-character mac-dingbats-encoder r0 r1)
!       ((r1 <<= 7)
!        (r1 |= r2)
!        (translate-character mac-dingbats-encoder r0 r1))))
    "CCL program for Mac Dingbats font")
  
  
***************
*** 1618,1652 ****
               mac-font-encoder-list)
         font-ccl-encoder-alist))
  
  (defun fontset-add-mac-fonts (fontset &optional base-family)
    (if base-family
!       (setq base-family (downcase base-family))
!     (let ((ascii-font
!          (downcase (x-resolve-font-name
!                     (fontset-font fontset (charset-id 'ascii))))))
!       (setq base-family (aref (x-decompose-font-name ascii-font)
!                             xlfd-regexp-family-subnum))))
! ;;  (if (not (string-match "^fontset-" fontset))
! ;;      (setq fontset
! ;;        (concat "fontset-" (aref (x-decompose-font-name fontset)
! ;;                                 xlfd-regexp-encoding-subnum))))
!   (dolist
!       (font-encoder
!        (nreverse
!       (mapcar (lambda (lst)
!                 (cons (cons (format (nth 3 lst) base-family) (nth 0 lst))
!                       (nth 1 lst)))
!               mac-font-encoder-list)))
!     (let ((font (car font-encoder))
!         (encoder (cdr font-encoder)))
!       (map-char-table
!        (lambda (key val)
!        (or (null val)
!            (generic-char-p key)
!            (memq (char-charset key)
!                  '(ascii eight-bit-control eight-bit-graphic))
!            (set-fontset-font fontset key font)))
!        (get encoder 'translation-table)))))
  
  (defun create-fontset-from-mac-roman-font (font &optional resolved-font
                                                fontset-name)
--- 1616,1695 ----
               mac-font-encoder-list)
         font-ccl-encoder-alist))
  
+ (defconst mac-char-fontspec-list
+   ;; Directly operate on a char-table instead of a fontset so that it
+   ;; may not create a dummy fontset.
+   (let ((template (make-char-table 'fontset)))
+     (dolist
+       (font-encoder
+        (nreverse
+         (mapcar (lambda (lst)
+                   (cons (cons (nth 3 lst) (nth 0 lst)) (nth 1 lst)))
+                 mac-font-encoder-list)))
+       (let ((font (car font-encoder))
+           (encoder (cdr font-encoder)))
+       (map-char-table
+        (lambda (key val)
+          (or (null val)
+              (generic-char-p key)
+              (memq (char-charset key)
+                    '(ascii eight-bit-control eight-bit-graphic))
+              (aset template key font)))
+        (get encoder 'translation-table))))
+ 
+     ;; Like fontset-info, but extend a range only if its "to" part is
+     ;; the predecessor of the current char.
+     (let* ((last '((0 nil)))
+          (accumulator last)
+          last-char-or-range last-char last-elt)
+       (map-char-table
+        (lambda (char elt)
+        (when elt
+          (setq last-char-or-range (car (car last))
+                last-char (if (consp last-char-or-range)
+                              (cdr last-char-or-range)
+                            last-char-or-range)
+                last-elt (cdr (car last)))
+          (if (and (eq elt last-elt)
+                   (= char (1+ last-char))
+                   (eq (char-charset char) (char-charset last-char)))
+              (if (consp last-char-or-range)
+                  (setcdr last-char-or-range char)
+                (setcar (car last) (cons last-char char)))
+            (setcdr last (list (cons char elt)))
+            (setq last (cdr last)))))
+        template)
+       (cdr accumulator))))
+ 
  (defun fontset-add-mac-fonts (fontset &optional base-family)
+   "Add font-specs for Mac fonts to FONTSET.
+ The added font-specs are determined by BASE-FAMILY and the value
+ of `mac-char-fontspec-list', which is a list
+ of (CHARACTER-OR-RANGE . (FAMILY-FORMAT . REGISTRY)).  If
+ BASE-FAMILY is nil, the font family in the added font-specs is
+ also nil.  If BASE-FAMILY is a string, `%s' in FAMILY-FORMAT is
+ replaced with the string.  Otherwise, `%s' in FAMILY-FORMAT is
+ replaced with the ASCII font family name in FONTSET."
    (if base-family
!       (if (stringp base-family)
!         (setq base-family (downcase base-family))
!       (let ((ascii-font (fontset-font fontset (charset-id 'ascii))))
!         (if ascii-font
!             (setq base-family
!                   (aref (x-decompose-font-name
!                          (downcase (x-resolve-font-name ascii-font)))
!                         xlfd-regexp-family-subnum))))))
!   (let (fontspec-cache fontspec)
!     (dolist (char-fontspec mac-char-fontspec-list)
!       (setq fontspec (cdr (assq (cdr char-fontspec) fontspec-cache)))
!       (when (null fontspec)
!       (setq fontspec
!             (cons (and base-family
!                        (format (car (cdr char-fontspec)) base-family))
!                   (cdr (cdr char-fontspec))))
!       (setq fontspec-cache (cons (cons (cdr char-fontspec) fontspec)
!                                  fontspec-cache)))
!       (set-fontset-font fontset (car char-fontspec) fontspec))))
  
  (defun create-fontset-from-mac-roman-font (font &optional resolved-font
                                                fontset-name)
***************
*** 1663,1673 ****
  It returns a name of the created fontset."
    (let ((fontset
         (create-fontset-from-ascii-font font resolved-font fontset-name)))
!     (fontset-add-mac-fonts fontset)
      fontset))
  
  ;; Setup the default fontset.
  (setup-default-fontset)
  
  ;; Create a fontset that uses mac-roman font.  With this fontset,
  ;; characters decoded from mac-roman encoding (ascii, latin-iso8859-1,
--- 1706,1719 ----
  It returns a name of the created fontset."
    (let ((fontset
         (create-fontset-from-ascii-font font resolved-font fontset-name)))
!     (fontset-add-mac-fonts fontset t)
      fontset))
  
  ;; Setup the default fontset.
  (setup-default-fontset)
+ ;; Add Mac-encoding fonts unless ETL fonts are installed.
+ (unless (x-list-fonts "*-iso8859-1")
+   (fontset-add-mac-fonts "fontset-default"))
  
  ;; Create a fontset that uses mac-roman font.  With this fontset,
  ;; characters decoded from mac-roman encoding (ascii, latin-iso8859-1,
***************
*** 1675,1681 ****
  (create-fontset-from-fontset-spec
   "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac,
  ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
! (fontset-add-mac-fonts "fontset-mac")
  
  ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
  (create-fontset-from-x-resource)
--- 1721,1727 ----
  (create-fontset-from-fontset-spec
   "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac,
  ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
! (fontset-add-mac-fonts "fontset-mac" t)
  
  ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
  (create-fontset-from-x-resource)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]