This is a reformulate of issue #622, to make scenario more clear.
In tests/Languages/en/intent.rs, there is a test:
#[test]
fn intent_prob_x() -> Result<()> {
init_logger();
let expr = "<math>
<msup intent='$op($arg)'>
<mi arg='arg'>x</mi>
<mi arg='op' intent='probability' mathvariant='normal'>P</mi>
</msup></math>";
test("en", "ClearSpeak", expr, "probability of x")?;
return Ok(());
}
Let us name above MathML as mathml_A.
In tests/Languages/en/chemistry.rs, there is a test:
#[test]
fn mhchem_barbed_equilibrium() -> Result<()> {
let expr = "<math>
<mrow data-mjx-texclass='ORD' data-chem-equation='14'>
<mrow data-changed='added' data-chem-equation='3'>
<mmultiscripts data-chem-formula='1'>
<mi data-mjx-texclass='ORD' mathvariant='normal' data-chem-element='1'>H</mi>
<mn data-mjx-texclass='ORD'>2</mn>
<none></none>
</mmultiscripts>
<mo data-changed='added' data-function-guess='true'>⁣</mo>
<mrow data-changed='added' data-chem-equation='1'>
<mo stretchy='false'>(</mo>
<mi data-mjx-texclass='ORD' mathvariant='normal'>g</mi>
<mo stretchy='false'>)</mo>
</mrow>
</mrow>
<mo data-chem-equation-op='1'>+</mo>
<mrow data-changed='added' data-chem-equation='10'>
<mrow data-changed='added' data-chem-equation='3'>
<mmultiscripts data-chem-formula='1'>
<mi data-mjx-texclass='ORD' mathvariant='normal' data-chem-element='1'>I</mi>
<mn data-mjx-texclass='ORD'>2</mn>
<none></none>
</mmultiscripts>
<mo data-changed='added' data-function-guess='true'>⁣</mo>
<mrow data-changed='added' data-chem-equation='1'>
<mo stretchy='false'>(</mo>
<mi data-mjx-texclass='ORD' mathvariant='normal'>g</mi>
<mo stretchy='false'>)</mo>
</mrow>
</mrow>
<mo data-changed='added'>⁢</mo>
<mover data-mjx-texclass='REL'>
<mrow data-mjx-texclass='ORD' depth='0' height='0' data-changed='added'>
<mo data-mjx-texclass='ORD' stretchy='false'>↽</mo>
<mo data-mjx-texclass='ORD'>-</mo>
</mrow>
<mrow data-mjx-texclass='ORD' displaystyle='false' scriptlevel='0' data-changed='added'>
<mo data-mjx-texclass='ORD'>-</mo>
<mo data-mjx-texclass='ORD' stretchy='false'>⇀</mo>
</mrow>
</mover>
<mo data-changed='added'>⁢</mo>
<mn>2</mn>
<mo data-changed='added'>⁢</mo>
<mrow data-changed='added' data-chem-equation='5'>
<mi mathvariant='normal' data-chem-element='1'>H</mi>
<mo data-changed='added'>⁣</mo>
<mi mathvariant='normal' data-chem-element='1'>I</mi>
<mo data-changed='added' data-function-guess='true'>⁣</mo>
<mrow data-changed='added' data-chem-equation='1'>
<mo stretchy='false'>(</mo>
<mi data-mjx-texclass='ORD' mathvariant='normal'>g</mi>
<mo stretchy='false'>)</mo>
</mrow>
</mrow>
</mrow>
</mrow>
</math>";
test_prefs("en", "SimpleSpeak", vec![("Verbosity", "Terse")],
expr, "cap h, 2, gas; plus; cap i, 2, gas; is in equilibrium with, 2, cap h, cap i, gas")?;
return Ok(());
}
Let us name above MathML as mathml_B.
We also have
- en rules in NVDA2026.1.1, name as en_rules_2026.1.1
- en rules in main branch dated at 2026/06/15, name as en_rules_0615
- en rules in main branch dated at 2026/06/30, name as en_rules_0630
We also have two libmathcat_py.pyd
We use NVDA2026.1.1 as platform to do integration test.
For mathml_A, we have following results:
-
libmathcat_2026.1.1 + en_rules_2026.1.1, read out as:probability of x
-
libmathcat_2026.1.1 + en_rules_0615, read out as:probability, and we can not navigating the formula.
-
libmathcat_2026.1.1 + en_rules_0630, read out as:probability, and we can not navigating the formula.
-
libmathcat_3.13 + en_rules_2026.1.1, read out as:probability of x
-
libmathcat_3.13 + en_rules_0615, read out as:probability
-
libmathcat_3.13 + en_rules_0630, read out as:probability
For mathml_B, we have following results:
-
libmathcat_2026.1.1 + en_rules_2026.1.1, read out as:cap h, 2, gas; plus; cap i, 2, gas; is in equilibrium with, 2, cap h, cap i, gas
-
libmathcat_2026.1.1 + en_rules_0615, read out as:cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas, and we can not navigating the formula.
-
libmathcat_2026.1.1 + en_rules_0630, read out as:cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas, and we can not navigating the formula.
-
libmathcat_3.13 + en_rules_2026.1.1, read out as:cap h, 2, gas; plus; cap i, 2, gas; is in equilibrium with, 2, cap h, cap i, gas
-
libmathcat_3.13 + en_rules_0615, read out as:cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas
-
libmathcat_3.13 + en_rules_0630, read out as:cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas
In summary, both en_rules_0615 and en_rules_0630 are not compatible with libmathcat_2026.1.1(contained in original NVDA2026.1.1) and libmathcat_3.13(contained in libmathcat_py-64-3.13-win.zip). Better libmathcat_py.pyd is in need.
This is a reformulate of issue #622, to make scenario more clear.
In tests/Languages/en/intent.rs, there is a test:
Let us name above MathML as mathml_A.
In tests/Languages/en/chemistry.rs, there is a test:
Let us name above MathML as mathml_B.
We also have
We also have two libmathcat_py.pyd
We use NVDA2026.1.1 as platform to do integration test.
For mathml_A, we have following results:
libmathcat_2026.1.1 + en_rules_2026.1.1, read out as:
probability of xlibmathcat_2026.1.1 + en_rules_0615, read out as:
probability, and we can not navigating the formula.libmathcat_2026.1.1 + en_rules_0630, read out as:
probability, and we can not navigating the formula.libmathcat_3.13 + en_rules_2026.1.1, read out as:
probability of xlibmathcat_3.13 + en_rules_0615, read out as:
probabilitylibmathcat_3.13 + en_rules_0630, read out as:
probabilityFor mathml_B, we have following results:
libmathcat_2026.1.1 + en_rules_2026.1.1, read out as:
cap h, 2, gas; plus; cap i, 2, gas; is in equilibrium with, 2, cap h, cap i, gaslibmathcat_2026.1.1 + en_rules_0615, read out as:
cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas, and we can not navigating the formula.libmathcat_2026.1.1 + en_rules_0630, read out as:
cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gas, and we can not navigating the formula.libmathcat_3.13 + en_rules_2026.1.1, read out as:
cap h, 2, gas; plus; cap i, 2, gas; is in equilibrium with, 2, cap h, cap i, gaslibmathcat_3.13 + en_rules_0615, read out as:
cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gaslibmathcat_3.13 + en_rules_0630, read out as:
cap h, 2, gas; plus; cap i, 2, gas; ᾍ2 2, cap h, cap i, gasIn summary, both en_rules_0615 and en_rules_0630 are not compatible with libmathcat_2026.1.1(contained in original NVDA2026.1.1) and libmathcat_3.13(contained in libmathcat_py-64-3.13-win.zip). Better libmathcat_py.pyd is in need.