In the latest release of TextMesh Pro with the new Dynamic SDF support which are versions 1.4.x for Unity 2018.4 and 2.0.x for Unity 2019.x, you can now create font assets at runtime (which you don’t need in your case) and using the following function.
public static TMP_FontAsset CreateFontAsset(Font font, int samplingPointSize, int atlasPadding, GlyphRenderMode renderMode, int atlasWidth, int atlasHeight, AtlasPopulationMode atlasPopulationMode = AtlasPopulationMode.Dynamic)
What is currently missing from the above function is the auto size of the point size but since you are creating those as fallbacks, you need to make sure you keep the same ratio of Sampling Point Size to Padding so most likely you are not using auto-size.
You would then use the following additional function:
public bool TryAddCharacters(uint[] unicodes, out uint[] missingUnicodes)
To add the characters to the font asset. There is another overload of this function that takes in a string.
Currently missing from the above function is the ability to extract the font features like Glyph Pair Adjustments (Kerning) which I will be adding.
You will have to create a persistent asset out of this newly created font asset and add the material and atlas texture to it as a sub object just like it is done in the Font Asset Creator code. Since everyone now has access to the source code, it is easy to see how that is handled.
You will need to switch that font asset to static otherwise the font file will get dragged with it in builds.
…
An alternative option… since the new system is dynamic, you could actually create a font asset similar to how it is done with the TMP_FontAsset_CreationMenu.cs file. This would create an empty font asset but a persistent asset. This only works in the Editor but that is what you want anyway.
Then, you could actually create a text object using the newly created font asset and then set the .text property using a string that contains all the characters you wish to add. This would add all the glyphs and even fetch the kerning data. Then you would simply again change the font asset to static.
In the next release which will include Multi Atlas support, this same technique would actually add all the characters into the first atlas texture and then create additional one automatically to add the remaining glyphs / characters.
I haven’t tested the above for the purpose you describe but it should work. What is also nice, is the ability to change the creation settings which would affect how many atlas texture end up being created. So even if you initially selected an atlas width and height that was resulted in too many atlas textures, changing the creation setting to something larger would replace / reduce the number of textures and add all the glyphs back in automatically.
I suggest you play / experiment with the above potential workflows and let me know what works best for you or if I overlooked anything.