Request: implement Manuel de Codage for multilingual support


#1

While Unicode is great, it can’t support all the languages. One of languages that is not covered is Egyptian. While Unicode has code-points for Egyptian characters (U+13000…U+1342F), it doesn’t allow placing them in a layout that is required to create orthographically correct texts.

Luckily, there is an industry standard for encoding Egyptian, Manuel de Codage. So, EasyRPG just needs to support Manuel de Codage. Manuel de Codage is the best solution because:

  • it is easy-to-use, and can be typed on any Latin keyboard,
  • it is familiar, as it is used by most word-processing software like JSesh, WinGlyph, MacScribe, Glyphotext, Hierowriter, Glyphomat, HieroTex et al.

Unfortunately, Manuel de Codage uses the same Latin characters as Unicode (‘r’ can encode both the glyph ‘mouth’ and the Latin letter ‘r’), so we need a way to switch between Manuel de Codage and Unicode. This can be done two ways:

  • a default switch in RPG_RT.ini,
  • a code in the message to switch from MdC to Unicode and back.

Perhaps the two solutions would be combined to cater for the majority of use cases. E.g. the first solution would work better for people making the game completely in Egyptian (including menus, battle messages and so on), the second would work for those wishing to add a few Egyptian words inside the English text.

For the rendering code, we perhaps will need several variants of each character, because it can be stretched vertically and horizontally. I think three versions would be enough: 100%, 50% and 33%. We can add those characters to Shinonome (perhaps stretched versions would be put to a private-use area), or we can use Freetype + font like Aegyptus (unfortunately, we won’t be able to use Harfbuzz for layout).

Here is an example of how it could look like with bitmapped fonts:

This would be enough to support basic Egyptian texts. Later, it might make sense to add variable font sizes, hieratic and demotic scripts, vertical columns, coloured character fonts (might also be useful for emoji?) and user-defined characters.


#2

Lets call this ExFont vNext :smiley: