Subtitling with Panels (as used in CnSiE videos)

The following is a description of how I create a complete text-display panel override for the Ciel nosurge Story in English videos, as well as other similar content when subtitling in Aegisub.

This subtitling approach breaks down as follows:

  • Translate and time your subtitles
  • Once subtitles are timed, copy and duplicate subtitles to a lower layer
  • Change duplicated subtitle lines to a BG panel drawing

This approach is fairly fast and easy to implement once you have your subtitles timed, but does require a bit of setup before-hand; namely to establish the best drawing command and style settings for your panel.

I'll just make a note of this here -- I'm sure a lot of this could be done using automation LUA scripting, but overall I've found this method easy enough to perform manually that I haven't investigated scripting options.

A Before and After Example


Ss 2015-11-03-21h55m22s792.png

Subtitled with Boxes:

Ss 2015-11-03-21h55m07s791.png

Before Starting

Depending on how the game displays text, your panel design may be very easy, or very difficult. Panels created using Aegisub and the ASS format's drawing functionality will be restricted to single color fill (defined via your primary color) and can optionally take outline and shadow (though you should probably avoid those).

Alpha can be used, but there is no option for image files, gradients, or color shifting. You can use the move command if necessary but typically this won't be feasible for the manual methods used here. It may be possible using scripting, but that is beyond the scope of this approach.

First Step: Figuring out how to draw your panel

  • Load your video in Aegisub and create a new subtitle style

When creating this style, set your primary color to white or black, and no outline or shadow. Font doesn't matter. Also be sure to set your Margins all to 0 and set alignment to '7' for upper-left.

Subboxes drawingstyle.png

If white or black doesn't work for you, pick a color that will be very visible against your video. The objective for this next step is to determine your panel's drawing vectors, not match your video yet. With your style saved, create a subline and set it to use your new style.

In this line, you'll use the {\p1}m drawing command. There's some fun/complex options for this, but the easiest entry level to get started is to use the 'l' (L)ine command. Drawing works like this:

{\pos(0,0)}{\p1}m x y l x y x y x y [....]

Aegisub will then draw a line from each of the x,y points to the next, connect your last x,y to the first x,y and then fill using your primary style color. Outlines and shadows will also be shown.

It is important to remember that the 'x,y' points are also referential to your alignment, which is why the '7' upper-left alignment is the best option. Also, if you have margins set, those will create offsets as well.

One trick I use is to ALWAYS use a {\pos(0,0)} tag when drawing. This will override margins, and also will cause an automatic layering to take place without using ASS's layers (though you should use them for best practices in this approach).

  • Use the video grid to get an idea where your box should go

Subboxes 1 creatingthebox 1.png

  • Points for my video:
Top-left 199,405
Top-right 764,405
Bottom-right 784,539
Bottom-left 178,539

The Ciel nosurge text box is not an easy square though, but we'll start with just those four points as a box to demonstrate how it comes together:

{\pos(0,0)}{\p1}m 199 405 l 764 405 l 784 539 l 178 539

Note that only the first 'l' (lowercase L) is required. I like to use an L between each point to increase legibility as the more complex draw commands can become quite a nightmare to adjust later one.

Subboxes 1 creatingthebox 2.png

If you look closely, you'll notice we have some extra room on the corners. I can now adjust those lines to get a closer fit. I also want to adjust the bottom for the full size of the video (Vita video is 960x540).

{\pos(0,0)}{\p1}m 195 405 l 766 405 l 784 540 l 177 540

Subboxes 1 creatingthebox 3.png

Now if you're lucky and your text panels are boxes, you're ready for the next step. If you aren't lucky, you have some more work to do by adding more vector points in your drawing to round things out.

This is the key to the drawing command. It is simply a point-to-point-to-point-to-point[-point-to-point...] syntax, so you can add as many points as you want. The left and right sides of my panel aren't cutting it, so we'll add a few points to round the panel out a bit.

{\pos(0,0)}{\p1}m 195 405 l 766 405 l 772 416 l 784 540 l 177 540 l 187 416

Notice the "772 416" added after the top right corner "766 405" and the "187 416" added at the end, effective between the bottom left "177 540" and top left "195 405" corners.

Subboxes 1 creatingthebox 4.png

Obviously this wasn't enough to give us a good enough box yet, but it shows the process. I will shortcut the remainder of the process and show you my actual CnSiE box draw command:

{\pos(0,0)}{\p1}m 193 404 l 767 404 l 773 417 l 779 446 l 785 540 175 540 l 179 475 l 183 442 l 186 423

Subboxes 1 creatingthebox 5.png

The key points here are:

  • Try and leave just a little bit of the original box's edges visible. A pixel or two, maybe three.
  • For curved parts, a little jaggedness is okay, blending comes with color and blur
  • At the same time, try and keep an even flow. Huge variations between your box and the original panel will stand out

Making the Box Blend

Depending on your original panel, this can also be easy, or difficult. If your original panel is solid color, with zero alpha, lucky you. If your panel is a multi-texture or has alpha, you have choices to make.

  • You have to use a solid color
  • Alpha help but the backing text will still be visible

As an example, the Ciel nosurge panel:

