fonts – ¿Carácter de espacio de ancho fijo con una fuente de ancho variable?

Pregunta:

¿Es posible mostrar un espacio con una fuente monoespaciada, mientras se muestran todos los demás caracteres con una fuente de ancho variable?

Lo intenté

(set-fontset-font t '(#x20 . #x20) (font-spec :family "Source Code Pro"))

pero el resultado fue un mensaje de error que decía

Can't set a font for partial ASCII range

¿Es esto completamente imposible o estoy haciendo algo incorrecto?

Respuesta:

Eche un vistazo a buffer-display-table .

Esto es utilizado por whitespace-mode en whitespace-mode y su opción de whitespace-display-mappings (teniendo en cuenta específicamente los valores de space-mark para este último), por lo que, para empezar, debería jugar con ellos.

Sospecho que puede asignar un espacio a un punto de código que puede controlar.

Editar (Kirill) : este es un fragmento que ilustra cómo esto responde a la pregunta: se puede usar para mostrar espacios de manera diferente, que es lo que quería hacer. Hace que cada espacio #x20 , que es muy estrecho en algunas fuentes de ancho proporcional, se muestre como un tipo de espacio diferente, por ejemplo, como uno de #x2000..#x200a , que incluye una selección de diferentes anchos de espacio – https: / /www.cs.tut.fi/~jkorpela/chars/spaces.html . También parece que la fuente con la que se muestra el nuevo espacio se puede configurar correctamente con set-fontset-font .

(let ((tab (make-display-table))
        ;; try #x2000 .. #x200a, plus there are some other Unicode space characters
        (cp #x2002))
    (aset tab ?  (vector (make-glyph-code cp)))
    (setq-local buffer-display-table tab)
    ;; Compare different fonts' space widths:
    (set-fontset-font t (cons cp cp) (font-spec :family "DejaVu Sans Mono"))
    ;; (set-fontset-font t (cons cp cp) (font-spec :family "Source Code Pro"))
    )

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım