2

I would essentially perform the inverse of this question: I would like to combine multiple radicals into a single character, disregarding if they actually exist or not. Does such a tool exist?

Ideally I should be able to input a string of Ideographic Description Characters and radicals and it should output a character with these components.

For example, biáng is encoded by Adobe as ⿺ 辶⿳穴⿰月⿰⿲⿱幺長⿱言馬⿱幺長刂心 (described here, where it seems they have an internal tool for this). Another example could be ⿳立日心 turning into .

1

2 Answers 2

5

The closest thing I can think of 字统 is https://zi.tools. (There's also 字海 http://www.yedict.com which you cannot search Ideographic Description Character sequence and GlyphWiki which I trust much less.)

You can search an Ideographic Description Character sequence in 字统 and it will automatically directs to the corresponding character page. For example, searching ⿳立日心 will lead you to the page of 意. These would satisfy ad hoc use.

If the character exists but not encoded in Unicode, there's not single character and 字统 draws it with html-svg.

In 字海 you cannot search the IDC sequence but on each page of the character, the IDC sequence is also given.

I would like to combine multiple radicals into a single character, disregarding if they actually exist or not.

I might be wrong but is it technically impossible to output a single character if it doesn’t exist? Pairing with a specific font, those characters could be mapped to PUA. But this is arbitrary. The IDC sequence is also not standardized. For example, 字统 gives a different one for biang2 𰻞. By the way, this character is now in Unicode Ext-G.

A more realistic goal is to set eyes on only the existing characters that are Unicode-coded.


I don't have the data from 字统 but since they don't have a robots protocol, it's safe to scrawl their website. They have the IDC sequence for all characters, Unicoded or not.

They have one page for each character. Click on the big glyph will copy the single character or the IDC sequence, and the IDC sequence is also given as a string under the glyph. For example, enter image description here

After you get a mapping from the IDC sequence to the character, you can easily build a rime input schema. That way you'll get a 输入法. Or write a small python script to use the mapping on command line.


If you want to save the trouble of scrawling the website, try https://github.com/hfhchan/ids, "A list of Ideographic Description Sequences (IDS), created manually or by exporting compositional data from glyphs made under the hkcs namespace on GlyphWiki." Another one is https://github.com/cjkvi/cjkvi-ids. The data are in txt files and look like

U+7E2E 縮 ⿰糸宿

U+8E5C 蹜 ⿰𧾷宿

3
  • "A more realistic goal is to set eyes on only the existing characters that are Unicode-coded." yea, but this was mainly for a conlanging project, which (for some absurd reason) I decided to use arbitrary combinations of Chinese radicals for its writing system.
    – bigyihsuan
    Oct 15, 2022 at 1:16
  • Actually zi.tool embeds a character composition tool from ids, it redirects to the existing ideograph if it already encoded, otherwise it will generate one (in svg format) based on Kage engine. I think you could point this out as well. Oct 29, 2022 at 13:17
  • Step 1: check babelstone.co.uk/CJK/IDS.TXT , maybe the character is already encoded. Oct 30, 2022 at 8:25
3

The Chinese Character Wiki has a function called Mutant character builder, which can create things like:

enter image description here

You input whatever components you want, and can shift and stretch them, and it gives you the vector graphics SVG, which can be converted into an image using various software. I used tikz in LaTeX to get the above image; specifically, the code is:

\documentclass[crop]{standalone}

\usepackage{tikz}
\usetikzlibrary{svg.path}

\begin{document}

\begin{tikzpicture}[rotate=0, scale=0.3]

\draw[fill=black!40,ultra thick] svg "M 247 577 Q 276 644 282 656 Q 286 661 283 666 Q 280 671 265 680 Q 254 686 249 684 Q 242 683 243 675 Q 251 598 174 506 Q 169 501 165 496 Q 142 470 84 424 Q 80 420 84 418 Q 88 417 93 420 Q 133 438 167 467 Q 209 500 242 565 L 247 577 Z";
\draw[fill=black!40,ultra thick] svg "M 242 565 Q 249 552 287 500 Q 324 451 350 423 Q 363 410 374 410 Q 410 413 440 414 Q 454 415 454 418 Q 454 422 440 428 Q 366 454 353 465 Q 304 504 253 569 Q 250 573 247 577 C 240 586 236 576 242 565 Z";
\draw[fill=black!40,ultra thick] svg "M 747 577 Q 776 644 782 656 Q 786 661 783 666 Q 780 671 765 680 Q 754 686 749 684 Q 742 683 743 675 Q 751 598 674 506 Q 669 501 665 496 Q 642 470 584 424 Q 580 420 584 418 Q 588 417 593 420 Q 633 438 667 467 Q 709 500 742 565 L 747 577 Z";
\draw[fill=black!40,ultra thick] svg "M 742 565 Q 749 552 787 500 Q 824 451 850 423 Q 863 410 874 410 Q 910 413 940 414 Q 954 415 954 418 Q 954 422 940 428 Q 866 454 853 465 Q 804 504 753 569 Q 750 573 747 577 C 740 586 736 576 742 565 Z";
\draw[fill=black!40,ultra thick] svg "M 463 680 Q 477 723 513 798 Q 520 811 511 828 Q 486 867 469 864 Q 462 863 463 847 Q 465 724 379 586 Q 361 562 338 525 Q 332 509 342 513 Q 358 516 392 559 L 402 571 Q 429 613 453 657 L 463 680 Z";
\draw[fill=black!40,ultra thick] svg "M 517 459 Q 553 525 592 615 Q 603 643 621 661 Q 630 668 631 678 Q 631 691 614 711 Q 592 738 583 739 Q 576 739 568 731 Q 501 688 472 682 Q 466 682 463 680 C 445 676 435 665 453 657 Q 481 632 543 676 Q 555 680 559 674 Q 561 670 549 627 Q 525 552 490 492 L 475 465 Q 388 323 261 257 Q 253 253 254 248 Q 254 244 259 242 Q 275 238 312 251 Q 349 263 390 298 Q 439 337 489 412 Q 494 421 500 430 L 517 459 Z";
\draw[fill=black!40,ultra thick] svg "M 500 430 Q 514 411 531 386 Q 576 322 635 258 Q 648 239 668 244 Q 728 257 775 280 Q 799 292 796 302 Q 795 308 769 314 Q 643 341 606 371 Q 573 395 517 459 L 490 492 Q 471 516 452 541 Q 426 577 404 572 Q 402 572 402 571 C 384 570 382 570 392 559 Q 394 555 401 548 Q 427 530 475 465 L 500 430 Z";
\draw[fill=black!40,ultra thick] svg "M 472 250 Q 501 222 531 188 Q 541 178 550 180 Q 556 181 558 196 Q 559 212 552 240 Q 546 265 519 281 Q 460 305 451 295 Q 449 291 451 278 Q 454 268 472 250 Z";
\draw[fill=black!40,ultra thick] svg "M 456 79 Q 496 25 539 -40 Q 547 -53 558 -53 Q 564 -53 568 -39 Q 570 -24 565 8 Q 561 47 527 80 Q 492 108 454 130 Q 444 134 440 131 Q 436 127 438 114 Q 440 102 456 79 Z";

\end{tikzpicture}

\end{document}

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.