Попробовал поработать с TPath. К сожалению он некорректно обрабатывает (точнее не обрабатывает) квадратичные кривые Безье. Ошибка как в Berlin'е так и в Tokyo:
procedure TPathData.SetPathString(const Value: string);
......
'Q', 'q':
begin
GetPointFromString(PathString, Pos);
GetPointFromString(PathString, Pos);
end;
.....
Вроде как должно быть:
procedure TPathData.SetPathString(const Value: string);
......
'Q', 'q':
begin
QuadCurveTo(GetPointFromString(PathString, Pos), GetPointFromString(PathString, Pos));
end;
Задумался: Отправлять Bugreport или нет?