A Live Experiment in Disassembling a Map

Earlier this week, I conducted an experiment in live broadcasting. I took a map that I’d previously made and spent nearly an hour going through it layer-by-layer, discussing my design rationale and techniques. If you’re interested, have a look at the recording.

Livestreaming is something I’ve wanted to do for a while — I’ve had conversations with colleagues on and off for months about it. There’s an appeal to me in creating an interactive environment for talking about maps. Doing things live also saves me time, because if I were to create something pre-recorded, I would spend a lot of time obsessing about small details. A ten minute video can take me hours to record, re-record, edit, etc. Instead, I can just start the stream and let it happen.

I’m hoping to keep doing things like this during the course of this year. I’ll still put text content up here from time to time, of course. For tutorials, I prefer to offer text, because it’s easily searchable and doesn’t require sound. But, in addition to those, I’m hoping to get a chance to be more off-the-cuff with all of you.

Whenever I figure out my next streaming event, I’ll be announcing it on Twitter.

Financial Transparency: 2018 Edition

As is now my annual tradition, it’s time for me to tell everyone how much money I make.

As a freelancer, I often wonder how I am doing financially as compared to my colleagues. Not out of a sense of competition, but just to answer the persistent question: is this normal? Am I earning a “typical” living? Do I get an unusually small or large amount of money from selling prints? Things like that, born of curiosity. I can look at the great work of a colleague and think it’s valuable, but the big question is: does the rest of the world value their skills the way that I do?

I find the financial opacity of the freelance world a bit intimidating, and I suspect that some others do, too—particularly those who are interested in freelancing, but haven’t yet jumped in. So I’d like to do my part to lend transparency by laying out my financial picture for all of you.

Freelance Earnings

I have been freelancing since I took my Master’s degree from UW–Madison in May 2010, but things didn’t really take off until 2012, so let’s start there. My gross earnings from freelance cartography have been:

2012: $12,016.34
2013: $20,352.75
2014: $8,508.58
2015: $10,881.25
2016: $22,795.00
2017: $48,775.38 [$45,000 from one big contract, so it’s a bit atypical].
2018: $17,795.60

I have also earned money from some other non-mapping freelance work. I do editing and layout for Cartographic Perspectives, and I’ve done some bits of paid writing, other design work, etc. This income isn’t terribly relevant to those who are wondering about the mapmaking business, but I’ll include it here for the sake of completeness:

2012: $1,128.08
2013: $1,528.00
2014: $7,014.00
2015: $10,194.00
2016: $2,000.00
2017: $9,925.00
2018: $7,505.00

These bits of side work, as well as my teaching (below), have been very helpful in leaner years.


I teach from time to time at UW–Madison, covering the Introductory Cartography course. Again, not too relevant to the subject of freelance earnings, but perhaps interesting if you’re curious about what adjunct teaching pays. My pre-tax pay for one semester of a 40% appointment is $7,182.18 (formerly $6,954.39 from 2010–2015).  This number seems to compare favorably with what I’ve seen posted at other institutions, or heard from colleagues elsewhere.


I do a fair amount of pro bono work, and I’ve been much more shameless about asking for support for my tutorials, Project Linework, and other resources that people seem to draw value from etc.

2012: $37.00
2018: $1,711.08 (a number that completely floors me)

Speaking of donations, here are some handy buttons if you want to help empower me to keep sharing cartographic knowledge and resources.

Sales of Prints

Finally, the last piece of the puzzle is sales of prints. Instead of making maps for clients, I sometimes (or often) spend time making maps for no one in particular. And then I’ll put them up on Zazzle in case anyone wants to buy them. I’ve also occasionally printed maps locally and sold them through an art store or by word of mouth. But Zazzle is where almost all of my sales happen.

My earnings from sales of prints:

2012: $772.39
2013: $678.68
2014: $270.19
2015: $116.52
2016: $797.54
2017: $342.78
2018: $354.10

And, if you’re curious as to what sells and what doesn’t, here’s a breakdown of Zazzle sales:

Fame and exposure are generally free, and often much more plentiful than actual payment. It takes a lot of clicks before someone actually buys—I have also seen this behind the scenes with the Atlas of Design. I often see colleagues whose work gets a lot of attention, and who are offering cool prints, and wonder if they are receiving lots of praise with little money behind it.

Concluding Thoughts

I never really intended to be a freelancer, because I dislike instability, and the numbers above fluctuate wildly. But I fell into it accidentally anyway, and it’s been great, though it’s definitely not a life I would have been able to choose if I had to worry, for example, about dependents.

I also haven’t been able to save for retirement very much these last few years, as I’ve been focused on more day-to-day expenses. But, things have been looking up lately, and I’ve started putting at least a little bit away again.

I hope all this stuff above offers some useful insight as to one freelancer’s life. I’m sure some others earn more, and some others earn less. I’d encourage others who are comfortable doing so to share their own financial information, to make the picture a little broader.

What I did in 2018: An Annual Report

Friends, this last year I’ve been more bold about asking for donations. And I’ve been quite honestly amazed by the level of support that I’ve received. I love giving back to my fellow mapmakers, and their generosity in return has been humbling and gratifying. Thank you all so much; that includes not just those who have opened their wallets, but all of you who have offered advice, aid, and kind words.

