글리프 및 메트릭 정보 읽기
.NET API 솔루션은 문자열 너비를 계산하고, 글리프 좌표를 계산하고, 글리프를 사용하여 기타 조작을 수행합니다.
Aspose.Font API 솔루션에는 글꼴 작업을 위한 풍부한 기능이 있습니다. 변환, 글리프를 사용한 조작, 라틴 기호 감지 등. 일부 기능은 글리프를 사용한 조작과 연결됩니다.
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 인터페이스에서 초기화 서비스 참조를 지정합니다.
- 모든 글리프 패스 세그먼트를 반복하고 포인트를 합산합니다.
글리프 포인트를 찾기 위한 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. 글리프란 무엇입니까?
글리프는 서체의 개별적으로 디자인된 문자입니다. 또한 기호/문자의 그래픽 표현으로 정의할 수도 있습니다.