Magyar rovásírás Unicode transliteráció — TypeScript/JavaScript könyvtár.
A rovas csomag a latin betűs magyar szöveget székely–magyar rovásírás Unicode karakterekké alakítja, és vissza. A rovásírás 2015 óta az Unicode 8.0 szabvány része (U+10C80–U+10CFF blokk).
A könyvtár:
- felismeri a magyar digráfokat (
cs,sz,zs,gy,ny,ly,ty,dz,dzs) - kezeli a hosszú magánhangzókat (
á,é,í,ó,ő,ú,ű) - visszafelé is tud fordítani (rovás → latin)
- számmá alakítást is tartalmaz (kvázi-római additív rendszer)
- ESM + CJS formátumban érhető el, Browser / Node / Deno / Bun kompatibilis
# pnpm
pnpm add rovas
# npm
npm install rovas
# yarn
yarn add rovasimport { transliterate } from 'rovas'
const result = transliterate('magyar')
console.log(result.rovas) // 𐳞𐳀𐳎𐳀𐳤 (RTL szöveg)
console.log(result.tokens) // [{ latin: 'm', rovas: '𐳞' }, ...]transliterate('Budapest').rovas // 𐳁𐳪𐳇𐳀𐳠𐳉𐳤𐳦
transliterate('Pécs').rovas // 𐳠𐳟𐳂
transliterate('Győr').rovas // 𐳎𐳟𐳢
transliterate('Nyíregyháza').rovas // 𐳚𐳑𐳢𐳉𐳎𐳇𐳁𐳯𐳀import { toRovas, toLatin } from 'rovas'
toRovas('magyar') // → '𐳞𐳀𐳎𐳀𐳢' (string)
toRovas('szép', { longVowels: 'classical' }) // opciókkal is
toLatin(toRovas('szép')) // → 'szép'A
toRovasatransliterate(...).rovasrövidítése, atoLatinareversealias neve. A teljesTransliterateResultobjektumhoz (tokenek, stb.) használd atransliterate()függvényt.
import { transliterate, reverse } from 'rovas'
const rovas = transliterate('szép').rovas
reverse(rovas) // → 'szép'vowelOmission: true opcióval készült a rovás szöveg — a kihagyott magánhangzók nem állíthatók vissza.
transliterate('egészség', {
vowelOmission: false, // default: false — modern, olvasható forma
longVowels: 'modern', // 'modern' | 'classical' — klasszikusban á = a, stb.
mirrorPunctuation: false // rovás tükrözött vesszőt/idézőjelet használ RTL-ben
})A rovásírásban kvázi-római, additív számrendszer létezik:
import { convertNumber } from 'rovas'
convertNumber(1) // 𐳺
convertNumber(10) // 𐳼
convertNumber(1848) // 𐳿𐳾𐳾𐳾𐳾𐳾𐳾𐳾𐳾𐳻𐳼𐳼𐳼𐳼import { isRovas, isLatin, toCodePoints } from 'rovas'
isRovas('𐳞𐳀𐳎𐳀𐳤') // true
isLatin('magyar') // true
toCodePoints('𐳞𐳀') // ['U+10CDE', 'U+10CC0']A rovásírás jobbról balra olvasandó. A Unicode string balról jobbra tárolódik a memóriában (ahogy a szabvány előírja), de megjelenítéskor RTL irányt kell alkalmazni:
<span dir="rtl" lang="hu-Hung">𐳞𐳀𐳎𐳀𐳤</span>.rovas {
unicode-bidi: bidi-override;
direction: rtl;
font-family: 'Noto Sans Old Hungarian', serif;
}Font: Noto Sans Old Hungarian (Google Fonts, ingyenes)
| Paraméter | Típus | Leírás |
|---|---|---|
input |
string |
Latin betűs magyar szöveg |
options.vowelOmission |
boolean |
Magánhangzók elhagyása (default: false) |
options.longVowels |
'modern' | 'classical' |
Hosszú magánhangzók kezelése (default: 'modern') |
options.mirrorPunctuation |
boolean |
Vesszők, idézőjelek tükrözése (default: false) |
Visszatérési érték: TransliterateResult
interface TransliterateResult {
rovas: string // a rovás Unicode string
latin: string // normalizált (kisbetűs) input
tokens: Array<{ latin: string; rovas: string }> // fonéma szintű bontás
}Rovás Unicode string visszaalakítása latin betűs szöveggé. Best-effort, veszteséges (vowel omission esetén).
Egész számot (n >= 0) rovás számmá alakít additív rendszerben.
Detektálja, hogy a szöveg tartalmaz-e rovás Unicode karaktereket.
Visszaadja a szöveg karaktereinek Unicode kódpontjait (['U+10CC0', ...] formátumban).
Az alphabet.ts teljes betűkészlete az alábbi forrásokból épül fel:
- Unicode 8.0 szabvány — U10C80.pdf
- oldhungarian.eu — kortárs unicode rovásírás referencia
- ScriptSource — Old Hungarian
pnpm install
pnpm test # vitest
pnpm test:watch # watch mode
pnpm build # tsup → dist/MIT © Zoltán Rakottyai
A székely–magyar rovásírás az egyik legrégibb, magyar nyelvet lejegyző írásrendszer. A latin ábécé bevezetése (kb. Kr. u. 1000) után fokozatosan kiszorult, de Erdélyben évszázadokig használták. Ma is él: Magyarországon és Erdélyben táblaként jelennek meg helységneveink rovással, és az írást iskolákban is oktatják.
„A rovásírás a magyarság régi írása, nemzeti kulturális örökségünk." — Forrai Sándor