Thursday, February 23, 2017

Font for Emacs - Korean, Chinese-Hanyu

> chinese font
       (set-fontset-font fontset 'hangul '("Gulim" . "unicode-bmp"))


> korean font
        (set-fontset-font fontset 'hangul '("NanumBarunGothic" . "unicode-bmp"))

> japnese font

;; -- 0
;(set-face-font 'default "Monaco-12")
;(set-fontset-font "fontset-default" '(#x1100 . #xffdc) "NanumGothicOTF-15")
;(set-fontset-font "fontset-default" 'kana  "Hiragino Kaku Gothic Pro-14")
;(set-fontset-font "fontset-default" 'han   "Hiragino Kaku Gothic Pro-14")

(defun xftp (&optional frame)
  "Return t if FRAME support XFT font backend."
  (let ((xft-supported))
    (mapc (lambda (x) (if (eq x 'xft) (setq xft-supported t)))
          (frame-parameter frame 'font-backend))
    xft-supported))

(when (string-equal my-system-is "MAC")
  (set-face-attribute 'default nil :family "DejaVu Sans Mono" :height 160) ; 140
;  (set-face-font 'default "Monaco-14") ; 12
;  (set-face-attribute 'default nil :height 160)
;  (face-remap-add-relative 'default :family "Bitstrem Vera Sans Mono" :height 180)

   ;; -- 1
  (set-fontset-font "fontset-default" '(#x1100 . #xffdc) '("DejaVu Sans Mono" . "iso10646-1"))
;  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e) '("나눔고딕코딩" . "iso10646-1"))

  ;(set-fontset-font "fontset-default" 'latin  '("Monaco-14" . "unicode-bmp"))
  ;(set-fontset-font t 'latin (font-spec :family "나눔고딕코딩" :size 18)) ; 16
  ;(set-fontset-font "fontset-default" 'latin (font-spec :family "NanumGothicCoding" :size 22))
  ;(set-fontset-font "fontset-default" 'latin (font-spec :family "Bitstrem Vera Sans Mono" :size 22))
  (set-fontset-font "fontset-default" 'latin (font-spec :family "DejaVu Sans Mono" :size 22))

  ;; -- 2
  (set-fontset-font "fontset-default" 'han (font-spec :family "STHeiti" :size 24))
  ;(set-fontset-font "fontset-default" 'han (font-spec :family "Microsoft YaHei" :size 24))

  ;; -- 3
  ;(set-fontset-font "fontset-default" 'kana (font-spec :family "STSong-24" :size 22))
;  (set-fontset-font "fontset-default" 'kana (font-spec :family "Monaco-16" :size 22))

  ;; -- 4
  (set-fontset-font "fontset-default" 'hangul (font-spec :family "나눔고딕코딩" :size 14))
 )

(when (string-equal my-system-is "GIG")
;   (set-face-font 'default "Monaco-12")

;; bad
;   (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NANumGothicCoding" . "unicode-bmp"))
;   (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicCoding" . "unicode-bmp"))

;; bad
;   (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NanumGothicOTF" . "iso10646-1"))
;   (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicOTF" . "iso10646-1"))
   (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NanumBarunGothic" . "iso10646-1"))
   (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumBarunGothic" . "iso10646-1"))

   (set-fontset-font "fontset-default" 'kana  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
   (set-fontset-font "fontset-default" 'japanese-jisx0208 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
   (set-fontset-font "fontset-default" 'katakana-jisx0201 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))

   (set-fontset-font "fontset-default" 'han '("Microsoft YaHei". "unicode-bmp"))
   ;(set-fontset-font "fontset-default" 'han '("NanumGothicCoding". "unicode-bmp"))

   (set-fontset-font (frame-parameter nil 'font) 'cjk-misc '("Microsoft YaHei" . "unicode-bmp"))
   (set-fontset-font (frame-parameter nil 'font) 'bopomofo '("Microsoft YaHei" . "unicode-bmp"))
   (set-fontset-font "fontset-default"    'gb18030 '("Microsoft YaHei". "unicode-bmp"))
   (set-fontset-font (frame-parameter nil 'font) 'symbol '("Microsoft YaHei". "unicode-bmp"))

   (set-fontset-font t 'han (font-spec :family "Microsoft Yahei" :size 16))
   ;(set-fontset-font t 'han (font-spec :family "NanumGothicCoding" :size 16))

   (setq face-font-rescale-alist '(("Microsoft Yahei" . 1.4) ("WenQuanYi Zen Hei" . 1.4)))

;; -- this xfp will crash !!
;   (when (xftp)
;     (let ((fontset "fontset-default"))
;       (set-fontset-font fontset 'latin  '("DejaVu Sans Mono" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'latin  '("NanumGothicCoding" . "unicode-bmp"))

;  ;    (set-fontset-font fontset 'hangul '("NanumGothicCoding" . "unicode-bmp"))
;       (set-fontset-font fontset 'hangul '("SeoulHangangB" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'hangul '("SeoulNamsanM" . "unicode-bmp"))

;       (set-face-attribute 'default nil :font fontset :height 110)
;      )
;    )


   (when (xftp)
     (let ((fontset "fontset-default"))
;       (set-fontset-font fontset 'latin  '("DejaVu Sans Mono" . "unicode-bmp"))
        (set-fontset-font fontset 'latin  '("DejaVu Sans Mono-14" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'latin  '("NanumGothicCoding" . "unicode-bmp"))

;       (set-fontset-font fontset 'hangul '("Gulim" . "unicode-bmp"))
        (set-fontset-font fontset 'hangul '("NanumBarunGothic" . "unicode-bmp"))

;        (set-fontset-font fontset 'hangul '("Gulim" . "unicode-bmp"))
   ;    (set-fontset-font fontset 'hangul '("NanumGothicCoding" . "unicode-bmp"))
;       (set-fontset-font fontset 'hangul '("SeoulHangangB" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'hangul '("SeoulNamsanM" . "unicode-bmp"))

;       (set-face-attribute 'default nil :font fontset :height 110)
      )
    )

;; -- this xfp not tested
;   (when (xftp)
;     (let ((fontset "fontset-default"))
;       (set-fontset-font fontset 'latin  '("DejaVu Sans Mono" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'latin  '("NanumGothicCoding" . "unicode-bmp"))

;  ;    (set-fontset-font fontset 'hangul '("NanumGothicCoding" . "unicode-bmp"))
;       (set-fontset-font fontset 'hangul '("SeoulHangangB" . "unicode-bmp"))
;  ;    (set-fontset-font fontset 'hangul '("SeoulNamsanM" . "unicode-bmp"))

;       (set-face-attribute 'default nil :font fontset :height 110)
;      )
;    )
  )

;;;; ----------------------------------------------------------------------
;; test -- 1
(cond
 ((string-equal system-type "windows-nt") ; Microsoft Windows
  (when (member "DejaVu Sans Mono" (font-family-list))
    (add-to-list 'initial-frame-alist '(font . "DejaVu Sans Mono-12"))
    (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))
    )
  )
 ((string-equal system-type "darwin")   ; Mac OS X
  (when (member "DejaVu Sans Mono" (font-family-list))
    (add-to-list 'initial-frame-alist '(font . "DejaVu Sans Mono-12"))
    (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12")))
  )
 ((string-equal system-type "gnu/linux") ; linux
   (when (member "DejaVu Sans Mono" (font-family-list))
    (add-to-list 'initial-frame-alist '(font . "DejaVu Sans Mono-12"))
    (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))
;    (set-face-attribute 'default nil :family "Source Code Pro" :height 130) ; 120
   )
  )
 )

;;;; ----------------------------------------------------------------------
;; test -- 2
;; -- this is DejaVu Good looking
;(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))
;(set-frame-font "DejaVu Sans Mono-12" nil t)

;; -- not as good as DejaVu - its test now
(add-to-list 'default-frame-alist '(font . "Source Code Pro-13"))
(set-frame-font "Source Code Pro-13" nil t)

;; -- not as good it's just old fashion style
;(add-to-list 'default-frame-alist '(font . "lucidasanstypewriter-12"))
;(set-frame-font "lucidasanstypewriter-12" nil t)

(set-face-attribute 'default nil :family "Source Code Pro" :height 130) ; 120


;;;; ----------------------------------------------------------------------
(defun my-font-middle ()  (interactive)
  (set-face-font 'default "Monaco-12")
  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NanumGothicOTF" . "iso10646-1"))
  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicOTF" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'kana  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'japanese-jisx0208 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'katakana-jisx0201 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'han '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'cjk-misc '("Microsoft YaHei" . "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'bopomofo '("Microsoft YaHei" . "unicode-bmp"))
  (set-fontset-font "fontset-default"    'gb18030 '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'symbol '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font t 'han (font-spec :family "Microsoft Yahei" :size 16))
  (setq face-font-rescale-alist '(("Microsoft Yahei" . 1.4) ("WenQuanYi Zen Hei" . 1.4)))
)

(defun my-font-big ()
  (interactive)
  (set-face-font 'default "Monaco-14")
  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NanumGothicOTF" . "iso10646-1"))
  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicOTF" . "iso10646-1"))
;  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NanumGothicCoding" . "iso10646-1"))
;  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicCoding" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'kana  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'japanese-jisx0208 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'katakana-jisx0201 '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'han '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'cjk-misc '("Microsoft YaHei" . "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'bopomofo '("Microsoft YaHei" . "unicode-bmp"))
  (set-fontset-font "fontset-default"    'gb18030 '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font (frame-parameter nil 'font) 'symbol '("Microsoft YaHei". "unicode-bmp"))
  (set-fontset-font t 'han (font-spec :family "Microsoft Yahei" :size 16))
  (setq face-font-rescale-alist '(("Microsoft Yahei" . 1.6) ("WenQuanYi Zen Hei" . 1.6)))
)

;(my-font-big)
;(my-font-middle)
;; M-x list-fonts

No comments:

Pranten

 Pranten