TL; DR: ¿Cuál es una manera simple de decir de manera confiable: utilizar Consolas como fuente predeterminada, FreeMono para los caracteres no compatibles con Consolas y Symbola para los caracteres no compatibles con ambos?
Como mi fuente de programación principal no cubre todos los símbolos matemáticos que necesito, inicialmente configuré la reserva de fuentes como se muestra a continuación:
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
Desafortunadamente, esto también cambió la fuente de algunos de los caracteres que admite mi fuente principal, así que la cambié a
(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)
Si mi comprensión es correcta, esto debería garantizar que los caracteres que Consolas no puede manejar sean manejados por FreeMono, a menos que FreeMono no los tenga, en cuyo caso deberían mostrarse usando Symbola. También tengo entendido que t
hace lo mismo que "fontset-default"
arriba.
Desafortunadamente, todavía hubo casos en los que no se seleccionó la fuente correcta; Encontré que cambiar a
(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)
funcionó mejor, pero no siempre: cambiar el tamaño de fuente usando
(set-face-attribute 'default nil :height some-size)
causó que se ignoraran las fallas, debido a la creación de nuevos conjuntos de fuentes.
Mi solución actual es hacer
(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)
en cada conjunto de fuentes ( fontset-list
), después de cada cambio de tamaño de fuente.
¿Cuál es la forma correcta de configurar la reserva de fuentes?
Nota : para fines de prueba, aquí hay algunos caracteres matemáticos: ℕ𝓟⧺×≠≥≤±¬∨∧∃∀λ⟿⟹⊥⊤⊢
Referencias : Manual de Emacs sobre conjuntos de fuentes y modificación de conjuntos de fuentes
fontset
manera incorrecta. Emacs en realidad no verifica para cada carácter que muestra si una fuente sabe cómo mostrarlo o no. Eso sería demasiado computacionalmente intensivo. Por lo tanto, no existe un mecanismo "alternativo" per se. Debe configurar su fuente predeterminada y luego modificar el conjunto de fuentes predeterminado manualmente en ciertos rangos para mostrar usando diferentes fuentes. Este procedimiento es manual o quizás el paquete unicode
pueda ayudar.