Dov Grobgeld submitted the following example (with visualization of source 
and sink points):

Logical:  abcABCabc
Visual with sources and sinks displayed: abc|><|CBA<||>abc

Just to show how niggling I am, let me modify the example as follows:

Logical:  abcDEFxyz
Visual with sources and sinks displayed: abc|><|FED<||>xyz

Reasoning: there are enough letters in the alphabet, so that we don't have 
to reuse any, which creates potential for confusion.

Now that the stage is set, let's address the proposal itself.  It is 
interesting and may help users who could not guess otherwise where the 
"points of direction discontinuity" (which I like to call "boundaries") 
are located.  But the presence of the source/sinks markers does not really 
make easier the gymnastics of locating the caret on the desired side of 
the boundary.
Let's assume the current state of things, where the display is: abcFEDxyz

If a user wants to extend the "abc" run, all he/she has to do is to click 
on the right part of 'c', and the caret will be logically after 'c'.  If 
the user wants to extend the "FED" run, he/she should click on the left 
part of 'F', and the caret will be logically after 'F'.  Similar 
operations apply to the boundary between 'D' and 'x'.  Unless the font is 
quite small, or the user has motor difficulties (which is not to be 
neglected), the source/sink markers are not needed, IMHO, and there is no 
justification for the added complications caused by their presence (see 
questions raised by Omer Zak).
If the font is too small for conveniently clicking on the needed half of a 
glyph, it is always possible to move the caret anywhere in the run which 
is to be extended, and then to use the left/right arrow keys to reach the 
boundary on the proper side.  For instance, in order to extend "FED", 
click anywhere within that run, then press the left arrow until the caret 
is positioned on the left side of 'F'.

All the above should work in the current user interfaces on most any 
platform (please let us know if you are aware of exceptions).

There is an issue which is not solved by my little tricks: it is the case 
of "double boundary".  Let me explain with an example.

Logical:  abcDEF345xyz
Visual with sources and sinks not displayed: abc345FEDxyz

If we consider the boundary between 'c' and '1', there are 3 possibilities 
for adding characters at this point:
1. as extension to "abc" (for instance to form "abcmn")
2. as addition at the beginning of "345" (for instance to form "12345")
3. as extension to the combined visual run "345FED" (for instance to form 
the visual run "HG123FED").

Since we have 3 possibilities, a binary choice like being on the left or 
right side of the boundary is not going to enable all 3.

With Dov's source/sink markers, we may have something interesting:

Logical:  abcDEF345xyz
Visual with sources and sinks displayed: abc|>|<|>345|><|FED<||>xyz

With such a visualization, case 1 would be selected by clicking somewhere 
on the leftmost |>, case 2 would be selected by clicking on the second 
(from the left) |>, case 3 would be selected by clicking on the leftmost 
|<.  This offers a solution to my double boundary use case, but the amount 
of source/sink markers within the text becomes cumbersome.

And a suggestion: for the sake of consistency and completeness, may be we 
should have (adding marks at start and end of runs):
Logical:  abcDEFxyz
Visual with sources and sinks displayed: |>abc|><|CBA<||>abc|>

Omer Zak asked:
"1. Do we display sources and sinks over all the document or only at the
ends of the span, in which the cursor is now?"
My answer is that you must display sources and sinks all over the 
document, because an essential goal of this feature is to facilitate 
selection.  To select, you have to click on the starting point, then on 
the ending point.  If the the sources and sinks are displayed only on a 
specific part of the document (line, paragraph, ...) and you need to see 
them at the ending point, you first have to click to position the caret 
(cursor) in that area, and by doing this you "forget" the location of the 
starting point.

Omer Zak asked:
"2. Do we display them all the time (toggled by the user in the same way
spaces are explicitly displayed in some wordprocessors, by displaying
small dots instead of spaces), or only when the user tries to select
text (i.e. automatically)?  And if automatically, how do we deal with
text displacement when sources and sinks show up/disappear?"
My answer is that it should be displayed all the time and on all the 
document when the user enables it, and removed when the user disables it. 
There is in Windows edit fields a context menu option for "Show Unicode 
controls characters".  This can give us an idea of a possible user 
interface.

Omer Zak asked:
"3. Is this enough to make it easy to select text, or do we need also to
temporarily display text in logical-only ordering (see previous
discussion below)?"
My answer: never display text in logical ordering to end users.


Conclusion (personal opinion): the source/sink markers can be useful, but 
they may become too invasive.  They are acceptable, and even recommended, 
if and only if it is possible to toggle them on and off.

Shalom (Regards),  Mati
           Bidi Architect
           Globalization Center Of Competency - Bidirectional Scripts
           IBM Israel
           Phone: +972 2 5888802    Fax: +972 2 5870333    Mobile: +972 52 
2554160