Since the start of 2018, I’ve been keeping organized track of some of the ways I’ve tried to contribute to the cartographic community, aided by your support. I want to give you what will be, I hope, the first of an annual series of reports. So let’s jump in.

In no particular order, in 2018, I:

  • put up a detailed new tutorial on my blog (Smart Type Halos in Photoshop and Illustrator)
  • made a couple of updates to my Shaded Relief in Blender tutorial (thanks Dunstan Orchard and Anton van Tetering for pointing out improvements).
  • spent a while writing up a walkthrough of one of my mapping projects: On Airline Mapping
  • publishedThe Power of Appearances,” an adaptation/combination/rewrite of two of my earlier blog posts, in Cartographic Perspectives
  • publishedA Freelancer’s Approach to Teaching Cartography,” a reflection on how my mapmaking career informs my pedagogical approach, also in Cartographic Perspectives.
  • presented on monochrome mapping (a favorite of mine) at the 2018 NACIS Annual Meeting
  • contributed a new map of the Kingdom of Pergamon to Wikipedia, in the spirit of the old FixWikiMaps project
  • built a new low-fi polygon linework set for Project Linework called “1981,” which I hope you’ll make use of
  • conducted a mini survey of my fellow cartographers on the typefaces they like to use
  • conducted, along with my colleague Aly Olivierre, a sizeable survey to help bring transparency to how much freelance mapmakers get paid
  • completed my final year as Director of Operations for NACIS; I’ll still be helping out with the transition in the coming year as Nick Martinelli takes over for me
  • undertook an ongoing effort to reprint the first three volumes of the Atlas of Design, including creating an all-new layout for Volume 1.
  • made a bunch of maps on a typewriter and wrote a blog post on lessons learned
  • answered a variety of questions on Twitter and via email

As we move into 2019, I hope to continue to merit the support you have shown me. I never know exactly how much I’ll be able to do so in a given year, but I do know that I fully intend to keep up my efforts to contribute to the cartographic community. You have all taught me so much, and I will continue repay the favor.

If you’d like to support my efforts, please click one of these handy buttons.

Typewriter Cartography

This is my father’s manual typewriter, a Royal Safari II. Or maybe it’s mine — I appropriated it quite a long time ago.


I remember playing with it a bit as a child in the 1980s, but for the most part I’ve rarely used it. But I’ve kept it around anyway, because I’ve always had a nostalgia for old technologies. Maybe I liked the idea of being a person who owns a typewriter.

A couple of weeks ago, I remembered that it was in the basement, and I thought — as I do from time to time — about how nice it would be to have a reason for using it. And then it occurred to me that I should just go with my default reason: maps.

After a few hours of planning and typing, I managed to create a typewriter map and I put it out on Twitter, where it ended up being by far the most popular thing I’ve ever put on that platform. Or probably ever, anywhere.

It’s probably of no surprise to anyone who’s known me for more than five minutes that I chose to start this project by mapping my homeland in the Great Lakes. I think it’s always useful to begin with somewhere familiar when trying something new, because you can use your local knowledge to confirm whether or not the technique is doing justice to the place.

Click here if you want to see a giant high-resolution scan. It’s full of smudges from the ribbon, alongside errors corrected with a generous application of Wite-Out. But I’m quite pleased with its messy, organic, analog nature. Other seemed to be, too.

I hadn’t expected such a warm reception from the internet, but even before that happened, I had considered my experiment a success. So I followed it up with a couple more maps, to get a feel for some different styles. You can click on either of them to have a look in more detail.

It was an interesting diversion from the digital precision of my normal workflow. Sometimes fun, sometimes frustrating, but in any case a chance to mess around with some new challenges.

The ideas here aren’t new. John Krygier has a post about typewriter mapping. Early computer graphics, such as ASCII art, along with early mapping software (like SYMAP), use essentially the same style as what I am doing (though mine is much more rudimentary): constructing images through individual characters.

In any case, now that you’ve seen the maps, read on to learn more about the challenges and decisions that went into their creation.

While this sort of work is cool and interesting, and I give away high-resolution versions of it for free, I can only do it when I take time away from my regular paid client work. If you derive some value from what you’ve seen here, you are welcome to make a donation to support my continued efforts.

Map 1: Rivers of Lake Michigan


Though I just called this project a “diversion” from a digital workflow, all of these maps actually started on the computer. For this particular one, I began with a grid in Adobe Illustrator. Each rectangle in the grid represented one character position on the typewriter. There are ten characters to the inch, at an aspect ratio of 0.6. The final grid was 75 × 60, which would fill a 7.5″ × 10″ space.


Atop that, I dropped some data from Natural Earth. And from there, I began “tracing”: plotting out which characters I could type to represent the rivers and coastline, and where each one should go.


After a little experimentation, I decided that if I wanted to draw linear features, there were three characters that were best to use: ! / _. Together, I could create rudimentary lines that roughly connected together in a pseudo-vector style, even if the typewriter grid itself is basically a raster.

A backslash (\) would also have been great, but that was a character invented pretty much exclusively for use on computers, so it’s not found on my typewriter. As such, I had diagonal lines that sloped somewhat cleanly in one direction, while they stairstepped back down in the opposite direction. Compare the coastline on both sides of Lake Michigan, below.


For the state boundaries, I decided to try something different. I simply filled a bunch of “pixels” in with asterisks, rather than using more “linear”-looking characters. A raster, rather than a pseudo-vector, approach. It creates a small visual distinction between the boundaries and the coastline, which might be pretty hard to do otherwise. There aren’t a lot of symbology options in a situation like this.

