From: Eli Zaretskii <eliz@gnu.org>
To: Anand Tamariya <atamariya@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Basic WYSIWYG printing in GNU Emacs (Arabic & Hebrew)
Date: Thu, 12 Aug 2021 09:29:24 +0300 [thread overview]
Message-ID: <83bl63dvln.fsf@gnu.org> (raw)
In-Reply-To: <CADm7Y4kKUstRafAuNS7i+skoEO1uFZXTrC5PPDUMoLGc=Qhp1g@mail.gmail.com> (message from Anand Tamariya on Thu, 12 Aug 2021 10:54:41 +0530)
> From: Anand Tamariya <atamariya@gmail.com>
> Date: Thu, 12 Aug 2021 10:54:41 +0530
> Cc: emacs-devel@gnu.org
>
> So if the entire buffer uses just a single font, like TUTORIAL.he
> does, you do the test only once, at the first character of the buffer
> text? But that could produce incorrect results, because the text
> further into the buffer could have both RTL and LTR paragraphs
> intermixed, and the correct display will show each of these at their
> correct base direction. For example, most of the paragraphs in
> TUTORIAL.he have right-to-left base direction, but the last paragraph,
> with the Local Variables, is left-to-right, so its display starts at
> the left edge of the window.
>
> Intermixed paragraphs are fine though mixed text is slightly problematic (see attachment).
Yes, the problems with rendering mixed text are to be expected with
such simplistic handling of bidirectional text.
> The window positioning information can only be obtained for the part
> of the buffer text actually visible in a window; for buffer positions
> outside of the viewport posn-at-point will give you nil. How do you
> work around this limitation to allow printing text of the entire
> buffer?
>
> You are correct with your doubts. And unfortunately, I don't have all the answers. That's why in all my
> communication I've always maintained "Basic" WYSIWYG. Maybe somebody else can improve upon the
> algorithm.
OK, thanks.
I think a better way of doing this job is to implement a PS display
back-end, similar to the X, w32, and NS back-ends we have now (see
xterm.c, w32term.c, nsterm.m), but one which would emit PS code to
print stuff on a paper page of known dimensions, instead of showing it
on the screen. Then the bidi reordering will be taken care of by the
display code without any additional efforts, and we will be free from
the limitations of having the buffer displayed in its entirety in a
window etc. Unfortunately, this means most of the job will have to be
in C, not in Lisp.
Since you know much more than I do about PostScript and PS printers,
may I ask you a question: if one sends RTL text embedded in a PS
program to a PS printer, does the printer have the capability to
reorder RTL text when it prints it? That is, if you send a string of
RTL characters that way, are they printed in reverse order? Or do PS
printers need the text in the "visual" order, already reordered for
display?
next prev parent reply other threads:[~2021-08-12 6:29 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-10 5:41 Basic WYSIWYG printing in GNU Emacs (Arabic & Hebrew) Anand Tamariya
2021-08-10 12:01 ` Eli Zaretskii
2021-08-11 3:48 ` Anand Tamariya
2021-08-11 11:37 ` Eli Zaretskii
2021-08-11 15:59 ` Anand Tamariya
2021-08-11 16:57 ` Eli Zaretskii
2021-08-12 5:24 ` Anand Tamariya
2021-08-12 6:29 ` Eli Zaretskii [this message]
2021-08-12 8:51 ` Anand Tamariya
2021-08-12 11:45 ` Eli Zaretskii
2021-08-13 9:16 ` Anand Tamariya
2021-08-11 17:53 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83bl63dvln.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=atamariya@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.