Skip to content

Conversation

@mcdurdin
Copy link
Member

@mcdurdin mcdurdin commented Feb 3, 2026

When normalizing, we need to stop processing on an NFC boundary, not an NFD boundary, to support normalizations such as in Bengali, where appending U+09D7 to a context of U+0995 U+09C7 should result in U+0995 U+09CC.

The specification is unclear on this; see https://unicode-org.atlassian.net/browse/CLDR-19218

This also updates the ldml keyboard unit test suite to support running in full NFC mode (used in all Engine implementations) as well retaining the NFD mode (now only used by the debugger).

Side note: the Bengali normalization failure case was picked up by the improvements to the unit test suite, proving once again that good tests are so valuable.

Fixes: #15491
Fixes: #15505
Follows: #15488
Cherry-pick-of: #15506
Relates-to: CLDR-19218
Test-bot: skip

mcdurdin and others added 2 commits February 4, 2026 06:15
When normalizing, we need to stop processing on an NFC boundary, not an
NFD boundary, to support normalizations such as in Bengali, where
appending `U+09D7` to a context of `U+0995 U+09C7` should result in
`U+0995 U+09CC`.

The specification is unclear on this; see https://unicode-org.atlassian.net/browse/CLDR-19218

This also updates the ldml keyboard unit test suite to support running
in full NFC mode (used in all Engine implementations) as well retaining
the NFD mode (now only used by the debugger).

Side note: the Bengali normalization failure case was picked up by the
improvements to the unit test suite, proving once again that good tests
are so valuable.

Fixes: #15491
Fixes: #15505
Follows: #15488
Cherry-pick-of: #15506
Relates-to: CLDR-19218
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
@github-project-automation github-project-automation bot moved this to Todo in Keyman Feb 3, 2026
@keymanapp-test-bot keymanapp-test-bot bot added the user-test-missing User tests have not yet been defined for the PR label Feb 3, 2026
@keymanapp-test-bot keymanapp-test-bot bot changed the title fix(core): normalization segment should end on NFC boundary, not NFD 🍒 fix(core): normalization segment should end on NFC boundary, not NFD 🍒 🏠 Feb 3, 2026
@keymanapp-test-bot keymanapp-test-bot bot added this to the A19S22 milestone Feb 3, 2026
@github-actions github-actions bot added core/ Keyman Core cherry-pick Change already merged into another (stable) branch fix labels Feb 3, 2026
@keymanapp-test-bot keymanapp-test-bot bot removed the user-test-missing User tests have not yet been defined for the PR label Feb 3, 2026
Copy link
Contributor

@darcywong00 darcywong00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Base automatically changed from fix/core/cherry-pick/15487-bksp to stable-18.0 February 4, 2026 02:53
@mcdurdin mcdurdin merged commit 0c071bb into stable-18.0 Feb 4, 2026
21 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in Keyman Feb 4, 2026
@mcdurdin mcdurdin deleted the fix/core/cherry-pick/15491-15505-bengali-normalization-and-tests branch February 4, 2026 02:54
@keyman-server
Copy link
Collaborator

Changes in this pull request will be available for download in Keyman version 18.0.246

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-pick Change already merged into another (stable) branch core/ Keyman Core fix stable

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants