Special key caps such as '*ZWNJ*' are defined in a number of places in
the source. In theory, we could DRY these definitions out, but that
would add a number of unhelpful dependencies or take considerable time
to implement. So, for now I opted to write a unit test to compare the
definitions as found in the following files, treating web's definition
as primary:
* web/src/engine/osk/src/specialCharacters.ts
* developer/src/tike/xml/layoutbuilder/constants.js
* developer/src/kmc-kmn/kmw-compiler/constants.ts
* developer/docs/help/reference/file-types/keyman-touch-layout.md
* core/include/ldml/keyman_core_ldml.ts
Note that the keyman_core_ldml.ts file changes are not included in this
commit, and hence the unit test for it is currently skipped. This will
be enabled in a subsequent commit along with other KMX+ changes to
support epic/embed-osk-in-kmx.
Test-bot: skip
PR #13860 fixed a similar error by adding a check for NaN. However, it
missed doing it for `layoutWidth` and only changed `layoutHeight`. This
PR adds a similar check to `layoutWidth` and will thus fix the error
we're still seeing in Sentry.
Also add unit tests for both methods.
User Testing
============
TEST_INUKTITUT_KEYBOARD: Using Keyman for Android, install the
`inuktitut_pirurvik` and verify that no error notifications appear.
Fixes: #14108
Fixes: [KEYMAN-WEB-RA](https://keyman.sentry.io/issues/6579536471/?referrer=github_integration)
This change should dramatically cut down on the number of heavily-mismatched paths that the correction-search engine builds during operation. Now, whenever input characters are being matched against a character from the lexicon, they're all replaced, **together**, with a single sentinel character instance that represents them all together - with their exact accumulated probability mass.
Doing so dramatically cuts down on the rate of memory use expansion during correction-search's operation... and likely cuts down on execution time on average, allowing for more potential corrections to be considered.
These methods place a set of input Transforms into multiple subsets with common properties. They're designed for use in upcoming enhancements to the predictive-text worker's correction-search approach.
I tried to get a multi-config setup to split off the tests that caused compilation issues in a prior commit, but I never got it working. It's best to simplify and remove the thing that didn't work.
Removes a number of unused functions from the file, renames remaining
functions to match our builder script prefix patterns, removes unused
imports from various build scripts (e.g. Android).
Fixes: #14453