Actually, as of last March, the OFFICIAL fares are 430c for the first km and 385c per km thereafter with additional charges for waiting and delays (espera y demora) (source:
http://www.aresep.go.cr/docs/RRG-9543-2009%20Taxis.pdf page 11). Of course, even if you get them to use the meter that is no guarantee that you won't be ripped off. They may start out at the right base amount but studies have found that most taxi meters in SJ are rigged. Most are not done so outrageously so that you are likely to notice, but some taxistas are really really ballsy in what they will try to pay off. Locals will spot it in a second and tell the cabbies where to get off, but it is a lot easier to fool an unsuspecting gringo so it will help you to know how much a fare for a given haul should be.
One block in SJ is roughly equal to 100m, so 10 blocks are roughly equal to a km. When you get in the cab and ask the taxista to turn on the meter if he doesn't do so automatically, it should ring up the 420c for that 1st km. The 1st potential problem is when it starts going up beyond that. It SHOULDN'T start racking up additional colones until you've gone a FULL km or roughly 10 blocks. For example, the distance from the SL to the HDR is well under 10 blocks and so should never cost more than the minimum. If it does I suggest you just give the driver a 500c coin and tell him to stick it if he squawks for the rest.
What about for trips of more than 10 blocks? Orange said that the meter goes up 10c every few seconds (after the 1st km) but how fast? Whatever the new fare should be (they do go up periodically), each ADDITIONAL km costs less than the 1st. So a trip of under 20 blocks shouldn't cost more than 805c (or a 1K note if you want to leave him the small change as a tip). Some examples? The SL on the north side of town to Pantera Rosa on the south is about 13-14 blocks or maybe 600c. The SL to Arcadas or Molino Rojo diagonally across town is still under 20 blocks and so shouldn't cost more than 1K. Going from the SL to the Paseo Colon area (e.g. Oasis) is a bit longer (more blocks than I can easily count) but still well under 3km and thus shouldn't cost more than 1200c.
One little trick I've found that one can use for estimating distances in SJ requires that one also understand the street numbering system (Avenidas run east-west, Calles run north-south, even numbered Avenidas to the south of Avenida Central and even numbered Calles to the west of Calle Central). Oasis is at C32 between A1 y 3, which is 16 blocks west and 1.5 blocks north of town center. The SL is at C13 between A9 y 11, which is 7 blocks east and 5.5 blocks north of town center. So the ROUGH distance between them is 19 blocks (16+7+5.5-1.5). Hmm, whaddiya know, going by that even Oasis is less than 2 km from the SL. Maybe I've been overpaying? Well, you also have to add a little for charges due to traffic delays. Also, taxistas sometimes have to go a little out of the way because of 1 way streets, avenues that are blocked off for pedestrian traffic and the fact that SJ is not on a perfect grid. Hey, its not a perfect science and, except for some number geeks like me, not worth the mental calculations, but this gives you a rough idea how much different trips should be and will hopefully help you from being grossly overcharged.
However, another thing you need to watch out for are taxistas that go UNNECESSARILY out of the way in order to run up their meters a little more. Sometimes they'll tell you their way is faster because of traffic (and sometimes it is). Sometimes they'll pretend to be confused about where you want to go or how to get there (and often I think they really are).
My main points are that the total amounts are not so great. Getting taken for petty amounts is pretty much unavoidable so, unless its particularly egregious, you're probably best off saying "Ahh, Phuck it" and going along with it. However, I do think we need to draw a line in the sand somewhere when it comes to the worst abuses for principle's sake even if we're still only talking about an extra dollar or two.