6 ms·
Commas in big numbers everywhere: An OpenType adventure
- linuseouyt 7y agoBrilliant. This should be an opt-in feature in all programmers fonts.
- trishume 7y agoYou can use the patcher on Github to patch a font of your choice, although underlining currently only works well with some fonts. I also have some good fonts pre-patched on the download site at https://thume.ca/numderline https://thume.ca/numderline
- abhikshah 7y agoWow, that's an elegant solution! I also have a difficult time reading large numbers without commas. Because I use Alfred (mac command launcher) quite a bit, I wrote up a simple workflow to re-display selected numbers with commas. Not as universal as the font-based solution but might be useful to some: https://github.com/abhik/tres-commas https://github.com/abhik/tres-commas
- ufo 7y agoIs there a way to make the font locale sensitive? Half of the planet uses dots instead of commas
- kulpreet 7y agoIn most cases, you'd want this to be handled at the OS-level by setting your locale preferences to match your region. However, this would require the app to be properly internationalized (using number formatters, etc.) to work correctly. So you bring up a neat idea. I'm not sure which OSs support it, but OpenType does have a `locale` feature, primarily for glyph variants (ex: same codepoint, but different glyph for Chinese vs. Japanese). I'm guessing it could be abused to accomplish what you want and not require an app to adopt i18n APIs.
- freddie_mercury 7y agoMake what locale sensitive? There are no commas in his font. "I realized that instead of inserting commas, I wanted to underline alternating groups of 3 digits so that the font would work in monospace contexts."
- pimlottc 7y agoThe author made multiple variants available, including bolding, grouping via squashing, and commas. There are versions of each type published. https://thume.ca/numderline/ https://thume.ca/numderline/
- freddie_mercury 7y agoIf you're downloading and installing a custom font, why do you need it to be locale-aware? Just down the variant that uses whatever your locale needs. (Or if there isn't one, fork it and change the commas to periods and the install that.) It seems like the only reason you'd need a locale-aware one is on a multi-user system where you'd expect users to have different locales and you're installing the font globally. But that doesn't really seem like a likely use-case for this pretty niche font that is almost exclusively going to installed on single-user machines by the end-user.
- Someone 7y agoA web page you visit might tell your browser to download the font (https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_text/Web_fonts https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_t...)
- bla3 7y agoProbably cool, but the website disables zooming in phones so I can't tell. I wish pages couldn't disable zooming -- that should be up to me. Does anyone know browsers that always allow zoomi (If any Jane Street blog folks read this, please fix your blog.)
- trishume 7y agoHuh interesting. Zooming works fine for me on IOS. Maybe it's only blocked on Android. If I remember I'll take a look on Monday.
- RenRav 7y agoZooms fine with Brave on Android.
- klyrs 7y agoI'd start with this line: <meta content='width=device-width, initial-scale=1, maximum-scale=1' name='viewport'/> (I also can't zoom, android/firefox)
- duckqlz 7y agoSecond that the very first thing I did was zoom. I had no idea this was a privilege. I shall try not to take it for granted lol
- michaelvanham 7y agoFirefox on Android has an accessibility setting named "Always enable zoom". With this feature enabled, I can zoom in on this site. With this feature disabled, I can not zoom in on this site.
- michaelvanham 7y agoChrome on Android has a similar accessibility setting named "Force enable zoom".
- freddie_mercury 7y ago
- haolez 7y agoKind of off topic, but the latencies in which they operate are out of this world. Amazing stuff
- xvilka 7y agoInteresting article! Time to start a new crusade, I guess like I did for True Colors[1], and BiDirectional[2] text. This time for a better font shaping support. If you have ready tests it would help a lot. Personally, I am waiting for ligatures support to be merged[3] in alacritty terminal emulator. Update: I started a list[4] of terminal emulators supporting it and not. [1] https://github.com/termstandard/colors https://github.com/termstandard/colors [2] https://gist.github.com/XVilka/a0e49e1c65370ba11c17 https://gist.github.com/XVilka/a0e49e1c65370ba11c17 [3] https://github.com/jwilm/alacritty/pull/2677 https://github.com/jwilm/alacritty/pull/2677 [4] https://gist.github.com/XVilka/070ed8b1c1186097cad65ef49220175a https://gist.github.com/XVilka/070ed8b1c1186097cad65ef492201...
- pimlottc 7y agoRegarding your list, I'm not sure what specifically you mean by "font shaping", but VS Code definitely supports programming ligatures: https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions
- xvilka 7y agoYes, I know. I will extend the list with more information soon. Thanks for the feedback!
- edoo 7y agoMy primary calculator in linux is speedcrunch which lets you do adjustable squishing as it is referred to in the article which is pretty nice.
- ghettoimp 7y agoNow I am really jealous, and want a hex version that introduces underscores for every group of four...
- trishume 7y agoIf you want it should be reasonably straightforward to modify the code to do that: https://github.com/trishume/numderline https://github.com/trishume/numderline More advanced but totally doable would be switching to that mode for hex strings after "0x" or "0X"
- mmazing 7y agoCould this be an potential avenue for some sort of exploit? I had no idea that you could "execute" logic via fonts.
- Thorrez 7y agoPreviously bugs in how iOS with how it handles certain unicode combining characters meant that an attacker could crash someone's iPhone just by sending a text. I'm not sure if it was buggy logic in the font. https://news.ycombinator.com/item?id=16386444 https://news.ycombinator.com/item?id=16386444
- Animats 7y agoUh oh. Are fonts now Turing-complete?
- cperciva 7y agoYes: https://litherum.blogspot.com/2019/03/addition-font.html https://litherum.blogspot.com/2019/03/addition-font.html
- chatmasta 7y agoDefinitely. Project Zero had a multi-part series on this subject: https://googleprojectzero.blogspot.com/2015/07/one-font-vulnerability-to-rule-them-all.html https://googleprojectzero.blogspot.com/2015/07/one-font-vuln...
- gewa 7y agoI wonder why not to use scientific exponential notation. Once you get used to it, it comes really handy to compare numbers of many magnitudes.
- toolslive 7y agoyes, it counts the numbers for you.
- Mikhail_Edoshin 7y agoAFAIK general style guides don't recommend using thousand separators in numbers below 10000, so "variable #1,234" is not quite good, it should've been simply "variable #1234". "Variable 12,345" would've probably been OK, but then there's another semantic issue: thousand separators are only used in numbers that mean quantities, not identifiers. Long numeric identifiers like phone number or SSN are usually separated differently. Generally the issue should not be handled at the font level, it lacks sufficient context to make intelligent decisions and can never handle all possible cases. The font should just provide the required glyph variants and means to use them.
- pojntfx 7y agoAlso, this is locale specific. Here in Germany we use dots instead of commas for that.
- jfk13 7y agoFortunately, OpenType fonts can have locale-specific behavior, so as long as your content is appropriately lang-tagged, that shouldn't be a problem. (Though I still don't think doing this in the font is a good idea, in general.)
- Someone 7y agoSo, one could have a font that, say, hides the flag of Taiwan in a Chinese locale? (Yes, there are multiple ‘Chinese’ locales: zh-CN Chinese (Simplified, PRC) zh-SG Chinese (Simplified, Singapore) zh-TW Chinese (Traditional, Taiwan) zh-HK Chinese (Traditional, Hong Kong S.A.R.) zh-MO Chinese (Traditional, Macao S.A.R.) )
- yorwba 7y agoYes, but OpenType only supports 4 different Chinese locales (Chinese, Hong Kong SAR 'ZHH', Chinese Phonetic 'ZHP', Chinese Simplified 'ZHS', Chinese Traditional 'ZHT') https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags https://docs.microsoft.com/en-us/typography/opentype/spec/la... ZHP seems like it's unlikely to be used in the wild.
- zxcvgm 7y agoThis is fantastic for command line output and whatever that doesn’t natively support digit grouping. I have no idea how people live without enabling it. I turn it on my Windows calculator, and I’m also happy that now programming languages like JavaScript, Python and recently Go allows using underscores in numeric literals for doing this in code to make it more readable.
- OJFord 7y agoPresumable it handles text that already has a comma separator OK, since there isn't a continuous group of >3 digits in '1,234'. I suppose the same is true of continental Europe's '1.234', though it would be very cool if it could be determined that the '.' was a thousand separator and modified to ','. What happens though if the text is using '.' separator and ',' decimal, such as (roughly 123 and a half) '123,456789', is it going to determine there's a missing ',' between '6' & '7' (making it roughly 123 and a half million)?