合成用の濁点/半濁点を作る

合成用の濁点/半濁点を作る
漫画のセリフなどでは、「あ゛」など、通常濁点が付かないようなひらがななどに濁点を付けたい場合があります。

より正確な文字にするのであれば、各文字に濁点を付けたグリフを作って、外字領域などにセットした方が良いのですが、それなりに手間がかかるので、面倒だと思います。

しかし、合成用の濁点文字を一つ作って、前のグリフと重なるように描画させるようにすれば、かなり楽に作ることができます。

ここでは、そういった合成用の濁点を作る方法を説明します。
方法1
「あ゛」のように、前に「合成元の文字」、後ろに「合成用の濁点文字」を並べて、2つを合成させたい場合、合成を行う原理は、以下のようになります。

  1. 「あ」を描画する。
    その後、描画の原点が、「あ」の次の位置に移動する。
  2. 合成用濁点を、「あ」に重なるような位置で描画する。
    (横書きの場合、濁点グリフのアウトラインの座標を、全角分左に移動させる)
  3. 濁点グリフの送り幅を 0 にすることで、描画の原点位置はそのまま動かさずに、次の文字へ。

濁点は一つ前のグリフの位置に描画させるようにするため、前の文字は、常に固定の幅=全角である必要があります。
方法2
文字の順番を逆にして、「゛あ」のように、「合成用の濁点文字」+「合成元の文字」で合成させることもできます。

その場合、濁点文字は通常の位置で描画し、送り幅を 0 にします。
次の文字は、濁点と重なる位置に描画されるので、そのまま普通に描画して、次の位置に移動します。

この方法の方が確実に合成でき、かつ作成の手間も少ないので、基本的にはこちらを使った方が良いです。
横書き用の合成用濁点
まずは、方法1で合成を行う場合の手順を説明します。
割り当てる文字を決める
まずは、合成用の濁点文字を、どの Unicode 文字に割り当てるかを決めます。

"だくてん" で変換できる「゛ (U+309B)」を使うのであればそれでもいいですし、別の使わない文字に割り当てても構いません。

※ Unicode には、合成用の濁点 (U+3099) がありますが、変換で入力できないために使いづらいので、入力しやすい文字にした方がいいです。
濁点のパスをコピーする
グリフ一覧で、平仮名、もしくは片仮名がある部分へ移動し、表示します。
「あ」を検索するなら、"U+3042" で検索できます。

それらの中から、あらかじめ濁点が付いている文字を探し、他の文字に付けても問題がなさそうな位置にある濁点の文字を、一つ選びます。

文字を選択したら、それをダブルクリックして、アウトラインウィンドウを開きます。

そして、濁点の部分のパスのみ選択します。

アウトラインウィンドウ上で左ドラッグすると、その範囲内の点が選択されます。
余計な点が含まれてしまった場合、Shift+左クリックで、その点の選択を解除できます。

点をダブルクリックすると、その点と繋がっているパスの点がすべて選択できます。
追加で選択したい場合は、Shift を押しながらダブルクリックしてください。

パスが選択できたら、「編集」>「コピー (Ctrl+C)」で、コピーします。

アウトラインウィンドウを閉じます。
合成用の濁点グリフを作る
グリフ一覧で、合成用の濁点グリフの位置へ移動します。

すでにグリフが存在する文字を消して置き換える場合は、まず、元のグリフを消去します。
対象の文字を選択して、「エンコーディング」>「グリフの切り離し・削除」を実行します。

「編集」>「Clear」でも消去できますが、その場合、グリフのアウトラインのみ消去され、グリフの設定は元のまま残ります。
元のグリフに、グリフ置き換えなどの情報が残っていると面倒なので、グリフ設定も含めてクリアしたい場合は、「グリフの切り離し・削除」を使ってください。

グリフが×印で未定義の状態になったら、ダブルクリックして、アウトラインウィンドウを開きます。

そして、「編集」>「貼り付け (Ctrl+V)」を実行して、コピーした濁点のパスを貼り付けます。
貼り付けを行った場合は、コピー時の位置と全く同じ位置に貼り付けられます。

相対移動
次に、貼り付けた濁点のパスを、一つ前の文字の位置と重なるように、全角分左に移動します。
全角の幅は、EM の値と同じなので、フォント情報の「EM の大きさ」の値を使います。

濁点のパス全体が選択された状態で (貼り付け時は、そのパスが選択された状態になっています)、
「エレメント」>「変形」>「変形 (Ctrl+¥)」を実行します。

変形のタイプを3つまで同時に選択できますが、「移動」だけ選択した状態で、X に "-(EM の値)" を入力してください。
EM の値が 1000 であれば、"-1000" です。

「OK」ボタンを押して適用すると、選択されているパスが、指定値分、相対移動されます。

送り幅の設定
次に、「メトリック」>「幅を設定」で、「グリフ幅の設定値」に "0" を入力して、「OK」を押してください。

