Web pages are rendered with the simple html renderer
shr in the Emacs webbrowser EWW. Pitingly, images in tables are displayed below the tables.
The source code of
shr contains the following comment about that:
;; Finally, insert all the images after the table. The Emacs buffer ;; model isn't strong enough to allow us to put the images actually ;; into the tables. It inserts also non-td/th objects.
Is that actually true? Shr already uses
window-text-pixel-size for calculating the width of columns.
Furthermore, one can adjust column positions fine grained with the help of the
:align-to space width specifiction.
The following code shows that
:align-to work well with images:
(with-current-buffer (get-buffer-create "*test*") (unless (and (intern-soft "img") (boundp 'img) (stringp img)) (setq-local img (with-current-buffer (url-retrieve-synchronously "https://cdn.sstatic.net/Sites/emacs/img/logo.svg?v=ceb7969787d0") (buffer-string)))) (delete-region (point-min) (point-max)) (insert "initial string" (propertize " " 'display '(space :align-to (10 . cm))) "second column" "\nImg: ") (insert-image (create-image img nil t)) (insert " text behind " (propertize " " 'display '(space :align-to (10 . cm))) "2nd column") (let ((wnd (display-buffer (current-buffer)))) (cons (car (window-text-pixel-size wnd (goto-char (point-min)) (progn (search-forward "second column") (match-beginning 0)))) (car (window-text-pixel-size wnd (progn (forward-line) (point)) (progn (search-forward "2nd column") (match-beginning 0)))))))
The code returns
(377 . 377) meaning that
x-window-text-pixel-width perfectly calculates the width of the rows belonging to the first column.
A screenshot of the produced buffer:
It shows that the rows of the second column are perfectly aligned.
Question: What is the actual limitation that is addressed in the above quotation?
GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-09-16