I was just reading about China's problem with rare given names and the absence of them in computer databases? For example, there was an individual with the given name pronounced "cheng" composed of 马 3 times horizontally.

Why hasn't software been developed to select a decomposed structure (e.g. 3 radicals event spaced and concatenated horizontally) and then to type the names of the individual radicals in place? If such software was developed, how many rare characters would it take care of?

Seems like it would certainly be a challenge for a developer to create software that scaled all radicals correctly (and the thousands of already extant compound characters as well), but a competent programmer could surely accomplish this at least to some level of satisfactory functionality.

If such software already exists, what is it?

2 Answers 2


enter image description here

Well, actually many input tools like Sogou and MSpinyin have already had such functions.

I don't know a lot of the database you referred to, but I guess it is the database of China's household registration department. I guess, in that system, not only do you need to register these antediluvian names, but you also have to select these obscure characters from the database, kinda like selecting from the menus.

  • My microsoft pinyin doesn't have the cheng character in question. I'll look into Sogou. However, I think I'm asking for a different kind of software. One that composes an image of the character by choosing a structure (e.g. 3 concatenated horizontally) and then the subcomponents (e.g. 3 ma's). I'd like it to have the ability to create new characters as well, just by choosing the structure and the sub-components.
    – jdods
    Jun 14, 2017 at 20:29
  • In thinking about the above comment though, I think I have just found the answer... the answer is that such software would have to compose an image and wouldn't be able to generate a unicode representation on the spot. Doing the latter would probably require a completely new character encoding scheme that allows enough space to be open ended so ass to allow for enough new characters to be generated for a sufficiently long period of time.
    – jdods
    Jun 14, 2017 at 20:29
  • such input tools do exist, brushstroke input, which index Chinese characters not according to pinyin but brush strokes. I'm afraid most of these tools are only used by and available to cellphone users now. Jun 15, 2017 at 0:37
  • But those tools can only match brushstrokes to a fixed list of characters, they are unable to create new ones.
    – jdods
    Jun 15, 2017 at 2:46
  • technically, every Chinese character, as long as it is included in Chinese dictionaries, can be decomposed and input with basic strokes. Jun 15, 2017 at 3:27

There certainly have been approaches like the one you described. There's a relatively early prototype by Hobby and Goan (http://www.tug.org/TUGboat/Articles/tb05-2/tb10hobby.pdf) for a Chinese font defined in MetaFont (TeX's font description language) and another later attempt by a guy named Laguna (https://www.tug.org/TUGboat/tb26-2/laguna.pdf). There's a commercial solution by WenLin (http://guide.wenlininstitute.org/wenlin4.3/Character_Description_Language, https://wenlin.com/cdl, https://en.wikipedia.org/wiki/Chinese_character_description_language) that I can't judge. I remember there were attempts at Academia Sinica, Taiwan, in the 1980s and 90s to produce software that could generate character images on the fly from abstract definitions; I believe those were intended to be used for TV subtitles.

Furthermore, there are specialized operators defined in Unicode to describe the structure of characters called Ideographic Description Characters (https://en.wikipedia.org/wiki/Ideographic_Description_Characters_(Unicode_block) and http://www.unicode.org/versions/Unicode9.0.0/ch18.pdf#page=23). Using IDCs, it's straightforward to describe many characters; here's an excerpt of data provided by http://kanji-database.sourceforge.net (https://github.com/cjkvi/cjkvi-ids):

U+6946  楆 ⿰木要
U+6947  楇 ⿰木咼
U+694B  楋 ⿰木剌
U+245FA 𤗺 ⿰片辟
U+24602 𤘂 ⿰片夢
U+9E05  鸅 ⿰睪鳥
U+9E09  鸉 ⿱楊鳥
U+9E0A  鸊 ⿰辟鳥
U+9E0B  鸋 ⿰寧鳥
U+9E0C  鸌 ⿰鳥蒦

The above are the shortest meaningful formulas that can be given for each character; below you can see a sample of how I recursively resolved formulas to obtain the longest meaningful formulas; these of course depend on exactly which components you declare to be basic (which is often a bit arbitrary; e.g. 豆 can easily be further decomposed):

乾 ⿸⿰𠦝𠂉乙
亀 ⿱𠂊⿱日电
亂 ⿰(⿱爫龴⿵冂⿱厶又)乚
亃 ⿰⿱米⿰夕㐄乚
亄 ⿰(⿱士冖豆)乚
亘 ⿱一⿱日一
些 ⿱⿰止匕二
亟 ⿱⿻了⿰口又一
亢 ⿱亠几
交 ⿱亠父
亨 (⿱亠口了)
亩 ⿱亠田
享 (⿱亠口子)
京 (⿱亠口小)
亭 (⿱亠口冖丁)
亮 (⿱亠口冖几)
亵 (⿱亠⿰扌丸𧘇)

It would be great if there was software to compose character shapes from these formulas; I certainly would love to have such a facility. However, all the attempts to write a character generator that I know of either use a much more concrete representation giving the metrics and locations for each component, or they produced extremely ugly shapes and never went beyond proof-of-concept.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.