17 ms·
Monospaced Programming Fonts with Ligatures
- draw_down 9y agoIt slightly alters the monospacing which would drive me batty when coding, but cool idea. Especially for displaying code like in a blog post or other non-interactive use.
- nkrisc 9y agoWell, depending on your audience I think it would be a step backward for static display of code since in some cases it isn't clear what to actually type. Fine for experienced audiences but really frustrating for anyone learning. For example, the 'x' in the hex value. Is it a regular 'x' or another character? How about those fat arrows? How are those typed?
- draw_down 9y agoGood point. Copying and pasting should still work ok, but it would be confusing to read for someone who didn't recognize the ligature glyphs.
- wereHamster 9y agoIf you don't use one of those fonts that support ligatures, you'll see the plain ascii characters. You shouldn't use these fonts if you don't know what kinds of ligatures it supports or how it converts plain ascii characters into a higher form.
- nkrisc 9y agoI was commenting on the use of these fonts to display code to others, not use while writing.
- kej 9y agoIn my experience using Fira Code with VS, VS Code, and Konsole, the monospacing isn't a problem. The ligatures are designed so that they fill up the same width as the original characters. My opinion might be biased by a heavy math background, but I like that e.g. "less than or equal" now looks the same as the way I write it on paper, and I don't find myself spending any time thinking about what that symbol means. I'll concede that it totally messes up command line help text in the console, though. You get lots of stuff like --parameter=<value> turned into —parameter≤value> but it hasn't annoyed me enough to switch back yet.
- draw_down 9y agoIn the GIF, you can see the other characters earlier in the ligature shifting around when a character is added or removed to complete or undo the ligature. That would just bother me.
- kej 9y agoAh, that's fair. It is a little bit of visual noise, maybe roughly equivalent to the blinking of matching parens or braces as you move your cursor around. I think the slight improvement in visual clarity when reading the ligatures makes up for the slight noise when writing them, but it's definitely a personal preference.
- twobyfour 9y agoI'm not sure that ligatures would be an improvement for legibility or editing code.
- kej 9y agoI happen to like them, but the only one I'd put forth as a definite improvement is that JS/PHP's triple-equal === operator gets turned into three horizontal lines that take up more vertical space than the double-equal does. That can be the cause of subtle bugs, so I think making that distinction more obvious is a win.
- twobyfour 9y agoPersonally, I'd probably find it easier to visually mix up the two-line and three-line versions than to mix up the two-char and three-char versions when skimming code - but to each their own.
- kej 9y agoYou still get the same three-char width, the ligature just makes it three lines tall, also.
- Wintamute 9y agoI'm mystified how any one finds these more readable. Form over function if you ask me.
- falcolas 9y agoIt transforms them from individual characters being put together to approximate symbols into the actual symbols. The act of joining together particular character combinations into more aesthetically pleasing forms is common and very old practice. It looks odd only because we're accustomed to seeing the individual characters due to display limitations inherited from typewriters and TTY machines.
- danellis 9y agoI agree, except for the www ligature. It just looks odd to only have part of a domain name compressed.
- falcolas 9y agoThe www is a bit artsy for my tastes as well, at least in a programming sense, but making a ligature of www isn't a terrible thing, IMO. It already almost creates its own ligature, especially when used with a serif font. Heck, a lot of people I know will make a verbal ligature of www - something like 'dub dub dub'.
- cordite 9y agowww was unnerving to me (and a couple of my team members) too. In a way I am interested in psychological basis for my innate rejection of this. Conceptually, I comprehend why it is made into it's own ligature, like !=, it is a unit of information these days.
- vanderZwan 9y agoWell, for starters it's an abbreviation, whereas -> or != is an approximation of a symbol, so that makes it different from the rest. Also, you're on a website that has no www in any part of its website, so it's not nearly as ubiquitous. If anything I think it makes more sense to have :// as a ligature.
- amk_ 9y agoI really like the giant, triple-line === ligature for JS in Fira Code. Makes it super-obvious when you are doing strict vs sloppy equality checks.
- kazinator 9y agoSarcasm?
- masklinn 9y agoWhy would it be sarcastic? The triple bar is also the operator for logical equivalence, which I guess is where the font authors got it.
- deleted 9y ago[deleted]
- gervase 9y agoI assume potential sarcasm would be related to the difficulty differentiating between similar symbols, based on length, with different lexicographic meanings. For example, dash vs endash vs emdash, etc: ‒ – — ― If those symbols were used in a programming language and had different meanings, differentiating quickly could be much more difficult than seeing the difference between -, --, ---, and so on at a glance.
- NoodleIncident 9y agoBut the point of the new triple-equals ligatures is that they're no longer only differentiated by length; they have three bars instead of two, as well.
- masklinn 9y ago> the difficulty differentiating between similar symbols, based on length, with different lexicographic meanings. The very thing amk_ is praising is that this issue is fixed in both Fira and Monoid by the triple-equal being not just longer but represented using 3 horizontal bars rather than just 2.
- zeveb 9y agoMy only real concern is that it makes 0x123 look like 0×123. Otherwise, pretty cool.
- IvyMike 9y agoMy concern is it made 0xABCDEF turn into 0xAB_DE_F. What happened to the "C"?
- shanselman 9y agoSorry, the missing C is just me being sloppy. The underscores are a C#7ism where you they are ignored and people can use them to separate LONG hex literals.
- masklinn 9y agoGiven all three fonts show that issue, I expect TFA screwed up and forgot to put it in their edition buffer as they were taking screenshots.
- rofex 9y agoYeah! Why is noone else talking about this? This was what immediately struck me when looking at the screenshots...
- TeMPOraL 9y agoI noticed that immediately, too; I just assumed the author changed the source before taking screenshots and forgot to update it on site code. If a font was doing that, it would be criminal.
- TeMPOraL 9y agoYeah, that bugs me too. I'm strongly used to have 'x' in 0x vertically aligned to the bottom, not to the centre.
- pitaj 9y agoI really like the ligatures in Iosevka ligatures when working with Javascript, especially with `=>` (which it turns into a fat arrow). It's not really that significant, but it's a nicety that enjoy.
- kazinator 9y agoThat www thing looks like shit. Just, no.
- smcl 9y agoThe www was a little weird to look at for me too, but it's the combinations of multiple "-" and "=" that pushed this over into "nope" territory for me. It's cool that some folks find it better, but it's just not for me
- jussij 9y agoI agree. I've never used 'Fira Code' so it might actually be a good font. But of the three screen shots offered, it looked like the worst and the www looked really bad.
- Jakob 9y agoI like switching fonts every couple of years just to keep it fresh. My font right now is Iosevka: https://be5invis.github.io/Iosevka/ https://be5invis.github.io/Iosevka/ A font generated from its source code. You can build your own variant. It has ligatures as well. I like that it’s not as wide as many other monospace fonts.
- msarnoff 9y agoSeconded. I swore by Inconsolata for the better part of a decade but within days of installing Iosevka I had it set up in every editor or terminal on all of my computers. And it supports programming ligatures!
- Karissa44 9y agolike Dawn replied I'm shocked that someone able to profit $8730 in a few weeks on the > internet . you can try this out>>>>>>>>>>>http://ow.ly/iBXm30dNtIZ http://ow.ly/iBXm30dNtIZ
- pfooti 9y agothirded. I love the customizability of iosevka, in particular the ability to turn on / off ligatures and manipulate the appearance of the @ glyph.
- weeksie 9y agoOoh, that reminds me of Profont (which I used until displays got high enough rez that a pixel font at 9px was just unreadable).
- bau5 9y agoI like the variation on "the quick brown fox jumped over the lazy dog".
- mVChr 9y agoI've rifled through many a programming font, bought Pragmata Pro at one point (as you can see I also like taller fonts), tried many others over the years (Monoid was my previous favorite ligatured font). Iosevka is my current favorite. My customization args are part of my dotfiles repo so I can install it exactly how I like on any new system without effort.
- jbmorgado 9y agoFor some people this might be great but for me this is a total sensorial overload, I tried to use some of these fonts in the past and I just loose track of the code. Did anyone experience the same in the begging and grew to actually like these fonts or was it always a "love at first sight" experience for you that use them?
- nulagrithom 9y agoThere was definitely a lot of "whoa!" and distraction in the beginning, especially while typing and watching things transform. Later I loaded up some JS code I was working in earlier but without ligatures as the terminal I was using didn't support them. It definitely felt oddly verbose, especially the arrow functions. I can still go either way, but it's mostly lack of ligature support that keeps from adopting it wholesale. Changing one way or another is a tad disruptive.
- coaxial 9y agoI personally love hasklig. Iterm2 has it on the Mac, but I'm sol on Ubuntu. Is there any good terminal app that supports ligatures? I tried konsole, but the font looked like it wasn't getting any anti-aliasing and was harder to read as a result. I love terminator, but it doesn't support ligatures. What do you use?
- xyzxyz998 9y agoMost popular terminals use VTE. VTE doesn't support ligatures if that helps narrow your search down.
- timothevs 9y agoI am a huge, huge fan of the free font “Input”[1]. Just love how customizable it is, so much so, that I’ve replaced Pragmata Pro with Input on Sublime. [1] http://input.fontbureau.com/ http://input.fontbureau.com/
- hashmal 9y agoI was looking for someone mentioning Pragmata Pro, now I might check out Input…
- yla92 9y agoI love Firacode and use it in Android Studio/IntelliJ but it has this bug[0] where "=" is invisible in Gnome terminal. So, I had to switch to Fira Mono[1], the parent of Fira Code, from Mozilla. Fira Mono doesn't have cool ligatures but it's a good font and works pretty well. [0] : https://github.com/tonsky/FiraCode/issues/162 https://github.com/tonsky/FiraCode/issues/162 [1] : https://github.com/mozilla/Fira https://github.com/mozilla/Fira
- lygaret 9y agoThe whole Fira family, (and Fira Mono in particular) are amazing.
- edejong 9y agoApparently I'm one of the two users of proportionality spaced fonts for coding. I've used this now for five years and I don't understand why developers still see this need to code as if monospaced terminals is all that's available. Especially on large screens with high dpi it reads much faster. It also makes it less awkward to use editor unicode substitution for display purposes.
- simias 9y agoIf like me you really like aligning your code proportional fonts are not exactly pleasant to use. I sometimes go out of my way (within reason) to have variables with the same number of letters so that I can align them nicely. A bane of my existence is that "width" and "height" don't have the same number of letters. An example from some lua code I'm working on at the moment: local hi = buffer:bitfield(4, 4) local lo = buffer:bitfield(12, 4) return bit32.bor(bit32.lshift(hi, 4), lo) I find that aligning things not only looks better but also makes the differences more obvious. Same code with a proportional font: local hi = buffer:bitfield(4, 4) local lo = buffer:bitfield(12, 4) return bit32.bor(bit32.lshift(hi, 4), lo) It's not a deal breaker (and the offset is small in this case) but I much prefer the monospaced version. Obviously it might also be "Stockholm syndrome" after decades of coding with a monospaced font, I can't say I've really given proportional fonts their chance. Also many proportional fonts make it hard to distinguish between Il1 or O0, but I guess you could design a proportional font that doesn't have this issue. What font do you use yourself?
- arnsholt 9y agoThe Il1 problem is primarily a problem with sans-serif fonts. In my work SmallTalk text is set in Arial in the default image, but I've set up my development image to use Cambria instead which is really quite nice. The inability to do vertical alignment outside of the left edge of the line is a bit annoying, but honestly I don't miss it that much. If you have enough code that you really, really need to do that, I find it's a code smell indicating that something likely needs to be broken into smaller pieces anyways.
- edejong 9y ago
- TeMPOraL 9y ago> I frankly can't understand how tiny font people can function. It gives me a headache to even consider programming at anything less than 14 to 16pt and I am usually around 20pt. What? I can't understand how such large font people can function. I mean, how large (or dense) are your screens? Is that a Macbook thing? I'm at... something small. Hard to tell exactly, because on my laptop screen, all following fonts look pretty much the same size, while having different configured values: - IntelliJ - Monospaced, size 12 - Emacs - (:family "Hack" :foundry "unknown" :slant normal :weight normal :height 76 :width normal) - xterm - xterm*faceName: Hack:size=8:antialias=false So 8 / 12pt (which one is pt?) and/or 76 somethings. People at work say I'm crazy working with such small text, but frankly, anything larger for me feels like wasting tons of vertical space, which is of short supply given the (IMO completely idiotic) market standardization on 16:9 and 16:10 displays.
- TheRealDunkirk 9y agoMust be a 4K/5K thing?
- nsxwolf 9y agoWhat are you going to do when you get older and your eyes go through "the change"? You can keep your font sizes and wear readers, but then don't you have to move your head a lot to view the entire magnified image? Any presbyopic developers care to chime in on what the experience is like? I'm 40, so mine could cross over any time now. I hate 16:9 too. Please give me back the bottom of my screen that you chopped off.
- simias 9y agoYou could try rotating your screen to get 9:16, although I find that it tends to be a bit narrow if you want to split vertically and have two pieces of code side by side. With 16:10 screens however I think it work rather well, I currently use three 1920x1200 monitors and two of them are vertical, it looks like this: https://svkt.org/~simias/emacs-vertical.png https://svkt.org/~simias/emacs-vertical.png It's also great for looking at docs.
- nijaru 9y agoWhat sort of application do people use to design fonts and add ligatures?
- gdwatson 9y agoFontForge[1] is the one I always see mentioned in the open source world. Adobe, being a giant of computer typography, has some proprietary tools. [1] https://fontforge.github.io/en-US/ https://fontforge.github.io/en-US/
- taeric 9y agoWait, since when were the different length dashes considered ligatures? Same for not equals.
- jayshua 9y agoLigatures are great, but I just love the cursive italics used by Operator Mono. Haven't justified the price to myself yet, but am considering it since I haven't been able to find any other fonts that do cursive italics.
- snsr 9y agoI tried it and instantly switched all of my editors and terminals over - it's clear, legible at different sizes, and the monospace script "italics" are great for variable names, comments etc.
- matiasz 9y agoMatthew Butterick’s font Triplicate has true italics and a Code version with programming alternates. www.triplicatefont.com
- kps 9y agoIt's $CURRENT_YEAR. Just let people write ≠ for ≠ already.
- dragonwriter 9y agoThe problem with Unicode operators is good, consistent input methods.
- LyndsySimon 9y agoFor those of us who use programmable keyboards, it's not a problem at all. For everyone else, perhaps it should be seen as an editor problem? There's no reason vim can't see that you type != or =/= and replace it on the fly with ≠.
- TheOtherDave 9y agoYeah. The thing that blows my mind is that the guy who runs Input Club (they make/design keyboards with open-source firmwares) sent the USB consortium an email a year or so ago asking if there were any plans to update the USB HID spec for unicode, and the response indicated that he was the first person to ask! Really?!? Unicode was out for a few years before USB even existed, and nobody'd even thought about it before? You'd think at least the word processor industry (which wasn't nearly as homogenous back then) would've jumped on it.
- rrmm 9y agoClearly it's time for APL (http://wiki.c2.com/?AplLanguage http://wiki.c2.com/?AplLanguage) to make a comeback.
- megamindbrian 9y agoI love this.
- KirinDave 9y agoI figured I'd leave this here: I rebuild Iosevka with the Haskell ligature mode on default. I use this for a lot of things (although recently it's gotten no use as I've been working in Emacs). Since it's a bit of a process to rebuild Iosevka, I just bundled the artifacts: https://goo.gl/gsFm8P https://goo.gl/gsFm8P (Please excuse the redirection, this got a LOT of downloads and I have a big azure credit so I hosted it there and youw ould not believe what a pain it is to host simple linkable files on Azure).
- tetraodonpuffer 9y agonote you can kinda use ligatures in emacs by doing something like https://gist.github.com/pcstl/2d9b28a74d6f9254586c2d58d54590f8 https://gist.github.com/pcstl/2d9b28a74d6f9254586c2d58d54590...
- KirinDave 9y agoThis replaces -> and whatnot with unicode equivalents, right? There are a LOT of problems with that. First and foremost you really do want double character width for these symbols in the iosevka format. Stuff like → is microscopic.
- tetraodonpuffer 9y agoit also seems to adjust the spacing, I have used it with FiraCode and it seems to work correctly. Note my main font is DejaVu Sans, with this I just use the Fira Code symbols for the "ligatures"
- Finbarr 9y agoFira Code looks really nice. Shame Sublime Text doesn't support ligatures. Seems to be the most voted for idea for development: http://sublimetext.userecho.com/forums/1-general/ http://sublimetext.userecho.com/forums/1-general/
- shanselman 9y agoTry VS Code. There's a Sublime Text keymap https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings https://marketplace.visualstudio.com/items?itemName=ms-vscod...
- Garet_Jax 9y agoThe edges of the WWW symbol need to align with the old symbol if they are doing it right. The && also breaks out of alignment. Alignment is the whole reason I am using mono-spaced fonts. My history: IBM VGA (strange j, h, k, etc.), Courier, Bitstream Vera Sans, Lucida Sans Italics (only proportional font, but it looked great at the time), Consolas, Kids Play.
- spdustin 9y agoIf only Sublime Text supported fonts with ligatures… I miss out on these amazing fonts!
- whalesalad 9y agoReally looking forward to having this capability in Sublime Text. I really love Fira Code. It looks great in Emacs for Clojure development and is right at home with my powerline-esque ZSH theme.
- dannysu 9y agoOh, I didn't even know ligatures is a thing. Learned something. When coding in Haskell, I used to use the vim-haskellConcealPlus [1] plugin for vim to swap chars being display into nicer unicode chars for various operations. I'm no longer using it now because it wasn't monospaced and moving around lines was jarring. If only there's a way to combine the benefits of the two. Monospaced font with ligatures seems to only work for operators that take the same amount of space as their ligature counterpart. [1]: https://github.com/enomsg/vim-haskellConcealPlus
- xyzxyz998 9y agoCrazy idea but i'd like to see a monospaced version of Comic Sans Neue. The proportional version is very well done.
- Pxtl 9y agoHoneslty, this should be handled by the language itself. If a language supports unicode, why not support ≠ for not-equals instead of "!="? Then provide a pre-processor that will replace all your ugly "!=" with the correct mathematical symbol.
- bsaul 9y agoagree except for the pre-processor part which should belong to the editor macro or keyboard shortcut space.
- Pxtl 9y agoWell, providing the replacement engine as part of the language compiler package as a simple command-line tool you can hook into your editor of choice as a hotkey so I can say "replace all the operators in this file with their appropriate mathematical unicode counterpart".
- masklinn 9y agoThis is what e.g. many Haskell developers do, the issue is that this will usually fuck up alignment (because the base font does not contain the non-ascii symbols) and generate different alignments between different viewing contexts. It also leads to odd issues where deleting a character just changes it and doesn't move the cursor at all. Ligatures are a time-honored way to improve the look and feel of combinations of characters, that's basically the entire point of them.
- dragonwriter 9y ago> If a language supports unicode, why not support ≠ for not-equals instead of "!="? Perl 6 tends to support both multicharacter ASCII operators and single-character Unicode equivalents.
- SwellJoe 9y agoI love the way Perl 6 looks with Unicode, it's really beautiful, but I'm just not very comfortable typing Unicode. It takes me a split second to type ">>*<<", but much longer to type the Unicode equivalent (and I probably have to look it up). The editor could probably do it for me, but I haven't looked too deeply into how. I think doing it with the font might actually be nicer from a usability perspective. Unicode is fun to play with but slows me way down.
- ww520 9y agoI switched to Source Code Pro font couple years ago and never look back. https://github.com/adobe-fonts/source-code-pro https://github.com/adobe-fonts/source-code-pro
- masklinn 9y agoAs the very article notes, Hasklig is a fork of Source Code Pro with programmatic ligatures. In much the way Fira Code is a ligatured version of Fira Mono.
- rocky1138 9y agoThis is a deeply personal choice, I feel. I am not a fan of using ligatures in programming code as it gives some abiguity around how many characters are in a given ligature. To each his/her own, I guess.
- vivekseth 9y agoDoes it? In monospaced fonts, you can use width to know how many characters are in a ligature.
- rocky1138 9y agoMaybe I'm just not good at it. Maybe I don't want to have to think of one more thing. That's the point of monospaced fonts, after all.
- joemi 9y agoThe issue, at least for me, isn't that it makes it impossible to figure out how many characters a ligature is (since, as you noted, it doesn't), but that it adds some ambiguity, especially when taking a quick glance. Ambiguity can slow down parsing (in the brain) and potentially lead to errors (in the code) if I mistakenly think a ligature is a single character. For instance, in the examples from the article, the == and -> ligatures in particular look like something I might not always see as two characters.
- fezz 9y agoSolution in search of a problem.
- mixedCase 9y agoAesthetics is a thing. Otherwise we wouldn't even be discussing typefaces.
- derefr 9y agoI think you're maybe confusing monospace ligatures with something else (though I'm not sure what.) In all of these programming ligature fonts, it's quite apparent how many characters a given ligature is composed of, because a ligature still consumes the horizontal width of the characters it's composed of. Look at the "!=" ligature in the Fira Code example: it's a ≠, but it clearly takes up 2em of width.
- seanmcdirmid 9y agoI really want someone to come out with a proportional font with programming-oriented ligatures; they make more sense with a proportional font because unusual "widths" are no longer a concern. I've foresworn monospaced fonts, but really like what they did in hasklig. I can get the same effect if I do my own editor (replace => with unicode ⇒), but not with an off the shelf editor. I tried to figure out how to hack open sans to do this, but the tool chain and steps needed to modify a font aren't well documented as far as I can tell.
- Stratoscope 9y ago> Picking a programming font is like picking a religion. No matter what you pick someone will say you're wrong. Most people will agree at least that monospaced fonts are ideal for reading code and that both of you who use proportionally spaces fonts are destined for hell, or at the very least, purgatory. I guess I'm destined for hell or purgatory then. Hanselman is not alone. I had the CEO of one company look over my shoulder and ask, "Mike, I don't understand how you can program in a proportional font. How can that possibly work?" He wasn't interested in the answer, he just wanted to make a point to me and our teammates that what I was doing was weird and wrong. I would hope for people to have more intellectual curiosity than this. One of the best ways to learn is to let your assumptions be challenged: talk with people who do something differently from you and find out why they do it. It's been said that a programmer should learn a new programming language every year or so, and especially learn a new kind of language that will teach you different ways to think about code. Similarly, I think every programmer should try coding in a proportional font, at least for a while. It may show you new ways to think about how you format your code, as it did for me when I got curious many years ago and tried it. For example, it cured the bad habit I had of lining up too many things in columns, like this: myFunctionThatDoesStuff(someArgument, andThisCalculatedOne(anArgumentThatMeansSomething, anotherWordyName)); Obviously that won't work in a proportional font, so it forced me to try this instead: myFunctionThatDoesStuff( someArgument, andThisCalculatedOne( anArgumentThatMeansSomething, anotherWordyName ) ); This indentation-only style has many advantages, and of course it works just fine in a monospaced font too. In fact the Rust/Servo team recently switched to it from their former column-aligned style.
- Osiris 9y agoI use the proportional font "Input", which is designed for programming. I really enjoy it. The only annoyance is matching indentation in certain scenarios.
- seanmcdirmid 9y agoDitto for me. Going proportional made me consider using saner formatting policies rather than fancy ones. I've also narrowed my code column width by writing more vertically and less horizontally to make scanning easier on my eyes while also allowing for more side by side buffers.
- mcv 9y agoCan you have a ligature that displays a warning when you mix tabs and spaces? Because that would actually be useful.
- mattcoles 9y agoIf you use Vim, you can `set list` and set the `listchars` to something useful for you.
- gdwatson 9y agoOne of the things I love about DejaVu Sans Mono is that it has a human-designed oblique version and doesn't rely on my editor to automatically distort the font. I'd love to try Fira Code, but what do the ligatures look like auto-slanted? (Oblique and italic are both slanted styles of font; the difference is that a true italic has some cursive features and an oblique does not.)
- sqeaky 9y agoI am glad -> was included, but why not ==. Isn't that a comparison operator in many languages?
- cbeley 9y agoWhile I've had people say I'm crazy, I don't think I could ever give up my current font I've been using for years now: https://github.com/belluzj/fantasque-sans https://github.com/belluzj/fantasque-sans . It's both readable and fun. Keeps me extra happy throughout the day. :)
- hatsunearu 9y agoI don't like that --> has a continuous line. that gap in the middle gives me a very clear indication of how many -s there are in the arrow.
- sqeaky 9y agoTiny font person reporting in. I can easily read 9pt font scaled to 80% or 90% in Qt Creator on my 4k monitor. Some of my other coworkers are unsure if I even have text on my screen. I do it because I can fit 4 split views of 120 columns text on my screen (at 90%, 5 at 80%). Right now I only have 3 split views, Unit tests, the header and the source file I am working on.That window does not take up the full screen and I have plenty of space for a build VM another text editor for scripts and notes, a file manager and a few consoles.
- shanselman 9y agoYou're a god!
- sqeaky 9y agoToday I learned: god is nearsighted.
- ericmo 9y agoOne thing that really annoyed me in some monospaced fonts with ligatures is the [] ligature, I never understood why would someone rather see a box instead of two brackets. I'm no typographer, but I think that it makes the text lose its uniformity, because [] and [0] will look weird close to each other. I guess I'm not alone in this, because in the Fira Code repo there's this commit from 2 months ago: "Remove [] ligature from specimen".
- tambourine_man 9y agoI get really excited about this kind of thing. At the same time, I'm amazed that we, developers of all people, still use mostly software from the 80's. At least conceptually, if not actual code. I mean, our tools can be as awesome as we want them to be. An illustrator is at the mercy of others to improve his daily software. We're not. And yet, we get all fired up when we are able to display thousands of colors, some pseudo GUI feature like menus or divisors by patching fonts or have text appear at the opposite end of the line simultaneously. Madness right? I know. I'm as guilty as the next guy, my editor is Vim (on the terminal) and I spend ridiculous amounts of time tweaking tmux, bash/zsh and fetishizing over color schemes. I can't help but feel that by now we should have an OpenGL rendered environment where something like SublimeText's minimap would be easy and Hollywood style interfaces possible, albeit excessive.
- bwidlar 9y agoMy favorite, Luculent: http://eastfarthing.com/luculent http://eastfarthing.com/luculent
- brianberns 9y agoI tried some of these fonts in Visual Studio and quickly learned that any ligature that contains a hyphen (e.g. "->") doesn't work, due to a limitation in the Windows Presentation Framework. :( https://github.com/tonsky/FiraCode/issues/259 https://github.com/tonsky/FiraCode/issues/259
- zitterbewegung 9y agoThis is sort of off topic but every time I see a new font on anywhere I just try it out . At this point I think the fonts that I prefer are probably a set where they all fall into a global maxima of my utility .
- jsingleton 9y agoI think Scott updated the sample used for the screenshots after putting it in the post. The code is listed as: // FIRA CODE object o; if (o is int i || (o is string s && int.TryParse(s, out i)) { /* use i */ } var x = 0xABCDEF; -> --> ==> != === !== && ||<=< </><tag> http://www.hanselman.com <=><!-- HTML Comment --> i++; #### *** I think what was actually used is: // FIRA CODE ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789!@#$%^&*()_+={}[]<>/?'";:~` object o; if (o is int i || (o is string s && int.TryParse(s, out i)) { /* use i */ } var x = 0xAB_DE_F; -> --> ==> != === !== && ||<=< </><tag> http://www.hanselman.com <=><!-- HTML Comment --> i++; #### *** The underscores in the hex literal are not part of the font, which looks like it is confusing some people. A couple of those lines are new C# 7 features (patterns and literals) that appear to have been partially lifted from this blog post: https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/ https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-featu... I wrote a section on C# 7 for a new chapter in the upcoming second edition of my book from last year. There are loads of useful new features in C# 7 (and 6 if you're still on 5) and I thought I recognised those snippets.