Bug 157696 - NVDA doesn't announce spelling error for words when reading line in Writer
Summary: NVDA doesn't announce spelling error for words when reading line in Writer
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: UI (show other bugs)
Version:
(earliest affected)
24.2.0.0 alpha0+
Hardware: All All
: medium normal
Assignee: Michael Weghorn
URL:
Whiteboard: target:24.2.0
Keywords: accessibility
Depends on:
Blocks: a11y-Windows
  Show dependency treegraph
 
Reported: 2023-10-11 07:01 UTC by Michael Weghorn
Modified: 2023-10-23 06:35 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
Sample doc using different formatting attributes and misspelled words (26.20 KB, application/vnd.oasis.opendocument.text)
2023-10-12 11:57 UTC, Michael Weghorn
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Weghorn 2023-10-11 07:01:33 UTC
Initially reported on the a11y mailing list, quoting from there [1]:

> My second point is about automatic spell checking. I find that my
> screen reader will only inform me of a spelling error if the cursor
> happens to land on the word. I don't know if I can make it any
> clearer, but for instance if reading a line back in this email, NVDA
> will announce "spelling error" each time it encounters a mis-spelled
> word. In LO writer, I will only be told each mis-spelled word when the
> cursor is on it. Pretty little thing this, but it would be nice if it
> could be corrected."

and additional information from a follow-up email in the thread [2]:


> I can reproduce this, e.g. with a paragraph containing this text:
> 
> "Hello world, wrrong spelling."
> 
> Moving to that paragraph using the cursor up/down key, NVDA announces "spelling error" when using Word right away, but not for Writer. 

Steps to reproduce:

1) make sure to have a dictionary installed, like https://extensions.libreoffice.org/en/extensions/show/english-dictionaries
2) start NVDA screen reader
3) start Writer
4) type "Hello world, wrrong spelling." for first paragraph
5) double-check that "wrrong" is visually marked as having a spelling error (red underline)
6) hit Enter to create a second paragraph
7) press Up key to move to the first paragraph again

Actual result:

NVDA announces the text without indicating that there is a spelling error in the word "wrrong", just says: "Hello world, wrrong spelling."

Expected result:

NVDA should indicate that there is a spelling error in the word "wrrong", as it does when taking the above steps in MS Word instead:
"Hello world,   spelling error  wrrong spelling."


NVDA 2023.2

Version: 7.6.2.1 (X86_64) / LibreOffice Community
Build ID: 56f7684011345957bbf33a7ee678afaf4d2ba333
CPU threads: 8; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win
Locale: en-US (en_DE); UI: en-GB
Calc: threaded



[1] https://listarchives.libreoffice.org/global/accessibility/msg01055.html
[2] https://listarchives.libreoffice.org/global/accessibility/msg01057.html
Comment 1 Michael Weghorn 2023-10-11 07:02:24 UTC
Self-confirming, since it was originally reported by another user on the a11y mailing list.

I'm currently looking into this.
Comment 2 Commit Notification 2023-10-12 10:19:17 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/b9b3d49dfe2de62612cdebbc465c8322acf410b1

tdf#157696 vcl a11y: Move qt's translation to IA2 text attrs for reuse

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 3 Commit Notification 2023-10-12 10:20:20 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/c2a90307d507817a4cc7741a1a7ade062fdb390b

tdf#157696 a11y: Escape commas in IAccessible2 color text attribute

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 4 Michael Weghorn 2023-10-12 11:57:52 UTC
Created attachment 190168 [details]
Sample doc using different formatting attributes and misspelled words

LO on Windows currently does not expose spelling errors via text attributes.
NVDA uses the red underline for misspelled words to detect misspelled words.

LO also doesn't specify the character attributes it currently reports according to the IAccessible2 text attribute specification [1], but uses its own attribute names and values, which NVDA evaluates in its LibreOffice-specific app module [2].

I think the best way forward is to switch to adhere to the IAccessible2 specification and report the "invalid:spelling" attribute for spelling errors.
That also needs a modification in NVDA to longer expect the custom attributes.

Once that's implemented, we'll see whether that already makes the announcement of misspelled words work as expected or more is needed.

Attached is a sample document with the formatting attributes that NVDA currently evaluates.
I'm currently getting over these and implementing what's needed so this will still work after switching to the IAccessible2 text attributes.


[1] https://wiki.linuxfoundation.org/accessibility/iaccessible2/textattributes
[2] https://github.com/nvaccess/nvda/blob/f1c73d1d25e08c53664eb299fadc81db22c61b13/source/appModules/soffice.py#L35
Comment 5 Commit Notification 2023-10-12 20:14:24 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/807b0507563b1c54822dd302b210931297acde23

tdf#157696 a11y: Map "CharEscapement" text attr to IA2 "text-position"

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 6 Commit Notification 2023-10-13 19:09:29 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/c0a284541fad2c4609d418a5002550f6f9581d51

tdf#157696 a11y Translate "CharStrikeout" to IA2 equivalents

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 7 Commit Notification 2023-10-18 10:49:04 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/15a6e23c4fc160c50a316da3d18980a02fc10ce8

tdf#157696 qt a11y: Move handling for text attr offsets to helper

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 8 Commit Notification 2023-10-18 10:49:06 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/ec2e02cfa41510c3d30b118cbf7595c84a046d03

tdf#157696 a11y: Report spelling error via IA2 "invalid:spelling" attr

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 9 Michael Weghorn 2023-10-18 11:57:30 UTC
Pending Gerrit change to switch LibreOffice to reporting text attributes according to the IAccessible2 spec:

https://github.com/nvaccess/nvda/issues/15648

Corresponding NVDA issue and pending PR to adapt NVDA to support the "new" attributes reported by LibreOffice:

https://github.com/nvaccess/nvda/issues/15648
https://github.com/nvaccess/nvda/pull/15649

With these changes in place in local branches of LibreOffice and NVDA, the announcement of misspelled words works.
Comment 10 Commit Notification 2023-10-19 08:12:13 UTC
Michael Weghorn committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/2bf88c172c9c9d159344b95fb96073f4891a6c30

tdf#157696 wina11y: Switch from custom to IA2 text attributes

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 11 Michael Weghorn 2023-10-23 06:34:04 UTC
(In reply to Michael Weghorn from comment #9)
> Pending Gerrit change to switch LibreOffice to reporting text attributes
> according to the IAccessible2 spec:
> 
> https://github.com/nvaccess/nvda/issues/15648
> 
> Corresponding NVDA issue and pending PR to adapt NVDA to support the "new"
> attributes reported by LibreOffice:
> 
> https://github.com/nvaccess/nvda/issues/15648
> https://github.com/nvaccess/nvda/pull/15649
> 
> With these changes in place in local branches of LibreOffice and NVDA, the
> announcement of misspelled words works.

These are all merged now, so announcement works with the current development versions of both, LibreOffice (upcoming LibreOffice 24.2) and NVDA (upcoming NVDA 2024.1).

-> Closing as fixed.

(I might come up with some more changes related to text attributes for things I saw while working on this, but they're not required for the use case described here.)