.NEL[CCC5]

nu-Edenian Language

CONSTRUCTED LANGUAGE // SPEC: CCC5 // TYPE: ISOLATE // SCRIPTS: KANJI + KANA + HANGUL + ZHUYIN
IN PROGRESS
EDENIAN TECHLANGUAGE SYSTEMS

nu-Edenian Technical Archive

GLYPH ENGINE, GENERATION LOGIC, DESIGN RATIONALE, AND CCC5 MATERIAL
ARCHIVE ACTIVE
generation_algorithm_spec.ne

//Generation Algorithm

This article is about the technical generation pipeline. For , see .

Pipeline Architecture

The edenji generation pipeline transforms seed strings into deterministic SVG glyphs through six stages.

Stage 1: Seed → Hash

data_block
let rand = seededRandom(seed)

The seededRandom function produces a deterministic PRNG from any string input. All subsequent random decisions draw from this sequence, ensuring reproducibility.

Stage 2: Character Type Selection

Six types weighted by frequency:

data_block
Ideographic      (15%) → Single expanded radical
Phonetic         (10%) → Radical chosen for sound
Compound         (25%) → Two semantic radicals
Semanto-Phonetic (35%) → Semantic + phonetic radical
Wildcard         (10%) → Irregular composition
Innovation       (5%)  → Novel compound

The type determines how many radicals are selected and which layout templates are available.

Stage 3: Radical Selection

Semantic Selection

For semantic radicals, the hash maps to a semantic domain (Elements / Life / Abstracts / Artifacts) and grammatical class (Action through Innovation). The pickRadical function uses the seed to select from the 256-slot grid.

Phonetic Selection

For phonetic components, the seed word's pronunciation is approximately mapped to radical IDs via hash-based consonant/vowel extraction.

Radical Structure

Each radical contains:

  • id: Hex address (00–FF)
  • grammaticalClass: One of 16 classes
  • semanticDomain: One of 4 domains
  • strokeData: KAGE stroke string in 200×200 grid
  • positions: Valid placement positions in layouts

Stage 4: Layout Composition

The IDS layout template is selected based on radical count and character type:

Radical CountPreferred Layouts
1encloseFull, overlay (radical fills entire grid)
2lr (⿰), tb (⿱), encloseTop (⿵), encloseLeft (⿷)
3lmr (⿲), tmb (⿳)

Each layout defines slots — bounding boxes within the 200×200 grid:

data_block
lr: {
  slots: [
    {x1: 0, y1: 0, x2: 98, y2: 200}, // left
    {x1: 102, y1: 0, x2: 200, y2: 200}, // right
  ]
}

Stage 5: Stroke Assembly

The remapStrokesToSlot function transforms each radical's strokes into the target slot:

  1. Parse the radical's stroke data string
  2. For each stroke, scale and translate coordinate pairs from 200×200 to the slot bounds
  3. Reconstruct the stroke data string
  4. Join all radicals' transformed strokes with $

The grammatical class marker strokes are also added at this stage — verbs get base lines, nouns get corner brackets, etc.

Stage 6: SVG Rendering

The assembled stroke string is passed to Kage.makeGlyph2():

  1. getStrokes() parses $-delimited data into StrokeData arrays
  2. Recursively resolves any type-99 REFERENCE strokes through Buhin lookup
  3. Font.getPolygons() renders each stroke through Mincho or Gothic
  4. Polygons.generateSVG() converts polygon outlines to <svg> markup

The resulting SVG can be rendered inline at any size.

Dual Reading Generation

data_block
generateReadings(seed) → { onyomi, kunyomi }
  • Onyomi: Single CVC syllable drawn from Edenian phonology
  • Kunyomi: 2–3 syllable polysyllabic form, independently generated

Both readings are deterministic from the seed.

NU-EDEN.VERSE v.0.9.1nERF-NET v1.4.3
◆ SECURE CHANNEL═══════════════