BWTC32Key, UnifontEX, and Unicode: The Magic of Technology Localization.

Let's get some stuff out of the way: I'm an American (at the time of writing), and my Japanese skills are definitely limited, and as such, this post is in English. I'm also aware that some of the terms I use sometimes don't get interpreted perfectly even by native English speakers, so there may be certain terms used in this post that get lost in translation. 

With that out of the way, the main goal of this post is to talk about Unicode, but in particular some less-common ways of working with it, and why those ways are actually useful. 

[BWTC32Key](http://b3k.sourceforge.io) is, to put it mildly, using Unicode in a way that conveys no linguistic meaning (unless you feed it text). What it *does* do is heavily compress data, then optionally encrypt it, and then efficiently encodes it into text, canonicallly UTF16 (which is how the compression doesn't get canceled out, because you can store 15 bits of data per 16-bit character cleanly with UTF16, something not otherwise possible with OTHER means of storing Unicode.) The research that went in to making it (and critical research at that), is what ended up in me finding Qiita in the first place. Now, a combination of heavy compression, encryption, and binary-to-text encoding in a single package can be quite useful for a whole host of purposes. The single best use of it is as a password generator and vault (it runs in HTML5 browser JavaScript, and is completely usable offline by just downloading the page.) The passwords it creates are much more secure than the passwords that even many Japanese websites support. Apparently *no* website I've tried (with the possible exception of certain Mastodon or Lemmy instances, most likely ones that are not geared towards Westerners) supports using unlimited-length Unicode passwords, which the U.S. government says is an absurd restriction, but if anything fully supported them (meaning not requiring UTF-7 and truncation), brute-forcing attacks would be MUCH harder, especially if *not* using server GPUs. Unfortunately I've not found people who get the message, even as NVidia RTX4090 and RTX5090 cards are usable for cracking passwords that many Americans and websites consider "secure". The Unicode used in this code is quite safe and doesn't do any text layout shenanigans. The vast majority of it is extended/rare Kanji, and the rest is Hangul. And on the subject of rare characters:



[UnifontEX](http://stgiga.github.io/UnifontEX) is all about rare characters. It's an extension of GNU Unifont (which is *already* highly-compatible) to be even more compatible, and to do things not done by the original creators. It even supports font formats that they don't support, some which they never supported at all, like DFONT, WOFF, WOFF2, EOT, OTB, and more (also I used FontForge as one of the main tools for making it, and UnifontEX has a LOT of stuff like math characters too, and it features quite a few OpenType tables.). Part of the many compatibility optimizations included making it show up in code editors, which regular Unifont will not do, as well as vertical text optimizations. Also it uses the Japanese glyph shapes for Kanji (because Unifont-JP has more characters, and for the record, UnifontEX is Unifont-JP 15.0.06+15.1.01 + 11.0.01 Upper due to glyph count woes), but surprisingly, I've had no complaints from Chinese users, and in fact, both Chinese and Japanese developers have starred it on Github. I also had co-authors of BWTC32Key star me there.

I humbly apologize for accidentally obsoleting Tinygma by kusano_k. 

Now onto what you can *do* with this stuff:
I've found so many uses for BWTC32Key that are complex, too many to list, so I urge you to see what you can do with it.

UnifontEX has many uses, and yes, it has emoji in it (from 2018 and before because of the currently-waning 65535 glyph limit of TrueType/OpenType). It may not have all those Private Use Area / Gaiji Powerline symbols, but in exchange, you get 65422 Unicode glyphs (a very diverse selection too). If you're ever writing a string handler, this is *great* for debugging it.

I've written A LOT of documentation on these projects. Honestly, Unicode is a complicated topic, but it isn't the only thing I've done tech projects for. I've done stuff in the creative sector.