高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1140

The Euro Currency Symbol

 

Euro通貨記号

By Ingrid Kelly
Apple Worldwide Developer Technical Support
devsupport@apple.com


目次


Euroの意味とその形

UnicodeとEuro

MacOSのEuroサポート-フォントとプリント

Mac OS X サーバのEuroサポート

まとめ

ダウンロード
Apple Worldwide Developer Supportは、多くのデベロッパからMacOSとMac OS XサーバがEuro通貨記号をサポートするかという質問を受けています。そこで、Appleが公開できる全ての情報をこのテクノートに集めました。また、この新しい通貨記号を扱っている様々のインターネットサイトの情報もお知らせしようと思います。

Euroってなに、どんな形?

Euro通貨記号Euro通貨記号

Euroは、現在提案されている欧州連合の単一の通貨記号の名前です。欧州連合によると、Euroは1999年1月1日に銀行間通貨として生まれ、2002年1月1日に硬貨と紙幣が導入されて一般の使用に移行する予定です。我々は1999年の通貨の誕生に備えて、全てのデベロッパにEuroをサポートしてもらいたいと思っています。Euroをもっと知りたい方は欧州連合のWebサイトを見て下さい。



UnicodeとEuro
UnicodeコンソーシアムのTechnical Report #8では、以下のように解説されています。「Unicode規格では、文字EuroはU+20AC EURO SIGNとエンコードされます。混乱を避けるため、歴史的な文字U+20AC EURO SIGNは改定され、注書きとU+20AC EURO SIGNへの参照が付きました。」詳しくはUnicodeコンソーシアムのTechnical Report #8を見て下さい。



Mac OSでのサポート - フォントと印刷
Mac OS フォント
標準ヨーロッパグリフは、ブリュッセルの欧州連合でデザインされ規定されましたが、1998年の後半のMac OS 8.5のリリースに伴い、全てのアップルのMac OSフォントに加えられ配付されました。Mac OS 8.5では以下のフォントでEuroグリフを見ることができます:Apple Chancery, Capitals, Charcoal, Chicago, Courier, Gadged, Geneve, Helvetica, Hoefler Text, Monaco, New York, Palatino, Sand, Skia, Symbol, Techno, Textile,およびTimes。
上にあげたSymbol以外の全てのフォントで、Euro文字がOption-Shift-2(MacRoman Encoding decimal 219, hex 0xDB)に加わり、国際通貨記号を置き換えました。

国際通貨記号

Euro通貨記号国際通貨記号

Symbolでは、EuroグリフがOption-t(MacRoman Encoding decimal 160, hex 0xA0)に加わりました。Euroグリフは、そのスタイルを、アップルのそれぞれのフォントのスタイルに合わせていません。すなわちEuroグリフは、それを含むフォントやスタイルの特徴を引き継いでいません。将来のMac OSのリリースでアップルがこのグリフをフォントのスタイルにあわせる可能性はありますが、現時点ではMac OS 8.5以前のリリース用には、上で記しているようなフォントをリリースする予定はありません。しかし、サードパーティはMac OS 8.5以外で動作する場合でも対応できる、Euroグリフを含むフォントを提供することと思いいます。

印刷

