I'm making this partial release because I wanted to make a blog post about font stripping.
Font stripping, and font modification in general, is a useful tool in a fansubber's arsenal. You *will* run into wonky fonts that don't play nice when you try to use them in releases, so it's good to know how to deal with that. Font stripping is a nice way to dip your toes into that world. Stripping fonts has a reputation for being dangerous/causing problems, but I do it a lot and have not run into any issues since I ironed out the process 4 years ago or so. I have many more problems with unstripped fonts than stripped ones.
What even is font stripping? It's removing unnecessary glyphs from a font so that it has a lower filesize. If a font is able to render every kanji, that's probably more functionality than an English fansubber needs.
In order to strip fonts, I use a python library called fontTools and a free program called FontForge. You can learn how to install them via Google. (This guide assumes you have some knowledge of python, .bat files, and the command line.)
I have a .bat on my desktop with [this text](https://pastebin.com/raw/UXrJ2Ma9). I drag my bloated font onto this .bat file, and it spits out a much smaller stripped font. Note the `--unicodes=0000-00FF,0370-04FF,2000-206F,20A0-20CF` part. This gives fontTools a range of glyphs to preserve. (If the .bat doesn't work, you probably need to install fontTools and/or put the python Scripts folder in your PATH.)
Although the range of glyphs being preserved is already pretty large, I can modify the .bat to preserve any additional arbitrary glyph. For example, Commie had a 30MB font in Episode 1 of Space Dandy because they needed it for a ★ symbol. That symbol is not in the normal range of glyphs to preserve, but I added it by looking up the unicode value (2605) and appending it to the end of the list in the bat file.
Once I have my stripped font, that's not the end of the story, though. Japanese fonts are kinda weird, so you'll probably need to do some cleaning up. Open the stripped font in FontForge and do the following. **All of these steps are very important.**
1. Open the CID menu at the top and select Flatten if the option is available.
2. Press Ctrl+Shift+> (or do `View --> Goto`) and search for the `space` glyph. If it exists, move to step 3. If not, double-click on any glyph with a red question mark, which will bring up a new screen. Do `Element --> Glyph Info`. Click on the Unicode Char field and hit space. Hit OK. Do `Metrics --> Set Width` and set the width to 300; or if you want to be more exact, open up the unstripped font and see what its space character's width was.
3. Check to see if a hyphen character exists. Make sure it's named "HYPHEN-MINUS" instead of "non-breaking hyphen" or something. If it isn't, fixing that is beyond the scope of this guide, but it's possible.
4. Do `Element --> Font Info`. Make the screens look something like these screenshots: [one](https://i.imgur.com/UGMiKuE.png), [two](https://i.imgur.com/a2nhqmO.png), [three](https://i.imgur.com/cNfjbit.png). The important part is the font/family names and setting the font type to "Regular." We are trying to REALLY simplify the metadata of this font. We want `fnWhatever-Font-Name-Str` to call the font without us needed to think twice about it. For reasons that will be discussed later, we don't want to have to bold it even if it's a bold font, so we'll set the weight to Regular. Obviously, for a dialogue font, this process would be different, but that's a whole 'nother discussion.
5. Do `File --> Generate Fonts` to create your new font. You should probably preserve whether the font is ttf or otf.
This all looks pretty complicated, but it becomes a fast process after you've done it a few times. Step 4 in particular is just copy paste, paste, paste. Eventually you can become the resident font-stripping expert, and other fansubbers will ask you to strip their fonts for them, which is... good? Better yet, please improve on my process and automate it all with the python library.
___________________________________________________________
Yesterday I was trying to find an italic version of a dialogue font that apparently existed in plenty of places online, but I couldn't find one that actually worked. But with my experience stripping fonts, I was able to revamp the metadata of the dialogue font and its italic equivalent and make it work. There are other uses for font knowledge, too—do you hate the ligatures in Montara-Gothic? Maybe you can remove them! EM dash in your dialogue font not long enough? You can fix that!
I've gotten so paranoid about font issues over the years that if I have a font that's some variant of a font family, I'll probably redo its metadata to be its own standalone font (in other words, instead of a font that's called with `fnRandomFontb1` or `fnRandomFontb100`, make a new font that's called with just `fnRandomFont-Bold-Str` or `fnRandomFont-XLight-Str`, respectively). That's probably overkill on my part, but if you run into enough incomprehensible font QC issues, you might start thinking the same way. For example, if you grab a stock bold font and call it with `fnRandomFont` (no `b1`), it'll render properly UNLESS you or the end user has the regular version installed. This nailed us on the v1 of [Asenshi-PAS] Made in Abyss. Unpredictable behavior is the bane of good QC.
...anyway, I saved you 30MB on this release with font stripping. You're welcome.