[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Why can't emacs recognize X fonts?
From: |
Peter Dyballa |
Subject: |
Re: Why can't emacs recognize X fonts? |
Date: |
Sun, 20 Jun 2010 10:46:46 +0200 |
Qiang Guo writes:
I'm using a emacs 23.2 I built on Mac OSX under X11. However, it
can't not
recognize fonts like Monaco which are available in X11. For
example, I can
see fonts by xlsfonts command. Is there any compiling parameter
missing ?
You should configure libfontconfig (start with M-x manual-entry RET fc-
list RET and check also /usr/X11/lib/X11/fontconfig/conf.d/05-osx-
fonts.conf) so that this user-side font service finds the fonts. Then
create the cache files with (sudo) fc-cache.
Another option is to make sure that in /Library/Fonts etc. the files
fonts.dir and fonts.scale exist.
In GNU Emacs you can also check which fonts are actually available:
M-x set-frame-font RET TAB TAB C-g
A volatile buffer *Completions* has been created containing the list
of fonts. Or use this function from Miles Bader:
;;; list-fonts-display via font-config
(defun list-fonts-display (&optional matching)
"Display a list of font-families available via font-config, in a
new buffer.
If the optional argument MATCHING is non-nil, only font families
matching that regexp are displayed; interactively, a prefix
argument will prompt for the regexp.
The name of each font family is displayed using that family, as
well as in the default font (to handle the case where a font
cannot be used to display its own name)."
(interactive
(list
(and current-prefix-arg
(read-string "Display font families matching regexp: "))))
(let (families)
(with-temp-buffer
(shell-command "fc-list : family" t)
(goto-char (point-min))
(while (not (eobp))
(let ((fam (buffer-substring (line-beginning-position)
(line-end-position))))
(when (or (null matching) (string-match matching fam))
(push fam families)))
(forward-line)))
(setq families
(sort families
(lambda (x y) (string-lessp (downcase x) (downcase y)))))
(let ((buf (get-buffer-create "*Font Families*")))
(with-current-buffer buf
(erase-buffer)
(dolist (family families)
;; We need to pick one of the comma-separated names to
;; actually use the font; choose the longest one because some
;; fonts have ambiguous general names as well as specific
;; ones.
(let ((family-name
(car (sort (split-string family ",")
(lambda (x y) (> (length x) (length y))))))
(nice-family (replace-regexp-in-string "," ", " family)))
(insert (concat (propertize nice-family
'face (list :family family-name))
" (" nice-family ")"))
(newline)))
(goto-char (point-min)))
(display-buffer buf))))
--
Greetings
Pete
Perl—the only language that looks the same before and after RSA
encryption.
- Keith Bostic