unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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?



  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

  List information: https://www.gnu.org/software/emacs/

* 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 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).