グリフとメトリクスの情報を読む
文字列幅の計算、グリフ座標の計算、およびグリフを使用したその他の操作を行う .NET API ソリューション。
Aspose.Font API ソリューションには、フォントを操作する豊富な機能があります。変換、グリフによる操作、ラテン記号の検出、その他多数。一部の機能は、グリフを使用した操作にリンクされています。
グリフは、書体の個別にデザインされた 1 つの文字、または記号/文字のグラフィック表現です。フォントのこの単位の詳細については、 Introduction to Glyph の記事を参照してください。
このページでは、グリフとメトリクス情報の読み取り方法に関するオプションについて説明しますが、機能全体については Glyph オブジェクトの使用 記事。そこでは、より多くの C# コード サンプルが見つかり、グリフおよび特に Glyph オブジェクトを操作するための Aspose.Font の機能について学習できます。 Aspose.Font を使用して Glyph を操作するその他のコード例は、 Aspose.Font.Examples.sln ソリューション。
グリフを操作するには、次のものが必要です。
Aspose.Font for .NET API は、C# プラットフォーム向けの機能豊富で強力で使いやすいドキュメント操作および変換 API です。
NuGet パッケージ マネージャーを開き、Aspose.Font を検索してインストールします。パッケージ マネージャー コンソールから次のコマンドを使用することもできます。
Package Manager Console Command
PM> Install-Package Aspose.Font
C# を使用して文字列幅を計算する手順:
- テキストとその他の定数を宣言します。ここでは例として «Hello world» というフレーズが使われています。
- 文字列幅の変数を宣言します。
- GlyphId クラスを使用して、テキスト内の各文字のグリフを取得します。テキスト全体の幅を計算します。
- MeasureString() メソッドを使用して同じ結果を得ることができます。
- 出力結果を印刷します。
文字列の幅を調べるための C# コード
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using Aspose.Font.Sources;
using Aspose.Font.Glyphs;
using Aspose.Font.RenderingPath;
//Declare the text and other constants
const string text = "Hello world";
const int fontSize = 10;
//Declare a variable for string width
double width = 0;
//Get a glyph for each letter in text and calculate width for whole text.
//The same result can be achieved using the method font.Metrics.MeasureString(text, fontSize).
foreach (char symbol in text)
{
GlyphId gid = this._font.Encoding.DecodeToGid(symbol);
Glyph glyph = this._font.GetGlyphById(gid);
width += (glyph.WidthVectorX / this._font.Metrics.UnitsPerEM) * fontSize;
}
//Print output results
Console.WriteLine(string.Format("Width for text \"{0}\" with font size {2} is equal {3}." ,
text, FontName, fontSize, width));
C# を使用して座標を持つすべてのグリフ ポイントを計算する手順:
- 結果のリストを points で宣言します。
- IPathSegment インターフェイスで Init サービス参照を指定します。
- すべてのグリフ パス セグメントを繰り返し、ポイントを合計します。
グリフ ポイントを見つけるための C# コード
Glyph glyph;
//Declare the resultant list with points
List<Point> points = new List<Point>();
//Init service reference on IPathSegment
IPathSegment prevSegment = null;
//Iterate all the glyph path segments and collect points
foreach (IPathSegment segment in glyph.Path.Segments)
{
if ((segment is LineTo)
|| (segment is CurveTo))
{
if (prevSegment is MoveTo)
{
MoveTo moveTo = prevSegment as MoveTo;
AddPoint((int)moveTo.X, (int)moveTo.Y, points);
}
if (segment is LineTo)
{
LineTo line = segment as LineTo;
AddPoint((int)line.X, (int)line.Y, points);
}
else if (segment is CurveTo)
{
CurveTo curve = segment as CurveTo;
AddPoint((int)curve.X1, (int)curve.Y1, points);
AddPoint((int)curve.X2, (int)curve.Y2, points);
AddPoint((int)curve.X3, (int)curve.Y3, points);
}
}
prevSegment = segment;
}
void AddPoint(int x, int y, List<Point> points)
{
Point p = new Point();
p.X = x;
p.Y = y;
points.Add(p);
}
よくある質問
1. グリフ メトリックとは
グリフ メトリック は、テキスト レイアウトの作成時にグリフがどのように配置されるかに影響するパラメーターです。
2. グリフ メトリックとは
最もよく使用されるグリフ メトリックは、幅、原点、サイド ベアリング、ベースライン、アセント、アセンダー、ディセンダー、ディセンダー、バウンディング ボックス、高さ、幅、およびカーニングです。
3. この API ソリューションでグリフを管理するには?
C# でグリフをコーディングするには、 Aspose.Font.Glyphs 名前空間のエンティティを使用します。
4. グリフとは?
グリフは、個別にデザインされた書体の文字の 1 つです。また、シンボル/文字のグラフィック表現として定義することもできます。