- From: Taro Yamamoto <tyamamot@adobe.com>
- Date: Thu, 25 Dec 2025 06:26:30 +0000
- To: Kobayashi Toshi <binn@k.email.ne.jp>, JLReq TF 日本語 <public-i18n-japanese@w3.org>
- Message-ID: <DM8PR02MB8070FF76258C20F5F51F9253CEB3A@DM8PR02MB8070.namprd02.prod.outlook.com>
コメントします。 * 問題1 フォント情報としては,図形データのほかに配置の基準となる基準点の情報はあるのか,ないのか.基準点の情報があれば,それを配置の基準にできる.各文字の字形のサイズが異なるというか,ボディと字面との関係では,各文字ごとに余白の大きさは異なり,字形だけでは管理できない. OpenTypeの何も付加的な情報(BASEテーブルなど)のないフォントの場合、フォントの再現と配置に必要となる最低限の情報は以下のとおりで、これらはどのフォントにも通常は含まれています。(各グリフのアウトライン情報は当然与えられるものとします。) 1. まず、文字座標系があります。x, yの二次元座標空間です。原点は(x, y) = (0, 0)です。これが基準点です。したがって、基準点は本源的にあらゆるフォントに備わっています。 2. UPM (Units Per EM)全角あたりのユニット数。(ただし、これは大きさの基準、および表示・印字文字サイズとの比例関係だけを示す情報です。) これが、1000であれば、全角が1000ユニットの文字座標系の中に輪郭線の情報が記述されていることを意味します。これによって、レイアウトソフトウェアは、利用者が印刷・表示の段階で文字サイズをSizeとして指定すると、そのSizeとUPMとの関係から、文字サイズと全角が等しくなるように、変換を行います。UPM = 1000であれば、文字座標系の輪郭線の座標データを Size / 1000倍したものが表示される文字の輪郭線の座標になります。(通常は、グリフの輪郭線をこの全角ボディを基準にしてデザインしますが、どのような大きさでどのような位置に実際の輪郭線をデザインし配置するかはデザイナー次第です。ただし、通常の正方形のボディをもつ日本語フォントでは、UPM = 1000なら1000 x 1000の正方形の中に仮名や漢字をデザインします)。 なお、このUPMはあくまで文字座標系の上でのユニット数なので、個別フォントの中での全角の大きさでしかありません。例えば、TrueTypeフォントではUPM = 2048とするのが普通です。この数の大小は、整数座標値だけを用いる場合は、グリフをデザインする場合の精密さに影響します。UPMが小さいと、非常に細かい部分で曲線の連続性を保てない場合があり得ます。ただし、輪郭線記述形式がCFF/CFF2ベースのOpenTypeフォントでは通常 UPM = 1000を用いています。 3. 欧文グリフのAscenderとDescenderの情報(OS/2テーブルのsTypoAscenderとsTypoDescenderおよびその他の欧文固有の関連位置情報)。 4. 和文の全角ボディの上辺と下辺の情報(日本語フォントでは、伝統的にOS/2テーブルのsTypoAscenderとsTypoDescenderとして全角ボディの上辺と下辺のy座標値を記録します。) ただし、欧文グリフは通常 y = 0の位置をベースラインとします。この宇宙では「はじめに、ラテン文字ありき」なのです。 * 問題4 国の基準点は,どこにあるのか.それはフォントによるのか.以下では,国の上端として考えていく.もっとも,それはどこでもいい.上端とした場合,文字サイズが決まれば,下端も中央の位置もわかる. 原理的には、上記のような付加的な情報(BASEテーブルなど)のないフォントの場合、国の基準点は、上記の4で示される(OS/2テーブルのsTypoAscenderとsTypoDescender)の全角ボディの情報となります。そしてその基準点をどこにおいても原理的には自由です。しかし、歴史的な背景があり、輪郭線記述形式がCFF/CFF2ベースのOpenTypeフォントの多くは、y = -120を国のボディの下辺の位置としてきました。その理由は、sTypoAscenderとsTypoDescenderをその情報のために用いなかった時代の実装との互換性および歴史的経緯からと予想します。 * 問題5 aの基準点は,国と同じか,それともベースラインの位置か. 付加的な情報(BASEテーブルなど)のないフォントの場合、aの基準点は、世界中のbのフォントと揃わなければならないため、y = 0のラテン文字のベースラインに揃います。(そうでないフォントも皆無ではありませんが、慣習的な想定からは外れた実装です)。国との関係は上記のとおりです。 * ‘5.2 aの基準点はベースラインと考える.この場合,OpenTypeフォントのBASEテーブルのIdeographic EM-boxの属性をaに与えておけば,配置位置は決まる. 原理的にはそうですが、現状の多くのフォントでは、上記の何も付加的な情報(BASEテーブルなど)のない国のフォントの場合の4のOS/2テーブルのsTypoAscenderとsTypoDescenderの情報と互換となる内容をBASEテーブルに記述しています。このことは、将来は変わるかもしれません。しかし、現時点ではまだ、BASEテーブルの内容を活用しているアプリケーションソフトウェアの数が多数とは言えないため、過去の実装との互換性の観点から、慎重な観察が必要と私は(個人的には)考えます。 * 問題6 bについては,OpenTypeフォントのBASEテーブルのIdeographic EM-boxの属性があれば,それにより国とaの上下位置は決まる.これはわかった. はい、そのとおりです。が、レイアウトソフトウェアがそれに対応している必要があります。そうでなければ、国のフォントの情報だけに依存して、bを配置することになります。その場合にはaとbの差はありません。 * 問題7 bについては,EM-boxの属性がない場合は,どうなるのか.bのベースライン位置を国のどこか適当な位置に合わせるのか.そうとすれば,どの位置に合わせているアプリケーションが多いのか. 問題6で述べたとおり、 bがIdeographic EM-boxの情報を持っているとは限りません、その場合には、a.と同じ方法で配置されます。BASEテーブルについて何も知らないアプリケーションは、それについて何もしないので、日本語の行中においては、その日本語のフォントの欧文のy = 0の位置と同じ位置のベースラインでbを配置します。 以上、参考まで。 Nat, if you find any incorrect points in what I wrote above, please let me know. Thanks. 山本太郎
Received on Thursday, 25 December 2025 06:26:47 UTC