Subject: bug#34018: EWW: Face property changes around newlines

From: "T.V Raman" <[email-masked]>
Date: Wed, 09 Jan 2019 07:01:02 -0800

Stefan Monnier <[email-masked]> writes:

Hi Stefan --

Here is the problem; it's not that easy from the emacspeak side -- see
below.

Emacspeak uses the following algorithm to split text into chunks before
sending to the TTS engine.

1. Split by clauses -- where "clause" is determined by the buffer's
syntax table.

2. Next, split the clause into chunks based on property changes -- since
"changing voice params on any TTS engine triggres a clause boundary.
3. (2) is achieved by calling next-single-property-change

4. Result -- in EWW buffers, next-single-property-change always goes to
the newline  char when on text that isn't otherwise decorated
i.e. variable-pitch->nil for the 'face property.

For now I discovered the shr-use-fonts option and turned it off --- that
appears to fix my problem in large part. 

>> EWW appears to work differently -- if you take a plain paragraph that
>> spans multiple lines, the text uses "variable-pitch" as  the face
>> property -- except that that property is not set on the newline
>> characters within the paragraph.
>
> I'm not sure how hard/easy it may be to change SHR (used by EWW) to do
> that, but I have the impression that it may be non-trivial.
>
>> I'm sure this makes no visible difference to the layout -- but it
>> affects Emacspeak's logic for breaking content into meaningful
>> clauses.
>
> Maybe it would be simpler to change Emacspeak so it ignores face
> properties on whitespace?
>
>
>         Stefan
>
>

--