Please let me select checkboxes for each language, symbol sets, etc. when generating a new font.
I should not need to identify each individual character set for each individual language. It is overwhelmingly burdensome to need to do this for each font, for each title.
Languages do not change - even for Chinese the common characters have been identified by the Chinese Government 5+ years ago.
Please load these character sets into TMP so we don’t have to do it all ourselves.
I am on Unity 2020.1 beta and the latest version11 TMP3.0.
I was looking forward to this whole process being streamlined since I came from 2017.4 for my last title, but I see it is all the same. Please improve this.
Use dynamic font assets and don’t worry about characters - it will fill them automatically from the original font. If you’re not sure it will fit the texture, just create few fallbacks
Multi Atlas Texture is a really nice feature, I didn’t know about it as I still didn’t update to v2.1.0
@Stephan_B I have one question though… I am using dynamic fonts during development and as I am testing a lot on all localisations, my atlas textures get filled up pretty much with all glyphs I may ever need in a game (not talking about user input as I mostly don’t have them). So, even you suggested baking textures to static fonts at the end of development, may I assume it’s safe to keep dynamic fonts in the release, because there will be very little chance for any characters on the screen that aren’t already in my textures? Even if some appear, it’s not a big performance issue to create just few missing characters at runtime. Basically, my question is - when you say that textures reset to their initial state at runtime, do you mean they reset to that state I already had during my development (with a lot of characters already baked in dynamic textures) or they really reset to empty textures on game start?
Whatever state the font asset was in when you created the build, that is the state it will always be in when starting a new play session.
In terms of switching to static for shipping, the static font asset should contain all the known characters used in the project for any given language or groups of language. These are the characters used in your menus, UI, etc. Then to handle potential user input, add a dynamic font asset with Multi Atlas texture enabled to this primary static font asset as fallback. This will ensure best performance when displaying your menus, UI, etc. while allowing all characters coming from user input to be handled by the dynamic fallback.
You can simply switch the Dynamic Font Asset to Static in the Generation Settings.
Subsequently, you can use the Update Font Asset button to open the Font Asset Creator which will be populated with the list of characters already contained in the font asset making it easy to regenerate the font asset with using the better packing mode and potentially other settings.
So, are there any performance issues if I keep dynamic font but all characters are already baked during development? Is accessing static texture faster than accessing dynamic one if both have the same characters in it?
The performance is better when the font asset is static because in the event TMP is looking for a character that is not currently present in this static font asset, it will skip to the next fallback right away instead of opening the current font file to look into it. It is more efficient and given the process is trivial to go from Dynamic to Static, there is very little reason not to use that workflow.