Слово «руна» в контексте программирования может означать два разных, но пересекающихся понятия:
- Rune в Go и некоторых других языках — это тип данных, представляющий собой один Unicode-символ (code point), который может занимать от 1 до 4 байт․
- Руны как древние германские символы, закодированные в Unicode диапазоне
U+16A0–U+16FF․
Ниже вы узнаете, где взять готовые базы рунических символов, как подключить их к своему коду и при этом не потратить ни рубля․
Публичные таблицы Unicode: официальный и бесплатный источник
Файл UnicodeData․txt
Каждый месяц Консорциум Unicode публикует актуальную версию файлов․ Самый полезный для нас — UnicodeData․txt:
- Перейдите на официальный сайт: https://www․unicode․org/Public/UCD/latest/ucd/
- Скачайте
UnicodeData․txt(~1,6 МБ)․ - Фильтруем строки, где 2-й столбец (General_Category) равен
Lo(Letter, Other) и 1-й столбец попадает в диапазон16A0․․16FF․
Пример на Python:
import csv
with open("UnicodeData․txt") as f:
reader = csv․reader(f, delimiter=';')
runes = [row[0] for row in reader
if row[0] and "16A0" <= row[0] <= "16FF" and row[2] == "Lo"]
for cp_hex in runes:
print(chr(int(cp_hex, 16)), end=" ")
Пакет «unidata» в Go
Если вы пишете на Go, скачайте модуль golang․org/x/text/unicode/runenames:
go get golang․org/x/text/unicode/runenames
Затем:
import "golang․org/x/text/unicode/runenames"
for r := rune(0x16A0); r <= 0x16FF; r++ {
fmt․Printf("%c %s
", r, runenames․Name(r))
}
Онлайн-клавиатуры и API без регистрации
Клавиатура full-runic․github․io
Сайт https://full-runic․github․io/keyboard предоставляет:
- визуальную клавиатуру старого и младшего футарка;
- копирование символов в буфер обмена;
- JSON-эндпоинт
/symbols․jsonс массивом {unicode, name, translit}․
CDN-таблицы от jsDelivr
GitHub-репозиторий runic-table/runes публикует ежемесячный снимок в виде CSV-файла․ Подключите прямую ссылку:
https://cdn․jsdelivr․net/gh/runic-table/runes@latest/runes․csv
Мини-библиотеки с открытой лицензией
runic-js (MIT)
Установка в Node․js:
npm install runic-js
Использование:
const { elderFuthark, youngerFuthark } = require('runic-js');
console․log(elderFuthark․map(r => r․char)); // ['ᚠ', 'ᚢ', ․․․]
runic-rs (Apache-2․0)
Добавьте в Cargo․toml:
[dependencies]
runic-rs = "0․3"
Пример:
use runic_rs::alphabets::ElderFuthark;
fn main {
for rune in ElderFuthark::iter {
println!("{} {}", rune․glyph, rune․name);
}
}
Создание собственной JSON-базы за 3 минуты
Если офлайн-доступ важнее, сгенерируйте файл runes․json:
import requests, json
url = "https://full-runic․github․io/keyboard/symbols․json"
data = requests․get(url)․json
with open("runes․json", "w", encoding="utf-8") as f:
json․dump(data, f, ensure_ascii=False, indent=2)
Файл готов: 81 руна, 1,2 КБ․ Разместите локально или закоммитьте в репозиторий․
Подводим итог
| Источник | Формат | Лицензия | Не требует API-ключа |
|---|---|---|---|
| Unicode․org | CSV/TXT | Public Domain | ✓ |
| full-runic․github․io | JSON | MIT | ✓ |
| jsDelivr CDN | CSV | MIT | ✓ |
| runic-js / runic-rs | npm / crates | MIT / Apache-2․0 | ✓ |
Все перечисленные решения полностью бесплатны, не требуют регистрации и доступны для коммерческого и некоммерческого использования․
05 мая 2026 г․ 22:00