If a line has a single number clue, and there are already two or more separate blocks of squares filled on the line, the gaps between those filled squares can logically be filled.

Similarly, if a line has (for example) a two number clue, and contains two separate filled blocks that are too far apart to be part of the same block, we can consider the completed configuration where the two blocks would be closest together, and mark any blank squares between the two with Xs.

Joining can also be used to fill gaps between Xs that are too narrow to fit any of the remaining blocks in the clue for that line.