LoginSignup
6
3

More than 1 year has passed since last update.

Mac Emacs 27.2 フォント設定

Posted at

使用中のEmacsバージョン

GNU Emacs 27.2 (build 1, x86_64-apple-darwin19.6.0, Carbon Version 162 AppKit 1894.6)
of 2022-01-31

init.el 抜粋

適当な場所に記載して。私のinit.elでは、480行目から始まる

init.el フォント設定部分 抜粋
;;----------------------------------------
;; フォントの設定
;;----------------------------------------
(leaf *font
  :config
  ;;----------------------------------------
  ;; フォントの設定
  ;;----------------------------------------
  (cond
   (window-system
    ;; (dolist (x (x-list-fonts "*")) (print x))
    ;; (font-xlfd-name (font-at (point)))
    ;; M-x ielm > (font-family-list) (x-list-fonts)
    ;; eshell >> fc-list > fc-list-text.txt; cat fc-list-text.txt
    ;; ;;;; ASCIIフォント
    ;; (set-face-attribute 'default nil :family "Inconsolata" :height 70)
    ;; (set-face-attribute 'default nil :family "Consolas" :height 104)
    ;; ;;;; 日本語フォント豆腐味噌123450
    ;; (set-face-attribute 'default nil :family "MeiryoKe_Gothic" :height 70)
    ;; (set-face-attribute 'default nil :family "Meiryo mod 12pt AA" :height 70)
    ;; (set-face-attribute 'default nil :family "MeiryoKe_Console" :height 140)
    ;; (set-fontset-font nil 'japanese-jisx0208 (font-spec :family "MeiryoKe_Console"))
    ;; (setq face-font-rescale-alist '(("MeiryoKe_Console" . 1.08)))
    (let* ((_fontset-name "myfonts") ; フォントセットの名前
       (_size 14) ; ASCIIフォントのサイズ [9/10/12/14/15/17/19/20/...]
       (_ascii "Inconsolata") ; ASCIIフォント
       (_jp    "MeiryoKe_Console") ; 日本語フォント豆腐味噌123450
       (_ns    "LigaSFMono Nerd Font") ; 日本語フォント豆腐味噌123450
       ;;(_jp    "Hiragino Maru Gothic ProN") ; 日本語フォント豆腐味噌123450
       (_font_height (* _size 10))
       (_fontspec     (font-spec :family _ascii))
       (_jp-fontspec  (font-spec :family _jp))
       (_ns-fontspec  (font-spec :family _ns))
       (_font (format "%s-%d:weight=normal:slant=normal" _ascii _size))
       (fsn (create-fontset-from-ascii-font _font nil _fontset-name)))
      ;; (set-fontset-font fsn 'unicode _jp-fontspec nil 'append)
      (set-fontset-font fsn '(0 . #x3fffff)       _ns-fontspec nil 'append)
      (set-fontset-font fsn 'cp932-2-byte         _jp-fontspec nil 'append)
      (set-fontset-font fsn 'katakana-jisx0201        _jp-fontspec nil 'append) ; 半角カナ
      (set-fontset-font fsn 'katakana-sjis        _jp-fontspec nil 'append) ; 半角カナ
      (set-fontset-font fsn 'japanese-jisx0208        _jp-fontspec nil 'append)
      (set-fontset-font fsn 'japanese-jisx0208-1978   _jp-fontspec nil 'append)
      (set-fontset-font fsn 'japanese-jisx0212        _jp-fontspec nil 'append)
      (set-fontset-font fsn 'japanese-jisx0213.2004-1 _jp-fontspec nil 'append)
      (set-fontset-font fsn 'japanese-jisx0213-2      _jp-fontspec nil 'append)
      (set-fontset-font fsn '(#x0080 . #x024F) _fontspec nil 'append)    ; 分音符付きラテン
      (set-fontset-font fsn '(#x0370 . #x03FF) _fontspec nil 'append)    ; ギリシャ文字
      ;; ?
      (set-face-attribute 'default nil :family _ascii :height _font_height)
      )
    ;; デフォルトのフレームパラメータでフォントセットを指定
    (add-to-list 'default-frame-alist '(font . "fontset-myfonts"))
    ;;(add-to-list 'default-frame-alist
    ;;         (append (list '(font . "fontset-myfonts")) default-frame-alist))
    ;; フォントサイズの比を設定
    (dolist (elt '(
           ("*Inconsolata*" . 1.0)
           ("*MeiryoKe*" . 0.8)
           ("*LigaSFMono*" . 1.0)
           ))
      (add-to-list 'face-font-rescale-alist elt))
    ;; (dolist (elt '(("^-apple-hiragino.*" . 1.2)
    ;;            (".*Hiragino Maru Gothic ProN.*" . 0.8)
    ;;            (".*courier-bold-.*-mac-roman" . 1.0)
    ;;            (".*monaco cy-bold-.*-mac-cyrillic" . 0.9)
    ;;            (".*monaco-bold-.*-mac-roman" . 0.9)))
    ;;            (".*osaka-bold.*" . 1.2)
    ;;            (".*osaka-medium.*" . 1.2)
    ;;            (".*SHG30.*" . 1.2)
    ;;            (".*Takao.*" . 0.8)
    ;;            (".*MeiryoKe_Console.*" . 0.8)
    ;;            (".*MeiryoKe_Gothic.*" . 0.8)
    ;;            (add-to-list 'face-font-rescale-alist elt))
    ;; デフォルトフェイスにフォントセットを設定
    ;; 起動時 default-frame-alist に従ったフレームが作成されない現象への対処
    (set-face-font 'default "fontset-myfonts")

    ;; 記号をデフォルトのフォントにしない。(for Emacs 25.2)
    (setq use-default-font-for-symbols nil)
    ))
  )

これでやっていること

  1. 文字コード全範囲(0 . #x3fffff)を"LigaSFMono Nerd Font"に設定
    Nerdフォントでグリフがほぼ全部入っていれば何でも良かった。Ascii半角文字だけをこれで試したりなんかして遊ぼうと考えてたけど。あれだ。たぶん試してない。試して間延びしてたからやめた気もする。記憶が定かでない。
  2. "MeiryoKe_Console"で、所謂、日本語全角文字に当たる範囲の文字コードに当てていく
    慣れている文字じゃないと、所々に挟まれる異なるフォント文字が、バランスが違ったり違和感がイミワカンナぐらいに出てくる。
  3. アスキー文字=半角英数文字範囲の文字コードに、"Inconsolata"を割り当て
  4. フォントサイズの比を設定の部分で、Emacs上で編集中にアスキーと漢字が入り混じっていてもデコボコしないようなバランスに調整している。雑に設定している

きっと誰かの、きっと誰でも皆んなが持ってるコードの、フォントアウェソメーやオールインワンなどに対応しようとやっつけていた結果のコード。です。ご自由にどうぞ。

確認

さんぷる
  ;;:custom (org-bullets-bullet-list '("" "" "" "" "" "" "" "" "" ""))
  :custom (org-bullets-bullet-list '("" "" "" "" "" "" "" "" "" "" ""))

これとか、わたしのEmacs上では、表示もコピペも出来るんです。
リストの最初の文字はFA paw。犬の足跡グリファーで可愛いです。
で、その、文字を表示しているフォントを調べるコマンド。
M-x describe-char

*Help* (M-x describe-char 出力結果)
             position: 10747 of 13682 (79%), column: 38
            character:  (displayed as ) (codepoint 61872, #o170660, #xf1b0)
              charset: unicode (Unicode (ISO10646))
code point in charset: 0xF1B0
               syntax: w 	which means: word
             category: L:Left-to-right (strong)
             to input: type "C-x 8 RET f1b0"
          buffer code: #xEF #x86 #xB0
            file code: #xEF #x86 #xB0 (encoded by coding system utf-8-unix)
              display: by this font (glyph code)
    mac-ct:-*-LigaSFMono Nerd Font-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1 (#xAB0)

Character code properties: customize what to show
  general-category: Co (Other, Private Use)
  decomposition: (61872) ('')

There are text properties here:
  face                 font-lock-string-face
  fontified            nil

雑に目を通しただけなので理解していない。
理解していないけど、指定した"LigaSFMono Nerd Font"が使われている事がわかってよかった。

へー、凄いなーって思った

Emacs で全世界の文字を表示・編集可能にする。 - Qiita https://qiita.com/kawabata@github/items/2c4b0b689834c9c193aa

これを見て、凄いって思って。
やってみようと思って、いつも使っているフォントに当てはめて途中まで作業してた。
ふと、我に帰って、自分には英語圏以外の文字なんて必要ない事に気付いてしまった。
外国に友達がいないどころが、友達と呼べるn・・・。

余計なことに気付いてしまったので、途中まで作った全世界文字対応文字.elをイナイイナイした。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3