$ npm install unicode-to-plain-textConvert fancy Unicode text to plain ASCII with smart language preservation
npm i unicode-to-plain-text
Basic usage:
import { toPlainText } from 'unicode-to-plain-text'
// Mathematical styles
toPlainText('πππ₯π₯π¨ ππ¨π«π₯π') // => 'Hello World'
// Enclosed characters
toPlainText('π
£π
π
’π
£') // => 'TEST'
// Fullwidth forms
toPlainText('οΌ¨οΌ₯οΌ¬οΌ¬οΌ―') // => 'HELLO'
Language preservation:
// Real languages are automatically preserved
toPlainText('Hello ΞΡια ΟΞ±Ο') // => 'Hello ΞΡια ΟΞ±Ο' (Greek preserved)
toPlainText('Test ΠΡΠΈΠ²Π΅Ρ') // => 'Test ΠΡΠΈΠ²Π΅Ρ' (Cyrillic preserved)
// But lookalike characters are converted
toPlainText('Ξ test') // => 'A test' (Greek Alpha β Latin A)
Custom pipelines:
import {
pipe,
handleUpsideDown,
mapCharacters,
normalizeUnicode,
removeDecorations,
normalizeWhitespace,
normalizeCasing
} from 'unicode-to-plain-text'
// Create a custom pipeline
const customTransform = pipe(
handleUpsideDown,
mapCharacters,
normalizeUnicode,
removeDecorations,
normalizeWhitespace
)
const result = customTransform('ππππ')
Converts fancy Unicode text to plain ASCII
| Property | Type | Description |
|---|---|---|
text | string | Input text with Unicode characters |
options | object | Optional configuration object |
| Option | Type | Default | Description |
|---|---|---|---|
normalizeSpaces | boolean | true | Collapse multiple spaces and trim whitespace |
skipEmoji | boolean | false | Preserve emoji characters (still removes other decorations like box drawing, arrows) |
// Default behavior - emojis removed
toPlainText('Hello π World') // => 'Hello World'
// Preserve emojis
toPlainText('Hello π World', { skipEmoji: true }) // => 'Hello π World'
// Preserve spacing
toPlainText('Hello World', { normalizeSpaces: false }) // => 'Hello World'
// Combined options
toPlainText('πππ₯π₯π¨ π ππ¨π«π₯π', { skipEmoji: true, normalizeSpaces: false })
// => 'Hello π World'
Returns a plain ASCII string with normalized whitespace and casing
handleUpsideDown(text) - Reverses upside-down textmapCharacters(text) - Maps Unicode to ASCII equivalentsnormalizeUnicode(text) - Removes diacritics from Latin textremoveDecorations(text) - Removes emojis and decorationsnormalizeWhitespace(text) - Normalizes and trims whitespacenormalizeCasing(text) - Normalizes inconsistent casingpipe(...fns) - Composes functions into a pipelineApache-2.0