WPFでパソコンにインストールされていないフォントを表示したい時-プログラムにフォントを埋め込んでしまえ

VisualStudio

本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^

IPAmj明朝

IPAmj明朝は、IPA(独立行政法人情報処理推進機構)が提供する明朝体フォントです。

旧字体や異体字の表示ができます。

IVS(異体字セレクタ)に対応しており、Unicodeの同一コードポイントに対して異なる字形を指定可能で、戸籍、住民基本台帳などの人名表記において、細かな字形の差異を表現できます。

WPFでIPAmjMinchoフォントを利用する

プログラム上にフォントを埋め込んでしまいます。そのためにWPFから直接そのフォントを指定したいのですが、その時に英語表記が必要になります。

FontFamily="/TestAPP;component/Fonts/#英語フォント名"/>

ファイル名ではないのがポイントで、フォントを開いた、左上に記載があります。ここで、フォント名が日本語表記で、IPAmj明朝と表示されることもあって、どのように開いたら英語表記でどのように開いたら日本語表記になるのかはつかめていません。

※日本語表記名でも使える気がしますが、試していません。

PowerShellで調べてみる

PowerShell を利用すると、英語表記を調べる事ができます。


Add-type -AssemblyName PresentationCore

$fonts = [System.Windows.Media.Fonts]::SystemFontFamilies | Sort-Object -Property Source
foreach ($font in $fonts) {
    $enName = $font.FamilyNames["en-US"]
    $jaName = $font.FamilyNames["ja-JP"]
    Write-Output "$enName => $jaName"
}

インストールされているフォントに限られますが、このスクリプトを走らせると、インストールされているフォントに一覧表示ができます。

これによると、

IPAmjMincho => IPAmj明朝

なので、英語表記はIPAmjMincho であることが分かります。

ちなみにダウンロードしたファイルは、

ipamjm.ttf

ですので直感的にはよくわからないですね。

XAMLでの表記

例えば特定のテキストブロックだけ、このIPAmjMinchoを利用したい場合の指定方法は

 <TextBlock x:Name="T_2_01" Margin="109.5,14,73.5,60" FontSize="36" TextAlignment="Center" Foreground="#FF37280F" TextWrapping="Wrap" FontWeight="Bold" FontFamily="/TestApp;component/Fonts/#IPAmjMincho"/>

ソリューションエクスプローラ上で見ると、Fontsフォルダを準備してその中に

IPAmjMinchoを配置しています。

タイトルとURLをコピーしました