「SkiaSharpで日本語文字列を描画する」の版間の差分

imported>Administrator
Administrator がページ「Ascent」を「SkiaSharpで日本語文字列を描画する」に移動しました
imported>Administrator
編集の要約なし
1行目: 1行目:
'''Ascent'''とは、タイポグラフィ用語のひとつで、アルファベット大文字の高さ(Cap Height)に加え、文字の「跳ね」を考慮した高さのことである。
SkiaSharpで日本語を描画する場合はかならず明示的にフォントを読み込ませる必要がある。
下方向は[[Descent]]と呼ばれる。
フォント関連のクラス名は「SKTypeface」でありFont云々という名称ではないため探すのに一苦労するかもしれない。
以下はXamarin.Macでの例。
<source lang="csharp">
            var paint = new SKPaint();
            paint.Typeface = SKTypeface.FromFile(Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources", "ipag.ttf"));
</source>


SkiaSharpで文字列を描画する場合の注意点としては、描画位置の指定は左上ではなくbaselineとなっており、
より正確に描画時の「高さ」を算出するにはBaselineにAscentからDescentまでを加えた高さを使う。
Ascentとはタイポグラフィ用語のひとつで、アルファベット大文字の高さ(Cap Height)に加え、文字の「跳ね」を考慮した高さのことである。
下方向はDescentと呼ばれる。
[[ファイル:Typography Line Terms.png|none]]
[[ファイル:Typography Line Terms.png|none]]


 
== 実装例 ==
Skiaをはじめとした多くの画像処理ライブラリで文字列を描画する場合、描画位置の指定はbaselineとなっており、
より正確に描画位置を把握するにはAscentからDescentまでが全体の高さを使うとよい。
<source lang="csharp">
<source lang="csharp">
             SKBitmap bitmap = new SKBitmap(512, 512, isOpaque: false);
             SKBitmap bitmap = new SKBitmap(512, 512, isOpaque: false);
50行目: 57行目:
             }
             }
</source>
</source>
== 関連項目 ==
* [[MonoGameでSkiaSharpを使う]]


[[category: SkiaSharp]]
[[category: SkiaSharp]]