The biggest of those options, though, is color: my typewriter has a two-color ribbon, so I tried to make the most of it by setting the rivers off in red. This also helped with a labeling problem: I could name the rivers in red, to distinguish them from any other features. Other than color, though, the only way to vary my labels was to set some in capitals, and some in title case. I’m used to labeling most every class of feature on a map in a different style, but that’s just not possible here. My islands and my cities, for example, look the same (black, title case). The states are lakes are the same, too (black, capitals).

Once I had spent a couple of hours or so on developing a plan, it was time to start typing. I loaded some paper into the typewriter and got to work. At first, I proceeded very linearly: left-to-right, top-to-bottom. But that was tedious. There’s a lot of white space in this pattern, so sometimes I was forced to hit the space bar a few dozen times to advance to the next character on the line, and there was always a chance I might miscount and make a mistake. More importantly, though, following this workflow revealed a problem with my typewriter. Whenever I hit the carriage return lever to go to the next line, there was a chance that I’d somehow get a misalignment. Have a look at these patterns I typed:


Notice how the characters don’t all line up along the left side, but then become more aligned on the right? I’m not sure why it kept happening, but it seemed most often to appear when I would use the carriage return lever. So, instead, I shifter to a different style of typing. I would start to trace features somewhat linearly. For the top left part of the map, for example, I began by typing three asterisks, then I manually moved down one line, then typed four more, then moved down another line, and typed four more, etc. following the line of the state border.


I manually moved the paper up and down and used the backspace and spacebar keys to align myself to where I needed to be at any time. In this way, I mostly avoided misalignments, though smaller ones still kept creeping in. About three-quarters of the way down the page I got a minor leftward shift that you can see in the final product. You can also see where I typed some periods over again to check if it was just my imagination or if it really was misaligned.


Fortunately, it wasn’t enough to ruin my work, but it was a constant danger, and something I am still trying to figure out.

The final product has various interesting smudges where the paper accidentally contacted the ribbon. In particular, I noticed that typing in red always produced a faint black “shadow” a couple of lines above. When the slug hit the red part of the ribbon, a small portion of it would lightly hit the black portion of the ribbon, too. Later on, I started holding scrap paper over my map in order to prevent this, so that the black shadow would go on the scrap.


In sum: my typewriter is not a precision instrument. This makes it a somewhat uncomfortable-feeling tool for a detail-oriented designer like me. I like being able to zoom in to 64,000% in Illustrator and correct errors that are small enough that no human eye could possibly ever see them. But, there’s something attractive about the organic messiness of the typewriter.

Once I was done, I scanned it, and then turned it over to the Robinson Map Library, since I wasn’t sure what to do with it now that I was finished. So, come to Madison if you ever want to see the real thing (this goes for all three maps).

Map 2: Shadow Contours


For this one, I wanted to try and see if I could squeeze some sort of terrain representation out of the typewriter. As I mentioned, early digital graphics used printed characters to create images. And shading could be simulated by using characters of different darkness. The ASCII Art page on Wikipedia has some examples of this.

My goal was to do something like illuminated contours: lines that would get darker on the lower-right side and lighter on the upper-left, to create a depth illusion. So I needed to do something rather like what John Nelson calls “Aspect-Aware Contours.”

Setting this one up required a whole different workflow than my first map. I began with a DEM of Michigan that I always keep on my Google Drive, ready to test out a terrain technique at a moment’s notice:


First off, I cropped and shrank it down to 75 × 100 pixels. Then I further compressed the vertical dimension to 60 pixels. These two separate steps were necessary because the pixels aren’t square on my typewriter, as we saw in the grid earlier: they are taller than they are wide. I needed something that had the same aspect ratio as a 75 × 100 image, but once I had the overall image aspect ratio correct, I needed it to really only use 60 characters vertically, since each character is so tall. In the images below it looks a little squished because it’s being shown with square pixels. But in the end it stretches back out correctly.


From there, I classified it into just a few elevation levels, and smoothed them out a bit via a median filter.


And then it was time to calculate the aspect of each pixel in the raster.


Flat areas have no aspect. Pixels on the boundary between elevation classes, on the other hand, are assigned values based on which direction they are facing. So, now I could tell which areas would be in shadow (facing toward the lower right), and which would be lighter (facing upper left). No, I didn’t compensate for the vertical stretching when calculating aspect, but I should have.

The aspect calculation produced a double line of pixels, one on each side of the boundary between classes. But I really only needed a single line of pixels to represent the contours, so I first cleaned those up. And then I grouped the various aspects into three shades: light, medium, and dark, based on the particular direction they were facing.


Now I had contours with some shading. All that was left was to turn them into individual typewriter characters. I converted this raster into an ASCII file, which looks like this:

Screen Shot 2018-11-25 at 10.46.06 PM.png

Each pixel is represented by a number, and there are four numbers: one for light, one for medium, one for dark, and one for white. From there, it was simply a matter of doing a Find & Replace in a word processor to convert them to the three shading characters I had chosen to use: . + $.


And from there, it was just a matter of typing things out on the typewriter.


I tried a couple of other variations on this idea, as well. I initially hoped to do a proper set of Tanaka contours, with a medium-grey background and white highlights. But the white areas weren’t obvious enough amidst all the typed characters, so it wasn’t working.


Keeping white as the background color helped a lot, so I decided to go with contours that started with at least some darkness to them even on their light side. I also tried doing it with five different shades: . : + & $.


However, I think that was too many — the distinctions aren’t really sufficiently clear between some of them, especially when each character varies so much in darkness just based on how hard I hit the key. So, when I had to halt that particular attempt partway through due to me misreading part of my pattern, I decided to start over with a simpler set of three characters. I reclassified the aspect analysis and re-converted it to characters, and that became the basis of the final attempt described above.

Map 3: Shaded Relief


Since I had been at least modestly successful applying shading to contours, I decided finally to see if I could render a rudimentary shaded relief on the typewriter, as well. I knew it wouldn’t look particularly realistic, but I was hoping it would at least be sufficient.

This time I decided to change geographies and map Africa. As with the previous map, I took a DEM and shrank it down to 75 × 60 pixels, then I generated a shaded relief. I did it in Blender, but I turned off the various realistic shadows, as I thought they’d muddle things up. The end result was basically just a simple GIS hillshade.


did try to compensate for the fact that the image, which had square pixels, would get stretched vertically once it made it to the typewriter. I set my lighting angle to be about 15° off from the typical upper-left light source that is used in shaded relief. However, I think I shifted it 15° in the wrong direction. But the end result seemed to come out well enough.

Once I had the relief, I then classified it into five levels: white, and four shades of grey. While I’d used three shades for my contour map, after having decided five was too many, this time I decided to split the difference.


And then, as before, I converted it to text characters. This time, I used . + @ $ as my set of shades.

Screen Shot 2018-11-26 at 10.39.06 AM.png

I brought this into Illustrator and added it to the same planning grid that I’d developed for my first map. I also brought in more Natural Earth data so that I could include a coastline and some rivers. The relief would be in shades of black, and the other features would be in red.

Screen Shot 2018-11-26 at 10.42.22 AM.png

The end result would be a combination of the techniques from the first map (mostly pseudo-vector) and the second map (more raster-y).

I removed bits of the relief that crept into the ocean, and also in order to make space for the rivers and a few labels I decided to cram in. After about three hours, I had the whole thing planned out. I printed my pattern and typed it up. I had a few false starts where I missed or added a character here or there, but after another three or four hours, I finished the third map.


This one has fewer of those “shadows” that accompany the use of the red portion of the ribbon. I spent a lot of time with a piece of scrap paper trying to prevent those, mostly successfully. This map also only involved me making two mistakes that required Wite-Out. I’m clearly getting better, as the first map had probably closer to ten.

The shaded relief is obviously pretty coarse. I think close up it’s more of just an interesting texture, rather than anything that suggests depth. But, it was still fun to try. If you shrink the map, or step far away from it, or blur it, the relief starts to come out a little bit as the eye focuses less on the individual characters and more on the pattern. I think that’s also true of the contour map.


I may do some more maps later on, but I think now that I’ve explored some of the basic challenges of typewriter mapping, I’ve reached a good point to pause in my efforts. Maybe I’ll come back to it some other time, or maybe I’ll get diverted into another novelty use of old technology. Or maybe I’ll spend time doing all the stuff I was supposed to be doing instead of this. We’ll see.

Smart Type Halos in Photoshop and Illustrator

Gentle readers, I am back again with yet another tutorial that relates to the legibility of type. I love the art of map labeling, and the fact that this will be my third post on integrating type into a map suggests that I’ve probably thought way too much about it. While my two previous posts were on type knockouts, this time around, I’m going to talk about another favorite trick of mine: making type halos that appear only when needed.

Notice in the map below that there’s a faint glow around parts of the label for the Cadillac Plain. You can see it most prominently on the left side of the label. By the time you get to the right side of the label, it’s mostly gone.


Clipped from the map featured in my Terrain in Photoshop: Layer by Layer walkthrough.

Notice what happens when I turn off the label, but leave that glowing halo. You can see that it shows up only in some areas.


Also, notice how the Lake Mitchell halo is much more prominent than the Lake Missaukee one.

Specifically, it pops up only where the underlying map is darkest, and then it gracefully fades away as the map lightens. This halo is a tool that we bring in only when it’s necessary to help the label’s legibility. When the map is light, the dark label survives fine, and a glow serves no purpose. The labels only need a boost when the underlying map is darker, since the contrast between the label and the map will be weaker. You can see the value that the glow brings by looking at how the labels appear without it.


We don’t want to overuse the glow when it’s unnecessary, since it’s covering up our map and it feels clunky when it’s used in places where it’s not needed. Compare the first image, with the glow that fades in-and-out, with a glow that doesn’t change based on its context.


Now the label for Lake Missaukee has a glow around it, but it’s not really necessary. It looks a little silly, and/or heavy-handed. A needless intervention.

So, how do we make these variable label halos, that fade in and out as needed? Well, that depends on what software we’re working in. Let’s start with Photoshop.

In Photoshop

Let’s start with a map, and some labels. You might have imported these labels (and/or parts of the map) from Illustrator, or perhaps you made the whole thing in Photoshop. It doesn’t really matter. Here’s my starting setup, though. For simplicity in this demonstration, I have a single map layer, and a group with a few labels in it.


Click for a larger version (you can do this with most of the screenshots below).

