I need to make a few custom subtitle bitmaps for a DVD. The trouble is that DVDs support only 3 colours, which gives me one colour for letters, one for anti-aliasing and one for outline.

What I've done is typeset the text white on black background, converted the image to 3-colour indexed mode, then selected the background (Magic Wand with zero tolerance), inverted the selection to get letters plus anti-aliasing, and applied 1 px stroke.

Now, the letters with anti-aliasing actually look half decent, considering the constraints, but the outline gives the whole thing an ugly squarish look.

I then took a closer look at some retail DVD subs and, among heaps of absolute abomination, found a specific type of rendering that manages to minimize the visual weight of the outline. It's hard to describe it, but unlike the usual Stroke in Photoshop, which makes all pixels fully touch, this draws them with only corners touching on non-straight lines.

So, the question is, is it possible to get this effect in Photoshop?

Here's a close-up of the comparison, with a few of the differences pointed out. Open the pic in a new tab to see it at actual size.

Comparison of good DVD rendering and my attempt in Photoshop

  • Have you tried any special subtitler software that generates those bitmaps? You only type the texts, define the placement and the display timing. (I got enough of thislike fights and have burned the texts into the video) – user287001 May 14 '17 at 7:01
  • I did try a few free ones I could find, but they have their own set of problems: either they use only two colours, so the text is completely jagged, or they do use three colours, but instead of anti-aliasing, they just draw a full grey outline, – typo May 14 '17 at 18:22
  • … or they don't squash the text to counteract the image stretching on playback (DVDs don't store video in native aspect ratio). Another thing is, I'm making speaker chyrons, so I'd like to get a bit more nuanced layout than the bog-standard centred, single-sized text that they provide. – typo May 14 '17 at 18:36
  • have you tried varying the anti-aliasing options on your text object? – Vincent Sep 11 '17 at 13:01
  • Yes, but it gives the same results. – typo Sep 11 '17 at 15:41

You don't need to turn anti-alias off in the stroke, you should turn it off in the beginning.

  1. create your text with Anti-alias set to none
  2. Rasterize type
  3. Duplicate layer and move it below the original
  4. Select > Modify > Expand by 1 px
  5. Fill with the outline color. No more aliasing!

enter image description here

  • I'm sorry, but this has nothing to do with my question. I need the anti-aliasing between the letter and outline. – typo May 25 '18 at 1:50
  • that's exactly what you are getting with your answer, or not? – Luciano May 25 '18 at 10:02

I don't have the same font to test, but can't you just apply a 1 pixel stroke in as a Layer Style to white text? Here's a screenshot showing the settings.

Screenshot with settings for Layer Style

I also had text antialising off in this example, although you could switch it on if you want smoother lettering.

  • That gives the same result as stroking the selection, but adds anti-aliasing, and I need it to be single colour. – typo May 14 '17 at 0:25
  • By the way, the font is Myriad, but horizontally squashed, because DVDs don't store the image at its actual aspect ratio: rather, it gets stretched on playback, from the native 720 px to 768 px for 4:3 video, or to 1024 px for 16:9. Yes, the DVD spec is the stuff of nightmares. – typo May 14 '17 at 0:35
  • Perhaps Photoshop is not the way to go. I can't come up with any way to switch off the stroke antialiasing in Photoshop, which seems to be the main problem you are having. Pretty sure you could delete the offending pixels by hand, but that is probably completely impractical. Isn't there specific software for subtitling? – Billy Kerr May 14 '17 at 11:03

Well, I stumbled upon this accidentally, and I don't know why it works this way, but I'm glad it does.

Instead of selecting the text and adding the stroke on the outside, select the background and add the stroke on the inside. (Just remember to crop the stroke around the whole canvas this will create.)

It seems that unselected "islands" inside of selection get this kind of stroke applied around them. I'm guessing there's some mathematical principle for why it works the way it does.

visualization of the described behaviour

Your Answer