LaserWriter 8.6
Euro文字をサポートするにあたり、LaserWriter8.6への変更はMac-encodedフォントだけです。フォントのhost-based versionがMac Encodingが必要であると指定されている時(フォントのfont classification wordのビット1がセットされているとき)フォントはMac-encoded フォントとみなされます。したがって、以下の説明は、Mac-encodedフォントと指定されたフォントのみに適用されます。LaserWriterドライバは、Mac-encodedフォントと指定されたフォントのエンコードが、アップル定義MacEncodeingベクタに対応するようにリエンコード(reencode)します。LaserWriter8.6以前、MacEncodingベクタはOption-Shift-2に対応するコードポイントに"/currency"という名前を含んでいました。LaserWriter8.6以前のドライバは、Mac-encodedフォントのOption-Shift-2コードポイントの文字のイメージングを行う際に、"/currency"という名称の文字をイメージしました(これは、国際通貨記号に対応します)。
Mac OS 8.5とLaserWriter8.6ドライバの導入にともない、アップルはMacEncodingベクタのこのコードポイントをEuro文字に対応するように再定義しました。そのため、LaserWriter8.6で提供されるMacEncodingベクタにはOption-Shift-2に対応するコートポイントに"/Euro"という名称が含まれます。アップルが提供するスクリーンフォントではこのコードポイントにEuroグリフを持ちますが、多くのプリンタ常駐フォントではEuroグリフを全く持ちません。LawerWriter8.6がMac-encodedフォントのOption-Shift-2に対応する文字に出会ったとき、かならずEuroグリフを印刷するようにするため、LaserWriter8.6はSymbolフォントのEuroグリフ("/Euro")をイメージします。ましSymbolフォントが"/Euro"という名称の文字を持たない場合、LaserWriter8.6は、まだ初回のイメージが始まる前にプリンタのSymbolフォントに"/Euro"文字を追加します。このLaserWriter8.6の動作は、ホスト上のスクリーンフォントの対応するコードポイントに、どんなグリフが実際にあるかを全く無視して、すべてのMac-encodedフォントに対して実行されます。たとえば、もしスクリーン上に国際通貨記号が描かれていたとしても、フォントがMac-encodedフォントであれば、LaserWriter8.6ドライバは、印刷ページにはEuro文字を印字します。LaserWriter8.6ドライバはスクリーンフォントに、実際にどのようなグリフがあるかは全く検知せず、ただ単にMac-encodedフォントのOption-Shift-2コートポイントをEuroコードポイントとして取り扱います。
古いバージョンのLaserWriter8ドライバの動作は、ドライバとPrintingLibファイルのバージョンに依存します。

LaserWriter 8.4.xからLaserWriter 8.5.1
LaserWriter8.4.xとLaserWriter 8.5.1のバージョンのドライバはPrintingLibファイルに含まれているいくつかのシェアド・ライブラリを使用しています。PrintingLibのバージョンが8.6より前のものであれば、ドライバは過去と同様な印刷を行います。すなわち、Mac-encodedフォントのOption-Shift-2コードポイントの文字のイメージングでは、プリンタのフォントにある"/currency"(これは国際通貨単位に対応しています)という名称の文字を印字します。このことは、そのフォントに対応するコードポイントに対して画面上にどのような文字が表示されているかみ無関係に印字されることになります。
PrintingLib8.6を使用するとドライバの挙動は異なります。PrintingLib8.6は、このコードポイントに対して"/Euro"を持つMacEncodingベクタを使用しますが、古いドライバはSymbolフォントからのEuroのイメージングを行わないため、Mac-encodedフォントのOption-Shift-2コートポイントの文字に対してプリンタのフォントの"/Euro"という名前の文字をイメージングします。ここでフォントが"/Euro"という名前の文字を持たない場合、"/.notdef"文字を替わりにイメージングすることになります。これは普通、スペースか空のボックスで、フォント設計者が設計するものです。この結果は、そのフォントのOption-Shift-2コードポイントに対して、どのような文字が画面上に表示されているかには無関係です。

LaserWriter 8.3.xとそれ以前
これらのドライバはPrintingLibを使用せず、Option-Shift-2コードポイントに"/currency"という名前を持つMacEncodingベクタを使用します。すなわちMac-encodedフォントのOption-Shift-2コードポイントの文字のイメージングでは"/currency"(これは国際通貨記号に対応します)という名前の文字をイメージングします。これは当該フォントの当該コードポイントに対してどのような文字が画面に表示されているかには無関係です。

その他のプリンタドライバ

ラスター
すべてのラスタープリンタドライバは、Mac OS 8.5およびそれ以外に対し、Euro文字の印刷に関して問題はないはずです。アップルのColor StyleWriterシリーズではこのグリフを問題なく印刷します。

PostScript
サードパーティのPostScriptプリンタでは、アップルの新しいフォントに含まれるEuroグリフの印刷ができるものとできないものがある可能性があります。もしサードパーティプリンタドライバで問題がある場合は、プリンタドライバデベロッパーにおたずねになるか、あるいは正しい出力を得るために、お持ちのPostScriptデバイスに対してLaserWriter 8.6を使ってみてください。


サード・パーティのフォント・デベロッパー
それで、あなたのフォントが Euroをサポートして画面に表示され印刷されるようにするのにはどうしたらよいでしょうか。これはあなたがPostScriptフォントを開発しているかTrueTypeフォントを開発しているかによって異なります。PostScriptフォントでは一つのリソースを変えるだけですみます。FONDリソースです。TrupTypeフォントでは二つのリソースを変える必要があります。FONDと'sfnt'です。

FONDリソース

FONDへの変更
FONDには、必要ならば編集しなければならないものが3つあります。Bit-1,Bit-9とGlyph reencoding Tableです。

FONDにはいくつかのブール値のビットフィールドがあり、その中にfont clasificatin wordが含まれ、フォントのスタイル・マッピング・テーブルの先頭の部分を占めています。font classification wordには、Bit-1とBit-9という2つのビットがあり、フォント中の文字のエンコーディングに関する情報をプリンタ・ドライバに提供しています。スタイル・マッピング・テーブルとそのビットの設定の詳細に関してはInside Macintosh:Text,p4-99を参照してください。

"エンコーディング(Encoding)"、"エンコーディング・ベクタ(Encoding Vector)"、"自然なエンコーディング(Natural Encoding)"

"エンコーディング"とは、順序付けられたバイトコード群のリストのなかにグリフを配置したものです。"エンコーディング・ベクタ"とはグリフとバイトコードを関連づけた2列の表です。8ビットエンコーディング・ベクタには256の要素が含まれています。エンコーディング・ベクタにより、プリントストリームのバイトコード群をグリフ名称に解釈することができます。たとえば、10進219のバイトコードはグリフ名称"Euro"に関連づけられます。
フォントの"自然なエンコーディング"とは、そのフォントに対して最初につくられたエンコーディング・ベクタです。PostScriptフォントの場合は、最初につくられた(つまり自然な)エンコーディング・ベクタがないとその他のエンコーディング・ベクタをつくることができないため、PostScriptは自然なエンコーディングという概念がありますが、TrueTypeの場合、当初から複数のcmapを含む構造体をもつため、特にある一つが他にくらべてより自然であることはありません。
TrueTypeフォントがPostScriptフォントに変換される場合、そのときに選択されているcmapからフォントが生成されます。PostScriptフォントをプリントする場合、ドライバはフォントの"自然な"エンコーディングをつかうこともでき、またフォントのMacintosh標準エンコーディング(Macintosh StandardEncoding)をリエンコードして使うこともできます。以下に示すように、ビット1とビット9はこのエンコーディング法の選択を制御します。

ビット1
ビット1はこの文書の"印刷"の章で説明されたLaserWriter8ドライバのSymbolフォント置換を作動させます。それによりプリンタは、いくつかの特定のバイトコードを、その元のグリフではなくSymbolフォントのグリフにより印刷するようになります。ビット1のSymbolフォント置換の対象となる16のバイトコードを以下に示します。
グリフ Mac Encodingのpost名称 (10進)
notecual 173
infinity 176
lessequal 178
greaterequal 179
parialdiff 182
S summation 183
P product 184
p pi 185
integral 186
W Omega 189
radical 195
approxequal 196
D Delta 198
lozenge 215
Euro 219
Apple 240

注意:上のリストを印刷して国際通貨記号が現れたとしたら、システムが古いかプリンタドライバが古いかのどちらかということになります。

もし、あなたのフォントが上のコートポイント全てのグリフをもっていて、しかも自分のグリフでプリントしたい場合、ビット1をオフにします。こうすると上に挙げた全てのグリフに対して、置換が停止します。
すなわち、ビット1をオフにする場合、フォント開発者は、意図したエンコーディングに対応するグリフをフォントに含めなければなりません。Mac標準エンコーディング(Mac Standard Encoding)を意図する場合、上に挙げたSymbolグリフ全てを正しい位置に設定する必要があります。もちろん、そのなかにはEuroも含めてください。
ビット1をオンに設定して、ビット9をオフに設定すると"Macintosh標準エンコーディング(Macintosh Standard Encoding)"を指定したことになります。この場合、プリンタドライバがフォントに対するMacintosh標準エンコーディングベクタを生成します。

ビット9
ビット9は、ドライバにFONDからカスタム・エンコーディング・テーブルを読み込ませます。フォントに対する自然なエンコーディングは、このテーブルの要素で更新されます。
ビット9は上で説明したMacintosh標準エンコーディングを停止するため、ビット9を設定するとビット1の解釈に影響を与えます。
フォントの自然なエンコーディングは、過去に作成されたエンコーディングです。たとえばFontographaerのようなMacintosh用に使われているツールで作成された場合は、普通、Macintosh標準エンコーディングになります。ただし、注意していただきたいのは、そうでない場合もあり、たとえば自然なエンコーディングがAdobe標準エンコーディングである可能性もあり、また他の専門家向けツールや開発者によってつくられたものかもしれません。
従って、ビット1がオフで作業するとき(すなわち、非マック標準エンコーディング)、充分注意を払って、なにが自然なエンコーディングであるか確定してください。
ビット9がセットされた場合、FONDのなかにエンコーディング値に優先させるグリフ・エンコーディング・ベクタ("glyph-name encoding subtable")があるはずです。
通常、ビット9は、フォントがデフォルトのMacEncodingベクタを使用しないことを指定します。しかしながら、MacEncodingベクタを使用したいけれど、16のSymbol置換グリフに関しては、自身のフォントのグリフを使いたい場合、ビット1をオフにして、ビット9をオンにし、さらにリエンコーディングベクタが、完全な標準MacEncodingを含むことになります。もし、あなたが自然なエンコーディングを完全に把握している場合、リエンコーディング・ベクタは、MacStandardと異なる部分だけで事足ります。

グリフ・リエンコーディング・ベクタ(Glyph reencoding vector)
DumpFONDテキストファイルの中では、グリフ・リエンコーディング・ベクタは"GLYPH REENCODING TABLE"というラベルが付けられています。Inside Macの中では、"glyph-name encoding subtable"と呼ばれています。glyph-name encoding subtableの形式と位置はInside Macintosh-Text,p.4-105で説明されています。

フォントには必ずEuroを定義する
今は、Macintosh標準エンコーディングには2種類、すなわち古い汎用の通貨記号のものと新しいEuroのものがあるため、エンコーディング名以外に2種を区別する方法が必要です。この情報はフォントのデータを、例えばUnicodにような、他のエンコーディングにマップしたり、他のプラットフォームにマップしたりするプログラマーにとって必要なものです。クロスプラットフォームの単一のバイナリ形式などがその例です。
アップルは、Euroを含む全てのフォントのFONDリソースに、たとえ使用しなくても(すなわちビット9がセットされていなくても)"Euro"を含んでいるリエンコーディング・ベクタを加えるよう推奨します。その理由は、アプリケーションプログラマやシステムプログラマが、フォントがEuroに対するグリフをもっているか古い国際通貨記号に対するものをもっているか調べるために、最も広く利用できる場所だからです。TrueTypeフォントは"Euro"をpostテーブルに定義していますがPostScriptとNFNTは、そのような構造をもっていません。全てのタイプのフォントに共通なリソースはFONDだけです。
LaserWriter 8の印刷を説明した前のセクションで議論したように、LaserWriter8.6はフォントのなかにEuroがあるかどうか調べないことを忘れないでください。MacEncodedフォントに対し、LaserWriter8.6ドライバは10進219のコードポジションを、常にEuro文字として取り扱います。ここで推奨した定義は、純粋に他のアプリケーションのためのものです。

ビット設定のまとめ
ビット1 ビット9 説明
0 0 自然エンコーディングを使いフォントをそのままダウンロードする。
1 0 エンコードベクタをEuroを含むMac標準エンコードに置き換える。
また、Symbolへスィッチする。
0 1 提供された差分ベクタを採用し、自然エンコーディングへの更新として扱う。Symbolへはスィッチしない。(例えば、Carta,Symbol,Zapf,DingbatsあるいはAdobe Exportセットなどの、dingbatと"pi"フォントに使われる)。
1 1 提供された差分ベクタを採用し、自然エンコーディングへの更新として扱う。Symbolへスィッチする。Mac標準エンコーディングは適用しない。(典型的にはMacintosh Romanのエンコーディングに使われる)。

FONDにリエンコーディング・ベクタを追加する方法
FONDリソースの作業を行う場合、DumpFONDとFuseFONDの使用を検討してください。それらは無料のツールでAppleからhttp://fonts.apple.comにより入手できます。
DumpFOND


DumpFONDを使えばFONDリソースの内容をテキストファイルにダンプすることができ、それを編集することができます。編集したファイルは、そのままFuseFONDフォントツールの入力として使うことができます。

FuseFOND
FuseFONDを使えばFONDリソースの内容をテキストファイルの新しい定義で変えることができます。このテキストファイルはDumpFONDツールで作ります。

FONDリエンコーディング・ベクタを追加するステップ
(1)DumpFONDを実行して対象となるフォントのテキスト形式のFONDを生成する。本ドキュメントには(全てのフィールドが設定されている)GenevaフォントのFONDテキストソースの完全なサンプルが付随しています。以下は、一部の抜粋ですが、スタイル・マッピング・テーブルとグリフ・リエンコーディング・テーブル(または"ベクタ")を示しています。

/* DUMP OF FOND RESOURCE 3, NAME 'Geneva' */
.....contents
/* FONT ASSOCIATION TABLE */
.....contents
/* STYLE MAPPING TABLE */
Font name needs coordinating: true
Font requires Mac vector reencoding: true
Font is outlinable by setting PaintType 2: true
No smear and whiteout outlining simulation: false
No smear bolding simulation: false
Simulate bold by increasing pointsize: false
No obliquing for italic simulation: false
No simulation of condensed style: false
No simulation of expanded style: false
Font requires non-Mac reencoding: false
No additional interchar spacing other than space char: false
Reserved: 0
..... additional contents
/* GLYPH REENCODING TABLE */
......contents excerpt.....
Name for character code 0xD9: 'Ydieresis'
Name for character code 0xDA: 'fraction'
Name for character code 0xDB: 'Euro'
Name for character code 0xDC: 'guilsinglleft'
Name for character code 0xDD: 'guilsinglright'
Name for character code 0xDE: 'fi'
Name for character code 0xDF: 'fl'
/* GLYPH WIDTH TABLE */
.....contents
/* BOUNDING BOX TABLE */
.....contents
                                


(2)今日市場にある、ほとんどのフォントは、グリフ・リエンコーディング・ベクタを持っていません。そのため、フォント開発者はたぶんその一つを作ってフォントに追加する必要があると思います。フォントの設計がMac標準エンコーディングの場合、このドキュメントに付随しているGenevaのサンプル・ファイルを使うことができます。単にGenevaのグリフ・リエンコーディング・テーブルのテキストを、FONDテキストダンプにペーストするだけです。またMac OS8.5のSymbolフォントを除いた、新しいフォントのどれかに対してDumpFONDを実行して、そのテーブルを使うこともできます。

注意:リエンコーディング・テーブルのを挿入する位置は、上に示されて位置でなければなりません。すなわちStyle Mapping Tableの後で、Glyph Width Tableの後です。

別のエンコーディングの配置を使いたい場合、独自のテーブルを作成して編集する必要があります。その場合、それぞれのグリフに対してAdobe's PostScript Language Reference Manualで説明されている標準PostScriptエンコーディング('post')名を使用する必要があります。'post'名称は英大文字と英小文字を別のものとして扱いますので注意してください。

(3)SimpleTextなどのテキストエディタを使い、FONDグリフ・リエンコーディング・テーブルのなかの全ての"currency"を"Euro"に置換してください。"全てを置換(replace all)"を使うのは危険で、例えばmetrics tableなどの他のテーブルの"currency"まで置換してしまいますので、使わないでください。PostScirp名称は大文字と小文字を区別するので、"Euro"は大文字の"E"で始まります。

(4)ビット1の設定。普通のMacEncodedフォントの場合、下に示すように、FONDのfont classification wordのビット1を確実にtrueにセットしてください(前に説明したビット1とビット9に関するコメントをみてください)。

Font requires Mac vector reencoding: true
                                


(5)ビット9の設定。あなたのフォントに標準エンコーディングに対するグリフ・リエンコーディング・テーブルが必要な場合、下に示すように、FONDのfont classification wordのビット9を確実にtrueに設定してください(前に説明したビット1とビット9に関するコメントをみてください)。

Font requires non-Mac reencoding: true
                                


(6)FuseFONDを実行して、編集したファイルを入力してコンパイルし、フォントのFONDリソースに戻してください。

リエンコーディング・ベクタのスコープ
リエンコーディング・ベクタを、完全ベクタ(Full vector)、半ベクタ(Half vector)と差分ベクタ(Delta vectoir)の3つのクラスに分類すると役に立ちます。完全ベクタは256のエントリを持っています。半ベクタ(Half vector)は128のエントリを持ち、"低バイト"領域(0-127)か"高バイト"領域(128-255)のどちらかをカバーします。差分リエンコーディング・ベクタ(Delta reencoding vector)は自然エンコーディングと異なる文字のみを含みます。最小の差分ではエントリは1つだけです。
サンプルのGenevaリエンコーディング・ベクタには高バイト領域の半ベクタが含まれています(すなわち、高バイトの全てのグリフをカバーする128行のエントリ)。
アップルは高バイトの半ベクタに使用を推奨しています。これには3つの理由があります:
(1)Romanスクリプトでは、リエンコーディングのほとんどは低バイトのASCII領域とは無関係です。

(2)差分エンコードを作成するためには、自然エンコードが何かについて完全に知っている必要があります。自然エンコーディングは簡単に見ることはできず、さらに、プリンタに常駐するフォントによって異なる場合もあるため、なにが自然エンコードであるか知るのは困難な場合があります。

(3)OS 8.1でリリースされたものと、それ以降のプリンタドライバは、任意のサイズ(すなわち1から256エントリ)の差分リエンコーディング・ベクタをサポートしますが、その前のドライバには完全リエンコーディング・ベクタおよび半リエンコーディング・ベクタでのみ動作するものもあります。

設計要件に従い、異なったスコープのリエンコーディング・ベクタを実験してください。完全ベクタと半ベクタは明示的な宣言であることによる利益、すなわち混乱が少なくなり、また特定のプリンタの詳細な動作で挙動が変化することが少なくなります。
もしEuroフォントを持っている場合、最小限、単一の"Euro"エントリの差分を含ませてください。我々はビット9のオン・オフに関わらずこうしてほしいと思います。
'sfnt'
                                


'sfnt'の変更
'sfnt'リソースは通常TrueTypeアウトラインフォントを記述していますが、Type 1のPostScriptフォントも含むことができます。ここではTrueTypeアウトラインフォントに関してのみ検討します。'sfnt'はフォントのグリフを解釈して描画するための数多くのテーブルを含んでいます。Euroをサポートするために変更する必要のあるテーブルは'cmap'テーブル(Character Code Mapping Table)と'post'テーブルです(PostScript Encoding Names Table)。
'cmap'はキャラクタ・コードとグリフ・インデックスを関連付けます。'post'はグリフ・インデックスとPostScriptエンコーディング名称を関連付けます。これらのテーブルで、個々のグリフはグリフ・インデックス番号で識別され、そしてその順序は特に定まっているわけではなく、フォントの内部的なものです(例えば、グリフを削除したとすると、定義にしたがったグリフのインデックス番号も変化するということです)。フォントは複数の'cmap'リソースを持つことができ、異なったプラットフォームの間のエンコーディングの変化に対応させることができ、また同じプラットフォームの中の様々な目的で使用することができます。Mac OSブラットフォームでは一連のランゲッジ・スクリプト・エンコーディングをサポートし(すなわち、MacRoman,MacArabic,MacJapanese)、また同様にUnicodeのUTF-16エンコーディングをサポートします。
TrueTypeフォントではどのエンコーディングとも独立な、大きなグリフの集合(65,000まで)を含むことができます。さらにTrueTypeは一つのフォントに対して複数のエンコーディングを行うことができ、よく使われているTrueType開発ツールを使えば、それぞれの部分を独立に作業することができます。
Appleは、既存の国際通貨記号を削除せずにEuroグリフをTrueTypeの最後に付加することを推奨しています。これには2つの利点があります:
(1)Euroのグリフ・インデックスが最後のインデックス値になり、他の全てのインデックスとテーブルは変化しません。
(2)Apple Type Services for Unicodeェ Imaging(ATSUI)を使うUnicode-savvyアプリケーションは両方の文字にアクセスします。

Euroサポートに必要な'sfnt'への変更は:
(1)Euroグリフに対して"Euro"というpost名称を与えてください。(PostScript名称では英大文字と小文字の区別をするため"E"は大文字です)。
(2)MacRoman 'cmap'を編集してコードポイント0xDB(10進219)に"Euro"を付加してください。
(3)Unicode 'cmap'を編集してコードポイントU+20ACに"Euro"を付加してください。

post名称とcmapの変更法
'sfnt'(TrueType)リソースの作業をするために、DumpPostとAATFontToolの使用を検討してください。これらのAppleのツールはhttp://fonts.apple.com.から無料でダウンロードできます。
DumpPost
DumpPOSTツールにより、フォントの'post'テーブルで定義された名称のセットを、テキストファイルにダンプすることができ、それを編集することができます。編集したファイルは引き続きAAT Font Toolの入力として使用することができます。
AATFontTool
フォントをAAT-savvyのスタンド・アロン・バージョンにするために必要とする全てのグリフとテーブルを自動的に追加します。またweb siteでは得られないドキュメントも含んでいます。

ここで検討するTrueTypeフォントには、Macintosh Romanエンコーディングのひとつと、'cmap'および'post'テーブルを持っていると仮定します。
postテーブルを変えるためには、AAT Font Toolの入力として名称リストを使わなければなりません。これにより既存の値は無視され、cmapは自動的に更新されます。以下のステップにしたがって実行します:

(1)DumpPOSTを実行してフォントの中の全ての'post'名称のテキストファイルを作成する。ここではpost名称と対応するグリフインデックスが示されています。TrueTypeフォントではエンコードされていないグリフを追加することができます。これはEuroグリフを追加するか、あるいは、通貨グリフの上にペーストしてよいことを示しています。われわれはATSUIユーザが通貨記号にアクセスでき、'cmap'を変更することで通貨記号がアクセスできるようにするため、前者(追加する方法)を推奨しました。
下のサンプルでは、通貨記号が残されていて、グリフの内部的なインデックスが増やされ、集合の最後に"Euro"が別のTrueTypeグリフとして追加されていることがわかります。

Ydieresis /* 187 */
fraction /* 188 */
currency /* 189 */
guilsinglleft /* 190 */
guilsinglright /* 191 */
.......excerpt....
Dcroat /* 379 */
commaaccent /* 380 */
Euro /* 381 */
                                


(2)postnamesファイルを保存してAAT Font Toolを実行します。Optionsメニューに行ってください(最初は、全ての項目がチャックされていると思います)。最初の3つのオプション以外のチャックをはずしてください(下のスクリーンショットをみてください)。
スクリーンショット

(3)Fileメニューから"Use Name List..."を選択してpostnamesファイルを選択してください。それからFileメニューから"Open and process.."を選択し、対象とするフォントを選択してください。AAT Font Toolは'post'テーブルを変更して、それに応じて'cmap'テーブルを変更します。
TrueEdit(無料のツールでfonts.apple.comから入手できます)で対象のフォントを開くことで、フォントに施した変更が確認できます。'post'テーブルを開いてみると"Euro"エントリが思った通りに追加されていることが確認できます。

