I hope that this post is helpful for your current spellcheck discussion.
You can boil all then down to this simple example:
What happens is, that the "ä" is translated into pieces where one of them is interpreted as being a space character in:
OnlineSpellChecker.cpp, method OnlineSpellChecker::OnEditorChangeTextRange(cbEditor* ctrl, int start, int end) const, line:
if ( SpellCheckHelper::IsWhiteSpace(ch) )
...with:
bool SpellCheckHelper::IsWhiteSpace(const wxChar &ch)
{
return wxIsspace(ch) || wxIspunct(ch) || wxIsdigit(ch);
}
The character "ch" for an "ä" is actually not a single one but multiple on of them "falsifies" IsWhiteSpace so the method bails out. You can see nicely if you set a breakpoint there.
Now I am not sure how to solve this (whether its scintilla or us), its not a simple issue... Do you mind to file a bug report on SF?