emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bidi reordering engine upgraded


From: Eli Zaretskii
Subject: Re: Bidi reordering engine upgraded
Date: Thu, 16 Oct 2014 16:51:43 +0300

> From: Thien-Thi Nguyen <address@hidden>
> Date: Thu, 16 Oct 2014 15:27:17 +0200
> 
> 
> [1:text/plain Hide]
> 
> () Eli Zaretskii <address@hidden>
> () Thu, 16 Oct 2014 13:15:24 +0300
> 
>    >  The XDrawRectangle and XDrawRectangles functions draw the
>    >  outlines of the specified rectangle or rectangles as if a
>    >  five-point PolyLine protocol request were specified for
>    >  each rectangle:
>    > 
>    >    [x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y]
>    > 
>    > So if you use the glyph width directly, the resulting rectangle
>    > drawn will invade the next character cell by one pixel.
> 
>    The last sentence is your interpretation, because the
>    documentation you cite does not explain what exactly it means by
>    "the outlines of the rectangle".  That is, it doesn't say whether
>    the 1-pixel border of the outline exceeds the x+width coordinate,
>    or ends at it.  And that's the crucial point here.
> 
> My interpretation is informed by the word "PolyLine" (and general
> experience playing w/ the X protocol[0], but that is tangential); i
> ignore the word "outline" as noise.  XDrawline(3) explains things
> in gory detail, but to summarize, pixels "around" each point in a
> "polyline" are "rendered", so the upshot (of my example) is if ‘x’ is
> 20, ‘w’ is 10, and the "line width" is 1, then the pixel at 30,y will
> be rendered (undesirable) instead of the one at 29,y (desirable).

I cannot argue with experience and facts, but please be precise in
your description: when you say "the pixel at 30,y will be rendered",
do you mean between 30 and 31, or do you mean between 29 and 30?

More importantly, if you remove the "- 1" part, per my suggested
patch, do you see a change in the cursor dimensions when you toggle a
window between selected (filled block cursor) and non-selected (hollow
block cursor) status?

>      The FrameRect function draws a border around the specified
>      rectangle by using the specified brush.  The width and height of
>      the border are always one logical unit.
> 
>    This is equivalent to what you cited from the X docs, AFAIU.
> 
> I think it hinges on what how "the specified rectangle" is specified.

This sentence didn't parse.  How the rectangle is specified is
described on the same page, so you've probably read that already.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]