Skip to content

English rules dated at 2026/06/15 or 2026/06/30 are not compatible with NVDA2026.1.1 #625

Description

@hjy1210

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'>&#x2063;</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'>&#x2063;</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'>&#x2062;</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'>&#x2062;</mo>
        <mn>2</mn>
        <mo data-changed='added'>&#x2062;</mo>
        <mrow data-changed='added' data-chem-equation='5'>
          <mi mathvariant='normal' data-chem-element='1'>H</mi>
          <mo data-changed='added'>&#x2063;</mo>
          <mi mathvariant='normal' data-chem-element='1'>I</mi>
          <mo data-changed='added' data-function-guess='true'>&#x2063;</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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions