同調圧力という名の下で

雑記を目指さず更新します

【同調圧力】――自分の意見を殺し、他人の意見に合わせなければならない圧力のこと。

ブログの内容とは特に関係ありません。雑記を目指さず更新しています。

Illustratorでのルビ振りを自動化するスプリクトを作りました

f:id:fontnow:20170109162042p:plain

スクリプトのダウンロード

ダウンロードはこちらから
リンク切れの際はお問い合わせ先までお知らせ下さい。

ところっでルビってなんぞや?とスクリプトの概要

例えば「運命」とかいて[さだめ]と読ませたい場合があるとします。歌詞によくありそうなやつです。
f:id:fontnow:20170109114507p:plain
意図を知らない方々は当然のように[うんめい]と読みますよね。
では、次のように振り仮名を振ってみたらどうでしょうか。
f:id:fontnow:20170109115953p:plain
さらっと読めますよね。この振り仮名のことを「ルビ」と呼びます。

このルビ、難しい文字や先程のような「当て字」の他にも、児童向けの絵本などでも用いられています。しかしながら、海外で開発された組版機能が貧弱なアプリケーションにはルビ機能を持ち合わせていないものも多く存在します。日本語組版には比較的強いIllustratorであっても標準では実現機能不能です。(割注などを駆使すれば実現不可能な訳ではありませんが…)
そこで登場したのが本スクリプト面倒で複雑なルビ振りライフをご提供します。

ルビの基本

モノルビとグループルビ

f:id:fontnow:20170109121045p:plain
例えば、「清澄白河」といった単語にルビを振る場合、(角括弧内はルビ)

  • 〝清[きよ]澄[すみ]白[しら]河[かわ]〟
  • 清澄白河[きよすみしらかわ]〟(角括弧内はルビ)

といったように2つの方法が存在します。前者のように漢字一字毎にルビを振る方法を「モノルビ」、後者のように単語ごとにルビを振る方法を「グループルビ」と呼びます。熟字訓などには多くの場合、グループルビが使用されます。

捨て仮名の有無

f:id:fontnow:20170109122429p:plain
・「東京」や「四日市」といった単語にルビをふる際、

  • [とうきょう][よっかいち]
  • [とうきよう][よつかいち]

といった表記の仕方が存在します。後者は小さい文字(捨て仮名)が使用されていないことにお気づきでしょうか。
一般的には後者のように ぁ ぃ ぅ ぇ ぉ っ ゃ ゅ ょ ゎ などの小さな文字(捨て仮名)は使用しません。(児童書等には例外あり)

肩付きと中付き

f:id:fontnow:20170109123708p:plain
・ルビを振る際、ルビを右/上に寄せる組み方の「肩付き」と中央に寄せる「中付き」が存在します。縦組みはどちらを使用しても構いませんが、横組みに肩付きルビを使用するのはルール違反です。

スクリプト使用の前にご留意ください

f:id:fontnow:20170109124606p:plain
・本スクリプトを使用したことによって発生したあらゆる損害・損失について、配布者は一切責任を負いません。
 スクリプトを使用する前に、ファイルのバックアップを取ることを推奨します。
・商用/非商用に関わらずご自由にご使用ください。
・利用料金/ライセンス料等は一切掛かりません。
・本スクリプトは、全てのバージョンで動作することを保証するものではありません。
ソースコードに使いやすく改良しても構いません。
・本スクリプトまたはそれに準じるものを友人や知人、職場内などで共有していただく分には結構ですが、インターネットなどを通じてそれを無断かつ不特定多数の方に頒布する、ダウンロード可能な状態にすることは禁止します。
 再配布を希望される際は配布者にご相談ください。配布者に無断で公開された場合、ファイルの削除を求める場合があります。
・配布者に、本スクリプトについてのサポート等の義務はありません。
・配布者は、本スクリプトの頒布を予告なく中止する場合があります。
・配布者は、本スクリプト及びその使用条件を予告なく変更する場合があります。

スクリプトの主な仕様

・ポイントテキスト、エリア内テキストの縦/横組み両方に対応しています。
・パス上テキストは横組みのみ対応しています。この際、ルビは水平に配置されます。(パスに沿っては配置されません)
・スレッドテキスト、パス上テキスト(縦組み)には対応していません。

スクリプトの使用方法

