preeti2unicode
Version:
Convert Preeti, PCS Nepali, and Kantipur fonts to Unicode
49 lines (40 loc) • 1.21 kB
JavaScript
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
};