To start, I’m going to need to make a copy of the Labels group. Click on the it (in the Layers panel) and drag it down to the bottom until you’re hovering over the icon that looks like a piece of paper with a corner turned up. Release the mouse and you’ll have a copy of your group.


Double click directly on the name of one of these groups to rename it. Call the topmost one “Labels” and the bottom one “Glows” (you can also click and drag group in the Layers panel to re-order them). Then, turn the Labels group off by clicking on the eyeball icon to the left of the group name. We’ll be setting this aside until later.

Now I need to make some nice glowing halos. I can do that selecting the group that contains my labels, then clicking on the fx icon found at the bottom of the layers panel, and choosing Outer Glow.


There are a lot of settings here — probably more than you’d need in most situations. They’re all worth playing around with to understand, but for simplicity, let’s focus on just a few.

For color I’m going to go with a white halo, set at 60% opacity, so that my glow simply whitens up my map a bit. And if it’s not already set, the normal blending mode is probably called for here, so that I don’t have this white color blending into the map in unexpected ways.

The size slider controls how far from the type your halo will extend, and the spread slider controls how soft and fuzzy its edges are. The settings you see in my example above are not likely to be the best settings for you. This is something you need to experiment with — there’s no one-size-fits-all sort of answer that I can give you. The overall goal is to make something that’s effective, but subtle. It should give the labels a boost, but not be too noticeable on its own.

Next up, it’s time to start making things fade in and out. Select the Glows group and then go down to the bottom of the Layers panel and click on the image of a rectangle with a circular hole.


This creates an opacity mask for the group. We’ve worked with these before, if you’ve been following along with my other tutorials. If not, go check out the Opacity Masking section of this tutorial before proceeding, which will explain the basic concept (though in an Illustrator, rather than a Photoshop, context). For now, our mask is empty, and so it’s represented by a black rectangle, which means: hide everything in this layer.


We’re going to put a copy of our underlying map into this mask, so that the glows get more or less opaque as the map gets darker or lighter. I’m going to go click on my map layer, hit Cmd-A (or Ctrl-A, if on a PC) to select the whole thing (or go to the Select menu at the top and choose All), and then I’m going to copy it (Cmd-C on a Mac or Ctrl-C on a PC) to the clipboard. From there, Alt-click on the opacity mask to go inside. To paste in our map, go to the top menu and choose Edit  Paste Special  Paste in Place to ensure that the map ends up in the correct place.


Since we’re in a mask, we’re only working in shades of grey, which correspond to levels of transparency for our glows. Dark means “make the Glows layer very transparent” and white means “leave it opaque.” What that means is, right now, our mask is completely inverted from what we want. Dark areas of the map (where we want our halo to help out) are also dark in the mask, meaning that the halo is being made more transparent. To fix this, hit Cmd-I to invert the mask.


With that, you can Alt-click the mask again to escape it and once again see your map, labels, and glows. Now they’ll begin to fade in/out based on the mask, which is based on the map. The problem, of course, is that our labels are also fading in and out, not just the halos around them.


And this is why we made a second copy of our labels. Turn those back on. They’re untouched by the mask and remain solid, so they cover up the fading labels beneath. Now we have solid labels and fading glows.


From here, you may wish to make some further tweaks, either editing the glow effect, or possibly even the mask. You might use the Levels or Brightness/Contrast adjustments to modify the mask’s overall effect. But the basic idea is now in place: the labels receive more help where they need it, and the glows generally get out of the way when they are useless.

Bonus content: This is a good time to show off a cool feature in Photoshop, even though it’s one that’s unnecessary for this process. Turn Labels group back off for a moment, and then select the Glows group. Right above it on the Layers panel you’ll see an option marked Fill that’s set to 100%. Set that to 0% instead. What this does is get rid of the layer’s main artwork (the labels), while still keeping the glow on the labels. The fill setting is almost exactly like opacity, except it doesn’t operate on any layer effects (like glows). The opacity setting, on the other hand, will make both the labels and the glows get more and more transparent.


So now you’re left with just the glows, and then you can turn the Labels group back on. Again, this is totally unnecessary in this situation, because the labels in the Glows group are hidden by the solid labels in the Labels group, so there’s no need to hide the former. But, this could be handy if you wanted a Labels group that was semitransparent, and you didn’t want it affected by the labels fading in and out in the Glows group underneath.

Double Bonus Content: In the comments below, Rolf points out an even fancier way of doing this, using Photoshop’s “Blend If” sliders, which takes care of this process without needing a mask.

In Illustrator

Now, if you don’t happen to be working in Photoshop, fear not! This same idea works just fine in Illustrator, which also has the ability to create both glows and masks.

Once again, let’s set up a map and some labels. And this time, I’m going to invert things: I’ve got light labels that need a dark halo, rather than the other way around.


I’m going to click on the small circle next to my Labels layer to target its appearance (if you want to know more about appearance attributes in general, I recommend taking a detour and first reading The Power of Appearances, another Illustrator tutorial I posted on here some time back). Then I’ll go up to the Effects menu and choose Stylize → Outer Glow.


There are far fewer settings on the Illustrator version of the Outer Glow (I appreciate that simplicity). Again, they require a little messing around to find the exact look that’s best for your map, so I can’t tell you what to pick. One piece of advice: by default, the blending mode is usually set to “Screen,” which is likely not what you want. I don’t want to get into the mysteries of Adobe’s blending modes, but I’ll simply say that Screen is generally for lightening underlying things. In this case, we want a dark glow, and so if you set the mode to Normal, you’ll get a result that’s probably more in line with what you were expecting.

I’ve set my glow to 45% opacity, a black color, and a 0.5pt blur, and this seems to be enough for my labels to stand out against the lighter areas of the underlying map.


This time, for demonstration purposes, we’ll do things in a bit different order. I’m going to modulate the glow’s opacity, and then I’m going to create a separate, untouched version of the labels. It gives me a chance to show you a couple of other useful things.

As we did in Photoshop, we’re going to put a copy of our underlying map in an opacity mask, to modulate the label glows. In the case of my example map, I’ve got a bunch of hexagons and other stuff in my basemap layer. I’ll copy everything in that layer to the clipboard. Then, I’ll once again target the appearance of my Labels layer by clicking the small circle next to the layer name. From there, I’ll open up the Transparency panel.


Hit the Make Mask button. Once again, we start with an all-black opacity mask, which means: hide everything in this layer. Uncheck the Clip box — this (annoyingly default) setting tells Illustrator: hide everything that falls outside of the bounds of the artwork we have inside our opacity mask. Since we have nothing inside in our opacity mask at the start, everything on our map counts as “outside the bounds of the artwork inside the mask” and is hidden. Unchecking the box turns out mask white, so everything shows up again.


As with Photoshop, Alt-click on the mask (the white rectangle on the right) to go inside. Then go to Edit  Paste in Place to drop our basemap in at just the right location.


Unlike our exercise in Photoshop, we don’t need to invert our mask this time. We want our dark glow to be strongest when the basemap is lightest. When we were working earlier in Photoshop, the opposite was the case: we wanted our glow to fade out when the basemap was lightest, so we needed to invert the mask, so that its light parts became dark and told Photoshop to render the glow invisible.

A note: if, in the future, you do need to hit the Invert Mask button in Illustrator, note that it will have the intended effect, but won’t actually make the mask look any different, as Photoshop does.

Alt-click on the box to the left of the mask in the Transparency panel to go back to the map. Once again, our glows now fade in and our as needed. But, so do our labels.


We need, once again, an untouched copy of our labels to go on top. As with Photoshop, you can duplicate the Labels layer by clicking and dragging it to the icon on the bottom of the Layers panel that looks like a page with an upturned corner. Rename/reorder so that there’s a Glows layer on the bottom and a Labels layer on the top.


Note that the glow gets stronger now that there are two of them, one stacked atop the other.

Now, both layers are presently masked. We want to get rid of both the glow and the mask on the top, Labels, layer, so that it’s just a layer of plain, unadorned labels. Target the appearance of the Labels layer (again, click that little circle) and open the Appearance panel. You’ll see that the layer has an Outer Glow on it.


If you click on the words Outer Glow, you can go and change your glow settings. That’s handy for later on if you need to make adjustments. But we’re not working with our Glows layer, we’re working with our Labels layer, so I really want to just get rid of this spare glow. Click to the right of the words Outer Glow to highlight the effect (don’t click on the words, just next to them). Then, click the trash can icon at the bottom of the Appearance panel. That glow will be removed.


Keep targeting the appearance of the Labels layer and go to the Transparency panel next. Here, we can see that we still have an opacity mask in place. Hit the Release button.


This unfortunately doesn’t just get rid of the mask. It actually takes all the contents of the mask and dumps them back on your map. So now I have two copies of my basemap: the original, and the one that used to be in the mask. We need to delete the latter. In the Layers panel, expand the tree to see what’s inside the Labels layer. Notice that the first thing there is a Group.


That’s got all the stuff that used to be in the opacity mask. Select and delete it. And now we’re back to just a simple Labels layer, with no fancy effects. It sits atop the Glows layer, and hides the fact that the Glows layer labels are fading in and out. With that, we’re all set: we have white labels that get a little dark glow behind them when they need it. The glow fades away when it’s less useful.


Again, this would have been easier if I’d just duplicated the Labels layer before applying a glow and opacity mask, but it’s useful to know how to alter/remove those things later. And now you know how to adjust your glow using the Appearance panel, if you decide it’s necessary.

So, that’s how to make glowing type halos in Photoshop and Illustrator that respond to the basemap underneath. It’s a subtle touch. It’s not something I do all the time, but it’s a handy tool to bring out when it can help. Enjoy!

This tutorial is, and will remain, free, but if you derive some value from it, you are welcome to make a donation to support my continued work.


Outside Readings

While I’ve not been posting here this summer, neither have I let my writing faculties lie idle. The newest issue of Cartographic Perspectives, which is the free & open journal of NACIS, came out today and it happens to have two pieces that I wrote, along with a third one that’s connected to my work. I hope you’ll check them (and the whole issue) out.

  1. The Power of Appearances” is a combination and re-working of two tutorials I’ve previously put together here: Even Fancier Type Knockouts in Illustrator and The Power of Appearances. I reworked some figures and hopefully presented everything in a cleaner, more coherent package.
  2. A Freelancer’s Approach to Teaching Cartography” involves me musing about how I bring my experiences as a practicing mapmaker into the classroom. I teach introductory cartography occasionally, and I continue to alter the structure, expectations, and content of my course in order to make the experience of my students more like my own as a freelancer.
  3. While I didn’t write it, you can also check out Daniel Cole’s “Review of the Ecological Atlas of the Bering, Chukchi, and Beaufort Seas.” I made 130+ maps for the Ecological Atlas, which was published last year. You can also see the whole atlas for free, online.

