Description
Until NVDA 2024.4.2, ordinal numbers were normally spoken in Brazilian Portuguese, while the beta versions of the 2025.1 series ordinal numbers in Brazilian Portuguese are no longer spoken by default, making the reading experience with NVDA bad in this type of situation. This issue also affects the Spanish language.
In English the ordinal numbers have suffixes with different letters after the digits, example, 1st, 2nd, 3rd, 4th, etc., in Portuguese it is simpler, there are only two types of suffix for ordinal numbers, feminine ordinal indicator ª (U+00AA) and masculine ordinal indicator º (U+00BA), examples, 1ª, 1º, 2ª, 2º, 3ª, 3º, 4ª, 4º, etc., the proper pronunciation of ordinal numbers with such symbols is implemented by default in speech synthesizers in Brazilian Portuguese (eSpeak NG and others).
In addition to the problem with ordinal numbers, in the Portuguese language there is an abbreviation that uses the ordinal symbol that is also no longer spoken, "nº" and "Nº", they are the abbreviations of the word "number" in Portuguese, instead of being spoken number "número" with unicode normalization started to speak "no" (in Portuguese "no" means "in the" in English and other equivalent expressions, very different from the word "number").
This problems is in the unnecessary unicode normalization of the U+00AA and U+00BA characters, which instead of passing to the synthesizers the character ª (U+00AA) and º (U+00BA) is sending in their place the letters A and O, this is not the same thing as ª and º, making the synthesizers in Portuguese start to speak "1 A" instead of first "primeira", "2 O" instead of second "segundo", etc.
Keeping unicode normalization enabled is very useful, just put an exception to not normalize the characters ª (U+00AA) and º (U+00BA) and the problem will be solved for the Portuguese and Spanish languages.
Steps to reproduce:
- Use a voice in Brazilian Portuguese (eSpeak NG synthesizer is recommended);
- Try to read these ordinal numbers in Portuguese (digits followed by symbols ª and/or º) with NVDA, using Say All command or control+rightArrow/leftArrow: 1ª, 1º, 2ª, 2º...
Actual behavior:
When reading the ordinal number in Portuguese "1ª" NVDA says "1 a", number "2º" it says "2 o"...
Expected behavior:
When reading the ordinal number in Portuguese "1ª" NVDA must say "primeira", number "2º" it must say "segundo" ...
NVDA logs, crash dumps and other attachments:
n/a
System configuration
NVDA installed/portable/running from source:
Installed.
NVDA version:
2025.1 beta 1 and higher, 2025.1 beta 5.
Windows version:
11, 24H2, 26100.4061.
Name and version of other software in use when reproducing the issue:
It happens globally, any text editors, any web browsers...
Other information about your system:
n/a
Other questions
Does the issue still occur after restarting your computer?
Yes.
Have you tried any other versions of NVDA? If so, please report their behaviors.
Until NVDA 2024.4.2, ordinal numbers are normally spoken in Brazilian Portuguese
If NVDA add-ons are disabled, is your problem still occurring?
Yes.
Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?
Yes.