I’m trying to make a sort of text pop but I want to animate each individual character separately so I’m putting each in their own label but the metrics that I get back are not consistent so I can’t replicate the look it would have if the entire word was is in a single label.
When I enter the word in the label and get its width I get 175 back, but when I do the same for the individual characters and add their widths together I get 221. There is little additional information returned by the metrics so I don’t know how to use that info to correctly space the characters next to each other to replicate the original look.
Attached is a screenshot of how it looks if I use the previous character’s width as an offset for the next one (in orange) and how it compares to the original string (in black)
It really reminds me RichText by @britzl. There are animated words and letters even, so maybe it’s good to compare solutions and see how metrics are parsed there
So I ended calculating the kerning of each character to determine the spacing between the letters. You can do so by doing the following for each letter:
Use a label with the previous substring and another label with the next character to be added and get both of their metrics (previous_width, char_width).
Use a label with the new substring and get its metric (target_width)
The kerning will be something along the lines of (previous_width + char_width) - target_width
The next character position can then be set to start_pos + previous_width - kerning
Note: Spaces will be a special case because they don’t seem to be counted in the metrics if they are ate the end of the substrings.