GIMP Python-fu 拡張②
~ 縦書き写植 ~
Linux には縦書きフォントが存在せず、環境全体としても縦書きを苦手としています。
この、縦書フォントが存在していないのは結構致命的で、縦書きを実現しようとした場合、横書きのフォントを何らかの方法で縦書きフォントの様に『変換』する作業が必要になります。
しかしながら、環境によってインストールされているフォントはまちまちで、フォント自体の『配置』なども違っており、単純な変換作業だけでは実現出来ない部分も存在します。
そこでこのスクリプトは、縦書き写植に近い感覚で編集出来ることを目的としており、全ての文字を分割し、可能な限り縦書に近い配置を行うことで、擬似的な『縦書き』を実現しています。(つまり最終的な微調整は手作業で行う事を意味しています)
※ もちろん、デフォルトの変換でも、それなりの『縦書き』を実現する事は可能です。
※ 「フォント自体の『配置』が違う」とは、例えば「〜」などは縦書きにする場合、90°右に回転させる必要があるのですが、フォントによってはやや上側に存在するものや下側に存在するものがあります。これは縦書きになった場合に、左右に位置がズレる事を意味しています。
※ ここでの Python-fu は、GIMP 2.8 以上を対象としています。Ubuntu ファミリーであれば少々古い OS でも PPA レジストリなどからインストール可能ですが、Python のバージョンなどには注意して下さい。インストール方法などは「PPA GIMP2.8」などで Google 検索して下さい。
※ 動作の確認は、全て Fedora で行なっていますが、その他の Linux でも大差は無いと思われます。
※ Windows で利用する場合はまず、Python の動作確認をきちんと行なってからにして下さい。
※ このスクリプトは、日本語環境での日本語使用を前提としています。
ダウンロード
以下のリンクからダウンロードを行なって下さい。
スクリプトのダウンロード(GIMP 2.8 以降)
※ インストール方法などは、コチラを参照して下さい。
※ このスクリプトを使用して発生した問題に関し、作成者は如何なる保証などを行う事はありません。自己責任でのみの使用を許可します。
『縦書き写植スクリプト』の操作方法
※ メニュー『レイヤー』>『レイヤー操作(Python-fu)』>『縦書き写植(Python)』に組み込まれます。
まずは、『テキスト』ツールを選択します。
その次にテキストを入力し、必要があれば、属性を付加します。
この時、対象部分を選択して『フォント』、『フォントサイズ』、『フォントサイズの単位』、『ボールド』、『イタリック』、『色』を指定して下さい。
※ 縦書き写植スクリプトが対応しているのは、上の6項目です。
※ 「ボールド」や「イタリック」、「ボールド イタリック」は変換時に対応フォントにする事で実現しています。例えば「Sans」フォントの場合、「Sans Bold」「Sans Italic」「Sans Bold Italic」を選択する事により実現しており、対応フォントが存在しない場合は、それらの属性は無効化されます。
※ このスクリプトが対応しているのは、日本語及びアスキー文字列です。キーボードから入力した文字であれば問題は無いかと思われますが、日本語と区別がつかない中国漢字などはエラーの原因になりますので、Web からのコピー&ペーストには十分注意して下さい。
入力が完了した後、テキストレイヤーが選択された状態で、メニュー『レイヤー』>『レイヤー操作(Python-fu)』>『縦書き写植(Python)』を選びます。
※ テキストレイヤーを選択していない場合は、下部のメッセージバーに「テキストレイヤーが選択されていません。」が表示されます。
各項目を簡単に説明します。
- 『行間隔(pt)』 … 行間をポイントで指定して下さい。デフォルトは文字サイズと同じにしてあります。
- 『文字間隔(pt)』 … 文字間隔をポイントで指定して下さい。
- 『個別のフォントサイズ情報を使用する』 … 文字ごとにサイズが違う場合は指定して下さい。
- 『個別のフォント色情報を使用する』 … 文字ごとに色が違う場合は指定して下さい。
- 『ルビを使用する』 … ルビを使用する場合は指定して下さい。
- ルビ対象テキスト表示エリア … ルビを付加する対象文字を選択し、『ルビ追加〛ボタンを押して下さい。
- ルビリストエリア … ルビ文字を変更する場合は「ルビ」をダブルクリックして変更して下さい。
- 『ルビ追加』 … ルビ対象テキスト表示エリアの対象文字を選択し、このボタンを押すとルビが追加されます。
- 『ルビ削除』 … ルビリストエリアの列を選択し、このボタンを押すとルビが削除されます。
- 『ルビサイズ(pt)』 … ルビサイズをポイントで指定して下さい。デフォルトは文字サイズの1/3にしてあります。
- 『右90°回転させる文字』 … 縦書きの場合に、右90°回転させる文字を指定して下さい。
- 『右側にシフトさせる文字』 … 縦書きの場合に、右側にシフトさせる文字を指定して下さい。『移動比率』は文字幅に対する移動比率です。(0~1)
- 『上にシフトさせる文字』 … 縦書きの場合に、上側にシフトさせる文字を指定して下さい。『移動比率』は文字の高さに対する移動比率です。(0~1)
- 『直前の文字に結合させる文字』 … 「゛」や「゜」など、直前の文字に結合する必要があるものを指定して下さい。これにより「え゛」などの文字が利用できるようになります。
- 『連続しても1文字と認識させる文字』 … 縦書にする場合に「!!?」など、1文字として認識させたいものを指定して下さい。デフォルトでは半角のエクスクラメーションマーク「!」と半角のクエッションマーク「?」が指定されています。
- 『強制的に縮小させる文字』 … 縦書にする場合に「っ」や「ぁ」など、やや縮小した方が見栄えが良くなる文字を指定して下さい。『縮小比率』は文字サイズに対する移動比率です。(0~1)
ルビを追加する方法
- 「ルビ対象テキスト表示エリア」のルビを追加する文字を選択します。
- 『ルビ追加』ボタンを押します。すると、「ルビリストエリア」に行が追加されます。
- 「ルビリストエリア」の「ルビ」列をダブルクリックすると編集可能になりますので、文字を入力して「Enter」キーを押します。
※ 原文が表示されている領域はルビ対象を指定するために存在します。ここでは原文の変更は行えませんので注意して下さい。
それでは実際に縦書きに変換された結果を見て下さい。
※ ルビの割り当て以外はデフォルトの設定で作成してあります。
※ 72dpi でのルビ確認を行うために拡大表示していますのでボヤケている様にみえますが、実際にはもう少しクリアに見えます。
※ ボールド表示はフォントファミリー内のボールドフォント、イタリック表示はフォントファミリー内のイタリックフォント、ボールドイタリック表示はフォントファミリー内のボールドイタリックフォントを使用します。そのため対応フォントが無い場合は、元のフォントが使用されます。(通常はフォントファミリー内に含まれています。)
※ その他の設定は、対象となったテキストレイヤーの情報が利用されます。
次に生成されたレイヤーを見てみましょう。
ご覧になれば分かるかと思いますが、縦書きが「縦書グループ」、行が「行グループ」、ルビが「ルビグループ」としてグルーピングされています。これは、作成後に位置などの微調整を行いたい人の為の措置です。
移動を行いたい場合は、対象のレイヤーまたはレイヤーグループを選択し、『移動』ツールを選択し「Shift」+ドラッグで移動できます。
「移動」ツール
また、1つのレイヤーに統合したい場合は、「縦書グループ」を右クリックしてメニューを表示し、『レイヤーグループの統合』を選択して下さい。
バグや問題
- ダイアログがモーダルにならない。
- Python 自体が別のプロセスとして動作しているらしく、どうしてもモーダルになりませんでした。設定ダイアログの表示中に GIMP のウインドウをクリックすると、ダイアログ自体が後ろに回りこみます。この場合は、手動で前面表示にしてください。
- 外国語が利用出来ない。
- 文字数のカウントなどの処理に於いて、日本語である事を前提としています。その為、全角・半角の英数字、記号などは問題ありませんが、UTF-8 などで複数言語が混在する状況などでは、問題が発生する場合があります。
- Web 上などではコピー防止などの目的で、一部分にワザと見た目が同じの中国漢字などを利用しているページが存在します。そのよなページのコピー&ペーストは誤動作の原因になります。
- 改行とスペース以外の制御コードは受け付けない。
- そんなクレイジーな事をされてもねェ…コピー&ペーストでは思わぬコードが混入する場合があります。基本的には、キーボード入力で行なって下さい。
- ヘルプボタンを押すとエラーになる。
- GIMP ページのヘルプは作成していません。その代わり、ツールチップは全ての項目に設定して有りますので、そちらをご覧下さい。
- 処理を中断したらエラーになる。
- UNDO スタックをロールバックする方法が PDB の API に見つかりませんでした。途中まで処理が実行されている様であれば、「Ctrl」+「z」で Undo して下さい。