GlyphContour 클래스
글리프 윤곽선의 닫힌 윤곽(contour)을 나타냅니다. 그리기 커맨드(ContourCommand)의 집합으로 관리되며, 마지막 세그먼트는 자동으로 첫 점과 연결되어 닫힙니다. 좌표는 pen 기원점 기준 절대 좌표(폰트 단위)이며, Y 양수 방향은 위쪽입니다. IList<T>를 구현해 커맨드를 인덱스로 접근하거나 중간에 삽입/제거할 수 있습니다.
상속
네임스페이스: VagabondK.OpenType.Geometry
어셈블리: VagabondK.OpenType.dll
구문
public class GlyphContour : IList<ContourCommand>, ICollection<ContourCommand>, IEnumerable<ContourCommand>, IEnumerable
생성자
| 이름 | 설명 |
|---|---|
| GlyphContour() | GlyphContour의 새 인스턴스를 생성합니다. 여러 글리프가 같은 contour 인스턴스를 참조하면 CFF에서는 서브루틴으로 추출됩니다. |
속성
| 이름 | 설명 |
|---|---|
| Commands | 이 윤곽에 포함된 그리기 커맨드 목록을 순서대로 반환합니다. 첫 커맨드는 MoveToCommand여야 합니다. |
| Count | 커맨드 개수를 반환합니다. |
| IsReadOnly | 읽기 전용 여부를 반환합니다. 항상 false입니다. |
| this[int] | 지정된 인덱스의 커맨드를 가져오거나 설정합니다. 인덱스 0에는 MoveToCommand가 있어야 직렬화가 정상 동작합니다. |
메서드
| 이름 | 설명 |
|---|---|
| Add(ContourCommand) | 커맨드를 목록 끝에 추가합니다. |
| Clear() | 모든 커맨드를 제거합니다. 로드한 contour를 비운 후 MoveTo(double, double) 등으로 다시 그릴 때 사용합니다. |
| ComputeBoundingBox(out double, out double, out double, out double) | 윤곽의 정확한 바운딩 박스를 계산합니다. 베지어 곡선은 제어점(convex hull)이 아닌 곡선 자체의 극값을 사용하며, 각 세그먼트의 도함수가 0이 되는 t(0..1)에서 곡선을 평가해 실제 곡선이 도달하는 최소/최대 좌표를 구합니다. head의 xMin/yMin/xMax/yMax, CFF의 FontBBox 계산에 사용됩니다. |
| Contains(ContourCommand) | 커맨드가 목록에 있는지 확인합니다. |
| CopyTo(ContourCommand[], int) | 커맨드를 배열에 복사합니다. |
| CurveTo(double, double, double, double, double, double) | 현재 위치에서 두 제어점을 거치는 3차 베지어 곡선을 지정된 점까지 그립니다. CFF(Type 2 charstring)는 3차 베지어를 네이티브로 지원하며, TTF(glyf)는 EnumerateTtfPoints()에서 2개의 2차 베지어로 변환됩니다. |
| EnumerateTtfPoints() | TTF(glyf) 직렬화용 점 목록을 순서대로 반환합니다. 3차 베지어 세그먼트는 ToQuadraticBezierCommands(double, double) 로 2차 베지어 시퀀스로 변환됩니다. glyf의 점 배열(on-curve/off-curve 플래그 포함)을 구성하는 데 사용됩니다. |
| GetEnumerator() | 커맨드를 순회하는 enumerators를 반환합니다. |
| IndexOf(ContourCommand) | 커맨드의 인덱스를 반환합니다. 없으면 -1입니다. |
| Insert(int, ContourCommand) | 지정된 인덱스에 커맨드를 삽입합니다. |
| LineTo(double, double) | 현재 위치에서 지정된 점까지 직선을 그립니다. CFF에서는 rlineto(상대 오프셋)로, glyf에서는 on-curve 점으로 직렬화됩니다. |
| MoveTo(double, double) | 윤곽의 시작점으로 이동합니다. contour의 첫 커맨드로 사용해야 합니다. CFF에서는 hmoveto/vmoveto/rmoveto로, glyf에서는 첫 on-curve 점으로 직렬화됩니다. |
| QuadTo(double, double, double, double) | 현재 위치에서 지정된 제어점을 거치는 2차 베지어 곡선을 지정된 점까지 그립니다. glyf는 2차 베지어를 네이티브로 지원하며, CFF에서는 3차 베지어로 변환해 rrcurveto로 기록합니다. |
| Remove(ContourCommand) | 커맨드를 목록에서 제거합니다. 제거되면 true, 없으면 false입니다. |
| RemoveAt(int) | 지정된 인덱스의 커맨드를 제거합니다. |