nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 626 forks source link

Always speak dashes when in combinations with numbers and currency symbols #16676

Open Adriani90 opened 3 months ago

Adriani90 commented 3 months ago

Is your feature request related to a problem? Please describe.

In mathematical and economical publications and documents, negative number and also product prices which need to be paid are written often as follows: For -500: 500- For 50 Euros -€ 50

For the prices, the dash indicates that it needs to be paid, and it is not a refund or a cash back.

Describe the solution you'd like

-500 works properly on every symbol level, probably due to consistent implementation in synth drivers. So it seems the synth already checks if there is a number after a dash and reports the dash on every symbol level. This should also work in NVDA when the dash is

  1. After a number
  2. Before or after a currency symbol.

It doesn't have to be pronounced as "minus", but at least as "dash". This could be done in NVDA symbols handler and this would make NVDA independent of the synth used when dealing with negative numbers.

Describe alternatives you've considered

Change the symbol level for dash to "most" in general, but this will have the drawback that the dash is pronounced in many situations where users don't need to hear it (e.g. between letters, at the end of lines etc.

Additional context

The current behavior in NVDA makes it really difficult for users to read mathematical and economical documents written this way, because people have to use character by character navigation to find out whether the number is negative or not. This negative number style is commonly used in practice.

Adriani90 commented 3 months ago

cc: @masarczyk-wienfluss, @LeonarddeR

seanbudd commented 3 months ago

Specific behaviour of this could use more feedback from the community

Adriani90 commented 3 months ago

It has already, this request comes also from german and austrian community, and from people working on a professional level with such documents, including also myself. Note that at least for dash before currency symbol, voice over pronounces the negative number properly at any symbol level.

Masarczyk-Wienfluss commented 3 months ago

Hello!

Yes, in many documents we test for accessibility, especially those containing financial information, the minus sign after a number to indicate it's negative, is a common practice. Same for minus, euro, space, number. For context, I am in Austria and the documents I am referring to are in German. I think this might be specific to the German language. I have done some testing with most German-speaking synthesizers known to me that are in frequent usage. None of them apart from Code Factory's Eloquence is reading the minus sign placed after the number. The testing with the price variant where the minus precedes the Euro sign then a space and finally the value showed more variet results: Espeak: Euro 1; Microsoft One Core Voices: dash, Euro, 1; Eloquence - Euro 1; Vocalizer and Acapela read the price correctly as long as punctuation processing through NVDA is set to off. The Vocalizer voices in JAWS read those as expected as well. For the record, here is an article from the Deque blog where different variants of negative numbers in English were tested with different screen readers: https://www.deque.com/blog/ensuring-negative-numbers-are-available-for-everyone/

Adriani90 commented 3 months ago

One short note, this is not specific to german language. Romanian for example uses dashes before and after numbers and currency symbols as well.Von meinem iPhone gesendetAm 11.06.2024 um 10:37 schrieb Masarczyk-Wienfluss @.***>: Hello! Yes, in many documents we test for accessibility, especially those containing financial information, the minus sign after a number to indicate it's negative, is a common practice. Same for minus, euro, space, number. For context, I am in Austria and the documents I am referring to are in German. I think this might be specific to the German language. I have done some testing with most German-speaking synthesizers known to me that are in frequent usage. None of them apart from Code Factory's Eloquence is reading the minus sign placed after the number. The testing with the price variant where the minus precedes the Euro sign then a space and finally the value showed more variet results: Espeak: Euro 1; Microsoft One Core Voices: dash, Euro, 1; Eloquence - Euro 1; Vocalizer and Acapela read the price correctly as long as punctuation processing through NVDA is set to off. The Vocalizer voices in JAWS read those as expected as well. For the record, here is an article from the Deque blog where different variants of negative numbers in English were tested with different screen readers: https://www.deque.com/blog/ensuring-negative-numbers-are-available-for-everyone/

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

CyrilleB79 commented 3 months ago

For "500-" format: To whoever implements it: pay attention to other formulas such as ranges of years or other numbers, e.g. "2006-2024" or "500-1000".

Also when implementing this, a very important point to pay attention to is translation:

