unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Pixel padding with variable pitch font
@ 2021-06-07 13:19 Anand Tamariya
  2021-06-07 13:35 ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Anand Tamariya @ 2021-06-07 13:19 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 909 bytes --]

If you need to pad space with variable pitch font, and you are unable to
use ':align-to display' option for any reason, you can use the following
code. This uses unicode spacing characters
<https://jkorpela.fi/chars/spaces.html> to insert required amount of space.

*Screenshot:* https://lifeofpenguin.blogspot.com/2021/06/gnu-emacs.html

(defun company--insert-space (width w)
  "Insert unicode space characters to fit the WIDTH."
  (let ((num 0))
    (dolist (spc '((#x2001 .  1) (#x2000 . 0.5) (#x2004 . 0.33)
(#x2005 . 0.25) (#x2006 . 0.16) (#x200A . 0.125)))
      (setq num (floor (/ width w (cdr spc))))
      (if (memq (car spc) '(#x2001 #x2000 #x2004 #x2005))
          ;; Allow finer spaces towards the end for better accuracy
          (setq num (1- num)))
      (when (> num 0)
        (dotimes (i num)
          (insert (car spc)))
        (setq width (- width (* num w (cdr spc))))
        ))))

[-- Attachment #2: Type: text/html, Size: 1650 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-06-08  5:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-07 13:19 Pixel padding with variable pitch font Anand Tamariya
2021-06-07 13:35 ` Eli Zaretskii
2021-06-08  2:59   ` Ihor Radchenko
2021-06-08  5:04     ` Anand Tamariya

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).