Up to Main Index Up to Journal for October, 2016 JOURNAL FOR SUNDAY 16TH OCTOBER, 2016 ______________________________________________________________________________ SUBJECT: When is 'Jаne' <> 'Jane'? Plus an update! DATE: Sun 16 Oct 21:53:30 BST 2016 Warning! This article uses some Unicode characters which your browser may not be able to display depending on the fonts you have installed. In which case it would further illustrate the issues I'm describing. First of all though, I've Just pushed a number of changes out to the public dev branch :) The changes are mostly to do with cleaning up the code for the frontend. The frontend struct stash field has now been dropped and the frontend code is now split into separate sub frontends each with their own type and local storage. So no more stuffing random data into a map[string][]byte bucket! There is also a bug fix for the RecordJar.Read method for reading .wrj files. Specifically it deals with having leading blank lines in the free text block after the initial blank line separator. Before this fix the wrong number of blank lines were added to the text block. When creating accounts and players the frontend now checks to make sure that a player's name only contains the letters 'a'-'z' or 'A'-'Z'. There is a simple reason for this - you need to be able to type a player's name in order to be able to interact with them! For example if a players name had diacritics as in Zoë how many people could type that on their keyboards? Or how about a name with foreign characters like Александр? It might be easy for someone if they use a native language keyboard but not so easy for others. Then there is also the issue of fonts. Would people even be able to display all of the characters properly in Александр? How about 芳? The last one is also a wide character which would probably mess up formatting as it should be double width. There is also the issue of homographs[1] - letters which look the same. An example is 'Jаne' and 'Jane' which look the same but are different. In the first a Cyrillic 'а' is used. In the second a Latin 'a' is used. Then there is the issue of Unicode normalisation. For example is 'é' a single rune or a latin 'e' combined with an acute accent as in 'é'? Unicode normalisation goes some way to solving this particular issue[2]. When you start looking at text you soon realise there is no such thing as just 'plain' text. What we mean by plain text is really ASCII text. Printable ASCII characters from a space (' ' or ASCII 0x20) to a tilde ('~' or ASCII 0x7E). A measly 95 ASCII characters: a-zA-Z0-9 plus !"#$%&'()*+,-/:;<=>?@[\]^_`{|}~ . There is also no need for numbers in names. Instead of having to use John7 there can just be seven Johns. Name also don't have any whitespace. For now the name should just be the players first name. There are plans to add family names at a later date. Family names would allow for lineages, family trees, heirs, heirlooms and a host of other exciting features. So please don't try to be clever and use something like JohnSmith as a name! Only 14 days left till Halloween... /\oo/\ -- Diddymus [1] Homographs: https://en.wikipedia.org/wiki/IDN_homograph_attack [2] Go Blog, text normalisation: https://blog.golang.org/normalization Up to Main Index Up to Journal for October, 2016