billforsternz / tarrasch-chess-gui

A portable, simple, desktop workbench for chess players and analysts
MIT License
95 stars 19 forks source link

Em dash causes exception in Linux #20

Closed friscodelrosario closed 4 years ago

friscodelrosario commented 4 years ago

Rather than learn the Unicode for an em dash ( — ) , or even modify my keys to type one, I copy/paste one from a bookmark tag. This throws an exception.

No problem to use a different character in place of the em dash, and edit Screenshot from 2020-09-03 00 53 39 later.

billforsternz commented 4 years ago

It turns out that aspects of this problem had troubled me long before. Sadly I couldn't fix the problem cleanly, I was just led to a nasty rabbit hole that could absorb an infinite amount of time. Briefly; 1) wxWidgets, the GUI platform, has a very complicated but no doubt capable collection of capabilities to allow text manipulation of non-Ascii text (Ascii text comprises 95 basic characters, digits 0-9, upper and lower case 26 character alphabet, all the basic punctuation. Ascii is sufficient for most things, especially in the Anglosphere, but characters like em-dash are not Ascii and unfortunately extending technology that was originally Ascii only causes complications. 2) By some judicious wrangling, without fully understanding wxWidgets I managed to get wxWidgets to let users enter and edit ANSI extensions on Windows. ANSI adds something like 100 extra non-Ascii characters, including em-dash. Unfortunately ANSI is itself a stopgap, the vastly more capable Unicode (more or less unlimited extensions, to all the world's alphabets including Asian languages etc) is much closer to the promised land. 3) The ANSI compromise is a decent one, for Eurocentric applications at least, and most chess software graduated from ASCII only to ANSI extensions. Tarrasch on Windows is comfortable in that realm 4) wxWidgets supports ANSI but really wants us to go to Unicode. I want to smoothly support ANSI and Unicode too, but it's a big job. I am motivated to do it, because of recent database developments. I'll get there first on Windows. 5) Meantime, my ANSI wrangling from 2) never worked on Linux because of wxWidgets issues I don't yet understand. In fact I needed to put some Linux specific code in to stop Linux crashing if you tried to paste non Ascii text. 6) Something has changed in wxWidgets which meant that by kludge in 5) stopped working and caused a crash (this issue) instead of preventing a crash. 7) I have now repaired the kludge (at least in source code - recompile for Linux) and once again an attempt to paste non-Ascii text in Linux won't work (you'll get '?' text instead), but at least it won't crash! 8) End game goal is smooth Unicode and/or ANSI support in Windows and Linux. Understanding what wxWindows is actually doing will be a big step along the way. But I can't do that on demand. Sorry.