Skiaで、Arialのような多くのタイプフェイスを持つフォントを使用する場合、少々面倒な手順が必要です。ここでは、Arial Blackフォントを例に、その使い方を説明します。
そもそもなんで面倒なの?
SKFontのコンストラクタを思い出してください。第一引数に指定するのは、フォント名ではなく、タイプフェイス(SKTypeface)です。この場合、Arialフォントファミリーのデフォルトのタイプフェイス、という意味になります。
font = new SKFont( SKTypeface.FromFamilyName( "Arial" ), 100 );
Arial Blackは、単体のフォントではなく、Arialファミリーのスタイルの一つとして提供されています。そのため、"Arial Black"という名前で直接取得することはできません。
文字列で指定する方法
少々面倒ですが、"Arial"というフォントファミリー名と、"Black"というスタイル名さえ分かっていれば、以下の手順でArial Blackを使用することができます。
まず、SKFontManagerを使用して、Arialフォントファミリーのスタイルの一覧を取得します。
using var fontManager = SKFontManager.Default;
using var stylesArial = fontManager.GetFontStyles( "Arial" );
次に、取得したスタイルの中から、スタイル名 "Black" を持つスタイルを見つけ、対応するタイプフェイスを作成します。
for ( int i = 0 ; i < stylesArial.Count ; i++ ) {
if ( stylesArial.GetStyleName(i) == "Black" ) {
typefaceArialBlack = stylesArial.CreateTypeface( i );
break;
}
}
SKTypefaceはアンマネージドリソースです。用が済んだら片づけておきましょう。
最後に、取得したタイプフェイスを使用して、SKFontを作成します。
using var font = new SKFont( typefaceArialBlack, 100 );
完成です!
タイプフェイスのパラメータで指定する方法
フォントのタイプフェイスのパラメータが分かっている場合、直接指定してタイプフェイスを取得することもできます。
Arial Blackは、太さが900、幅が5(拡張)、傾きがUpright(直立)で定義されています。これらのパラメータを使用して、以下のようにタイプフェイスを取得できます。
var typefaceArialBlack = SKTypeface.FromFamilyName(
"Arial", // フォントファミリー名
900, // 太さ (Weight)
5, // 幅 (Width)
SKFontStyleSlant.Upright // 傾き (Slant)
);
なお、"Arial"フォントファミリーには10個のスタイルが存在します。それぞれのパラメータは以下の通りです。
| スタイル名 | 太さ (Weight) | 幅 (Width) | 傾き (Slant) |
|---|---|---|---|
| Normal | 400 | 5 | Upright |
| Narrow | 400 | 3 | Upright |
| Cursiva | 400 | 5 | Italic |
| Narrow Italic | 400 | 3 | Italic |
| Negreta | 700 | 5 | Upright |
| Narrow Bold | 700 | 3 | Upright |
| Negreta cursiva | 700 | 5 | Italic |
| Narrow Bold Italic | 700 | 3 | Italic |
| Black | 900 | 5 | Upright |
| Black Oblique | 900 | 5 | Oblique |
総合目次
