comparison lisp/x-faces.el @ 3360:316fddbf58e2

[xemacs-hg @ 2006-04-25 14:01:52 by stephent] Repair broken commit to Xft code. <87aca9n4in.fsf@tleepslib.sk.tsukuba.ac.jp>
author stephent
date Tue, 25 Apr 2006 14:02:09 +0000
parents 15fb91e3a115
children 98af8a976fc3
comparison
equal deleted inserted replaced
3359:af8dab703edc 3360:316fddbf58e2
1 ;;; x-faces.el --- X-specific face frobnication, aka black magic. 1 ;;; x-faces.el --- X-specific face frobnication, aka black magic.
2 2
3 ;; Copyright (C) 1992-4, 1997 Free Software Foundation, Inc. 3 ;; Copyright (C) 1992-1994, 1997, 2006 Free Software Foundation, Inc.
4 ;; Copyright (C) 1995, 1996, 2002, 2004 Ben Wing. 4 ;; Copyright (C) 1995, 1996, 2002, 2004 Ben Wing.
5 5
6 ;; Author: Jamie Zawinski <jwz@jwz.org> 6 ;; Author: Jamie Zawinski <jwz@jwz.org>
7 ;; Maintainer: XEmacs Development Team 7 ;; Maintainer: XEmacs Development Team
8 ;; Keywords: extensions, internal, dumped 8 ;; Keywords: extensions, internal, dumped
72 '(fc-font-name-weight-bold fc-font-name-weight-black 72 '(fc-font-name-weight-bold fc-font-name-weight-black
73 fc-font-name-weight-demibold fc-font-name-weight-medium 73 fc-font-name-weight-demibold fc-font-name-weight-medium
74 fc-font-name-slant-oblique fc-font-name-slant-italic 74 fc-font-name-slant-oblique fc-font-name-slant-italic
75 fc-font-name-slant-roman)) 75 fc-font-name-slant-roman))
76 (globally-declare-fboundp 76 (globally-declare-fboundp
77 '(fc-font-real-pattern fc-pattern-get-size fc-copy-pattern-partial 77 '(fc-pattern-del-size fc-pattern-get-size fc-pattern-add-size
78 fc-pattern-del-weight fc-pattern-del-style fc-pattern-duplicate 78 fc-pattern-del-style fc-pattern-duplicate fc-copy-pattern-partial
79 fc-pattern-add-weight fc-try-font fc-pattern-add-size 79 fc-pattern-add-weight fc-pattern-del-weight fc-try-font
80 fc-name-unparse fc-pattern-del-slant fc-pattern-add-slant 80 fc-pattern-del-slant fc-pattern-add-slant fc-name-unparse
81 fc-pattern-del-size fc-pattern-get-pixelsize))) 81 fc-pattern-get-pixelsize)))
82 82
83 (defconst x-font-regexp nil) 83 (defconst x-font-regexp nil)
84 (defconst x-font-regexp-head nil) 84 (defconst x-font-regexp-head nil)
85 (defconst x-font-regexp-head-2 nil) 85 (defconst x-font-regexp-head-2 nil)
86 (defconst x-font-regexp-weight nil) 86 (defconst x-font-regexp-weight nil)
192 (x-make-font-bold-core font device) 192 (x-make-font-bold-core font device)
193 (x-make-font-bold-xft font device)) 193 (x-make-font-bold-xft font device))
194 (x-make-font-bold-core font device))) 194 (x-make-font-bold-core font device)))
195 195
196 (defun x-make-font-bold-xft (font &optional device) 196 (defun x-make-font-bold-xft (font &optional device)
197 (let ((pattern (fc-font-real-pattern 197 (let ((pattern (fc-font-match (or device (default-x-device))
198 font (or device (default-x-device))))) 198 (fc-name-parse font))))
199 (if pattern 199 (if pattern
200 (let ((size (fc-pattern-get-size pattern 0)) 200 (let ((size (fc-pattern-get-size pattern 0))
201 (copy (fc-copy-pattern-partial pattern (list "family")))) 201 (copy (fc-copy-pattern-partial pattern (list "family"))))
202 (fc-pattern-del-weight copy) 202 (fc-pattern-del-weight copy)
203 (fc-pattern-del-style copy) 203 (fc-pattern-del-style copy)
236 (x-make-font-unbold-core font device) 236 (x-make-font-unbold-core font device)
237 (x-make-font-unbold-xft font device)) 237 (x-make-font-unbold-xft font device))
238 (x-make-font-unbold-core font device))) 238 (x-make-font-unbold-core font device)))
239 239
240 (defun x-make-font-unbold-xft (font &optional device) 240 (defun x-make-font-unbold-xft (font &optional device)
241 (let ((pattern (fc-font-real-pattern 241 (let ((pattern (fc-font-match (or device (default-x-device))
242 font (or device (default-x-device))))) 242 (fc-name-parse font))))
243 (when pattern 243 (when pattern
244 (fc-pattern-del-weight pattern) 244 (fc-pattern-del-weight pattern)
245 (fc-pattern-add-weight pattern fc-font-name-weight-medium) 245 (fc-pattern-add-weight pattern fc-font-name-weight-medium)
246 (if (fc-try-font pattern device) 246 (if (fc-try-font pattern device)
247 (fc-name-unparse pattern))))) 247 (fc-name-unparse pattern)))))
266 (x-make-font-italic-core font device) 266 (x-make-font-italic-core font device)
267 (x-make-font-italic-xft font device)) 267 (x-make-font-italic-xft font device))
268 (x-make-font-italic-core font device))) 268 (x-make-font-italic-core font device)))
269 269
270 (defun x-make-font-italic-xft (font &optional device) 270 (defun x-make-font-italic-xft (font &optional device)
271 (let ((pattern (fc-font-real-pattern 271 (let ((pattern (fc-font-match (or device (default-x-device))
272 font (or device (default-x-device))))) 272 (fc-name-parse font))))
273 (if pattern 273 (if pattern
274 (let ((size (fc-pattern-get-size pattern 0)) 274 (let ((size (fc-pattern-get-size pattern 0))
275 (copy (fc-copy-pattern-partial pattern (list "family")))) 275 (copy (fc-copy-pattern-partial pattern (list "family"))))
276 (when copy 276 (when copy
277 (fc-pattern-del-slant copy) 277 (fc-pattern-del-slant copy)
320 (x-make-font-unitalic-core font device) 320 (x-make-font-unitalic-core font device)
321 (x-make-font-unitalic-xft font device)) 321 (x-make-font-unitalic-xft font device))
322 (x-make-font-unitalic-core font device))) 322 (x-make-font-unitalic-core font device)))
323 323
324 (defun x-make-font-unitalic-xft (font &optional device) 324 (defun x-make-font-unitalic-xft (font &optional device)
325 (let ((pattern (fc-font-real-pattern 325 (let ((pattern (fc-font-match (or device (default-x-device))
326 font (or device (default-x-device))))) 326 (fc-name-parse font))))
327 (when pattern 327 (when pattern
328 (fc-pattern-del-slant pattern) 328 (fc-pattern-del-slant pattern)
329 (fc-pattern-add-slant pattern fc-font-name-slant-roman) 329 (fc-pattern-add-slant pattern fc-font-name-slant-roman)
330 (if (fc-try-font pattern device) 330 (if (fc-try-font pattern device)
331 (fc-name-unparse pattern))))) 331 (fc-name-unparse pattern)))))
387 (x-font-size-xft font)) 387 (x-font-size-xft font))
388 (x-font-size-core font))) 388 (x-font-size-core font)))
389 389
390 ;; this is unbelievable &*@# 390 ;; this is unbelievable &*@#
391 (defun x-font-size-xft (font) 391 (defun x-font-size-xft (font)
392 (let ((pattern (fc-font-real-pattern 392 (let ((pattern (fc-font-match (default-x-device)
393 font (default-x-device)))) 393 (fc-name-parse font))))
394 (when pattern 394 (when pattern
395 (let ((pixelsize (fc-pattern-get-pixelsize pattern 0))) 395 (let ((pixelsize (fc-pattern-get-pixelsize pattern 0)))
396 (if (floatp pixelsize) (round pixelsize)))))) 396 (if (floatp pixelsize) (round pixelsize) pixelsize)))))
397 397
398 (defun x-font-size-core (font) 398 (defun x-font-size-core (font)
399 (if (font-instance-p font) (setq font (font-instance-name font))) 399 (if (font-instance-p font) (setq font (font-instance-name font)))
400 (cond ((or (string-match x-font-regexp font) 400 (cond ((or (string-match x-font-regexp font)
401 (string-match x-font-regexp-head-2 font)) 401 (string-match x-font-regexp-head-2 font))
519 (x-find-smaller-font-core font device) 519 (x-find-smaller-font-core font device)
520 (x-find-smaller-font-xft font device)) 520 (x-find-smaller-font-xft font device))
521 (x-find-smaller-font-core font device))) 521 (x-find-smaller-font-core font device)))
522 522
523 (defun x-find-xft-font-of-size (font new-size-proc &optional device) 523 (defun x-find-xft-font-of-size (font new-size-proc &optional device)
524 (let* ((pattern (fc-font-real-pattern 524 (let* ((pattern (fc-font-match (or device (default-x-device))
525 font (or device (default-x-device))))) 525 (fc-name-parse font))))
526 (when pattern 526 (when pattern
527 (let ((size (fc-pattern-get-size pattern 0))) 527 (let ((size (fc-pattern-get-size pattern 0)))
528 (if (floatp size) 528 (if (floatp size)
529 (let ((copy (fc-pattern-duplicate pattern))) 529 (let ((copy (fc-pattern-duplicate pattern)))
530 (fc-pattern-del-size copy) 530 (fc-pattern-del-size copy)