Dec 27, 2022
4 min read
The “killer symbol” ruthlessly crashed Apple devices on such a scale that some devices needed their OS to be restored from scratch through a tedious process for them to work again. The issue multiplied when the symbol was sent to other Apple users with ill will, via notifications and social media mentions, thereby creating a ripple reaction of crashing Apple devices.
The “killer symbol” is not a single entity. It is a commonly used Telugu (an Indian language with around 70 million speakers) character (pronounced jñā) and is formed by combining four other Telugu characters. Unlike English, in which the alphabets are placed one after another from left to right, Indian scripts are non-linear which means some characters can go in different possible directions, around an already typed character.
This means when a user is typing in Indian languages, their cursor needs to be constantly aware of character position, and the underlying rendering engine which reads the font files and draws their shapes on the screes must render the character(s) appropriately without compromising on the script’s combination and grammar rules.
This bug has caused Apple users worldwide great inconvenience, but it’s not first of its kind. Multiple such cases have been reported earlier, with flawed user experience in Indian languages across devices and brands, both on Android and iOS devices. This incident is also a wake-up call for mobile device manufacturers, to realize how flawed their devices are for non-Latin based languages. With the rise of the Indian language internet and its projected 500 million plus users by 2021, repeats of issues like this one would have much wider reaching consequences.
Apple recently released iOS 11.2.6 update to fix the Telugu bug, but this fixing, like the construction of killer symbol, should ideally come as a package.
Operating systems for all kinds of devices come in layers. Each layer comes with its own access to services and system privileges. Applications are at the top-most level, but all of them need fonts and rendering engines to draw text. This is why display solutions sit at the core of an OS. In addition, some applications use their own fonts which may or may not be handled by the underlying rendering engine. In such cases, how does this set-up affect the overall functioning of the devices and account for system crashes?
Display solutions that encapsulate font files and rendering engines are not plug-and-play in nature. Unlike applications, that can be installed and uninstalled at the user’s will, display solutions come pre-burned with the device’s operating system. They are present right from when the device is first booted up.
The Indian market, which is dominated by feature phone users, still has an avid follower base for Apple products despite their high price range. With the Digital India push and the rise of hundreds of millions of non-English speaking Indian netizens, the Government of India has mandated language support for all the 22 official languages of India.
This means, if a device manufacturer wants to sell a mobile device in India, they have to provide Indian language support, by law. But is mere support of font and rendering on devices enough?
The mandate, although it makes language support obligatory, doesn’t completely specify the rules device manufacturers should follow. As a result, different devices come with different rendering rules, creating inconsistencies across devices, which in turn triggers different kinds of bugs, just like the Apple character bug.
The Telugu character combination that was the culprit behind all this disruption wasn’t generated by the deeper levels of Apple’s OS. It was triggered only when the applications that received the combination did not receive any underlying display support, allowing the issue to affect deeper levels of the OS. Such crashes cannot be solved with a quick fix.
On an average, Indian languages have 50-60 characters per language. Adding to this, some characters like vowel signs and diacritics are dependent on consonants and vowels. Their interaction decides the form of resultant character combinations. Adding to this complexity, the characters can theoretically combine with each other infinitely. Although such combination sequences are allowed by the script’s grammar, they are mostly rare.
Defining meaningful and usable sequences or glyphs limits these infinite rendering capacities, allowing for more efficient rendering engines. Reverie’s expertise in display solutions ensures Indic characters are displayed and handled correctly with error free and aesthetic fonts with rendering engines, through proper allocation and deallocation of memory, a crucial practice at deeper levels of operating systems.
Back in 2011, Qualcomm used Reverie’s display solution for two languages – Hindi and Arabic. Today, Reverie powers millions of devices, including devices from Qualcomm Reference Design (QRD). Reverie has added the same Telugu character that’s now being called the “killer symbol” to millions of devices, but these devices haven’t suffered the same disruptive crashes.