Before I leave off, I’ll also immodestly drop in those donation buttons you’ve probably seen me adding everywhere. In the mapmaking community, practitioners both inside and outside academia come together to share knowledge through journals or conferences. Academics build their CVs and get tenure based partly on this sort of work, and are highly incentivized to do so. But many of the rest of us have no such incentive (in fact, some people’s companies would prefer that their employees not spend work time writing tutorials or presentations). It’s an ongoing challenge with a journal like Cartographic Perspectives, which relies on getting content from non-academics. If you’re outside academia, I hope you’ll consider being a part of the journal sometime, if you’re in a position where you have the time and resources to share your knowledge.


On Airline Mapping

A couple of months ago, I had the opportunity to redesign the route map for a major airline, to be printed in their in-flight magazine.


Click for a larger version. Also: yes, I know, I put the wrong Rostov on the map.

This is not the final product that I ended up creating for the client, but it’s my favorite iteration, and the one that I want to talk about today. I just want to break down a few elements of how and why this came together the way it did: a little behind-the-scenes of my work and thought processes.


As I began exploring layout options for the project, I started with a simple Gall Stereographic projection.


Antarctica has been removed in order to leave space for some logos and other information that the client wanted on the page.

But I quickly ran into a couple of challenges, due to the demands of the two-page print spread that I needed to fit this map into.

  1. Gutter: There’s a fairly wide gutter in the middle of the spread, where the pages are bound together. No cities or labels or other important stuff can fall within that zone. That leaves me with very few ways to non-awkwardly divide the map into two pages. The above image is one of the only options. In fact, I had to widen the Atlantic Ocean a little bit just to make it work — Iceland and Greenland are much closer together in reality. The end result is that the whole thing is kind of unbalanced. The vast majority of the routes are on the right side.
  2. Scale: The whole map has to fit within 398 × 270mm (15.7 × 10.6in). That seems like a fair amount of space, but, because of the distribution of the airline’s flights, some areas, such as Europe, are very densely packed. Far too crowded to label.

So, I decided to take a different approach. Instead of being beholden to reality, and the true size and shape of the Earth’s landmasses, I made a cartogram. By resizing and reshaping different areas, I could both alleviate overcrowding and better distribute the world on either side of the gutter.


I widened a portion of Asia, just west of India, in order to make space for the gutter. I shrank areas where there were fewer destination cities, and expanded those that had more. But despite all the distortions, it looks (to me) still reasonably familiar. Cartograms tread a fine line between reshaping the world and keeping it recognizable, and I think that I did OK here. The extent of the distortions becomes much more apparent when you run it through Bernie Jenny’s MapAnalyst.

Undistortion Grid.jpg


The white grid in the top map corresponds to the white grid on the bottom, showing how warped the original Gall Stereographic has become. As the land is distorted, so is the grid. You can see, for example, how all the grid squares in the Pacific have been compressed as the Americas have been moved closer to Asia. Click the bottom image to enlarge it.

To make the cartogram, I started with the Gall Stereographic map in Illustrator. Then I simply selected chunks of land and resized/moved them until I was happy. I made heavy use of the Lasso tool.


Let’s just put that right over there.

I would shrink an area here, expand or shift one there. It was an iterative process over the course of an hour or two, changing a piece at a time and seeing the effect it had on the other pieces. The end result looked terrible and jagged, due to the way it was constructed, but it had everything in approximately the location that I wanted it.


To clean up all that roughness, I then redrew a new, tidier set of linework on top of the distorted map. I built mine out of straight lines and circular arcs, much like the Geo-Metro set I did for Project Linework. It gives things a modern, urban feel. I think it keeps enough detail to make places seem familiar, while smoothing over a lot of details that had to be distorted.


Finally, I nudged around some of the city dots. Since the linework I drew didn’t exactly match the (now-distorted) coastline, some coastal cities had moved a bit far from the sea. In other cases, I shifted them a little bit just to make more room for labels.

Root and Branch Lines

I began the project determined to avoid the clutter that characterizes so many flight maps. Major airlines have a lot of connections, and drawing each possible route can lead to a tangled mass of impossible-to-follow lines.


I expect that designing the flight map for United Airlines is a pretty tough job.

That’s an extreme example, but you get the idea. These things can get out of control quickly, and the map ends up not really being useful as an informational tool.

My client had far fewer flights than United, and fortunately almost all of them originated in Dubai. But, even then, showing every line could lead to chaos (if a lesser degree of it). So, instead, I created a root-and-branch structure. Lines to each city were bundled together (as though with cable ties) and routed through empty spaces. I also gave everything an elegant, flowing curvature. It’s sort of plant-like.


This was another iterative process. I’d draw a root, then start to add branches to it, then figure out a better routing and start that section over, or I’d decide another root was needed to keep things tidy, etc. It took quite some time. As a starting point, I mostly just looked for open spaces that had a good balance of cities on each side.


Smooth Line Joins

