Font Combining

This is a method of combining two different .ttf fonts into one. Useful for making CJK supported fonts for Rockbox, or adding glyphs into a font for web purposes etc. Fontforge is the main application used, however if you intend to make fonts for Rockbox, you’ll need convttf from their dev tools. This guide focuses on combining CJK fonts with non-CJK fonts.
Preparing the Secondary Font
- ∘ Download language specific .otf file - The best font to use here is Noto CJK. However make sure you download the Region Specific Subset OTF file for each language you want.
- ∘ Open the file in Fontforge and flatten CID Layers.
- ∘ Remove any unnecessary characters (non-CJK letters, emoji etc.)
- ∘ Re-encode as Unicode Full.
- ∘ Save as *.sfd.
Combining the Fonts
- ∘ Open the Base Font, which we want to combine with.
- ∘ Remove any unnecessary characters, like emoji.
- ∘ Go to Element > Merge Fonts choose the .sfd Font we just made, and merge.
- ∘ Go to Edit > Select > Changed Glyphs.
- ∘ Go to Element > Transform and select Scale.
- ∘ Select Origin: Glyph Origin > Scale: 250% 250% > select all boxes. (Note: Scale will differ on the font, so experiment)
- ∘ Export the font by going to File > Make Font choose true type and validate.
Making Rockbox Fonts
- ∘ Start by cloning the Rockbox Github.
- ∘ In the tools folder, use Element > make convttf.
- - If you encounter errors with this, make sure "freetype-devel" and "freetype2" (or "ftgl") are installed.
- ∘ To make the font, use ./convttf -p size -c 1 fontname.ttf.
- - size should be the size of the font you want, this isn't however in pt or px, so experimentation is required.
- - -c is the spacing between letters, 1 is an all round good option for most sizes and fonts
- - If you want to have a padded font like seen in Interpod, use -Ta '-3' -Td '-2'. Ta being the top padding, and Td being the bottom, these values should be negative.