Jykke67 commented 3 months ago

At least @irrah69, who posted this issue to @burmancomp and me, is worried about how such a change would affect user’s opportunity to adjust how combinations like -50 € (in Finnish a space is added between the numeric value and currency) will be handled by NVDA in the future if handling by synthesizer will be ignored. Even I am a bit worried.

This wil be a significant drawback especially if a synthesizer with user and even app spesific interpretations like Finnish Mikropuhe is used. We wish to be able to adjust interpretations made by synthesizer as much as possible also on program/application level, which is the case now e.g. in Mikropuhe and some other synthesizers.

Every symbol should be spoken when symbol level is set to "all".

Many synthesizers do interpret too much and often incorrectly especially in languages like Finnish with case endings etc.

Masarczyk-Wienfluss commented 3 months ago

Since the issue seems to be relevant for certain languages only, (so far we know of German and Romanian), I believe it is essential to identify the ones affected and introduce these changes there since there it will be expected to pronounce these formats in a certain way. As explained in my description, some German TTS engines have this logic implemented, it just requires unticking one checkbox which is not something everyone will do.

Jykke67 commented 3 months ago

Many thanks, @Masarczyk-Wienfluss. Should probably have read your explanation more carefully before commenting.

Adriani90 commented 3 months ago

Actually the expectation is just to pronounce the dash as such, and this is relevant for every language.E.g.-£ 50 is negative 50 pounds, which currently is not possible to find out unless you use character by character navigation or by changing symbol level to all.So there is no specific pronounciation needed, but people should get the information there is a dash.It is also gcommon in alnost every language of the world to use dashes after numbers, e.g. for subtraction. So the dash as such has very important function when used in combination with numbers and currency symbols. Screen readers like Voice Over already does this better, I think NVDDA should do it as well.I think the discussion about languages is misleading here and will not lead to a satisfactory result.Von meinem iPhone gesendetAm 12.06.2024 um 11:06 schrieb Masarczyk-Wienfluss @.***>: Since the issue seems to be relevant for certain languages only, (so far we know of German and Romanian), I believe it is essential to identify the ones affected and introduce these changes there since there it will be expected to pronounce these formats in a certain way. As explained in my description, some German TTS engines have this logic implemented, it just requires unticking one checkbox which is not something everyone will do.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Masarczyk-Wienfluss commented 3 months ago

Hello @Adriani90 Thanks for your input. Indeed, I didn't think of the subtraction example. Thanks for bringing that up. I simply thought of negative numbers being marked with the minus sign at the end of the number string.

burmancomp commented 3 months ago

There is widely used SAPI TTS Mikropuhe in Finland. There is versatile interpretation system in Mikropuhe. User can modify how given characters an phrases are spoken in given contexts. This is also possible to do basis of application which uses Mikropuhe. For example, for nvda and jaws there can be different interpretation files.

Because Mikropuhe is widely used in Finland, and it has its own interpretation system which can be used for thiskinds of cases, there must be possibility to ignore rules how something should be spoken. Thus user can decide what he/she prefers.

As to other languages and synthesizers I rely on opinions of their users.

Jykke67 commented 3 months ago

As @burmancomp has written, it must be possible to ignore rules how something should be spoken even in the future.

Adriani90 commented 3 months ago

This. could be easily done via a checkbox in NVDA voices settings. When enabled, NVDA always speaks dashes when in combination with numbers and currency symbols When disabled, NVDA honors the synthesizer specific implementation.Von meinem iPhone gesendetAm 14.06.2024 um 11:51 schrieb Jykke67 @.***>: As @burmancomp has written, it must be possible to ignore rules how something should be spoken even in the future.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

jj-a11y commented 3 months ago

Hi. I am remediating PDF document with accounting information. By default, negative numbers are completely ignored. If I use to read most punctuation settings, I can hear 'dash' - for numbers it is still very confusing. Is there a way to consistently represent negative numbers? I see requests for this since at least 2018. I am using NVDA 2023.3 on windows 11, English language document.

Jykke67 commented 3 months ago

What happens if Symbol level is set to all? Does it make any difference?

If there has been requests for this since 2018, one may just ask why?