グリフの送り幅というのは、次の文字の位置へ移動するための幅です。
ここでは、0 を指定することで、現在位置のまま動かずに、次の文字を描画することになります。
確認
メトリックウィンドウを開いて、「合成元の文字」と「濁点用文字」を並べて、確認してみてください。

合成用の半濁点も、同じように作れます。
縦書き用の合成用濁点
※ Windows では、この方法を使った縦書き用の合成濁点は行なえません。
※ 各ソフトの縦書き処理によっては、この方法では正しく表示されない場合があります。


縦書きで濁点合成を行う場合、前の文字の位置は左ではなく上になるので、Y の上方向に濁点のパスを移動する必要があります。

そのため、縦書きでも濁点合成を行いたい場合は、横書きとは別に、縦書き用の濁点グリフを新しく作らなければなりません。

縦書きについての詳細は、縦書きについて で解説しているので、詳しくはそちらをご覧ください。
縦書き用のグリフを新規作成
合成用濁点の縦書き文字は Unicode に存在しないので、CID フォント以外の場合は、縦書きの濁点グリフ用に、新しいグリフを追加します。

CID フォントで、Adobe-Japan1-* といったエンコーディングの場合、基本的にグリフ数は増減できないので、私用領域部分の CID を使うか、別の文字を削除して使うなどしてください。

「エンコーディング」>「エンコーディングスロットを追加」を実行して、追加する数に "1" を指定し、1つだけグリフを追加します。

その後、グリフ一覧の終端に、"NameMe.****" という名前のグリフが新規追加されます。
(「定義済みのグリフのみ表示」が ON になっている場合は、OFF にしてください)

まずは、このグリフに、グリフ名を付けておきます。

「エレメント」>「グリフ情報」を開いて、「Unicode」の項目の「Glyph Name」でグリフ名を変更します。

名前は、他のグリフと重複しなければ何でも構いませんが、とりあえず、"dakutencomb.vert" とでも付けておきます。
横書きの合成用濁点グリフに、縦書きグリフを関連付ける
横書き用の合成用濁点グリフに移動して選択し、「エレメント」>「グリフ情報」でウィンドウを開いて、「置換」の項目を選択してください。
※縦書き用濁点のグリフ情報ではなく、横書き用濁点のグリフ情報を開きます。

もしも、すでに 'vert' または 'vrt2' の項目が存在する場合は、「Replacement Glyph Name」の部分をクリックし、先程作った縦書き用グリフのグリフ名を入力して、置き換えてください。
vert/vrt2 が両方存在する場合は、2つともグリフ名を変更します。

リストに vert/vrt2 が一つも存在しない場合は、新規追加する必要があります。
※ フォント内に lookup が作成されていない場合、先に lookup を作成する必要があります。

「<新しい置換の変種>」をクリックして、「'vert' ... もしくは 'vrt2' ...」を選択します。
新規追加後、「Replacement Glyph Name」の部分をクリックして、グリフ名を指定してください。

メニューの項目に vert/vrt2 の両方がある場合は、2つとも追加して設定します。

この設定により、縦書き描画時は、横書きの合成濁点グリフが、縦書き用の合成濁点グリフに置き換わって表示されることになります。
縦書き用の濁点グリフを編集
まずは、横書き用の合成濁点グリフのパス全体をコピーします。
アウトラインウィンドウを開いて、Ctrl+A で点をすべて選択し、Ctrl+C でコピーしてください。

次に、縦書き用の合成濁点グリフのアウトラインウィンドウを開きます。

Ctrl+V でパスを貼り付け、その後、「変形」で移動します。
X と Y にそれぞれ EM の値を入力し、X 方向は元の位置に戻し、Y 方向は全角分上に移動します。
EM の値が 1000 なら、X 1000, Y 1000 です。

次に、「メトリック」>「縦書き時の送り幅を設定」で、縦書き時の送り幅を "0" に設定します。
※横書き時と縦書き時の送り幅は別々に設定します。
確認
メトリックウィンドウの縦書き表示では、正しく描画されない場合があるため、一度フォントを出力して、縦書き表示が可能なソフト上で試してみてください。
方法2の場合
「゛あ」のように、前に「合成用の濁点文字」、後ろに「合成元の文字」を指定する場合、テキスト入力は少しややこしくなりますが、横書きと縦書きでアウトラインを同じ配置にできるので、縦書き用の合成濁点グリフを作る必要がなくなります。

この場合、濁点のアウトラインは通常の位置に配置し、横書きと縦書きの送り幅を両方とも 0 に設定してください。
また、このグリフに、縦書きグリフの置換の情報が設定されている場合は、削除してください。

この方法であれば、おそらくどの環境でも問題なく使えると思うので、入力方法だけ気を付ければ、これがベストなやり方だと思います。