         send [ '.', 'text', glyph, meta, ]
     return null
 
+#-----------------------------------------------------------------------------------------------------------
+@$split = ( S ) ->
+  return $ ( event, send ) =>
+    return send event unless select event, '.', 'text'
+    [ type, name, text, meta, ] = event
+    for glyph in MKNCR.chrs_from_text text
+      send [ '.', Σ_glyph_description, glyph, meta, ]
+    return null
+
+#-----------------------------------------------------------------------------------------------------------
+@$wrap = ( S ) ->
+  return $ ( event, send ) =>
+    return send event unless select event, '.', Σ_glyph_description
+    [ type, name, glyph, meta, ] = event
+    description = MKNCR.describe glyph
+    send [ type, name, description, meta, ]
+    return null
+
+#-----------------------------------------------------------------------------------------------------------
+@$unwrap = ( S ) ->
+  return $ ( event, send ) =>
+    return send event unless select event, '.', Σ_glyph_description
+    [ type, name, description, meta, ] = event
+    # debug '70333', description
+    glyph = description[ 'uchr' ]
+    ### TAINT send `tex` or `text` event? ###
+    send [ 'tex', glyph, ]
+    return null
+
 
 #===========================================================================================================
 #

@$fix_typography_for_tex = ( S ) ->
  ### TAINT which one should come first? ###
  pipeline = [
    # @$split           S
    @$format_cjk      S
    @$escape_for_tex  S
    ]
  return D.new_stream { pipeline, }


is_stamped                = MD_READER.is_stamped.bind  MD_READER
#...........................................................................................................
MKNCR                     = require '../../mingkwai-ncr'
Σ_glyph_description       = Symbol 'glyph-description'


#===========================================================================================================
