Microsoft's manual says that fltattenPath can follow the curve of text, and only provides one implementation step. You can find the example of text output in angle on the Internet, however, to obtain the coordinates of the vertices on the curve, you can run the following code: procedure TForm1.Button1Click (Sender: TObject); type TPointsArray = array [0 .. 0] of TPoint; TTypesArray = array [0 .. 0] of Byte; var CurvePts: array [0 .. 3] of TPoint; Points: ^ TPointsArray; Types: ^ TTypesArray; PtCount: Integer; iCount: Integer; FormDC: HDC; ThePen, OldPen: HPEN; InfoString: String; begin {dra W a bégiscurve} CurvePts [0]: = Point (30, 80); CurvePts [1]: = Point (55, 30); CurvePts [2]: = Point (105, 30); CurvePts [3]: = Point (130, 80); FormDC: = GetDC (Form1.Handle); BeginPath (FormDC ); {draw a bézr curve} polybezr (FormDC, CurvePts, 4); EndPath (FormDC); {conversion path to line segment} FlattenPath (FormDC); PtCount: = GetPath (FormDC, points ^, Types ^, 0); GetMem (Points, SizeOf (TPoint) * PtCount); GetMem (Types, PtCou Nt); // use the data to fill the array GetPath (FormDC, Points ^, Types ^, PtCount); // at this time, points already contains the coordinate of the point on the curve. FreeMem (Points); FreeMem (Types); end;