Emacs: Cycle Fonts by Command
These commands lets you quickly switch fonts for comparison.
Cycle between 2 Fonts
This command cycles between 2 fonts.
(defun xah-cycle-font-2 (@n) "Change font in current window between 2 fonts. URL `http://xahlee.info/emacs/emacs/emacs_switching_fonts.html' Version 2015-09-21" (interactive "p") ;; this function sets a property “state”. It is a integer. Possible values are 0 to length of $fontList (let ( ($fontList '("Courier-14" "Menlo-14")) $fontToUse $stateBefore $stateAfter) (setq $stateBefore (if (get 'xah-cycle-font-2 'state) (get 'xah-cycle-font-2 'state) 0)) (setq $stateAfter (% (+ $stateBefore (length $fontList) @n) (length $fontList))) (put 'xah-cycle-font-2 'state $stateAfter) (setq $fontToUse (nth $stateAfter $fontList)) (set-frame-parameter nil 'font $fontToUse) (message "Font set to: %s" $fontToUse)))
Cycle Multiple Fonts
Here's commands that switch among your font choices for current window.
(defvar xah-font-list nil "A list of fonts for `xah-cycle-font' to cycle from.") (setq xah-font-list (cond ((string-equal system-type "windows-nt") '( "Courier-10" "Lucida Console-10" "Segoe UI Symbol-12" "Lucida Sans Unicode-10" )) ((string-equal system-type "gnu/linux") '( "DejaVu Sans Mono-10" "DejaVu Sans-10" "Symbola-13" )) ((string-equal system-type "darwin") ; Mac '("Courier-14" "Menlo-14")))) (defun xah-cycle-font (@n) "Change font in current frame. Each time this is called, font cycles thru a predefined list of fonts in the variable `xah-font-list' . If @n is 1, cycle forward. If @n is -1, cycle backward. See also `xah-cycle-font-next', `xah-cycle-font-previous'. URL `http://xahlee.info/emacs/emacs/emacs_switching_fonts.html' Version 2015-09-21" (interactive "p") ;; this function sets a property “state”. It is a integer. Possible values are any index to the fontList. (let ($fontToUse $stateBefore $stateAfter ) (setq $stateBefore (if (get 'xah-cycle-font 'state) (get 'xah-cycle-font 'state) 0)) (setq $stateAfter (% (+ $stateBefore (length xah-font-list) @n) (length xah-font-list))) (setq $fontToUse (nth $stateAfter xah-font-list)) (set-frame-font $fontToUse t) ;; (set-frame-parameter nil 'font $fontToUse) (message "Current font is: %s" $fontToUse ) (put 'xah-cycle-font 'state $stateAfter))) (defun xah-cycle-font-next () "Switch to the next font, in current window. See `xah-cycle-font'." (interactive) (xah-cycle-font 1)) (defun xah-cycle-font-previous () "Switch to the previous font, in current window. See `xah-cycle-font'." (interactive) (xah-cycle-font -1))
Modify the variable list “xah-font-list” above, so that you can use this function to cycle among the fonts of your choice.
To get a list of fonts in emacs, see Emacs: Font Setup.
You can set Ctrl+F7 and Ctrl+F8 to switch to the prev/next font. [see Emacs: How to Define Keys]