Subboxes 2 blendingthebox 1png.PNG

Text, background image. We're covering it up, no way around it. The next step is to pick what color you want to use. Now that you've got your drawing command set, you can play with your style's settings to get your panel looking the way you want.

For my box I ended up going with "#181B1D" or "&H1D1B18&" and zero alpha.

Subboxes 2 blendingthebox 2.png

Just getting the color right goes a long way. For one last final touch, you can use the blur command to help blend the edges into your panel, giving a look like it might actually supposed to look like that.

{\pos(0,0)}{\blur1}{\p1}m 193 404 l 767 404 l 773 417 l 779 446 l 785 540 175 540 l 179 475 l 183 442 l 186 423

Subboxes 2 blendingthebox 3.png

Once you're happy with what you've done:

  • Save your draw command in a copy/paste file, scrap file, somewhere handy for your project
  • Make a note about your drawing panel's style somewhere. AS's libraries are nice, but noting it with your draw command can be a butt saver.

Before We Use The Box... Name Tags

Before I get to how to use your box for paneling your subtitles, I need to talk about something else: Name Tags. You're probably overwriting them using this method. And if you aren't, you still might want to handle them separately since they're usually never in-line with your sub line.

In order to make Name Tags easier to handle, use the Actor field in Aegisub. I know I ignored this field for the first year or so of my subtitling so I don't know how frequently others use it since it is optional, but if for game panel subtitling, it's really handy for creating separate name tags using the same process we'll use for the background panels.

Subboxes 3 use actor field.png

If you do want to (or need to) manually create your name tags, be sure to setup a nametag style now. Manually set a layer value to avoid spacing conflicts with your main subtitles.

Pre-Panelling Subtitle Sytle

You're probably interested in this approach so that you don't have to use a heavy outline value for your subtitles. Nice, clean, crisp, single color font on a nice solid background.

While you are doing your timing though, set an outline for your font as necessary for your subtitling and timing work.

Subtitle 4 subbingstyle.png

This way you can validate text boundaries, line wrap, etc.

Set a Layer, Copy and Paste, and Copy and Paste

Once your subtitle timing is done, set a layer for all of your subtitle lines. Again, if you use my {\pos(0,0)} trick with your background panels, this isn't explicitly necessary, but it is still best practice.

Select all your subtitle lines (manually or using Subtitle > Select Lines... | Select your subtitle style) and set a layer (needs to be higher than 0).

Select your sub-lines...
Set a layer...

Now copy your subtitle lines and paste them ABOVE your original subtitle lines. If you are using layers correctly then it doesn't actually matter, but this is another 'best practice' approach to cover bases as the {\pos(0,0)} trick only works if the box lines are positioned before the subtitle lines in the script.

Subboxes 5 selecting layering etc 3.png

Now, while your freshly pasted subtitle lines are still selected, use the edit box to change the style to your panel's drawing style (for me that is "storymode_text" -> "storymode_bg", change the layer to a number lower than your original subtitles ("0" is best for a BG panel) and paste your BG panel's drawing command into the editing box.

Layer, Style, and Paste...

Name Tags

Looks like we lost the nametag. Here's where the actor field comes in handy. Go back and select and copy all of your main subtitle lines and paste them again. Make sure these are AFTER your BG panel lines.

Copy and Paste Subtitle Lines Again...

Now, while they are all still selected, change the style name to your nametag style (for me this is "storymode_text" -> "storymode_name"), change your layer to avoid conflicting with your main subtitles (anything higher than your BG panel layer), and delete the actual subtitle text...

Change to nametag style...

Now, while these lines are still selected, go to "Subtitle > Sort Selected Lines > Actor Name":

Sort by Actor...
Lines now sorted...

Now you can select each actor block and simply type in the nametag for those lines:

Subboxes 6 nametags 5.png

Easy bake name tags all finished!

Cleaning Up

So now you have BG panels, name tags, everything is great. Don't forget to go back and get rid of any outline values you set for readability during the editing/timing phase:


Problems You Might Encounter

  • Fading

Do you have any fade-out or fade-in lines? You do? Oh, well, you hate fade-in and fade-out lines now because it means 2 (or 3) times the editing because you have to add those fades to your background panels and nametags as well.

My trick for doing this is to then do a sort all lines by "Start Time", then from the top do a Search for "\fad(". This should have your BG panel, nametag, and subtitle lines all next to each other. From here you can manually add the fade tag to the nametag and BG lines as necessary.

I really do hate fades though. "What? Did you really have to fade out right there?! WTF?!" is a line you'll find yourself saying.

  • Screwed up Timing means 2x, 3x the fixing

Yep, your panels and nametags are based on your subtitle timing from the moment you do the copy/paste. If you find a timing issue AFTERWORDS, you'll need to make sure the associated BG and nametag lines get fixed too.

  • ASS file creep

Nothing like having a 2000 line ASS file for 400 actual subtitle lines.

Try to make use of commenting and spacing to keep your files in a manageable state.

Good luck

Hopefully this is informative for anyone interested, and if I have made any mistakes in my instructions here that ruin your video, or even worse, cause your production time to increase exponentially, my apologies.