34.02 owns three explicit typography channels
Weight is numeric evidence. Style and case are categorical evidence. Pairwise descriptors preserve differences without silently converting categories into rank.
Weight supports numeric comparison
Explicit integer weight lives in the 1…1000 range. The result is still a structural typography descriptor, not visual-importance truth.
700 versus 400
Style is categorical, not ordinal
NORMAL, ITALIC, OBLIQUE and OWNER_DEFINED can differ structurally without a universal “stronger” direction.
Category
No default salience rank.
Category
No default salience rank.
Category
No default salience rank.
External style
Explicit name required.
Case is also categorical
UPPERCASE may create emphasis in some systems, but 34.02 does not promote that convention into a universal law.
Difference descriptor
Not automatic dominance.
Difference descriptor
Not automatic hierarchy level.
Difference descriptor
Not automatically weaker.
One directed pair preserves all three channels
Numeric weight relation and categorical transitions travel together, while each channel keeps its own epistemic meaning.
No universal style/case salience law
The module intentionally refuses common but context-dependent assumptions.
Differences are observed, not ranked
34.01 is optional compatibility lineage
Scale evidence can be attached for cross-module consistency, but 34.02 neither requires scale ratios nor mutates them.
Required
Semantic text subject identity.
Optional
Identity compatibility only.
Owns channels
Weight, style and case.
Hierarchy remains multi-channel
Color/contrast, readability/accessibility, ordering and final scoring are still untouched.
roles
scale
weight / style / case
color / contrast
readability / accessibility
ordering
scoring / tests
34.02 regression suite
Tests cover weight bounds, style/case taxonomies, owner-defined labels, pair direction, weight delta/ratio/equality, style/case transitions, same-role pairs, optional 34.01 lineage, bounded execution, upstream immutability and strict absence of style/case ranking, hierarchy rank, graph and scoring logic.
DATA FOR LAYOUT ENGINE
Canonical machine contract for explicit weight/style/case hierarchy channels.
{
"module": "Compo 34.02",
"name": "weight_style_case_hierarchy",
"version": "1.0-canonical",
"canonical_main_title": "Weight / style / case hierarchy",
"topic": "34_ТИПОГРАФИЧЕСКАЯ_ИЕРАРХИЯ",
"scope": "EXPLICIT_OWNER_QUALIFIED_FONT_WEIGHT_STYLE_AND_CASE_EVIDENCE_WITH_PAIRWISE_CHANNEL_DESCRIPTORS_OVER_IMMUTABLE_34_00_ROLE_SUBJECTS_AND_OPTIONAL_34_01_SCALE_LINEAGE_WITHOUT_STYLE_OR_CASE_SALIENCE_LAWS_HIERARCHY_RANK_COLOR_CONTRAST_READABILITY_ORDERING_OR_SCORING",
"main_topic_contract": {
"topic_title": "Типографическая иерархия",
"topic_goal": "Строит типографическую иерархию title/subtitle/body/caption/meta по scale, weight, case, color и порядку; отдельно фиксирует минимальную читаемость и accessibility constraints.",
"expected_output": "TextHierarchyGraph, type levels, hierarchy violations",
"planned_files": [
"34.00 Text role taxonomy",
"34.01 Type scale и hierarchy ratios",
"34.02 Weight / style / case hierarchy",
"34.03 Color / contrast hierarchy",
"34.04 Минимальная читаемость, size floors и accessibility constraints",
"34.05 Multi-block ordering",
"34.06 Scoring и tests"
]
},
"ownership": {
"owner": "Compo34.02",
"owns": [
"FontWeightEvidenceBinding",
"FontStyleEvidenceBinding",
"TextCaseEvidenceBinding",
"WeightStyleCasePairRequest",
"WeightStyleCasePolicy",
"WeightStyleCaseSubjectDescriptor",
"WeightStyleCasePairDescriptor",
"WeightStyleCaseDescriptorSet",
"WeightStyleCaseAttachment",
"numeric font-weight preservation",
"font-style taxonomy",
"text-case taxonomy",
"pairwise weight delta",
"pairwise weight ratio",
"pairwise heavier/lighter structural direction",
"same-weight structural flag",
"same-style structural flag",
"same-case structural flag",
"style-transition descriptor",
"case-transition descriptor",
"optional 34.01 subject-lineage compatibility",
"bounded deterministic pair resolution",
"non-mutating correction request"
],
"does_not_own": [
"34.00 semantic text role",
"34.01 type-size evidence",
"34.01 scale ratio",
"automatic font-weight extraction",
"automatic style classification",
"automatic case classification",
"automatic style salience ranking",
"automatic case salience ranking",
"universal boldness hierarchy law",
"universal italic hierarchy law",
"universal uppercase hierarchy law",
"automatic hierarchy rank",
"automatic hierarchy level",
"34.03 color hierarchy",
"34.03 contrast hierarchy",
"34.04 readability constraints",
"34.04 accessibility constraints",
"34.05 multi-block ordering",
"34.05 hierarchy graph construction",
"34.06 hierarchy scoring",
"34.06 hierarchy violations scoring",
"35 TextBlock geometry",
"36 typography spacing",
"37 text-image relation",
"automatic winner selection",
"foreign typography mutation",
"universal beautyScore"
]
},
"font_style_kinds": [
"NORMAL",
"ITALIC",
"OBLIQUE",
"OWNER_DEFINED"
],
"text_case_kinds": [
"LOWERCASE",
"UPPERCASE",
"TITLE_CASE",
"SENTENCE_CASE",
"MIXED_CASE",
"CASELESS",
"OWNER_DEFINED"
],
"weight_semantics": {
"value": "explicit integer 1..1000",
"meaning": "font-weight evidence from an external typography/style owner",
"pair_delta": "numeratorWeight - denominatorWeight",
"pair_ratio": "numeratorWeight / denominatorWeight",
"heavier_subject_ref": "subject with numerically greater explicit weight; null when equal",
"lighter_subject_ref": "subject with numerically smaller explicit weight; null when equal",
"same_weight": "numeric equality",
"weight_is_hierarchy_rank": false,
"weight_is_importance_score": false
},
"style_case_semantics": {
"style": "categorical only; 34.02 does not rank NORMAL/ITALIC/OBLIQUE",
"case": "categorical only; 34.02 does not rank LOWERCASE/UPPERCASE/TITLE_CASE/etc.",
"style_transition": "numeratorStyle → denominatorStyle",
"case_transition": "numeratorCase → denominatorCase",
"same_style": "categorical equality",
"same_case": "categorical equality",
"style_salience_direction": "NOT_OWNED",
"case_salience_direction": "NOT_OWNED",
"uppercase_dominance_claim": false,
"italic_dominance_claim": false
},
"compatibility_semantics": {
"34_00_subject": "must be immutable DECLARED_TYPOGRAPHIC_ROLE",
"34_01_scale_subject": "optional compatibility reference only; when supplied, textSubjectRef and textSubjectIdentity must match 34.00",
"scope_snapshot": "all evidence must match exact 34.00 scope/snapshot",
"one_weight_evidence_per_subject": "required",
"one_style_evidence_per_subject": "required",
"one_case_evidence_per_subject": "required",
"same_role_pairs": "allowed",
"different_role_pairs": "allowed",
"same_subject_pair": "INVALID",
"pair_orientation": "explicit numeratorTextSubjectRef → denominatorTextSubjectRef"
},
"policy": {
"request_mode": "EXPLICIT_WEIGHT_STYLE_CASE_PAIR_REQUESTS_ONLY",
"max_weight_evidence": [
1,
131072
],
"max_style_evidence": [
1,
131072
],
"max_case_evidence": [
1,
131072
],
"max_pair_requests": [
0,
262144
],
"max_subjects": [
1,
131072
],
"overflow": "N_A_NO_TRUNCATION",
"duplicate_weight_evidence_ref": "INVALID",
"duplicate_style_evidence_ref": "INVALID",
"duplicate_case_evidence_ref": "INVALID",
"duplicate_pair_request_ref": "INVALID",
"duplicate_subject_channel_binding": "INVALID",
"duplicate_directed_pair_identity": "INVALID",
"auto_weight_extraction": false,
"auto_style_classification": false,
"auto_case_classification": false,
"auto_style_salience_rank": false,
"auto_case_salience_rank": false,
"auto_hierarchy_rank": false,
"auto_hierarchy_level": false,
"auto_color_contrast_hierarchy": false,
"auto_readability_evaluation": false,
"auto_accessibility_evaluation": false,
"auto_multi_block_ordering": false,
"auto_hierarchy_graph": false,
"auto_scoring": false
},
"status_semantics": {
"OK": "explicit weight/style/case evidence resolves for immutable 34.00 subjects and requested pair descriptors are derived deterministically",
"N_A": "subject/evidence/optional 34.01 lineage is missing or scope/snapshot mismatches, or bounds overflow",
"INVALID": "malformed evidence/request/policy, unsupported style/case, weight outside 1..1000, missing owner-defined names, duplicate channel identity, or same-subject pair",
"zero": "weight delta may legitimately be zero for equal weights; zero is never a sentinel for N_A"
},
"firewalls": [
"font weight != hierarchy rank",
"font weight != visual importance score",
"heavier weight != automatically higher semantic role",
"same weight != hierarchy failure",
"ITALIC != automatically more salient than NORMAL",
"OBLIQUE != automatically more salient than ITALIC",
"UPPERCASE != automatically more dominant than LOWERCASE",
"TITLE_CASE != automatically more important than SENTENCE_CASE",
"style difference != hierarchy direction",
"case difference != hierarchy direction",
"style transition != score",
"case transition != score",
"weight ratio != independent vote",
"34.02 does not infer typographic role from weight/style/case",
"34.02 does not mutate 34.00 semantic roles",
"34.02 does not mutate 34.01 type-scale evidence",
"34.02 weight/style/case != 34.03 color/contrast hierarchy",
"34.02 channels != 34.04 readability/accessibility",
"34.02 channels != 34.05 multi-block ordering",
"34.02 pair descriptors != 34.06 hierarchy score",
"34.02 does not own Topic35 TextBlock geometry",
"34.02 does not own Topic36 typography spacing",
"34.02 does not own Topic37 text-image relation",
"N_A != 0",
"INVALID != 0",
"descriptor != score",
"local != global",
"geometry != interpretation",
"heuristic != law",
"no universal weight/style/case hierarchy threshold",
"no universal beautyScore"
],
"owns_metrics": [],
"independent_numeric_votes": 0,
"topic34ProgressAfterThisModule": "3/7 local",
"next_module": "Compo 34.03 — Color / contrast hierarchy",
"topic35_started": false,
"publication": "NOT_VERIFIED"
}