Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
xemacs
suse-xft-init.el
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File suse-xft-init.el of Package xemacs
;;; -*- mode: emacs-lisp -*- ;;; Fri Jul 13 20:43:53 2007 Mike FABIAN <mfabian@suse.de> (setq xft-debug-level 0) ;; default is 1. Set to 0 to suppress all warnings (setq suse-xft-lang-tags (list "ar" "en" "de" "he" "ko" "zh-TW" "zh-CN" "ja" "th" "vi")) (mapcar (lambda (x) (define-specifier-tag (intern x))) suse-xft-lang-tags) (defun suse-xft-find-font-for-tag (tag) "uses fc-match to find a suitable font for tag" (let* ((fc-match-result (shell-command-to-string (format "fc-match monospace:lang=%s" tag))) (family (nth 1 (split-string fc-match-result "\""))) (style (nth 3 (split-string fc-match-result "\"")))) (format "%s:style=%s" family style))) (defun suse-xft-make-fonts-alist (tags) "returns an alist of with the tags as keys and suitable fonts as values" (let ((fonts-alist nil)) (mapcar (lambda (x) (setq fonts-alist (cons (cons x (suse-xft-find-font-for-tag x)) fonts-alist))) tags) (reverse fonts-alist))) (setq suse-xft-fonts-alist (suse-xft-make-fonts-alist suse-xft-lang-tags)) ;; tune the defaults returned by fc-match according to taste: ;; For example, I prefer "DejaVu Sans Mono" as the standard ;; font even if another font is the default for "monospace" ;; because "DejaVu Sans Mono" has a lot more special symbols ;; than most other monospaced fonts. (if (not (equal "" (shell-command-to-string "fc-list \"DejaVu Sans Mono\""))) (setf (cdr (assoc "en" suse-xft-fonts-alist)) "DejaVu Sans Mono")) (defun suse-xft-set-all-faces (size) "tries to set reasonable fonts for all faces" (interactive "nnew size for all faces: ") (setq suse-xft-current-size size) (when (console-on-window-system-p) (mapcar (lambda (face) (progn ;; first set the English font as the standard font for all faces (set-face-font face (format "%s:size=%d" (cdr (assoc "en" suse-xft-fonts-alist)) size) 'global nil 'remove-all) ;; then append the fonts for the other languages (mapcar (lambda (tag) (set-face-font face (format "%s:size=%d" (cdr (assoc tag suse-xft-fonts-alist)) size) 'global (list (intern tag)) 'remove-tag-set-append)) suse-xft-lang-tags) (if (string-match "bold-italic" (symbol-name face)) (make-face-bold-italic face) (if (string-match "bold" (symbol-name face)) (make-face-bold face)) (if (string-match "italic" (symbol-name face)) (make-face-italic face))) (when (fboundp 'custom-face-get-spec) (if (and (eq t (plist-get (cadr (assoc t (custom-face-get-spec face))) :bold)) (eq t (plist-get (cadr (assoc t (custom-face-get-spec face))) :italic))) (make-face-bold-italic face) (if (and (eq 'bold (plist-get (cadr (assoc t (custom-face-get-spec face))) :weight)) (eq 'italic (plist-get (cadr (assoc t (custom-face-get-spec face))) :slant))) (make-face-bold-italic face) (if (eq 'bold (plist-get (cadr (assoc t (custom-face-get-spec face))) :weight)) (make-face-bold face)) (if (eq 'italic (plist-get (cadr (assoc t (custom-face-get-spec face))) :slant)) (make-face-italic face)) (if (eq t (plist-get (cadr (assoc t (custom-face-get-spec face))) :bold)) (make-face-bold face)) (if (eq t (plist-get (cadr (assoc t (custom-face-get-spec face))) :italic)) (make-face-italic face))))) )) (face-list)))) (defun suse-xft-set-size (size) (interactive "nset all fonts to point-size: ") (setq suse-xft-current-size size) (if (> 1 suse-xft-current-size) (setq suse-xft-current-size 1)) (suse-xft-set-all-faces suse-xft-current-size)) (defun suse-xft-change-size (delta) (interactive "nsize change in point (may be negative): ") (setq suse-xft-current-size (+ delta suse-xft-current-size)) (if (> 1 suse-xft-current-size) (setq suse-xft-current-size 1)) (suse-xft-set-all-faces suse-xft-current-size)) (setq suse-xft-current-size 12) (suse-xft-set-all-faces suse-xft-current-size)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor