Open棟梁Project - マイクロソフト系技術情報 Wiki
外字(環境依存文字)とは、
Windowsの機種依存文字(外字)である、
の外字は、Shift_JISの0xF040 ~ 0xF9FCはUnicodeのU+E000 ~ U+E757に順番に対応付けられている(Shift_JISで0xF07Fなどの使用不可能なコードポイントは飛ばす)。
このため、Windows中では、
のUnicode ⇔ Shift_JISのエンコーディングがサポートされる。
Windows付属の外字エディタではU+E758~U+F8FFにも外字を作成可能であるが、そこに作成したものはUnicode環境でのみ使用可能となる。
なお、WingdingsなどのシンボルフォントのグリフはUnicodeではU+F020 ~ U+F0FFに対応付けられている。
マイクロソフト標準キャラクタセットは、Windowsにおいて特別なフォントを
自前で用意することなく表示できる日本語の文字集合のことである。
Unicode環境では、次の領域がユーザー定義外字領域とされている。
- BMP領域 U+E000‐U+F8FF (6,400字)
- 15面 U+F0000‐U+FFFFD (65,534字)
- 16面 U+100000‐U+10FFFD (65,534字)
シフトJISの0xF040~0xF9FCは、U+E000~U+E757に割り当てられている。
Windowsの外字エディタは、文字セットをUnicodeにするとU+E000~U+F8FFまでを利用できるが、
U+E758~U+F8FFはシフトJISでは表現できないためUnicode専用となる。
IMEパッドから、1つの外字にUnicode、UTF-8、シフトJISの3つの文字コードが表示されている事が確認できます。
このため(プラットフォームに依存するかもしれませんが、)上記3つのコード間でのエンコーディングは可能と考えます。
#確認のためにはエンコーディングによる変換の可逆性をテストとすると良い。
EnableEUDC 関数を使用する。
外字ファイルを更新するときには、ファイルをコピーする前に、EnableEUDC 関数の引数に FALSE を指定してシステムの外字の使用を一時停止し、コピー終了後、EnableEUDC 関数の引数に TRUE を指定して外字の使用を再開します。この操作を行なわないと、既に同じ名前のファイルがシステムに登録されている場合は、ファイルのコピーが失敗し、同じ名前のファイルがない場合でも、外字ファイルは、即座に更新されません。EnableEUDC は、GDI32.LIB に登録されていないため、実行時に関数のアドレスを取得する必要があります。
This function enables or disables support for end-user-defined characters (EUDC).
この機能は、外字のサポートを「有効」・「無効」にします。Community Additions(コミュニティー追加分)
Support for EUDC needs to be enabled and is a per-session setting.
外字のサポートは「有効」である必要があり、セッション毎のセッティングです。
Windowsは、「プログラム」メニュー→「アクセサリ」にある「外字エディタ」を使うことで、ユーザー好みの字形を扱える「外字」を作成できます。しかし現在、マイクロソフトの方針では、「作成した外字を他のマシンで使用することは動作保証外」です。(Windowsには外字を作成するための「外字エディタ」の機能がある。作成された外字はEUDCなどの名前が付いたファイルに保存される)ただ、編集部で試したところ、外字を移せる場合もありました。ご参考のために、その方法を以下に記述します。ただし、これで外字が移せるとは限りません。システムに不具合が出ない保証もありません。試す場合は自己責任となります。
マイクロソフトでは、外字ファイルを他のパソコンで使用することはサポート対象外としています。
以下の手順で外字をほかのパソコンに移すことができますが、あくまでも自己責任となります。
このソフトは外字ファイルが異なるOSで使用できることを保証するものではありません。
また、外字を他のPCで使用することや、異なるOS間で共有することは、
マイクロソフトのサポート外のことですので、あくまでも自己責任の範囲でお使いください。
Windows でフォントをインストールまたは削除する方法
http://support.microsoft.com/kb/314960/ja
Windows 2000-XPのFont Link機能(Font Linking)の紹介
http://blue.ribbon.to/~akene/fontlink.htm
フォントの組み替えができるFontLink? 機能(原語はability) は、
どうやら英語版Windows CE (iPAQなど) の日本語化ページでしか
紹介されてようなので、紹介ページを作ってみました。
Accessむかむか-[再起動しないで外字を設定する]
http://www.sanryu.net/acc/tips/tips161.htm
'MS Pゴシックにフォントをリンクする
(Vista以降のサービスでの外字利用)
もうひとつ、意外と見落とされますが、外字(EUDC)があります。外字はWindowsのログオンユーザーごとに設定されます。したがって「誰かがログオンしていないと外字が使えない」という現象が発生します。これを救うためのAPIであるEnableEUDCなんてのも用意されています。・・・したがって、サーバーで帳票を作るような場合、そして外字を使うようなシステムでは日夜自動ログオンがあるとかないとか・・・。・・・これもWindows Server 2008でサービス(Session 0)とユーザーセッション(Session 1以降)が分離されてしまったので、サービスで外字を出したい場合は前述のEnableEUDC()を呼び出すことになります。ただ、このAPI、そこそこ失敗するので、かなりどきどきです。
ここでは、EnableEUDC APIを呼び出す方法が提案されているが、
以下、リンク先は外字エディタを起動する方法で代替されている。
Community Additions(コミュニティー追加分)
Support for EUDC needs to be enabled and is a per-session setting. It can be turned on or off using the EnableEUDC Windows API. It is enabled by default by userinit.exe, so usually, nothing needs to be done for standard Windows apps. However, because of session 0 isolation, services running on Windows Vista or later need to call EnableEUDC explicitly otherwise EUDC support will be disabled.
外字のサポートはSession毎に「有効」である必要があります。これはEnableEUDC Win32APIを使用してON・OFFできます。通常、userinit.exeによりONに設定されるため、何も行う必要はありませんが、Windows Vista以降で動作するサービスは、Session0隔離のために、EnableEUDCを明示的に呼ばなければ、外字のサポートは無効になります。
ログオン直後に起動するプロセスで、
ログオン・スクリプトやシェルを実行し、
各種ユーザー環境を初期化する機能を提供しています。
Q:Adobe ReaderでWindows外字(EUDC.tte)6400文字分を表示可能かどうか?
A:PDF化するツールがサポートしているか、いないかが鍵であるようです。