Star characters (☆★) have long been part of the Unicode standard, which means they can appear as characters in web pages, text, and email. But half-stars were missing, so they required special images or custom fonts. I recently co-wrote a proposal to add half-star characters to Unicode, and it was just accepted. In an upcoming Unicode release, half-stars will be usable like any other text character. In this article, I discuss how I got the half-star characters and two others added to Unicode.
Unicode is the computer standard that defines the characters that are used by almost every computer—this standard allows different computers to easily display text in almost every language, and with almost every symbol you might need. (Before Unicode, dealing with non-English text on computers was a mess.) But Unicode doesn't include everything. Last June, a comment on Hacker News complained that Unicode lacked the half-star character used in ratings and movie reviews:
Until Unicode has a half-star character, it won't even be able to encode the average newspaper.
I suggested that someone should propose the half-star to Unicode, but quickly realized that "someone" would be me. Since I had successfully proposed two symbols to Unicode earlier, I knew the process necessary to get the half-star added.
A few years ago, a detailed article described how a couple people got power symbols added to Unicode. Adding a new character to Unicode is easier than most people think. You don't need to pay money, be part of a major company or join a committee. All you need to do is write a proposal explaining why the character is needed. If the Unicode Committee agrees, they'll approve your character for addition to Unicode.
In 2015, I started programming the 1960s-era IBM 1401 mainframe at the Computer History Museum. But when I wrote about the IBM 1401 system, I ran into a problem. This computer uses a 6-bit character set (the precursor to EBCDIC) with some strange characters. All these characters appeared in Unicode, with the exception of one: the Group Mark. I was a bit shocked that Unicode, with its 128,172 characters, lacked a character I needed. Having read about the power symbol team's success in adding characters, I figured it would be interesting to see if I could get the group mark character added to Unicode. I wrote a proposal, submitted it to Unicode, and at the next meeting it was approved.
A few months later, I learned that the Bitcoin symbol was missing from Unicode. This was a surprising omission, since the Bitcoin symbol is widely used in the real world. The symbol had been rejected before, so I made a more thorough proposal in October 2015 with the enthusiastic support of /r/bitcoin and other Bitcoin groups. The Bitcoin symbol proposal was accepted by the Unicode Committee in November 2015.
So when I saw the comment about half-stars on Hacker News, I figured it would be straightforward to get it accepted to Unicode. I wrote a proposal after discussion on HN and on the Unicode mailing list. The Unicode committee considered the proposal in August 2016, but to my surprise they had also received another half star proposal, so they decided to wait on a single proposal. It turned out that Andrew West had also written a proposal for half-stars, and we had both submitted proposals, unaware of the other. So Andrew and I joined forces and made a combined proposal, which was accepted by the committee Sept 30, 2016.
Why did we propose four different half-stars? We included both the outline half-star and solid half-star because both forms are commonly used. (I wasn't sure if the committee would consider these characters distinct enough to include both, but they did.) Right-to-left languages such as Hebrew do their star ratings right-to-left too (which was a bit of a surprise to me), so we included mirrored versions for RTL languages. Thus, the four different half-stars cover the range of uses.
If there's a character that you want to add to Unicode and it meets the requirements, you should submit a proposal, since its a very interesting process and not too difficult. Make sure your character meets the criteria. In particular, you'll need to find a bunch of examples of the character used in text. The Unicode Committee isn't going to add a character just because you think it's cool, so you need examples to prove the character is in use. Creating a font to demonstrate your new character is probably the most challenging part; I used FontForge. The power symbol team has lots of helpful advice on making a successful proposal. I'm also happy to offer advice if you're writing a proposal.
I should mention that emojis have a totally different process, so don't argue that "since the poop emoji exists, my character should too". (The poop emoji 💩 was added for backwards compatibility with Japanese mobile phones.) For emoji, expected popularity of the symbol is a major factor in acceptance. Regular Unicode, on the other hand, isn't concerned with popularity—historical scripts such as Tangut won't get a millionth the usage of a new emoji—but with existing usage in text. (Reading between the lines, I think a lot of the Unicode committee wishes they weren't in the emoji business at all.)
Once a character is accepted, there's still a long road for it to appear in fonts and be usable. A new version of Unicode is released typically every June, so the half stars will probably appear in Unicode 11.0 mid-2018. The Bitcoin community in particular has had to wait patiently since the Bitcoin symbol just missed the cutoff for Unicode 9.0, so it will probably appear in Unicode 10.0, mid-2017. So if you're patient, eventually you'll be able to use the group mark, Bitcoin symbol and half stars in web pages and text just like any other symbol.
Thanks for proposing the Bitcoin Unicode character!
ReplyDeleteBitcoin won't need the half star as it deserves five solid stars ;-)
ReplyDeleteJokes aside, thank you for your contributions
You say we'd have to wait til mid-2017 to get the Bitcoin character, but it seems that it's already included?
ReplyDeleteI can see and type the Bitcoin character (₿) just fine. This is on macOS sierra 10.12.1.
With such a post I expected to see the text of proposal, or at least some example text and guidelines to it. Instead of including the proposal text, author, for some reason, promised to help with writing proposals in some specific cases.
ReplyDeleteAnonymous: I hadn't realized until your comment that Apple added the Bitcoin character to macOS Sierra and iOS 10. Sly: the article includes links to my proposals. The power symbol proposal site may provide the level of detail you're looking for.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThank you, until today I felt the imperative need to use half a star and I've been using solid stars and outlined stars for a while, because I simply enjoy rating random things. I'll have a beer in your names!
ReplyDeleteHI there.
ReplyDeleteWhat is the current state for the halg stars? They don't seem to have been included yet, right?
Many thanks
!
Jose, the half stars will be in Unicode 11 which will come out June 5, 2018.
ReplyDeleteUnicode 11 is out , but unable to create the half stars ... any pointers ?
ReplyDeleteUnicode 11 is out but unable to create these half stars .. any pointer will help.
ReplyDeleteWhy hasn't anyone created a Unicode 11.0 font? Symbola looks good but says they won't release an update until Unicode 12.0.
ReplyDeleteYes, I am interested in this too. I haven't been able to find a Unicide font that contains these characters. If you still read old comments, do you know of any font that has the half stars please?
ReplyDeleteEchoing the other comments, I can't find a single font with the half-star characters in it, despite having been formally added to Unicode years ago. It's not like the font makers just picked that point to give up, either, lots of characters in following releases are in most. I actually found this post googling for a reason why.
ReplyDeleteTwo years since the last comment, Windows nor browsers are supporting the half star - kind of ridiculous. Apparently Windows 10 supports unicode up to version 12.
ReplyDelete