TL; DR: Cách đơn giản để nói một cách đáng tin cậy: sử dụng Consolas làm phông chữ mặc định, FreeMono cho các ký tự không được Consolas hỗ trợ và Symbola cho các ký tự không được cả hai hỗ trợ?
Vì phông chữ lập trình chính của tôi không bao gồm tất cả các ký hiệu toán học tôi cần, nên ban đầu tôi thiết lập dự phòng phông chữ như dưới đây:
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
Thật không may, điều này cũng thay đổi phông chữ cho một số ký tự mà phông chữ chính của tôi hỗ trợ, vì vậy tôi đã thay đổi nó thành
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
Nếu sự hiểu biết của tôi là chính xác, điều này sẽ đảm bảo rằng các ký tự mà Consolas không thể xử lý được FreeMono xử lý, trừ khi FreeMono không có chúng, trong trường hợp đó chúng sẽ được hiển thị bằng Symbola. Đó cũng là sự hiểu biết của tôi mà t
làm như "fontset-default"
trên.
Thật không may, vẫn có trường hợp phông chữ bên phải không được chọn; Tôi thấy rằng thay đổi thành
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Symbola") nil 'append)
hoạt động tốt hơn, nhưng không phải lúc nào cũng: thay đổi kích thước phông chữ bằng cách sử dụng
(set-face-attribute 'default nil :height some-size)
gây ra các dự phòng bị bỏ qua, do các phông chữ mới được tạo ra.
Giải pháp hiện tại của tôi là làm
(set-fontset-font fontset 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font fontset 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font fontset 'unicode (font-spec :name "Symbola") nil 'append)
trên mỗi fontset-list
phông chữ ( ), sau mỗi thay đổi kích thước phông chữ.
Cách thích hợp để đặt dự phòng phông chữ là gì?
Lưu ý : cho mục đích thử nghiệm, dưới đây là một vài ký tự toán học: ℕ𝓟⧺×≠≥≤±¬∨∧∃∀λ⟿⟹⊥⊤⊢
Tài liệu tham khảo : Hướng dẫn sử dụng Emacs trên các phông chữ và sửa đổi các phông chữ
fontset
một cách sai lầm. Emacs không thực sự kiểm tra mọi ký tự mà nó hiển thị cho dù một phông chữ có biết cách hiển thị hay không. Điều đó sẽ quá chuyên sâu tính toán. Vì vậy, không có cơ chế "dự phòng" mỗi se. Bạn nên đặt phông chữ mặc định và sau đó sửa đổi phông chữ mặc định theo cách thủ công trong các phạm vi nhất định để hiển thị bằng các phông chữ khác nhau. Thủ tục này là thủ công hoặc có thể gói unicode
có thể giúp đỡ.