{"adoption": {"forks": 132, "observed_at": "2026-08-28T04:06:59.078413+00:00", "stars": 2534}, "canonical_url": "https://ross.abutalabs.com/products/han", "card": {"archived": false, "artifact_type": "framework", "description": "「漢字標準格式」印刷品般的漢字排版框架 Han.css: the CSS typography framework optimised for Hanzi.", "domain": ["web-development", "frontend", "web-design"], "enriched": true, "function": ["css-framework", "ui-components", "internationalization", "templating"], "health_score": 73, "homepage": "https://hanzi.pro/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["ethantw/Han"], "name": "ethantw/Han", "platform": ["browser"], "pushed_at": "2026-06-23T11:11:17+00:00", "repo": "ethantw/Han", "stars": 2534, "tags": ["typography", "cjk", "chinese", "japanese", "sass", "stylus", "hanzi", "vertical-text", "web-fonts", "localization", "nodejs", "web-server"], "topics": ["han", "sass", "css", "stylus", "typography"], "urls": [], "use_cases": ["style Chinese web pages with print-quality typography", "add ruby furigana annotations to Japanese or Chinese text", "fix CJK punctuation rendering and compression on the web", "mix Chinese and Latin text with proper spacing", "render vertical text layouts in the browser", "normalize default styles for hanzi reading habits"], "what_it_is": "Han.css (漢字標準格式) is a Sass/Stylus and JavaScript typography framework that provides print-quality, standardized typesetting for Hanzi-based web pages. It supports Traditional Chinese, Simplified Chinese, and Japanese with features like punctuation compression, ruby annotations, emphasis marks, and Hanzi-Latin inter-character spacing.", "when_to_avoid": ["your content is primarily Latin-script and only occasionally includes CJK characters", "you need a general-purpose CSS framework for layout or UI components", "you require guaranteed long-term updates, as the project has seen infrequent releases"], "when_to_choose": ["building a website or article page primarily in Chinese or Japanese", "you need advanced CJK typographic features like punctuation squeezing, hanging punctuation, or emphasis dots", "you want semantic HTML5 styling without presentational classes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/han", "repo": "ethantw/Han", "role": "main", "score": 63}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:59.078413+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:25:15.169606+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5305dc15e9b36d61d7392a61405ea8571b148af1b12ad56b58336f4b1a8a5dd6", "fetched_at": "2026-08-28T04:06:59.078413+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ethantw/Han"}, {"content_hash": "5ffbe1fb56fe743ac345b4a5cd0bebf1787c5dc655b0b3f09971c8beab9490eb", "fetched_at": "2026-08-29T10:07:38.629765+00:00", "kind": "homepage", "missing": false, "url": "https://hanzi.pro/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5658, "days_push": 71, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 63, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}