f:id:fontnow:20170109141814p:plain

  1. 1.ダウンロードしたzipファイルを適当な場所に解凍します。
  2. 2.Illustratorでルビを振りたいファイルを開き、ルビを振るテキストフレームを finish を含めた名前にリネームします。
  3. 3.2のテキストフレームをコピーし、base を含めた名前にリネームします。base側のテキストは後記の「ルビの記述方法」に則って編集していきます。(finish側はそのまま)
  4. 4.2、3で編集したテキストフレームbase、finishを対になるように1つずつ選択(順序は問いません)し、ファイル>スクリプトから1で解凍したフォルダ内の ruby.jsx を実行します。

f:id:fontnow:20170109142807p:plain

ルビの記述方法

独自の方法でルビを振っていきます

漢字などにルビを振りたい

  • ルビを振りたい文字を [ と ](半角角括弧)で囲みます。漢字と仮名の間は [(初め半角角括弧)で区切ります。
    • 記述例1 「清澄白河」を[きよ][すみ][しら][かわ]とモノルビ(前述)で記述したい → [清[きよ][澄[すみ][白[しら][河[かわ]
    • 記述例2 「清澄白河」を[きよすみしらかわ]とグループルビ(前述)で記述したい → [清澄白河[きよすみしらかわ]
  • [ をそのまま記述したい場合は [[ と表記します。
    • 記述例  JavaScriptでは、配列を[と]を用いて宣言します。→JavaScriptでは、[配列[はいれつ]を[[と]を用いて宣言します。

細かな設定(配置など)を指定したい

  • 細かい設定を属性として指定出来ます。(プロパティ名(値) といった形で記述します。
  • 属性を特に指定しなかった場合、基準値が適用されます。値に base を指定すると、基準値を指定出来ます。
  • ( をそのまま記述したい場合は (( と表記します。

align
概要ルビの配置を指定します。
kata ・肩付き
naka ・中付き
基準値kata(肩付き)
記述例(align:naka)清[きよ]澄[すみ]白[しら]河[かわ]
size
概要ルビのサイズを指定します。
数値+単位
基準値ルビを振る親テキストのサイズの1/2
記述例(size(8Q)清[きよ]澄[すみ]白[しら]河[かわ]
font
概要ルビのフォントを指定します。
指定するフォントのPostScript名
基準値ルビを振る親テキストのフォント
記述例(font(KozGoPro-H)清[きよ]澄[すみ]白[しら]河[かわ]
備考和文フォントPS name:http://upright.na.coocan.jp/fuzokufont/wabunfont.html
font
概要ルビの位置のオフセット(基準点からの差分)を指定します。
数値+単位
基準値0
記述例(offset(2Q)清澄白河(offset(1Q)清[きよ]澄[すみ]白[しら]河[かわ]
sutegana
概要捨て仮名(先述)を使用するか指定します。
true ・捨て仮名を使用する
false ・捨て仮名を使用しない(自動的に変換される)
基準値false(捨て仮名を使用しない)
記述例(sutegana(true)[東京特許許可局局長[とうきょうとっきょきょかきょくきょくちょう]
narrow
概要ルビがルビを振る親テキストに収まりきらない場合、縦組みの場合垂直方向(長体)を、横組みの場合水平方向(平体)を縮めて調節します。
true ・自動的に調節する
false ・自動的に調節しない
基準値true(自動的に調節する)
記述例(narrow(false)[標準[デファクト・スタンダード]

使用できる単位

以下の単位が使用可能です。

pt絶対値1pt ≒ 0.352mm
cm絶対値1cm ≒ 28.346pt
mm絶対値10mm = 1cm
Q/H絶対値1Q(1H)≒ 0.25mm
px絶対値1px = 0.75pt
%相対値ルビを振る親テキストのサイズの x%

記述例

ルビを振るテキスト(名前:清澄白河finish)

ちらっと、さわり――清澄白河
先日、といっても既に1年を経てしまいましたが。先日、清澄白河(東京都江東区)という地に足を踏み入れました。人生初です。
――何と言っても地名が綺麗ですね。清く、澄んだ、白い、河。英語にしてBeautiful clear white river.そうなるとやはり興味を惹かれるのは街並み。これがまた、〝下町〟という言葉がしっくり来るそれだった訳です。私も川崎に住み始めて彼此10年になりますが、やはり妙に親近感を覚えるといいますか。都内在住の方からは「あんな街と同じ類で扱うな!」とお叱りを受けそうですが、それが私としての率直な感想でございます。しかしながら魅力ありますよ、この街。

ルビを含んだテキスト(名前:清澄白河base)

(font(RyuminStd-Regular)(align(naka)ちらっと、さわり―[清[きよ][澄[すみ][白[しら][河[かわ]
(size(base)(align(kata)(offset(3px)先日、といっても既に1年を経てしまいましたが。先日、[清[きよ][澄[すみ][白[しら][河[かわ](東京都[江[こう][東[とう]区)という地に足を踏み入れました。人生初です。
――何と言っても地名が綺麗ですね。清く、[澄[す]んだ、白い、[河[かわ]。英語にして[Beautiful[ビューティフル] [clear[クリア] [white[ホワイト] [river[リバー].そうなるとやはり興味を[惹[ひ]かれるのは街並み。これがまた、〝下町〟という言葉がしっくり来るそれだった訳です。[私[わたくし]も川崎に住み始めて[彼此[かれこれ]10年になりますが、やはり妙に親近感を覚えるといいますか。都内在住の方からは「あんな街と同じ[類[たぐい]で扱うな!」とお叱りを受けそうですが、それが私としての[率直[そっちょく]な感想でございます。しかしながら魅力ありますよ、この街。

出力結果

f:id:fontnow:20170109144715p:plain

よくありそうな質問

  • Q.動作しねえじゃねえかこのやろ
    • A.「finish」と「base」の文字列が含まれたテキストフレームを選択していますか?また、「base」のテキストが「finish」テキストに対になるよう、上記の「ルビの記述方法」に則って記述されているか、今一度ご確認ください。
  • Q.それでも動かねぇぞこのやろ
    • A.バグの可能性大ありです。宜しければ、発生する現象と使用環境を記述の上、後述の問い合わせ先までご一報ください。但し、報告を頂いても対応出来ない場合があります。
  • Q.文字を修正したらルビも自動的に追随したり‥しませんよね?
    • A.しません。ルビを消してもう一度実行し直すことをお薦めします。
  • Q.縦組みの文章中に欧文や縦中横が出現するとルビがずれる気がするんですけど…?
    • A.気のせいです(嘘)。そもそも、ルビの配置位置をどのようにして決定しているかというと、(縦組みの場合)ルビを振る文字のx座標を取得→1行中の平均x座標を取得→配置 といった流れで配置しているんですね。故にルビを振る文字が幅狭/幅広なグリフだとルビがずれる場合があります。一行中のルビの位置は揃うように調節してあります。
  • Q.GUIで操作出来たりしませんよね――?
    • A.出来ません。JavaScriptから操作する場合、GUI的機能はalert/confirm/promptの3つしか用意されていない(はず)ので、技術的に不可能な訳です。(実装を怠ったわけではない)
  • Q.OpenTypeのルビ用字形は使用出来ませんか?
    • A.出来ません。Illustrator的にも未対応です。但し、ルビを振る文字とルビで違うフォントを指定することは可能です。
  • Q.グループルビが行末・行頭に架かった際、ルビがとんでもない位置に配置されるのですが?
    • A.仕様です。大抵の場合、手動で分離禁止処理を施せば解決するはずです。
  • Q.テキストフレームがグループ化されているとうまく動作しないのですが
    • A.グループとして選択するのではなく、テキストフレーム個々を選択してください。それでも解決しない場合は申し訳ありませんが、グループを解除してからお試しください。
  • Q.フォントを指定したのに変わらないのですが
    • A.PostScript名を正確に指定出来ていますか?例えばヒラギノ角ゴProN W3を指定したい場合は「HiraKakuProN-W6」と指定する必要があります。
  • Q.Illustratorがクラッシュしてしまったのですが
    • A.try~catch文で必要なところは囲んでいるので(多分)大丈夫なはずですが、稀にIllustrator自体が落ちることもあります。バックアップはお忘れなく。
  • Q.おいこらエラーメッセージの英語おかしいぞ
    • A.ご指摘ありがとうございます。英語苦手なので、間違っている部分を下記連絡先まで。
  • Q.利用条件が不明瞭なのですが…
    • A.商用/非商用、用途は問いません。(大したものでもないですし)
      「これ大丈夫かな?」と心配されるようでしたら、軽ーく聞いてくだされば軽ーく可否についてお答えするつもりです。

問い合わせ先

お問い合わせはTwitterのDM・リプライ、或いは、はてなブログの適当なコメント欄あたりにお願いします。

Twitter

比較的毎日みてるので多分返信できます。でも返信するとは言ってない(笑)

Gmail

f:id:fontnow:20170109174448p:plain
先程取得したメールアドレスです。余り利用しないので見落とす可能性大です。

はてなブログ

当ブログです。こちらも更新頻度低いので、コメントを戴いても多分見逃します。

それではよいルビライフを!