#### 11.5.3 Fine-tuning Arrow Ends ¶

Msc-generator allows you to fine-tune the exact location of the arrow endpoints. There are two kinds of modification after you have selected an arrow end via blocks and ports.

- Shift the endpoint by a fixed amount of pixels along the X and/or Y axis. For this add `+x<pixels>` or `-x<pixels>` after the block and/or port/dir specification. You can add either or both an X and an Y coordinate offset.
- Shift in relation to the block of the endpoint. In this case add a percentage, like `+x<percent>%` or `-x<percent>%`. Note that this is a relative shift added to the endpoint calculated from block and/or port/dir specification. Thus for example `a+x10%->b` will start the arrow from coordinate `(a@60%, a@50%)` (a bit to the right from the center of `a`), since in the absence of a port the arrow starts from the middle of the given block.
- Make the arrow longer or shorter. This can be achieved by simply adding or substracting a pixel amount to the arrow end specification by appending `+<pixel>` (no `x` or `y`) or `-<pixel>`. Negative values make the arrow shorter, positive values longer. Lengthening of a curvy arrow is made by continuing it in a straight line. You can also add a percentage, which is calculated from the original length of the arrow.

You can mix and match any number of the above modifiers after the block/port/dir specification - they will be cumulated and their order is irrelevant. The shift operations will be applied first, then the length modifier ones. They can be combined with both `via` attributes and any routing algorithm.