Tutorial: Applying a Stroke BEHIND Type in Adobe Illustrator
Let me preface this tutorial by saying that — without a shadow of a doubt — this is my number one most favourite, time-saving, map-making Adobe Illustrator trick ever.
When making transit maps, it’s preferable — for both aesthetics and readability — to not have any labels overlay a route line or other elements. However, sometimes it’s simply unavoidable, as in the detail of my Boston MBTA map redesign at the top of the image above (circled in blue). When you absolutely have to overlay type over another element, it’s a good idea to separate it from that element with a stroke (or “keyline”) around the type that’s the same colour as your map’s background (often white with transit maps).
"Well, that’s easy," I hear you say, "I’ll just duplicate the text, put the copy behind the original and apply a stroke to that duplicate!"
That’s well and good for isolated examples, but what if you’ve got lots of text that you need to do this to? Or what if you make a typo in the label? Using this method, you’d have to correct it twice - once for each duplicate of the label.
There’s a better way to do it: you just need to know one little trick.
STEP ONE above shows a typical text label and Illustrator’s Appearance palette (Window menu > Appearance or Shift-F6). Note that the text is made up of a black fill with no stroke: the standard appearance for text.
In STEP TWO, I’ve applied a 2-point magenta stroke to the text (You’d probably want to use the same stroke colour as the background of your map; I’ve just used magenta to make the effect easier to see). The stroke sits on top of the fill in the stacking order, and — try as you might — can’t be demoted to sit underneath the fill, where we want it to be: note how the visibility icons for each are greyed out, meaning they can’t be moved. Strangely, the stacking order of text fills and strokes cannot be changed in Illustrator.
(If you’ve ever tried to add a stroke to a text object in Illustrator before, this is where you’ve probably given up in disgust.)
So, here’s the good bit.
In STEP THREE, I’ve drawn a rectangle and given it the fill and stroke that we want the text to eventually have: a black fill and a 2-point magenta stroke. I also like to give my stroke corners a round join — it softens the stroke a little and generally looks better than a mitre join.
Unlike type objects, the stacking order for normal objects or paths is editable, so — while the rectangle is selected — drag the stroke below the path in the Appearance palette. The stroke will now sit behind the fill on the actual rectangle.
STEP FOUR: Open the Graphic Styles palette (Window menu > Graphic Styles or Shift-F5) and drag the rectangle into the palette. You’ve just made a graphic style out of the attributes of the rectangle (stacking order included), which you can now apply to other objects with just a couple of clicks. If you like, give it a descriptive name: I’ve called mine “Keylined Type”.
STEP FIVE: Delete the rectangle: it’s done its work. Select the label text, then click on your newly created “Keylined Text” graphic style. The label now has a stroke that sits behind the fill, just where we want it, as STEP SIX shows in the Appearance palette. Even better, the fill and stroke are now fully adjustable and editable — change the colour, stroke width, or even move the stroke back above the fill!
For new labels that need to look the same, you can either duplicate the one you’ve just made, or simply type the label and then apply the graphic style as needed. No more typing text labels twice, just because you need a keyline around it!
P.S. If you like this tip, or any others that I’ve posted under the "tutorial" tag, please feel free to reblog or tweet about it — let’s share the knowledge!
So, I’ve went to all this trouble, and discovered that I’ve basically just reproduced what the Artist/Album and Track/Artist columns do, for the most part. Basically, it’s a pair of macros to help sort Various Artist albums in foobar2000, based on comparing the album artist and track artist.
Mine differ from foobar’s default column in two ways that I can see: using Ω pushes all of the Various Artist albums to the bottom, and using the comparison keeps the Album Artist column out of the title when it’s the same as the Artist.
Artist / Album
$if($stricmp(%album artist%,%artist%),%artist / %album%,Ω / %album%)
Displays ‘Ω / Album Name’ when the Album Artist is different from the Track Artist, otherwise ‘Artist / Album Name’. The Ω character is used because it sorts after Z, so Various Artist albums will appear after the single artist albums (that is, unless you have a lot of music with greek characters).
$if($stricmp(%album artist%,%artist%),%title%,%artist% / %title%)
Displays ‘Track Artist / Title’ when the Album Artist is different, otherwise just ‘Title’.
Using these two columns, you can sort based solely on Track Number and Artist / Album, and have all albums sorted correctly in track order (with all of the Various Artist albums at the very bottom), while still displaying the Track Artist information when it makes sense.
One small pitfall I’ve found: the fields will include whitespace when comparing, including any whitespace after the comma in say, an if statement. So,
$stricmp(%album artist%, %artist%) will only return true if the
%album artist% is the
%artist% with an initial space!
$stricmp(%album artist%,%artist%) is what you’re really after.
Google-fu results: a long rambly rant about Crystal Reports.
The relevant bit: In the main menu, click Database, then Verify Database. After you’ve re-entered any parameters, it will check if any columns have been changed or added, and prompt you accordingly.
I also find Crystal Reports quite frustrating (really? no automatic tables? no distributing? no vertical text alignment?), but I’m not sure it’s any more helpful to bury advice in a giant rant.
I first noticed the problem with Go To Meeting, but I’ve also seen it when using Kayako OnSite, which leads me to believe that it’s more of an OS problem - when you connect to certain clients, the view appears ‘zoomed-in’, and only shows the top-left hand corner of the client’s screen. Messing with resolution doesn’t help.
I did find a ticket on the Go To Meeting website, and this actually contained the solution (although I didn’t believe it at the time, and it was actually the client that ended up figuring it out).
Change the Size of All Items is the culprit, a setting
introduced in Windows 7, and also it seems included in Windows 8 which has been a part of Windows since forever, but has only recently bubbled to a place where typical users will come across it. I changed it to Smaller just in case, but it’s possible that setting it to Medium is also OK. But if it’s set to Larger, then you’ll get the problem I’ve seen.
I just realized that’s what that icon is supposed to be, and what it was supposed to symbolize. You know what I mean.
After all, a funnel doesn’t filter, by function! It slows the rate of flow, it reduces the cross-section, but it doesn’t somehow automagically remove things from the stream.
I’m sure I’m not the only one to think so. After all, that’s why this abomination exists:
Could you imagine creating this in real life? What purpose would it serve? Filter these small things, but oops, we’ll let larger things just out the bottom? Funnel things into the middle, but oops, also spray across the entire area?
That said, creating an alternate filter icon is a little tricky, and I am no professional graphic designer by trade. But surely, something along these lines makes more sense?
I was running into trouble getting Wordpress to upload these lovely themes - it kept claiming that the file size was too large.
Google-fu actually didn’t help much in this case - everything I came across suggested adding lines or creating
php.ini files, none of which seemed to help. Eventually I just stumbled on the setting in the actual Wordpress Network Admin dashboard. More detailed steps:
Perhaps too simple, but I am a relative noob at the Wordpress-ness. It’s possible, too, that others with this problem don’t have access to the Network Admin panel.
My computer’s been acting a little funny lately, and I think the hard drive is to blame. So, I’m attempting to back up my data to the office network share, which I’ve done a few times in the past.
Rather than doing a simple copy and paste, I was wondering if there might be a way to copy only the files that had changed, and a quick google revealed that the utility was actually built in to Windows 7, in the form of the command line tool called Robocopy (Robust Copy). It has a huge amount of flexibility, including options for including subdirectories (
/e), ignoring empty subdirectories (
/s), deleting files that are no longer in the source directory (careful with this one!) (
/mir), ignoring or including directories and files based on system flags such as hidden or system (
/XA:)…the list goes on. The difficulty I had, however, was copying to a network drive.
And this is a whole other can of worms - accessing a network share via the command line. Apparently having this feature caused some kind of security vulnerability, which is why you’re forced to work around it. However, the only workaround I could actually make work (
net use X: //server/share) wouldn’t give me access to my local hard drive at the same time. How useful.
Attempting a robocopy without
net use seemed to work - it spent a good chunk of time happily chewing through the files. Subsequent runs even checked out - only the files that changed were “uploaded”!
However, a peek into the directory with Explorer didn’t show any of the files it claimed to be copying over. It’s possible I’ll someday figure out where they went, but using robocopy with neither the existing mount ( I eventually found that it had created a hidden system folder, somehow with exactly the same name and path as the folder I was trying to copy to. I’d already had ‘Show Hidden Files and Folders’ checked, but not ‘Show Protected System Files’. Attributed to the magic ‘My Documents’ to ‘Documents’ thing.
X:/self/backup) nor the direct path (
//server/share/self/backup) caused anything to actually show up on the network share, as far as I can determine.
Eventually, I came across a helpful fellow here (scroll down to a comment by the elusive “Don”), who had written his own little freeware utility called RoboMate - a GUI front-end for Robocopy, which, as a GUI, seems to have legit access to the network share! Peeking into the folder, even during the operation, confirms that this is actually working. I don’t know what the sufficiently advanced magic words were (although I admit I’m a little curious), but I’ll post them here if I do happen across them.
I was trying to add a DHCP reservation on Microsoft Server, a fairly standard thing.
After entering the details, it popped up “The Unique Identifier you have entered may not be correct. Do you want to use this Identifier anyway?” Hitting ‘Yes’ gave me the error message “The DHCP server received a message that was not valid”, hitting ‘No’ had no effect.
Google-fu results: Enter the MAC address without a colon separator. How silly to not support a standard separator.
This is a post I found through the excellent blog Coding Horror - I often experience a similar phenomenon, that framing a question properly does a lot of the work for you!
Coding Horror itself is about so much more than just programming - through the magic of transferable xp, it offers fantastic resources for anyone involved in any kind of problem solving or team management (although, granted, with an IT focus).