人名を表示したいのに、細かい漢字は出ない。どうにかならないものかと探したらIPAフォントというものがあり、これなら、戸籍台帳に掲載されている漢字を網羅されているとの事。
だけど、中々表示できないのでなぜかと思ったら、
IPA フォントと、 IPAmjフォントは違う!
その説明が足りないんじゃない?
IPAフォント
– 般的な日本語文書作成向けのフォントで、明朝体やゴシック体などの基本的な書体が含まれています。JIS X 0213:2004に準拠しており、通常の文書作成に適しています.
IPAmjフォント
– より専門的な用途向けで、特に人名や地名などの表記において細かな字形の違いを扱うために設計されています。約58,862文字の漢字グリフが収録されており、異体字セレクタ(IVS)を利用することで、約1万通りの異体字を使用できます.
この2つの違いについて説明が中々見つからない。
異体字が表示できるのはIPAmjフォント
なぜか、このページでも窓の杜からダウンロードする事になる。
IPAmj フォントをダウンロードして解凍すると
コントロールパネルのフォントを開く
ドロップするとフォントインストールできる
Wordなどでも選択できるようになる
異体字の入力をどうやったらできるのかも解説しているものが少ない。普通に変換しても、変換に出てくることもない。
異体字を入力するには検索が必要
文字情報促進協議会のサイトで、漢字を検索する。↓は渡辺の「べ」の異体字を入力したい場合。邊で検索してる。
すると、通常では表示されない邊の字がたくさん出てくる
必要な異体字をクリック
コピーフィールドからコピーして
フォント選択ができるアプリに貼り付け
IPAmj明朝を選べば、異体字が表示できる。
一般社団法人文字情報技術促進協議会 webサイトより文字コードをダウンロードする。
ダウンロードしたファイルを解凍
コントロールパネルのフォントを開く
ドロップするとフォントインストールできる
ドロップするとフォントがインストールされる
だけど、IPAフォント IPAexフォントでは、異体字は表示できない
WPFアプリに埋め込みます。
フォントファミリーへの設定例
FontFamily=”pack://application:,,,/アプリ名;component/Fonts/#IPAmjMincho”
実際のXAMLコード上ではこんな感じです。
<TextBlock x:Name="T_name" Height="30" Margin="20,0,20,0" TextWrapping="Wrap" VerticalAlignment="Top" FontFamily="pack://application:,,,/アプリ名;component/Fonts/#IPAmjMincho" FontSize="32" TextAlignment="Center" Grid.Row="1"><Run Language="ja-jp" Text="" /></TextBlock>
私の環境はVisualStudio 2017で、プロジェクト内にFontsフォルダを作成、その中にIPAmj明朝フォントを入れます。
ipamjm.ttf
がフォントファイルの本体です。
XAMLに指定するのは、このファイル名ではなく、中に登録されているフォント名になります。
IPAmjMincho
がフォント名になります。
私の環境ではこのコードで、以前指定したフォントのまま、新しいフォントが反映されずなぜだろうと思っていたのですが、
ビルド → ソリューションのクリーンをし、リビルドしたら反映されました。