UNPKG

preeti2unicode

Version:

Convert Preeti, PCS Nepali, and Kantipur fonts to Unicode

49 lines (40 loc) 1.21 kB
const all_rules = require('./rules'); class FontConverter { constructor(fontName) { this.fontName = fontName.toLowerCase(); if (!all_rules[this.fontName]) { throw new Error(`Font "${fontName}" is not supported`); } this.fontRules = all_rules[this.fontName]; } convert(text) { let output = ""; // Character mapping for (let w = 0; w < text.length; w++) { const letter = text[w]; output += this.fontRules["char-map"][letter] || letter; } // Apply post-rules for (let r = 0; r < this.fontRules["post-rules"].length; r++) { const [pattern, replacement] = this.fontRules["post-rules"][r]; output = output.replace(new RegExp(pattern, "g"), replacement); } return output; } } // Convenience functions function preetiToUnicode(text) { return new FontConverter('preeti').convert(text); } function pcsToUnicode(text) { return new FontConverter('pcs nepali').convert(text); } function kantipurToUnicode(text) { return new FontConverter('kantipur').convert(text); } module.exports = { FontConverter, preetiToUnicode, pcsToUnicode, kantipurToUnicode };