Tried doing all calculation in the condition to test if a character would get cut off in OptimalSize() to improve performance.