For point features, it's best to use a simple horizontal label.

For linear features, it usually best to have a label following the shape of it with even spacing repeated as needed for clarity

For area features, there's a bit more variety in how you can do it, but the best way to handle it is usually a slightly curved label running approximately over the maximum dimension of the area with the spacing of the letters adjusted to cover the area.


Things to avoid are:

Simple rotations of labels. This usually looks really ugly and is hard to follow. A label should be either straight and horizontal, or curved, straight but at an angle is bad, except for a few special situations.

Decorative typefaces. Use clear, simple typefaces. Map labels are mixed in with a lot of visual clutter as it is so don't make them harder to read than you have to. Also, don't mix wildly different faces.


As jtougas said, Inkscape is very good for this. Make sure to familiarize yourself with the text tool and all its options. In particular the spacing/kerning controls and the text on path tool.

To set yourself up for labeling. Import your raster map image. Go into document properties and size the document tot he drawing with no margin. Create a new layer and "lock" the bottom one. Then add your labels. When you are done, turn off the bottom layer, and export with the default resolution. You should now have a transparent raster image the same size as your original map with just the labels on it. You can then import it back into your raster graphics editor as a layer.

Inkscape is also very good for building the initial geometry of your map and for applying effects along linear features like rivers, coastlines, etc.

Check out the tutorials that come with Inkscape under the help menu for the basics. I've written a sort of tutorial covering some of the Inkscape features useful to map making here: http://www.cartographersguild.com/tu...ng-basics.html