ホーム ] TIPS ] ソフトウェア実験室 ]

上へ
ビットマップの処理速度
色変換速度
数式演算速度
冪乗演算速度
検索速度
文字列処理速度
文字列/数値処理速度
CPU演算速度
TicksとPerformance Counter
文字の数値化
数値化文字の再現
数値化文字の補間
補間の効果
ネイピア数
ネイピア数2
指数関数近似値
級数の収束速度1
級数の収束速度2
級数の精度
逆三角関数を求める
算術幾何平均でπを求める
全フォルダ列挙
ビットマップとメモリリソース
配列とメモリリソース

ソフトウェア実験室

文字の数値化

最終更新:2006/10/31 新規

 
 TT(ツルータイプ)フォントはベクトルで表現されている、基本的には制御点やスプライン曲線などの集まりである。これが、描画される場合は、ポリゴン(点集合)に変換される。曲線がどの程度の点集合になるかは、描画サイズなどで決められる。
 ここでは、フォントの最終形態である点集合の状態を実際に確認する。これらは、フォントに数学的な座標変換を施して、変形させる場合などに必要な情報となる。

●原理/方法

 フォントが描画される直前の状態のポリゴンを以下のようにして得る。

  1. その文字をPathオブジェクトにする。
  2. Path(曲線群)をFlattenメソッドで線分に変換する(これにて、ベクトルから線分となる)。
  3. 線分化されたPathの点集合をPathPointsプロパティで得る。
  4. 得られたポリゴンの節点の型を、PathTypesプロパティで得る。


●PathTypes

 一般に、文字は複数の閉曲線の集合体となる。このとき、閉曲線を区別するためにPathTypesがある。これは、ポリゴンの節点単位で、その節点の性質を表したバイト配列となっていて、以下のようである。

  • 0   :始点
  • 1   :中間点
  • 129:終点(中空になる部分と思われる)
  • 161:終点(土台部分と思われる)

 この情報は、PathPointsから再び文字として見えるようにするために必要な重要情報となる。

●結果

PathPointsとPathTypesを列挙したもの。番号は点の番号、X、Y は、点の座標、Path Typeは節点の名称と、PathTypesの値。

○最も単純な漢数字の一の例(文字高は180)


MS Pゴシックの場合

MS P明朝の場合

MS Pゴシックの場合、単なる矩形となっているが、明朝の場合、飾り(シェリフ)があるので、複雑になっている。

○漢字の田の場合


中の4つの四角い空洞と外側の外形とから構成されている。
 

●実験のサンプルコード例

以下のコードで今回の実験で必要な情報は全て得られる。文字をパス化するには、全ての属性を、具体的に指示しないといけない(描画と同じ)。

txtCは実験の文字を指定するテキストボックス
cHは文字の高さ

Dim cH As Single = XXXXXX
Dim fmt As New StringFormat()
fmt.Alignment = StringAlignment.Near
Dim pa As New GraphicsPath()
pa.Reset()
pa.AddString(txtC.Text, txtC.Font.FontFamily, CInt(FontStyle.Regular), cH, New PointF(0, 0), fmt)
pa.CloseFigure()
pa.Flatten()
Dim pps() As PointF = pa.PathPoints
Dim pt() As Byte = pa.PathTypes