Mercurial > emacs
changeset 58644:14b3f432fd7e
* term/mac-win.el (ccl-encode-mac-roman-font)
(ccl-encode-mac-cyrillic-font)
(ccl-encode-mac-centraleuropean-font, encoder-list)
(fontset-add-mac-fonts, create-fontset-from-mac-roman-font):
Support Cyrillic, CentralEuropean, and Dingbat font display
author | Steven Tamm <steventamm@mac.com> |
---|---|
date | Tue, 30 Nov 2004 15:49:26 +0000 |
parents | 00d11ec2f846 |
children | 157fd661769f |
files | lisp/ChangeLog lisp/term/mac-win.el |
diffstat | 2 files changed, 403 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Nov 30 11:07:29 2004 +0000 +++ b/lisp/ChangeLog Tue Nov 30 15:49:26 2004 +0000 @@ -1,3 +1,11 @@ +2004-11-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * term/mac-win.el (ccl-encode-mac-roman-font) + (ccl-encode-mac-cyrillic-font) + (ccl-encode-mac-centraleuropean-font, encoder-list) + (fontset-add-mac-fonts, create-fontset-from-mac-roman-font): + Support Cyrillic, CentralEuropean, and Dingbat font display + 2004-11-30 Andre Spiegel <spiegel@gnu.org> * vc-hooks.el (vc-recompute-state): Moved here from vc.el.
--- a/lisp/term/mac-win.el Tue Nov 30 11:07:29 2004 +0000 +++ b/lisp/term/mac-win.el Tue Nov 30 15:49:26 2004 +0000 @@ -189,16 +189,406 @@ (define-ccl-program ccl-encode-mac-roman-font `(0 (if (r0 != ,(charset-id 'ascii)) - (if (r0 == ,(charset-id 'latin-iso8859-1)) + (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") +(let + ((encoding-vector (make-vector 256 nil)) + (i 0) + (vec ;; mac-centraleuropean (128..255) -> UCS mapping + [ #x00C4 ;; 128:LATIN CAPITAL LETTER A WITH DIAERESIS + #x0100 ;; 129:LATIN CAPITAL LETTER A WITH MACRON + #x0101 ;; 130:LATIN SMALL LETTER A WITH MACRON + #x00C9 ;; 131:LATIN CAPITAL LETTER E WITH ACUTE + #x0104 ;; 132:LATIN CAPITAL LETTER A WITH OGONEK + #x00D6 ;; 133:LATIN CAPITAL LETTER O WITH DIAERESIS + #x00DC ;; 134:LATIN CAPITAL LETTER U WITH DIAERESIS + #x00E1 ;; 135:LATIN SMALL LETTER A WITH ACUTE + #x0105 ;; 136:LATIN SMALL LETTER A WITH OGONEK + #x010C ;; 137:LATIN CAPITAL LETTER C WITH CARON + #x00E4 ;; 138:LATIN SMALL LETTER A WITH DIAERESIS + #x010D ;; 139:LATIN SMALL LETTER C WITH CARON + #x0106 ;; 140:LATIN CAPITAL LETTER C WITH ACUTE + #x0107 ;; 141:LATIN SMALL LETTER C WITH ACUTE + #x00E9 ;; 142:LATIN SMALL LETTER E WITH ACUTE + #x0179 ;; 143:LATIN CAPITAL LETTER Z WITH ACUTE + #x017A ;; 144:LATIN SMALL LETTER Z WITH ACUTE + #x010E ;; 145:LATIN CAPITAL LETTER D WITH CARON + #x00ED ;; 146:LATIN SMALL LETTER I WITH ACUTE + #x010F ;; 147:LATIN SMALL LETTER D WITH CARON + #x0112 ;; 148:LATIN CAPITAL LETTER E WITH MACRON + #x0113 ;; 149:LATIN SMALL LETTER E WITH MACRON + #x0116 ;; 150:LATIN CAPITAL LETTER E WITH DOT ABOVE + #x00F3 ;; 151:LATIN SMALL LETTER O WITH ACUTE + #x0117 ;; 152:LATIN SMALL LETTER E WITH DOT ABOVE + #x00F4 ;; 153:LATIN SMALL LETTER O WITH CIRCUMFLEX + #x00F6 ;; 154:LATIN SMALL LETTER O WITH DIAERESIS + #x00F5 ;; 155:LATIN SMALL LETTER O WITH TILDE + #x00FA ;; 156:LATIN SMALL LETTER U WITH ACUTE + #x011A ;; 157:LATIN CAPITAL LETTER E WITH CARON + #x011B ;; 158:LATIN SMALL LETTER E WITH CARON + #x00FC ;; 159:LATIN SMALL LETTER U WITH DIAERESIS + #x2020 ;; 160:DAGGER + #x00B0 ;; 161:DEGREE SIGN + #x0118 ;; 162:LATIN CAPITAL LETTER E WITH OGONEK + #x00A3 ;; 163:POUND SIGN + #x00A7 ;; 164:SECTION SIGN + #x2022 ;; 165:BULLET + #x00B6 ;; 166:PILCROW SIGN + #x00DF ;; 167:LATIN SMALL LETTER SHARP S + #x00AE ;; 168:REGISTERED SIGN + #x00A9 ;; 169:COPYRIGHT SIGN + #x2122 ;; 170:TRADE MARK SIGN + #x0119 ;; 171:LATIN SMALL LETTER E WITH OGONEK + #x00A8 ;; 172:DIAERESIS + #x2260 ;; 173:NOT EQUAL TO + #x0123 ;; 174:LATIN SMALL LETTER G WITH CEDILLA + #x012E ;; 175:LATIN CAPITAL LETTER I WITH OGONEK + #x012F ;; 176:LATIN SMALL LETTER I WITH OGONEK + #x012A ;; 177:LATIN CAPITAL LETTER I WITH MACRON + #x2264 ;; 178:LESS-THAN OR EQUAL TO + #x2265 ;; 179:GREATER-THAN OR EQUAL TO + #x012B ;; 180:LATIN SMALL LETTER I WITH MACRON + #x0136 ;; 181:LATIN CAPITAL LETTER K WITH CEDILLA + #x2202 ;; 182:PARTIAL DIFFERENTIAL + #x2211 ;; 183:N-ARY SUMMATION + #x0142 ;; 184:LATIN SMALL LETTER L WITH STROKE + #x013B ;; 185:LATIN CAPITAL LETTER L WITH CEDILLA + #x013C ;; 186:LATIN SMALL LETTER L WITH CEDILLA + #x013D ;; 187:LATIN CAPITAL LETTER L WITH CARON + #x013E ;; 188:LATIN SMALL LETTER L WITH CARON + #x0139 ;; 189:LATIN CAPITAL LETTER L WITH ACUTE + #x013A ;; 190:LATIN SMALL LETTER L WITH ACUTE + #x0145 ;; 191:LATIN CAPITAL LETTER N WITH CEDILLA + #x0146 ;; 192:LATIN SMALL LETTER N WITH CEDILLA + #x0143 ;; 193:LATIN CAPITAL LETTER N WITH ACUTE + #x00AC ;; 194:NOT SIGN + #x221A ;; 195:SQUARE ROOT + #x0144 ;; 196:LATIN SMALL LETTER N WITH ACUTE + #x0147 ;; 197:LATIN CAPITAL LETTER N WITH CARON + #x2206 ;; 198:INCREMENT + #x00AB ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + #x00BB ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + #x2026 ;; 201:HORIZONTAL ELLIPSIS + #x00A0 ;; 202:NO-BREAK SPACE + #x0148 ;; 203:LATIN SMALL LETTER N WITH CARON + #x0150 ;; 204:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + #x00D5 ;; 205:LATIN CAPITAL LETTER O WITH TILDE + #x0151 ;; 206:LATIN SMALL LETTER O WITH DOUBLE ACUTE + #x014C ;; 207:LATIN CAPITAL LETTER O WITH MACRON + #x2013 ;; 208:EN DASH + #x2014 ;; 209:EM DASH + #x201C ;; 210:LEFT DOUBLE QUOTATION MARK + #x201D ;; 211:RIGHT DOUBLE QUOTATION MARK + #x2018 ;; 212:LEFT SINGLE QUOTATION MARK + #x2019 ;; 213:RIGHT SINGLE QUOTATION MARK + #x00F7 ;; 214:DIVISION SIGN + #x25CA ;; 215:LOZENGE + #x014D ;; 216:LATIN SMALL LETTER O WITH MACRON + #x0154 ;; 217:LATIN CAPITAL LETTER R WITH ACUTE + #x0155 ;; 218:LATIN SMALL LETTER R WITH ACUTE + #x0158 ;; 219:LATIN CAPITAL LETTER R WITH CARON + #x2039 ;; 220:SINGLE LEFT-POINTING ANGLE QUOTATION MARK + #x203A ;; 221:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + #x0159 ;; 222:LATIN SMALL LETTER R WITH CARON + #x0156 ;; 223:LATIN CAPITAL LETTER R WITH CEDILLA + #x0157 ;; 224:LATIN SMALL LETTER R WITH CEDILLA + #x0160 ;; 225:LATIN CAPITAL LETTER S WITH CARON + #x201A ;; 226:SINGLE LOW-9 QUOTATION MARK + #x201E ;; 227:DOUBLE LOW-9 QUOTATION MARK + #x0161 ;; 228:LATIN SMALL LETTER S WITH CARON + #x015A ;; 229:LATIN CAPITAL LETTER S WITH ACUTE + #x015B ;; 230:LATIN SMALL LETTER S WITH ACUTE + #x00C1 ;; 231:LATIN CAPITAL LETTER A WITH ACUTE + #x0164 ;; 232:LATIN CAPITAL LETTER T WITH CARON + #x0165 ;; 233:LATIN SMALL LETTER T WITH CARON + #x00CD ;; 234:LATIN CAPITAL LETTER I WITH ACUTE + #x017D ;; 235:LATIN CAPITAL LETTER Z WITH CARON + #x017E ;; 236:LATIN SMALL LETTER Z WITH CARON + #x016A ;; 237:LATIN CAPITAL LETTER U WITH MACRON + #x00D3 ;; 238:LATIN CAPITAL LETTER O WITH ACUTE + #x00D4 ;; 239:LATIN CAPITAL LETTER O WITH CIRCUMFLEX + #x016B ;; 240:LATIN SMALL LETTER U WITH MACRON + #x016E ;; 241:LATIN CAPITAL LETTER U WITH RING ABOVE + #x00DA ;; 242:LATIN CAPITAL LETTER U WITH ACUTE + #x016F ;; 243:LATIN SMALL LETTER U WITH RING ABOVE + #x0170 ;; 244:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + #x0171 ;; 245:LATIN SMALL LETTER U WITH DOUBLE ACUTE + #x0172 ;; 246:LATIN CAPITAL LETTER U WITH OGONEK + #x0173 ;; 247:LATIN SMALL LETTER U WITH OGONEK + #x00DD ;; 248:LATIN CAPITAL LETTER Y WITH ACUTE + #x00FD ;; 249:LATIN SMALL LETTER Y WITH ACUTE + #x0137 ;; 250:LATIN SMALL LETTER K WITH CEDILLA + #x017B ;; 251:LATIN CAPITAL LETTER Z WITH DOT ABOVE + #x0141 ;; 252:LATIN CAPITAL LETTER L WITH STROKE + #x017C ;; 253:LATIN SMALL LETTER Z WITH DOT ABOVE + #x0122 ;; 254:LATIN CAPITAL LETTER G WITH CEDILLA + #x02C7 ;; 255:CARON + ]) + translation-table) + (while (< i 128) + (aset encoding-vector i i) + (setq i (1+ i))) + (while (< i 256) + (aset encoding-vector i + (decode-char 'ucs (aref vec (- i 128)))) + (setq i (1+ i))) + (setq translation-table + (make-translation-table-from-vector encoding-vector)) +;; (define-translation-table 'mac-centraleuropean-decoder translation-table) + (define-translation-table 'mac-centraleuropean-encoder + (char-table-extra-slot translation-table 0))) + +(let + ((encoding-vector (make-vector 256 nil)) + (i 0) + (vec ;; mac-cyrillic (128..255) -> UCS mapping + [ #x0410 ;; 128:CYRILLIC CAPITAL LETTER A + #x0411 ;; 129:CYRILLIC CAPITAL LETTER BE + #x0412 ;; 130:CYRILLIC CAPITAL LETTER VE + #x0413 ;; 131:CYRILLIC CAPITAL LETTER GHE + #x0414 ;; 132:CYRILLIC CAPITAL LETTER DE + #x0415 ;; 133:CYRILLIC CAPITAL LETTER IE + #x0416 ;; 134:CYRILLIC CAPITAL LETTER ZHE + #x0417 ;; 135:CYRILLIC CAPITAL LETTER ZE + #x0418 ;; 136:CYRILLIC CAPITAL LETTER I + #x0419 ;; 137:CYRILLIC CAPITAL LETTER SHORT I + #x041A ;; 138:CYRILLIC CAPITAL LETTER KA + #x041B ;; 139:CYRILLIC CAPITAL LETTER EL + #x041C ;; 140:CYRILLIC CAPITAL LETTER EM + #x041D ;; 141:CYRILLIC CAPITAL LETTER EN + #x041E ;; 142:CYRILLIC CAPITAL LETTER O + #x041F ;; 143:CYRILLIC CAPITAL LETTER PE + #x0420 ;; 144:CYRILLIC CAPITAL LETTER ER + #x0421 ;; 145:CYRILLIC CAPITAL LETTER ES + #x0422 ;; 146:CYRILLIC CAPITAL LETTER TE + #x0423 ;; 147:CYRILLIC CAPITAL LETTER U + #x0424 ;; 148:CYRILLIC CAPITAL LETTER EF + #x0425 ;; 149:CYRILLIC CAPITAL LETTER HA + #x0426 ;; 150:CYRILLIC CAPITAL LETTER TSE + #x0427 ;; 151:CYRILLIC CAPITAL LETTER CHE + #x0428 ;; 152:CYRILLIC CAPITAL LETTER SHA + #x0429 ;; 153:CYRILLIC CAPITAL LETTER SHCHA + #x042A ;; 154:CYRILLIC CAPITAL LETTER HARD SIGN + #x042B ;; 155:CYRILLIC CAPITAL LETTER YERU + #x042C ;; 156:CYRILLIC CAPITAL LETTER SOFT SIGN + #x042D ;; 157:CYRILLIC CAPITAL LETTER E + #x042E ;; 158:CYRILLIC CAPITAL LETTER YU + #x042F ;; 159:CYRILLIC CAPITAL LETTER YA + #x2020 ;; 160:DAGGER + #x00B0 ;; 161:DEGREE SIGN + #x0490 ;; 162:CYRILLIC CAPITAL LETTER GHE WITH UPTURN + #x00A3 ;; 163:POUND SIGN + #x00A7 ;; 164:SECTION SIGN + #x2022 ;; 165:BULLET + #x00B6 ;; 166:PILCROW SIGN + #x0406 ;; 167:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + #x00AE ;; 168:REGISTERED SIGN + #x00A9 ;; 169:COPYRIGHT SIGN + #x2122 ;; 170:TRADE MARK SIGN + #x0402 ;; 171:CYRILLIC CAPITAL LETTER DJE + #x0452 ;; 172:CYRILLIC SMALL LETTER DJE + #x2260 ;; 173:NOT EQUAL TO + #x0403 ;; 174:CYRILLIC CAPITAL LETTER GJE + #x0453 ;; 175:CYRILLIC SMALL LETTER GJE + #x221E ;; 176:INFINITY + #x00B1 ;; 177:PLUS-MINUS SIGN + #x2264 ;; 178:LESS-THAN OR EQUAL TO + #x2265 ;; 179:GREATER-THAN OR EQUAL TO + #x0456 ;; 180:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + #x00B5 ;; 181:MICRO SIGN + #x0491 ;; 182:CYRILLIC SMALL LETTER GHE WITH UPTURN + #x0408 ;; 183:CYRILLIC CAPITAL LETTER JE + #x0404 ;; 184:CYRILLIC CAPITAL LETTER UKRAINIAN IE + #x0454 ;; 185:CYRILLIC SMALL LETTER UKRAINIAN IE + #x0407 ;; 186:CYRILLIC CAPITAL LETTER YI + #x0457 ;; 187:CYRILLIC SMALL LETTER YI + #x0409 ;; 188:CYRILLIC CAPITAL LETTER LJE + #x0459 ;; 189:CYRILLIC SMALL LETTER LJE + #x040A ;; 190:CYRILLIC CAPITAL LETTER NJE + #x045A ;; 191:CYRILLIC SMALL LETTER NJE + #x0458 ;; 192:CYRILLIC SMALL LETTER JE + #x0405 ;; 193:CYRILLIC CAPITAL LETTER DZE + #x00AC ;; 194:NOT SIGN + #x221A ;; 195:SQUARE ROOT + #x0192 ;; 196:LATIN SMALL LETTER F WITH HOOK + #x2248 ;; 197:ALMOST EQUAL TO + #x2206 ;; 198:INCREMENT + #x00AB ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + #x00BB ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + #x2026 ;; 201:HORIZONTAL ELLIPSIS + #x00A0 ;; 202:NO-BREAK SPACE + #x040B ;; 203:CYRILLIC CAPITAL LETTER TSHE + #x045B ;; 204:CYRILLIC SMALL LETTER TSHE + #x040C ;; 205:CYRILLIC CAPITAL LETTER KJE + #x045C ;; 206:CYRILLIC SMALL LETTER KJE + #x0455 ;; 207:CYRILLIC SMALL LETTER DZE + #x2013 ;; 208:EN DASH + #x2014 ;; 209:EM DASH + #x201C ;; 210:LEFT DOUBLE QUOTATION MARK + #x201D ;; 211:RIGHT DOUBLE QUOTATION MARK + #x2018 ;; 212:LEFT SINGLE QUOTATION MARK + #x2019 ;; 213:RIGHT SINGLE QUOTATION MARK + #x00F7 ;; 214:DIVISION SIGN + #x201E ;; 215:DOUBLE LOW-9 QUOTATION MARK + #x040E ;; 216:CYRILLIC CAPITAL LETTER SHORT U + #x045E ;; 217:CYRILLIC SMALL LETTER SHORT U + #x040F ;; 218:CYRILLIC CAPITAL LETTER DZHE + #x045F ;; 219:CYRILLIC SMALL LETTER DZHE + #x2116 ;; 220:NUMERO SIGN + #x0401 ;; 221:CYRILLIC CAPITAL LETTER IO + #x0451 ;; 222:CYRILLIC SMALL LETTER IO + #x044F ;; 223:CYRILLIC SMALL LETTER YA + #x0430 ;; 224:CYRILLIC SMALL LETTER A + #x0431 ;; 225:CYRILLIC SMALL LETTER BE + #x0432 ;; 226:CYRILLIC SMALL LETTER VE + #x0433 ;; 227:CYRILLIC SMALL LETTER GHE + #x0434 ;; 228:CYRILLIC SMALL LETTER DE + #x0435 ;; 229:CYRILLIC SMALL LETTER IE + #x0436 ;; 230:CYRILLIC SMALL LETTER ZHE + #x0437 ;; 231:CYRILLIC SMALL LETTER ZE + #x0438 ;; 232:CYRILLIC SMALL LETTER I + #x0439 ;; 233:CYRILLIC SMALL LETTER SHORT I + #x043A ;; 234:CYRILLIC SMALL LETTER KA + #x043B ;; 235:CYRILLIC SMALL LETTER EL + #x043C ;; 236:CYRILLIC SMALL LETTER EM + #x043D ;; 237:CYRILLIC SMALL LETTER EN + #x043E ;; 238:CYRILLIC SMALL LETTER O + #x043F ;; 239:CYRILLIC SMALL LETTER PE + #x0440 ;; 240:CYRILLIC SMALL LETTER ER + #x0441 ;; 241:CYRILLIC SMALL LETTER ES + #x0442 ;; 242:CYRILLIC SMALL LETTER TE + #x0443 ;; 243:CYRILLIC SMALL LETTER U + #x0444 ;; 244:CYRILLIC SMALL LETTER EF + #x0445 ;; 245:CYRILLIC SMALL LETTER HA + #x0446 ;; 246:CYRILLIC SMALL LETTER TSE + #x0447 ;; 247:CYRILLIC SMALL LETTER CHE + #x0448 ;; 248:CYRILLIC SMALL LETTER SHA + #x0449 ;; 249:CYRILLIC SMALL LETTER SHCHA + #x044A ;; 250:CYRILLIC SMALL LETTER HARD SIGN + #x044B ;; 251:CYRILLIC SMALL LETTER YERU + #x044C ;; 252:CYRILLIC SMALL LETTER SOFT SIGN + #x044D ;; 253:CYRILLIC SMALL LETTER E + #x044E ;; 254:CYRILLIC SMALL LETTER YU + #x20AC ;; 255:EURO SIGN + ]) + translation-table) + (while (< i 128) + (aset encoding-vector i i) + (setq i (1+ i))) + (while (< i 256) + (aset encoding-vector i + (decode-char 'ucs (aref vec (- i 128)))) + (setq i (1+ i))) + (setq translation-table + (make-translation-table-from-vector encoding-vector)) +;; (define-translation-table 'mac-cyrillic-decoder translation-table) + (define-translation-table 'mac-cyrillic-encoder + (char-table-extra-slot translation-table 0))) + +(defvar mac-font-encoder-list + '(("mac-roman" mac-roman-encoder + ccl-encode-mac-roman-font "%s") + ("mac-centraleuropean" mac-centraleuropean-encoder + ccl-encode-mac-centraleuropean-font "%s ce") + ("mac-cyrillic" mac-cyrillic-encoder + ccl-encode-mac-cyrillic-font "%s cy"))) + +(let ((encoder-list + (mapcar (lambda (lst) (nth 1 lst)) mac-font-encoder-list)) + (charset-list + '(latin-iso8859-2 + latin-iso8859-3 latin-iso8859-4 + cyrillic-iso8859-5 greek-iso8859-7 hebrew-iso8859-8 + latin-iso8859-9 latin-iso8859-14 latin-iso8859-15))) + (dolist (encoder encoder-list) + (let ((table (get encoder 'translation-table))) + (dolist (charset charset-list) + (dotimes (i 96) + (let* ((c (make-char charset (+ i 32))) + (mu (aref ucs-mule-to-mule-unicode c)) + (mac-encoded (and mu (aref table mu)))) + (if mac-encoded + (aset table c mac-encoded)))))))) + +(define-ccl-program ccl-encode-mac-centraleuropean-font + `(0 + (if (r0 != ,(charset-id 'ascii)) + (if (r0 <= ?\x8f) + (translate-character mac-centraleuropean-encoder r0 r1) + ((r1 <<= 7) + (r1 |= r2) + (translate-character mac-centraleuropean-encoder r0 r1))))) + "CCL program for Mac Central European font") + +(define-ccl-program ccl-encode-mac-cyrillic-font + `(0 + (if (r0 != ,(charset-id 'ascii)) + (if (r0 <= ?\x8f) + (translate-character mac-cyrillic-encoder r0 r1) + ((r1 <<= 7) + (r1 |= r2) + (translate-character mac-cyrillic-encoder r0 r1))))) + "CCL program for Mac Cyrillic font") + + (setq font-ccl-encoder-alist - (cons '("mac-roman" . ccl-encode-mac-roman-font) - font-ccl-encoder-alist)) + (nconc + (mapcar (lambda (lst) (cons (nth 0 lst) (nth 2 lst))) + 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) + "Create a fontset from a Mac roman font FONT. + +Optional 1st arg RESOLVED-FONT is a resolved name of FONT. If +omitted, `x-resolve-font-name' is called to get the resolved name. At +this time, if FONT is not available, error is signaled. + +Optional 2nd arg FONTSET-NAME is a string to be used in +`<CHARSET_ENCODING>' fields of a new fontset name. If it is omitted, +an appropriate name is generated automatically. + +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)) ;; Create a fontset that uses mac-roman font. With this fontset, ;; characters decoded from mac-roman encoding (ascii, latin-iso8859-1, @@ -211,15 +601,7 @@ (create-fontset-from-fontset-spec "-etl-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-mac, ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman") - (let ((monaco-font '("monaco" . "mac-roman"))) - (map-char-table - (function - (lambda (key val) - (or (generic-char-p key) - (memq (char-charset val) - '(ascii eight-bit-control eight-bit-graphic)) - (set-fontset-font "fontset-mac" val monaco-font)))) - (get 'mac-roman-decoder 'translation-table))))) + (fontset-add-mac-fonts "fontset-mac"))) (if (eq system-type 'darwin) ;; On Darwin filenames are encoded in UTF-8 @@ -1025,7 +1407,7 @@ "GhostWhite" "ghost white" "snow") - "The list of X colors from the `rgb.txt' file. + "The list of X colors from the `rgb.txt' file. XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp") ;;; arch-tag: 71dfcd14-cde8-4d66-b05c-85ec94fb23a6