When I visit the URL http://gibts.überhaupt.nicht (German for: does.not.exist.at.all), my browser (Chrome) internally converts this to punycode http://gibts.xn--berhaupt-55a.nicht because of the umlaut character ü, but it still displays it as http://gibts.überhaupt.nicht in the address bar.
But when I visit the URL http://ᴅᴏᴇs.not.exist which starts with three "latin letter small capital" characters, it is displayed as punycode http://xn--s-h6lg5a.not.exist in the address bar.
How do browsers decide whether or not to display punycode? I understand this is important to prevent homograph attacks with characters that look similar to an ASCII character but are different. Do browsers consider the similarity of characters in this decision? Or does it depend on the Unicode block from which the characters come?