AAT Font Toolについて
AAT Font Toolを実行して、他のオプションをチェックしたままにしておくとフォントに対して、いくつかの気の利いたことができます。ここで、それがどのように動作するかを手短に説明します。AAT Font Toolツールは"標準グリフ順序(standard glyph ordering)"に依存しません。ツールは主に'post'テーブル、すなわち実際の名称を元にしてグリフのレパートリーを解析します。ツールは2バイトフォントの'cmap'テーブルを探し、そして'post'テーブルに名称をもたない1バイトフォント(すなわちformat 2の'post'テーブル)を探します。
ツールは'cmap'テーブルが、かなりの程度にスクリプトあるいは言語を表現しているのであれば、それを追加します。従って、フォントがHebrewのalef以外の文字をもっていなければ、Hebrew'cmap'をフォントに追加せず、全ての文字をもっていたら追加します。
ツールはscript 0フォントの全ての種類のRomanを追加します。このツールはフォントの配置がAppleのものと大きく違うサードパーティのフォントにうまく使われてきています。
詳細の完全な説明は、AppleのフォントWebサイトにAAT Font Toolのドキュメントがあり、そこにはEuroグリフを追加するときに利用できる、GXとAATの強力な他の機能が数多く説明されています。

利点
前に説明したようにAppleのシステムフォントは更新されました。我々が推奨した方法に従ったサードパーティのフォントはシステムのなかで、自ずから同じ意味と文字操作の特性、そしてキーボードマッピングをもち、それはユーザインターフェースの一貫性の観点から重要です。

RoyalTによるEuroグリフのTrueTypeフォントへの追加
ヒンティング(hinting)に大きな投資をしたフォントをもっているならば、単に新しいEuroグリフの一つを得るためだけに、ヒントを失ってPostScriptソースに戻すことは好ましくありません。ここでは、TrueTypeフォントファイルにEuroグリフを追加するためのRoyalTの使用法をステップ・バイ・ステップで説明します。

(1)RoyalT PPC 3.2d4を起動する。
(2)対象とするEuro glyphソースフォントを開く。
(3)Comman-HでEuroのグリフインデックス番号に行く。
(4)対象のフォントを開く。
(5)Command-Hにより目標のグリフの位置に行く。例えば標準Macintoshフォントの国際通貨記号の近似/通常インデックス番号の189。
(6)ソース・フォントのメイン・ウィンドをクリックし、command-Cで選択済みのグリフをコピーする。
(7)ターゲット・フォントのメイン・ウィンドをクリックし、command-Vで選択済みのグリフにペーストする。
(8)プル・ダウン・メニューからViews:CVTを開く。
(9)リストの最後までスクロールし、最後のエントリをハイライトする。
(10)リストの最後に追加するためにcommand-D。
(11)エントリ値130を追加する。紙にエントリ番号をメモし、それをエントリ"A"とマークする。
(12)再びリストの最後までスクロールし、最後のエントリをハイライトする。
(13)リストの最後に追加するためにcommand-D。
(14)エントリ値48を追加する。紙にエントリ番号をメモし、それをエントリ"B"とマークする。
(15)プル・ダウン・メニューからViews:Instructionsウィンドを開く。
(16)227という数の全て(Euroアウトラインに場合は8カ所)を、ステップ(11)の値"A"に変える。例では3,19,23,25,28,29,30のinstruction行にある。
(17)228という数の全て(Euroアウトラインに場合は5カ所)を、ステップ(14)の値"B"に変える。例では6,11,14,15,16のinstruction行にある。
(18)Command-Rで再計算。
(19)プル・ダウン・メニューからViews:Infoウィンドを開く。
(20)フォントが均等幅でなければLSB値を100に変える。これはLSBをRSB(rough guide only)に一致させることです。
(21)Command-Rで再計算。
(22)対象となるフォントのメインウインドをクリックして保存。
(23)ResEditを実行し、RoyalTが自動的に追加した'PREC'リソースと'STR 'リソースを削除する。
(24)適切なインデックス値に追加したグリフのpostnameを含むように'post'テーブルを更新する。



Mac OS X Serverでのサポート
Mac OS X Serverチームは現在Euro文字をサポートすべく作業しています。詳しい情報はMac OS X Server web siteを見てください。



まとめ
ご覧になったように、Euroに関する多くのいい情報がありました。このリリースのOSにAppleが追加したEuroサポートをご理解いただき、フォントに対して必要な作業の知識が得られればと思います。


参考資料
Apple 情報:
欧州連合公式ページ:
Adobe 情報:
Microsoft の Euro ページ:
Euro の一般情報サイト