Subject: Re: bug#48148: 27.2; ox-ascii breaks TITLE line wrongly when 2 width char is used

From: Shingo Tanaka <[email-masked]>
Date: Sun, 02 May 2021 20:33:23 +0900

Thank you for the advice.  I see that `window-text-pixel-size' returns true
displayed width but I think that's TRT for only the other bug I reported
(bug#48149).  These two bugs looks similar but the root causes are completed
different.

This bug (bug#48148) is actually caused by the difference of the width
detection methods between line 1036 in ox-ascii.el (`length') and
`fill-region'.  This is because `org-ascii-template--document-title' first
detects the title width by `length' and then tries to fill it by
`org-ascii--fill-string' which does the action by `fill-region' inside.  And
since the filling point in `fill-region' is based on `move-to-column' and it
looks like giving the same result as `string-width', I think `string-width'
is TRT for this bug.

In other words, specific to this bug, only the same width detection method as
`fill-region' is required, even if it doesn't give you the precise width
displayed.

Please correct me if I am wrong.

---
Shingo Tanaka

On Sun, 02 May 2021 18:11:41 +0900,
Eli Zaretskii wrote:
> 
> > From: Nicolas Goaziou <[email-masked]>
> > Cc: Shingo Tanaka <[email-masked]>,  [email-masked]
> > Date: Sun, 02 May 2021 10:23:34 +0200
> > 
> > > The accurate method of lining up in these cases is to use
> > > window-text-pixel-size instead.  That function will return the exact
> > > width of a string as it will displayed, in pixels, because it uses the
> > > same code as the display engine.
> > 
> > Would you mind giving an example about `window-text-pixel-size' usage in
> > this situation?
> 
> I'm not sure what kind of example is necessary.  How about if you ask
> specific questions about the arguments of that function which you
> don't understand clearly how to use?
> 
> > AFAIU, `window-text-pixel-size' returns the size of the window
> 
> No, it returns the size of _text_ when displayed in a window.
> 
> > Note that `text-width' in the code above is not related to the width
> > of the window, but is a maximum number of allowed characters on a
> > line.
> 
> I didn't mean text-width, I meant the use of string-width: it should
> be replaced by a call to window-text-pixel-size.