diff lisp/fontconfig.el @ 4362:f5693b5f7f2d

Compute size for Xft fonts. 2007-12-23 Mike Sperber <mike@xemacs.org> * font.el (xft-font-create-object): Use `fc-pattern-get-or-compute-size' instead of `fc-pattern-get-size'. * fontconfig.el (fc-pattern-get-or-compute-size): Add.
author Mike Sperber <sperber@deinprogramm.de>
date Thu, 27 Dec 2007 08:16:15 +0100
parents cef5f57bb9e2
children 517f6887fbc0
line wrap: on
line diff
--- a/lisp/fontconfig.el	Wed Dec 26 22:38:40 2007 -0800
+++ b/lisp/fontconfig.el	Thu Dec 27 08:16:15 2007 +0100
@@ -350,6 +350,21 @@
   (let ((pair (assoc str fc-font-name-weight-mapping-string-reverse)))
     (if pair (cdr pair))))
 
+(defun fc-pattern-get-or-compute-size (pattern id)
+  "Get the size from `pattern' associated with `id' or try to compute it.
+Returns 'fc-result-no-match if unsucessful."
+  ;;  Many font patterns don't have a "size" property, but do have a
+  ;;  "dpi" and a "pixelsize" property".
+  (let ((maybe (fc-pattern-get-size pattern id)))
+    (if (not (eq maybe 'fc-result-no-match))
+	maybe
+      (let ((dpi (fc-pattern-get-dpi pattern id))
+	    (pixelsize (fc-pattern-get-pixelsize pattern id)))
+	(if (and (numberp dpi)
+		 (numberp pixelsize))
+	    (* pixelsize (/ 72 dpi))
+	  'fc-result-no-match)))))
+
 (defun fc-copy-pattern-partial (pattern attribute-list)
   "Return a copy of PATTERN restricted to ATTRIBUTE-LIST.