{ "$schema": "./juzhen-rules.schema.json", "schemaVersion": 1, "rulesetVersion": "1.0.0", "unicodeProfile": { "version": "17.0.0", "coverage": "CJK Unified Ideographs through Extension J, compatibility ideographs, kana, bopomofo, radicals, and enclosed CJK characters" }, "characterClasses": { "representation": "unicode-code-point-ranges", "cjk": [ { "start": "2E80", "end": "2EFF" }, { "start": "2F00", "end": "2FDF" }, { "start": "3040", "end": "309F" }, { "start": "30A0", "end": "30FA" }, { "start": "30FC", "end": "30FF" }, { "start": "3100", "end": "312F" }, { "start": "3200", "end": "32FF" }, { "start": "3400", "end": "4DBF" }, { "start": "4E00", "end": "9FFF" }, { "start": "F900", "end": "FAFF" }, { "start": "20000", "end": "2A6DF" }, { "start": "2A700", "end": "2B73F" }, { "start": "2B740", "end": "2B81F" }, { "start": "2B820", "end": "2CEAF" }, { "start": "2CEB0", "end": "2EBEF" }, { "start": "2EBF0", "end": "2EE5F" }, { "start": "2F800", "end": "2FA1F" }, { "start": "30000", "end": "3134F" }, { "start": "31350", "end": "323AF" }, { "start": "323B0", "end": "3347F" } ], "ansAfterCjk": [ { "start": "0024", "end": "0026" }, { "start": "002A", "end": "002B" }, { "codePoint": "002D" }, { "start": "0030", "end": "0039" }, { "codePoint": "003D" }, { "codePoint": "0040" }, { "start": "0041", "end": "005A" }, { "codePoint": "005C" }, { "codePoint": "005E" }, { "start": "0061", "end": "007A" }, { "start": "00A1", "end": "00B6" }, { "start": "00B8", "end": "00FF" }, { "start": "0100", "end": "024F" }, { "start": "0370", "end": "03FF" }, { "start": "0400", "end": "04FF" }, { "start": "20A0", "end": "20BF" }, { "start": "2150", "end": "21FF" }, { "start": "2200", "end": "22FF" }, { "start": "2700", "end": "27BF" } ], "ansBeforeCjk": [ { "start": "0024", "end": "0026" }, { "start": "002A", "end": "002B" }, { "codePoint": "002D" }, { "start": "0030", "end": "0039" }, { "codePoint": "003D" }, { "start": "0041", "end": "005A" }, { "codePoint": "005C" }, { "codePoint": "005E" }, { "start": "0061", "end": "007A" }, { "start": "00A1", "end": "00B6" }, { "start": "00B8", "end": "00FF" }, { "start": "0100", "end": "024F" }, { "start": "0370", "end": "03FF" }, { "start": "0400", "end": "04FF" }, { "start": "20A0", "end": "20BF" }, { "start": "2150", "end": "21FF" }, { "start": "2200", "end": "22FF" }, { "start": "2700", "end": "27BF" } ], "variationSelectors": [ { "start": "FE00", "end": "FE0F" }, { "start": "E0100", "end": "E01EF" } ], "biaodian": { "classificationOrder": [ "stop", "pause", "open", "close", "middle", "liga" ], "classes": { "stop": [ { "codePoint": "3002" }, { "codePoint": "FF01" }, { "codePoint": "FF0E" }, { "codePoint": "FF1F" } ], "pause": [ { "codePoint": "3001" }, { "codePoint": "FF0C" }, { "codePoint": "FF1A" }, { "codePoint": "FF1B" } ], "open": [ { "codePoint": "2018" }, { "codePoint": "201C" }, { "codePoint": "3008" }, { "codePoint": "300A" }, { "codePoint": "300C" }, { "codePoint": "300E" }, { "codePoint": "3010" }, { "codePoint": "3014" }, { "codePoint": "3016" }, { "codePoint": "FF08" }, { "codePoint": "FF3B" }, { "codePoint": "FF5B" } ], "close": [ { "codePoint": "2019" }, { "codePoint": "201D" }, { "codePoint": "3009" }, { "codePoint": "300B" }, { "codePoint": "300D" }, { "codePoint": "300F" }, { "codePoint": "3011" }, { "codePoint": "3015" }, { "codePoint": "3017" }, { "codePoint": "FF09" }, { "codePoint": "FF3D" }, { "codePoint": "FF5D" } ], "middle": [ { "codePoint": "00B7" }, { "codePoint": "2027" }, { "codePoint": "30FB" } ], "liga": [ { "codePoint": "2014" }, { "codePoint": "2026" } ] } }, "overrideSemantics": { "mode": "append", "westernTargets": [ "ansAfterCjk", "ansBeforeCjk" ], "removalAllowed": false, "reclassificationAllowed": false } }, "atoms": { "unit": "base-code-point-plus-optional-variation-selector", "maxVariationSelectors": 1, "variationSelectorMustFollowBase": true, "isolatedVariationSelector": "independent-atom" }, "locales": { "classes": [ "zh-Hans", "zh-Hant", "ja", "other" ], "primaryLanguageBoundary": "exact-or-hyphen-subtag", "classificationOrder": [ "ja-primary-language", "zh-explicit-script", "zh-traditional-region", "zh-bare-default", "zh-remaining", "other" ], "zh": { "explicitTraditionalSubtag": "hant", "explicitSimplifiedSubtag": "hans", "traditionalRegions": [ "tw", "hk", "mo" ], "bare": "zh-Hant", "remaining": "zh-Hans" }, "ja": "ja", "defaultPolicies": { "zh-Hans": "kaiming", "zh-Hant": "quanjiao", "ja": "quanjiao", "other": "quanjiao" }, "resolutionPriority": [ "element-attribute-or-style-policy-nearest-ancestor", "locale-class-policy", "global-style", "default-policy" ] }, "punctuationStyles": { "baselineHalfWidthClasses": { "quanjiao": [], "kaiming": [ "pause", "open", "close" ], "banjiao": [ "stop", "pause", "open", "close" ] }, "adjacency": { "rule": "squeeze-each-facing-blank-side-independently", "sentenceBoundaryException": { "left": "stop", "right": "open", "preserve": "left-right-blank" } } }, "spacing": { "gapEm": 0.25, "directions": { "cjkToAns": "ansAfterCjk", "ansToCjk": "ansBeforeCjk", "asymmetry": "at-sign-only-after-cjk" }, "authorSpaceDisposition": { "cjkAns": "remove-and-use-managed-gap", "ansCjk": "remove-and-use-managed-gap", "cjkCjk": "remove-without-gap", "revertRestoresRemovedSpace": false } }, "lineBreaking": { "prohibitedBreaks": { "before": [ "close", "pause", "stop", "middle", "liga" ], "after": [ "open" ] }, "orphan": { "defaultMeaningfulCjkChars": 2, "counts": "cjk-atoms-not-classified-as-biaodian", "excludes": [ "biaodian", "non-cjk" ] } }, "applicabilityLevels": { "text": [ "spacing", "punctuation-classification-and-width" ], "paragraph": [ "prohibited-breaks", "orphan-minimum", "long-word-hyphenation" ] }, "semanticProcessing": { "dependencies": [ { "before": "atomize", "after": "classify" }, { "before": "classify", "after": "derive-spacing" }, { "before": "classify", "after": "derive-punctuation-width" }, { "before": "classify", "after": "derive-break-constraints" }, { "before": "classify", "after": "derive-orphan-constraint" } ], "conditionalLineEdgeOutcomes": [ "punctuation-half-width-at-line-edge", "remove-managed-gap-at-line-end" ] }, "adapterBoundary": { "platformNeutral": [ "unicode-character-classes", "logical-atom-boundaries", "locale-classification-and-policy", "punctuation-width-semantics", "spacing-decisions-and-distance", "prohibited-break-relations", "orphan-count", "applicability-levels-and-semantic-dependencies" ], "excludedAdapterMechanisms": [ "generated-node-or-element-representation", "ownership-and-reversion-bookkeeping", "rendering-primitive-selection", "generated-line-break-hints", "mutation-observation-or-rerun-lifecycle", "layout-measurement", "platform-specific-workarounds" ] } }