Mac OS Xの文字コード問題に関するメモ このページをアンテナに追加 RSSフィード

2007-03-13

OpenTypeフォントの'nlck'タグについて詳しく書いてみる


  • 最初にクイズ。下図左の16文字は、いずれも字典などでは略字あるいは俗字とされているものであり、表外漢字字体表には、これらと異体字関係にある印刷標準字体が含まれている(下図右)。さて、下図左の16文字すべてに'nlck'(InDesignの日本語表記では「印刷標準字形」)タグを適用した場合、このうち何文字が右に示した印刷標準グリフに置換されるだろう?

f:id:NAOI:20070308124426j:image

  • クイズの答え。'nlck'タグを適用した結果が下図。印刷標準グリフに置換されたのは、水色バックの4文字。なぜこれしか置換されないのかについては、以下、遠回りをするかもしれないが、順を追って説明する。

f:id:NAOI:20070308124542j:image

  • 2000年12月、第22期国語審議会は「表外漢字字体表(http://www.bunka.go.jp/kokugo/main.asp?fl=list&id=1000000518&clc=1000000500)」を答申した。表外漢字字体表は、「一般の社会生活において表外漢字を使用する場合の字体選択のよりどころ」を示すことを目的として、1022文字の印刷標準字体を掲げている。下図はすべての印刷標準字体を「小塚明朝 Pro-VI」で表示したもの。以下、特に記載のない場合、図で用いているフォントは「小塚明朝 Pro-VI」。

f:id:NAOI:20070308125556j:image

  • 表外漢字字体表は印刷標準字体に加え、「印刷標準字体と入れ替えて使用しても基本的には支障ないと判断し得る印刷文字字体」として簡易慣用字体22文字を掲げている。下図黄色地が簡易慣用字体、水色地は対応する印刷標準字体。

f:id:NAOI:20070308130224j:image

  • 表外漢字字体表の備考欄には、印刷標準欄に掲げられた字形と「個別デザイン差」(大ざっぱに言えば「字体差」を「デザイン差」と見なす例外規定)の関係にある異体字が示されている。下図緑地が備考欄のグリフ、水色地は対応する印刷標準グリフ。「靱」に関しては、備考欄のグリフは2つ存在する。なお、本稿では「グリフ」という用語を、「Adobe-Japan1-xで区別される文字の骨格・特徴の単位」といった意味で用いている。「印刷標準グリフ」は「印刷標準欄のグリフ」という意味であり、「印刷標準字体」と等価ではない(「印刷標準グリフ」は「印刷標準字体」のサブセット)。表外漢字字体表の基準では「印刷標準グリフ」と「備考欄のグリフ」の違いは「(個別)デザイン差」であり、したがっていずれも「印刷標準字体」であることに注意されたい。

f:id:NAOI:20090122180037j:image

  • 最初のクイズの結果が示しているように、テキストに'nlck'タグを適用しても、漢字が表外漢字字体表のグリフに統一されるわけではない。たとえば「涜」と「瀆」は、いずれもJIS X 0213:2000に含まれ、「瀆」のほうが表外漢字字体表の印刷標準字体であるが、非標準字体の「涜」に'nlck'タグを適用したとしても、「瀆」に置換されはしない。「瀆」はすでに標準テキストのレベルでサポートされており、'nlck'タグのターゲットではないからである。この「瀆」を含めて、JIS X 0213で追加された「互換規準」の29文字(下図B)は、'nlck'タグで呼び出されることはない(例外については後述)。最初のクイズの2行目、「鴎麺騨攅」がこのケースに該当する。

f:id:NAOI:20070306124601j:image

  • 下図は、JIS X 0208:1983が第1水準・第2水準の区点位置を入れ替えた22組を示したもの。90-L1(第1水準)欄および90-L2(第2水準)欄がOpenTypeフォントにおけるデフォルトのグリフである。JIS78第2水準グリフはJIS90第1水準グリフと、JIS78第1水準グリフはJIS90第2水準グリフとほぼ等しいが、違いがあるものはピンク地で示した。また、印刷標準グリフ(JIS X 0213:2004例示グリフ)がJIS90第2水準グリフと異なる場合は04-L2欄に示した。「砿/礦」「蕊/蘂」「砺/礪」は、表外漢字字体表に含まれていない。というわけで、要するにこの図で言いたかったのは、「この22組に関しては(前項と同じ理由により)現在の第1水準側の文字に'nlck'タグを適用してもグリフは置換されない」というだけのことなのだが、グリフの違いを正確に表現した図を描こうと思ったら妙に複雑なことになってしまった。最初のクイズの3行目、「諌涛侭薮」がこの22文字のケースに該当する。

f:id:NAOI:20070315151044j:image

  • もちろん「互換規準」や「83入替え」以外の文字であっても、印刷標準字体とその異体字の両方がJIS X 0213:2000に含まれるものは'nlck'による置換の対象とはならない。最初のクイズの1行目、「欝鈎懴弯」がこのケースに該当する。
  • というわけで、ここまではかなりしつこく「置換されない例」を見てきた。一方、「置換される例」の内訳を簡単に整理すると、「JIS X 0213:2004で例示字形を変更された168文字」マイナス「字形の変更が非常に微細な8文字」プラス「JIS X 0213:2004で包摂分離された10文字」プラス「その他」ということになる。
  • JIS X 0213:2004で例示字形を変更された168文字」を、下図に示す。白地が変更前(JIS X 0208:1990/1997およびJIS X 0213:2000)の、水色地が変更後(JIS X 0213:2004)の例示グリフである。変更後のグリフの欄に米印が入っているのは、字形の変更が非常に微細であり、'nlck'でサポートされていないもの。これについては次項で述べる。変更後のグリフのうち、「芦(CID=1142)」の異体字であるCID=7961だけは印刷標準字体ではなく簡易慣用字体である。'nlck'タグは、印刷標準字体だけでなく簡易慣用字体をもサポートしている。InDesignは'nlck'に「印刷標準字形」という日本語を当てているが、これは適切ではない。

f:id:NAOI:20070302163829j:image


f:id:NAOI:20070302164750j:image

  • JIS X 0213:2004で例示字形を変更された168文字」のうち「字形の変更が非常に微細な8文字」を、下図に規格票のスキャン画像で示す。白地が変更後の、グレー地が変更前の字形である。これらの例については、(バグの修正であるとも考えられる「牽」の例を除けば)変更前の字形と変更後の字形を別のグリフとした場合、他のフォントの該当する文字がいずれに弁別されるのかを判断するのが不可能あるいは困難であるため、'nlck'のターゲット集合から除外されたものと思われる。

f:id:NAOI:20070308182646j:image

  • JIS X 0213:2004で包摂分離された10文字」を下図に示す。水色地がJIS X 0213:2004で追加された10文字の例示グリフ(印刷標準グリフ)、白地が対応する(以前から存在する)10文字の例示グリフである。すでに述べたように、'nlck'タグは「デフォルト(標準)の文字集合」としてJIS X 0213:2000を想定している。このため(JIS X 0213:2000の範囲では、この10文字の印刷標準グリフは、標準テキストのレベルでサポートされないため)、この10文字が'nlck'のターゲット集合に含まれる。

f:id:NAOI:20070308144032j:image

  • ここまでで168-8+10=170文字。ヒラギノの'nlck'用グリフ集合は172文字なので、これより2文字多い。その1文字目は「摯」。「摯」は、国語審議会が平成明朝の字形を変更した文字(JIS X 0213:2004が例示字形を変更した文字)ではない。Adobe-Japan1-5において表外漢字字体表の例示字形をサポートするための作業が行われた際、表外漢字字体表の「摯(平成明朝のCID=5020)」とAdobe-Japan1のテクニカル・ノートの例示字形(小塚明朝のCID=5020)に若干の差異が発見されたために、「表外漢字字体表の『摯』」をCID=20264に追加し、'nlck'用グリフ集合に含めたものと思われる。そのようなわけでCID=20264は、JIS X 0208:1990/1997の例示グリフでありながら'nlck'タグではじめて参照されるという珍しいケースとなっている。ちなみにヒラギノは、(変換テーブルのレベルではCID=20264を'nlck'用のグリフ集合に含めているが)字形デザインのレベルでは、CID=5020とCID=20264を区別していない(下図)。

f:id:NAOI:20070308183629j:image

  • もう1つの例外的な文字が「屢」。これはヒラギノの採用している'nlck'テーブルのバグであると思われる。ヒラギノで「屡」に'nlck'タグを適用すると「屢」に置換されるが、これはおかしい。「字形の変更が非常に微細な8文字」の項で図示したように、国語審議会は「屢」の字形に変更を加えたが、「屡」を「屢」に変えたわけではない。
  • 以上がヒラギノの'nlck'用グリフ集合「172文字」の内訳であるが、字形デザインのレベルでは、ヒラギノが標準のグリフと'nlck'グリフを区別しない例が存在する。「ヒラギノ明朝 Pro W3」では、前述の「摯」を含め、下図の28例がこれに該当する。筆押さえの有無に関しては、ヒラギノ明朝は小塚明朝の標準グリフと共通(筆押さえあり)である。

f:id:NAOI:20070308180803j:image

  • ヒラギノの'nlck'用グリフ集合のうち、CID=20287に関しては、標準グリフとは異なるが、CID=7763('expt'グリフ)と区別されていない。

f:id:NAOI:20070313184929j:image

  • 今回はいろいろ話を広げたために若干焦点がぼけてしまったきらいがあるが、いちばん伝えたかった内容は「'nlck'テーブルのロジック」である。言い換えれば、「ヒラギノ式」の'nlck'テーブル(といっても、このテーブルを定義したのはAdobeだと思われるが)を検討することにより、「小塚=モリサワ式」の'nlck'テーブル(こちらはAdobeが定義した「新バージョン」ということなのだろうか)がグダグダであるという先日の指摘を補足することが、本稿の主要な目的の1つである。

追記:きださんからコメント欄でご指摘をいただきました。現在のヒラギノの'nlck'テーブルは、歴史的な経緯から大日本スクリーンとAppleが開発したものだそうです。


追記2:「JIS X 0208:1983が第1水準・第2水準の区点位置を入れ替えた22組」の図に誤りがあったので修正しました。この話はけっこう複雑なので、そのうち独立したエントリとする予定です。

きだきだ 2007/03/14 02:00 NAOI さん、いつも愛読させていただいています。「屡→屢」など互換29字の変換は、現在はこの例を除いて含んでいませんが、含めるべきかと思っています。そして冒頭であげられたようなそれ以外の異体字はどうでしょう。将来のバージョンで考えてみます。ところで、現在のヒラギノのテーブルは歴史的経緯からスクリーンとアップルの開発なんですよ。社内最新テーブルではアドビとの擦り合わせがかなり進んでいます。

works014works014 2007/03/14 12:44 >InDesignは’nlck’に「印刷標準字形」という日本語を当てているが、これは適切ではない。
まさしく、そういうことですね。

works014works014 2007/03/14 12:51 あれれ、もたもたしている内に書き込みが........
>現行の’nlck’は「’jp04’の先取り」みたいなものですよね。 〜割愛〜 個人的には「芦」を外して「欝→鬱」とか全部入れちゃって「テキスト全体に適用すれば印刷標準字体に揃えてくれるタグ」にするのが、いちばんわかりやすいんじゃないかと思っていますが、
そうそう。

NAOINAOI 2007/03/14 13:32
きださん、貴重な情報をありがとうございます。

>冒頭であげられたようなそれ以外の異体字はどうでしょう。

現行の’nlck’は「’jp04’の先取り」みたいなものですよね。’jp04’があるなら必要ないような、ちょっと中途半端な位置づけのタグだと思います。

個人的には「芦」を外して「欝→鬱」とか全部入れちゃって「テキスト全体に適用すれば印刷標準字体に揃えてくれるタグ」にするのが、いちばんわかりやすいんじゃないかと思っていますが、その場合、「異体字か別字か」の判断がやっかいですね。エントリの冒頭のクイズでは紛れのなさそうなものを選びましたけれど、たとえば「譁」を「嘩(字体表No.87)」に置換するべきかどうかとかは微妙な気もします。

>現在のヒラギノのテーブルは歴史的経緯からスクリーンとアップルの開発なんですよ。

ご指摘ありがとうございます。訂正しておきます。うーん、テーブルの包摂のレベルからAdobeが開発したものだと思っていたのですが、スクリーンとAppleがAdobeの視点で作業したということなんですね。

※このコメントはいちど12時40分頃にアップしたのですが、内容にミスがあったので削除して修正版と差し替えました。このため、works014さんのコメントと前後することになってしまいました。すみません。

きだきだ 2007/03/14 14:51 nlck は表外漢字字体表を受けて設計したものでまさに「印刷標準字体」にしたいというのが心です。jp04 は JIS X 0213:2004 規格例示なのでコードポイントをまたがりません。似て非なるテーブルです。

という意味で、nlck に関してはまさに:

>「欝→鬱」とか全部入れちゃって「テキスト全体に適用すれば印刷標準字体に
>揃えてくれるタグ」にするのが、いちばんわかりやすいんじゃないかと思っていますが、

そうなんですが。ご指摘の通り:

> その場合、「異体字か別字か」の判断がやっかいですね。

なんですよ。互換29字は判断基準としてクリアなんですが、ご指摘のように他にも印刷標準字体に対応する異体字がありますよね。適当な基準はありませんかね。

ところで「芦」を外しますか? これを外すとなると、他の簡易慣用字体も外さざるを得まなくなりませんか?

>うーん、テーブルの包摂のレベルから

アドビとはそれぞれの CID の意味を含め、いろいろな情報交換をしていますので、自然にすり合わさってくるんですよ。アドビの nlck がそんなに違うとは正直直井さんの分析を読ませていただくまで知りませんでした。次にヒラギノをバージョンアップするとしたら統一したいと思っています。CS3 が出たらその小塚も見てみてください。

NAOINAOI 2007/03/14 16:33
>適当な基準はありませんかね。

ヒラギノのaaltでは、字体表では分離されている「臈」と「臘」、常用漢字の「裏」と印刷標準字体の「裡」などが(あと、「グラム」の組文字と印刷標準字体の「瓦」も!)同じグループに分類されているのでそのまま機械的に使うことはできませんけれど、これをベースに人力でチェックすれば行けそうな気がしません? たかだか千文字ですし(無責任モード)。

>ところで「芦」を外しますか?

外してもいいんじゃないでしょうか。これ以外の簡易慣用字体(欄のグリフ)については、すべてOpenTypeフォントのデフォルトのグリフですし、「’nlck’テーブルに1文字だけ簡易慣用字体が入っている」という状況が話をわかりにくくしているように思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証