「SkiaSharpで日本語文字列を描画する」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) |
||
| (同じ利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
[[SkiaSharp]]で日本語を描画する場合はかならず明示的にフォントを読み込ませる必要がある(SKPaintのTypeface | == 注意点:フォントを明示的に指定すること == | ||
[[SkiaSharp]]で日本語を描画する場合はかならず明示的にフォントを読み込ませる必要がある(SKPaintのTypeface プロパティを明示的に設定しておく必要がある)。 | |||
ちなみにSkiaのフォント関連クラスの名称は「Font云々」ではなく「SKTypeface云々」なのでインテリセンスで出てこなくて探すのに一苦労するかもしれない。 | |||
以下は[[Xamarin.Mac]]でアプリ内に埋め込んだ[[IPAフォント]]を指定する例。 | |||
<source lang="csharp"> | <source lang="csharp"> | ||
var paint = new SKPaint(); | var paint = new SKPaint(); | ||
paint.Typeface = SKTypeface.FromFile(Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources", "ipag.ttf")); | paint.Typeface = SKTypeface.FromFile( | ||
Path.Combine( | |||
NSBundle.MainBundle.BundlePath, | |||
"Contents", | |||
"Resources", | |||
"ipag.ttf")); | |||
</source> | </source> | ||
== 注意点:描画位置の指定はベースライン == | |||
SkiaSharpで文字列を描画する場合の注意点としては、描画位置の指定は[[コンピューターグラフィックス]]の世界で一般的な「左上」ではなく「X座標は左端、Y座標はbaseline」となっている。 | |||
描画時の「高さ」を正確に算出するにはBaselineにAscentからDescentまでを加えた高さを使う。Ascentとはタイポグラフィ用語のひとつで、アルファベット大文字の高さ(Cap Height)に加え、文字の「跳ね」を考慮した高さのことである。下方向はDescentと呼ばれる。 | |||
[[ファイル:Typography Line Terms.png|none]] | [[ファイル:Typography Line Terms.png|none]] | ||