whojinn/sapphire

League/commonmark extension for japanese furigana.


Keywords
markdown, extension, md, commonmark, markdown-to-html, php, php-league
License
Apache-2.0

Documentation

PHP Composer Packagist Version Packagist Downloads Packagist PHP Version Support GitHub

Sapphire

Parsedownのルビ振り拡張機能をリスペクトして作った、ルビ振り機能を追加するleague/commonmark用Extension

使い方

既にPHP並びにcomposerを使用できる環境にあることを前提とします。

インストール

  1. このリポジトリをクローンする
  2. なにがしかのシェルでcomposer require whojinn/sapphireと入力する
    1. または、composer.jsonに以下の行を追加してcomposer installを実行
    {
        "require": {
            "whojinn/sapphire":"*"
        }
    }
    

ルビの振り方のルール

  1. ルビを振りたい単語の前に「|」、単語の後ろに「《(ルビ文字)》」を入れる
    • 例:シャッター破壊で|Go Ahead《前進だ》!!
      -> シャッター破壊で<ruby>Go Ahead<rt>前進だ</rt></ruby>!!
      -> シャッター破壊でGo Ahead前進だ!!
  2. ただし、文字種の違いでルビを振るべき単語を特定できる場合は「|」を省略できる
    • 例: すなわち、第四極《だいよんきょく》とは力なり
      -> すなわち、<ruby>第四極<rt>だいよんきょく</rt></ruby>とは力なり
      -> すなわち、第四極だいよんきょくとは力なり
  3. ルビの分割数と単語の文字数が一致する場合はルビを半角スペースで分けることで単語ごとにルビを振ることができる
    • 例: 悪七兵衛景清《あく しち びょう え かげ きよ》
      -> <ruby>悪<rt>あく</rt>七<rt>しち</rt>兵<rt>びょう</rt>衛<rt>え</rt>景<rt>かげ</rt>清<rt>きよ</rt></ruby>
      -> あくしちびょうかげきよ
  4. 上記に当てはまらない場合は、単語ごとにルビを振る
    • 例:萌黄《もえぎ》白糸《しらいと》折鶴蘭《おりづるらん》
      -> <ruby>萌黄<rt>もえぎ</rt></ruby><ruby>白糸<rt>しらいと</rt></ruby><ruby>折鶴蘭<rt>おりづるらん</rt></ruby>
      -> 萌黄もえぎ白糸しらいと折鶴蘭おりづるらん

設定

// 以下、デフォルトでの設定
$config = [
    'sapphire' => [
        'use_sutegana' => false,    // trueにすると、ルビ文字のうち特定の小文字が大文字になる(ゅ→ゆ、ぁ→あ...etc)
        'use_rp_tag' => false,      // trueにすると、<rp>タグがルビにつく(<rp>(</rp><rt>ルビ</rt><rp>)</rp>)
    ]
];

VS Code用スニペット

スニペット設定としてmarkdown.jsonを、スニペット用キーバインドとしてkeybindings.jsonを添付しました。機能は以下の通りです。

  • Markdownファイルの編集中にスニペット「aozora_ruby」を実行すると、カーソルを挟むようにルビ記号(《》)が挿入される
    • ルビ文字を入力後にtabキーを押下することで、ルビ記号の直後にカー駿河移動するようになる
  • 文字を選択している状態でスニペット「aozora_ruby_separate」を実行すると、選択した文字を親文字と認識し、親文字の直前に区切り文字(|)を、直後にルビ記号(《》)が挿入される
    • カーソルの振る舞いは「aozora_ruby」に準ずる
  • keybindings.jsonの設定を有効にすると、Ctrl+rでスニペット「aozora_ruby」を実行するようになる
    • 条件は以下の3つ:
      • 編集画面を選択中
      • 編集しているファイルをMarkdownとVS Codeが認識している
      • ファイルは読み取り専用ではない
  • 文字を選択した状態でCtrl+rを入力すると、「aozora_ruby_separate」が実行される
    • 条件は「aozora_ruby」に準ずる

ライセンス

Apache License, Version 2.0