Getting the lines to join smoothly also took a some work. I couldn’t just quickly connect the city lines to the bundled lines — I wanted them to flow into each other. This meant adjusting the curvature on each line carefully until things looked right. Basically, I had to set the bezier handle of the thinner line to be tangent to the curvature of the thicker line at the point where it joins. To explain this, I’ve put together some diagrams that approximate (a nicer version of) Outline Mode in Illustrator, which shows you just the bare vector paths, with no styling.


Left: one line carelessly jammed into the other. Right: the branch line has been curved to flow into the root line more smoothly.

That looks much better. But, there’s still one issue. These paths are styled with strokes, and those strokes have widths to them. So, in reality, it’s more like this:


Now things don’t look quite so smooth. There’s a little bit of a non-organic-seeming corner on one side where the lines come together. When I did my manual smooth join, I didn’t really account for the fact that the edges of the stroke are a short distance away from the center of the stroke.

So, instead of connecting the branch straight to the root, I need to connect the branch a short distance away from the root, so that the right edge of each of those two strokes will be in alignment with each other. The roots have a stroke width of 3pt, and the branches are 1pt, so if I do a little math, it turns out that I want to connect the branch to something that’s 1 pt away from the center of the root, and it’ll all work out.


By shifting the branch up a little bit, now its right edge is in alignment with the right edge of the root, and they flow together well. How did I place it exactly? I used the Offset Path tool to make a new version of the root line, 1 point away from the old line. This is a little different than just shifting the line left or right by 1 points. It’s more like creating a buffer around the line, 1 point wide. Offset Path is great, and I use it a lot (often to make waterlines).


The end result is a nice smooth set of flowing lines. It’s a really little touch. But, so much of good mapmaking inheres in the small details, doesn’t it?

Gradients on Strokes

You may have noticed that some cities are red and some blue — the former are the client’s flight destinations, and the latter are those of one of their major codeshare partners. I wanted to show the flights to the codeshare cities in a matching blue, but it would have looked awkward to just join a blue line straight into a red trunk.


So, instead, I applied a gradient stroke to each of the codeshare lines, so that they were blue near the dot, and red near the root. I had to adjust each gradient manually; since each line was a different length, I couldn’t simply say, “make it red for the first 10% of the line.”


Make sure to choose the second Stoke option: apply the gradient along the stroke.

The end result gives us a fairly-smooth transition between roots and branches when we need to use blue.

Fun fact: one alternate version of the map that we looked at also used gradients, but this time for opacity. Each city had a separate arc line running toward Dubai, but the lines became invisible shortly after leaving the city, to hint at their destination while avoiding a lot of overlap and clutter. I used the same gradient panel in Illustrator to do this, keeping the color constant but changing the opacity for the middle portion of the line. It was a fun idea, though ultimately we decided not to use it.


I’m pretty pleased by the overall result of the root and branch style. It both shows the extensiveness of the network, and allows the reader to easily figure out which cities connect to which other cities. It’s relatively clutter-free. Again, I had a little bit of an easier job than the designer of that United Airlines map I showed above — I have fewer cities to deal with, and most of them connect to the same place. But I suspect that this style would still yield some benefits on a more crowded network; even if it might not make everything 100% clear, it would probably still help a lot.


My initial draft of the map started out with a much brighter color scheme for the basemap, and bolder lines.


Fortunately, I solicited the ever-valuable advice of my colleague Tanya Buckingham. She said it felt a little childlike to her, which I started to agree with as I looked at it. Over the course of about twenty minutes, we slowly adjusted the palette to look a little more mature and refined. Mostly this was driven by her; she had a particular shade in her mind and we kept trying to match it.

I also gave the route lines some transparency. This was actually done out of necessity on a later draft of the map, one that was much more crowded and which needed the lines to fit comfortably underneath the labels, rather than dodging around them. But I liked the look of it, and so I went back at the end and applied the change to the cartogram, long after we’d abandoned it, and I think it helps. It makes the route network seem much less vascular.

Odds and Ends

I tried to avoid crossing lines, but there were a couple of places where it was necessary. In those cases, I added little breaks to help make it clearer that these did not connect.


Given the distortions in the cartogram, I threw in a couple of ocean labels to help remind people of the geography they were looking at. If I’d done another draft, I might have also included some continent labels, as well. Just little context clues.


Finally, I wanted to show you a couple of the other maps in this project. Besides making a world map, I was also tasked with making a series of half-page regional maps, as well. Here, I took a page from the work of folks like Erwin Raisz and Richard Edes Harrison and did a series of perspective views.


I did not make these.


But I did make these.

I used both Orthographic and Vertical Perspective projections to create five regional maps. It’s an immersive viewpoint that I find very powerful. These kinds of projections always suggest the concept of distance and travel to me, by showing the far-ness of some place on the horizon. It also feels like flying, positioning the reader high above the Earth (though the eye is more at space travel height than airline height).

Concluding Thoughts

In the end, the client eventually preferred a more traditional representation, including a non-cartogram world map, and non-bundled flight lines, though we did keep the perspective views. That’s the nature of this business: there’s often a lot of stuff that gets discarded as drafts are done and different visions explored. Sometimes the artist’s favorite versions don’t make it to print; that’s something I find challenging about being a creative professional. But, this blog gives me a place to show off and talk about something that might not otherwise have had an outlet. I hope you found it interesting or useful!

This project walkthrough is, and will remain, free, but if you derive some value from it, you are welcome to make a donation to support my continued work.