Спасибо всем, проблему решил, сейчас всё идеально, короче написал проверку на разрывы:
записываю последнюю координату, если расстояние между последней и текущей координатой больше чем размер кисти дорисовываю линии по типу кисти:
lineWidth = brush.size * 2;
lineCap = 'round';
lineJoin = 'round';
сейчас всё идеально дорисовывает. Схематично вот проверка:
fault = brush.size,
difference = {
x: Math.abs(oldcoordinats.x - coordinats.x),
y: Math.abs(oldcoordinats.y - coordinats.y)
}
...
if (oldcoordinats.x && (difference.x > fault || difference.y > fault)) {
//то начинаем процесс дорисовки
}