"Dov Grobgeld" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
26/10/2008 09:20

To
"Omer Zak" <[EMAIL PROTECTED]>
cc
linux-il <[email protected]>
Subject
Re: [YBA] Logical VS Visual Text Selection






Sorry to join the discussion so late, but I have an idea  that I believe 
would make both selection and caret position easier for the user in a BiDi 
context. The idea is to visually display the points of direction 
discontinuity. I like to call these a source when the two directions 
diverge, and a sink when the two direction converges. 

Heres an example:

Logical:  abcABCabc
Visual with sources and sinks displayed: abc|><|CBA<||>abc

where |><| is a glyph indicating a sink point and a <||> is a glyph 
indicating a source point. If a source and a sink meet they cancel out. 
The user may now easily place the caret at the left or the right side of 
the source and the sink points, which today is very difficult to do.

I hope to create a concept implementation one day.

I'd be happy to hear comments about this idea.

Regards,
Dov

2008/10/7 Omer Zak <[EMAIL PROTECTED]>
Hello Jonathan,

I think I begin to understand what you are trying to accomplish.  It is
indeed difficult to precisely select a text segment when there are
several spans of different directionality properties (LTR/RTL,
strong/weak, overrides, etc.) at its borders.

There are several possibilities for improving the selection GUI
look&feel in this case:

1. Turn off BiDi ordering for the entire file (useful by itself for
blind computer users; not directly related to our problem).

2. Manually turn off BiDi ordering for a text segment (say, a paragraph)
and then manually turn it back on.

3. Use the metaphor of using one hand to straighten out a piece of paper
when writing using the second hand (or straightening a piece of cloth
while doing needlework): turn off BiDi ordering 5 glyphs before and 5
glyphs after the mouse position (as the mouse moves, we suppress
ordering of differing glyphs).  Have them displayed with background
having different color.
(The exact numbers are to be determined by usability tests, and be
user-configurable through a setup menu.  So is the background color to
be used in this case.)

4. Have a small pop-up window, which displays the text around the mouse
without BiDi ordering and let the user guide his mouse actions using the
pop-up display.  The regular text display would be unchanged.

It would be nice to get Arabic speakers to be involved in this, as
Arabic presents a special problem - probably unreadable when the order
of glyphs is reversed without additional processing.  Hebrew and Latin,
in contrast, are still somewhat readable even in reverse direction.

                                   --- Omer



On Tue, 2008-10-07 at 09:36 +0200, Jonathan Ben Avraham wrote:
> On Tue, 7 Oct 2008, Omer Zak wrote:
>
> > Date: Tue, 07 Oct 2008 09:23:32 +0200
> > From: Omer Zak <[EMAIL PROTECTED]>
> > To: linux-il <[email protected]>
> > Subject: Re: [YBA] Logical VS Visual Text Selection
> >
> >> From the discussion below, I understand that Shachar and me use the 
same
> > definition of "visual selection".  You drag the mouse from column X to
> > column Y in the same row of the display, and get whatever text which
> > happens to be displayed between those columns (the text could have 
been
> > from different spans of the corresponding original text - "logical
> > text").
>
> We agree on the meaning of visual selection.
>
> >
> > Jonathan, can you clarify if you mean the same thing, or whether you
> > really meant "temporarily turn off BiDi ordering for a selected text
> > segment and display it"?
>
> No, we mean temporaroly turn off bidi re-ordering for a text, do a 
logical
> selection (which is now the same as visual selection) of some subset and
> then revert the display of the whole text back to bidi ordering. 
Selected
> text wold be always be displayed in the same ordering as the unselected
> text.
>
>   - yba
>
>
> >
> >                                   --- Omer
> >
> >
> > On Tue, 2008-10-07 at 09:09 +0200, Shachar Shemesh wrote:
> >> Jonathan Ben Avraham wrote:
> >>> Right, that's what the qualifier "in effect" means.
> >>>
> >> Visual selection, to me, means "selecting text from a continuous 
block
> >> of visually ordered text". If the text is not visually ordered then 
the
> >> selection cannot be considered "visual". I conceded that definitions 
may
> >> vary.
> >>
> >> I agree with Omer that visual selection does not seem all that useful 
to
> >> me. I am at a loss to think of what use to the end user a selection
> >> containing the end of the Hebrew part of a sentence followed by the 
end
> >> of the English part of the sentence is going to be. Same goes for the
> >> beginnings of the sentences combined.
--
42 is the answer to everything.  Food is the answer to everything except
obesity.
My own blog is at http://www.zak.co.il/tddpirate/

My opinions, as expressed in this E-mail message, are mine alone.
They do not represent the official policy of any organization with which
I may be affiliated in any way.
WARNING TO SPAMMERS:  at http://www.zak.co.il/spamwarning.html


=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]




=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to