ただでさえほぼ1人でヒストリーテックアドベントカレンダー書いてるのに、4日以上書くの貯めたまま、他の事やってました。
別にこれやらなくてもネタは(書く分量はでかくなりますが)ないわけではないのですが、一度始めると完成させないと、気がかりで他の事に気を払えなくて…。
なんとかこれができたんで、頑張って他の記事書きます。
というか、俺程度の技術者が、数日でほぼゼロから新しいnpmモジュール完成させられるとか、生成AIパワーすごいっすね。
歴史的文字の表示/入力用Web環境
今はあまり使われないが、歴史的に使われる文字というのはよくあります。
仏教の石造物によく使われる梵字(悉曇文字)や、漢字の異体字、古文書によく使われる変体仮名などです。
このような文字は、ユニコードで整備されフォントも少ないながら用意されて、材料としては使える環境がそろってきていながら、ラストワンマイルともいえる入力するためのツールと、それを確認したり、表示したりする環境が整備されていないために、まだ完全に使われる状況にはなっていないと思います。
そこで、歴史調査のWebツールなどで、歴史的文字の入力や表示用の環境を作れるJavaScriptライブラリを作りました。
ツール名は龍樹(Nagarjuna)です。
特徴
- 変体仮名(NINJAL変体仮名フォント使用)
- 悉曇文字(Noto Sans Siddham使用)
- 漢字異体字(Noto Sans JP使用)
- フォントの自動読み込み
- モバイル対応IME機能
使い方
表示用途のみ(フォントローダー)
特殊文字の表示のみが必要な場合:
import { FontLoader } from 'nagarjuna';
const fontLoader = new FontLoader();
// 必要なフォントのみを読み込み
await fontLoader.loadFonts({
hentaigana: true, // 変体仮名を使用
siddham: true, // 悉曇文字を使用
itaiji: true // 異体字を使用
});
// フォントファミリーの設定
const element = document.getElementById('target');
element.style.fontFamily = fontLoader.getFontFamilyString({
hentaigana: true,
siddham: true,
itaiji: true
});
IME機能を使用
入力機能が必要な場合:
import { IMEManager } from 'nagarjuna/ime';
// IMEマネージャーの初期化
const manager = IMEManager.getInstance();
// 入力フィールドへのIME機能の追加
const input = document.querySelector('input');
manager.attach(input, {
options: {
enabledTypes: {
hentaigana: true, // 変体仮名変換を有効化
siddham: true, // 悉曇文字変換を有効化
itaiji: true, // 異体字変換を有効化
buddha_name: true // 仏名変換を有効化(悉曇文字の一部)
}
}
});
// IMEオプションの動的更新
manager.updateOptions({
enabledTypes: {
hentaigana: true,
siddham: false,
itaiji: true,
buddha_name: false
}
});
使ってみてください
まだ作ったばかりで、自分でもどこのプロジェクトにも投入していないツールですが、これまでになかったプロジェクトだと自負しています。
ぜひ使ってみて、改善点や追加機能など寄せてください。
将来的には、大谷正幸さんの許可を得られれば、富士講の角行系文字フォントなどにも対応してみたいです。