{"id":17609878,"url":"https://github.com/emmiegit/canji","last_synced_at":"2025-08-25T05:10:17.525Z","repository":{"id":213447607,"uuid":"734126300","full_name":"emmiegit/canji","owner":"emmiegit","description":"Procedural kanji generator","archived":false,"fork":false,"pushed_at":"2023-12-24T13:00:40.000Z","size":149,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T23:41:16.651Z","etag":null,"topics":["kanji","kanjivg","svg"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emmiegit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-20T23:51:09.000Z","updated_at":"2024-07-29T10:46:23.000Z","dependencies_parsed_at":"2023-12-23T08:36:51.302Z","dependency_job_id":"2922e99e-8667-4a1e-9ad4-f16a1d14e149","html_url":"https://github.com/emmiegit/canji","commit_stats":null,"previous_names":["emmiegit/canji"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/emmiegit/canji","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmiegit%2Fcanji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmiegit%2Fcanji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmiegit%2Fcanji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmiegit%2Fcanji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmiegit","download_url":"https://codeload.github.com/emmiegit/canji/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmiegit%2Fcanji/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272008763,"owners_count":24857658,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kanji","kanjivg","svg"],"created_at":"2024-10-22T17:10:27.928Z","updated_at":"2025-08-25T05:10:17.508Z","avatar_url":"https://github.com/emmiegit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## \u003cruby\u003e缶\u003crp\u003e(\u003c/rp\u003e\u003crt\u003eかん\u003c/rt\u003e\u003crp\u003e)\u003c/rp\u003e 字\u003crp\u003e(\u003c/rp\u003e\u003crt\u003eじ\u003c/rt\u003e\u003crp\u003e)\u003c/rp\u003e\u003c/ruby\u003e\n\u003csmall\u003e\u003cem\u003e(Read like \"kanji\")\u003c/em\u003e\u003c/small\u003e\n\nA system to procedurally generate plausible but nonexistant kanji.\n\n### Execution\n\nThis system is set up as a series of scripts to perform each of the requisite steps. These scripts target Python 3.\n\nFirst we need to initialize the KanjiVG submodule since that's what we use as the basis for our SVG files.\n\n```sh\ngit submodule init\n```\n\nNow we need to install pip dependencies. On my machine, I need to create a virtual environment and install the dependencies there. Alternatively, you can get the dependencies through another means.\n\n```sh\npython -m venv env\nsource env/bin/activate\npip install -r requirements.txt\n```\n\nPresently, however, all the dependencies are purely cosmetic and thus optional. Scripts will work fine without them.\n\nThen, we need to extract and process radicals as separate SVGs. This involves both pulling out component radicals (e.g. 亻or 糹), it also copies full characters like 頑.\n\n```sh\n./extract_radicals.py\n```\n\nNow we can generate some kanji! Since there are a few options, consult `--help` to see everything, but the basic usage pattern is:\n\n```sh\n./build_kanji.py -o output_dir -c 100\n```\n\nIf you need to start over, you can wipe the output data.\n\n```sh\n./clean.sh\n```\n\n### Development\n\nThese scripts are formatted using [Black](https://github.com/psf/black).\n\n### License\n\nAvailable under the terms of the [GNU Lesser General Public License](LICENSE.md), v2.1 only. All generated SVG files are licensed as [Creative Commons Attribution-ShareAlike 3.0](https://creativecommons.org/licenses/by-sa/3.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmiegit%2Fcanji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmiegit%2Fcanji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmiegit%2Fcanji/lists"}