Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Cascadia Code, a Font for Windows Terminal and VSCode (github.com/microsoft)
164 points by hmsync on Sept 20, 2019 | hide | past | favorite | 94 comments

This is pretty neat. Here's the overview blog post: https://devblogs.microsoft.com/commandline/cascadia-code/

FYI, there's also the "Input" font for coding: https://input.fontbureau.com/ and of course "Fira Code" which became popular for ligatures: https://github.com/tonsky/FiraCode

I wish some thought would be given to alternate widths for monospaced fonts.

Once I got used to the narrow width of Iosevka[†], all these other admittedly wonderful terminal/code fonts lost their appeal to me. Everything else just looks fat now.


I completely agree! I came to Iosevka for the looks, but now I don't want to leave because of the width. :D

Oh boy, same here. Glad I found some soulmates! Input Mono Compressed comes close though.

Even better, Iosevka just gained an experimental proportional-width variant that still has all the programming ligatures. I've been opting into that on a per–language or project basis.

Microsoft is just on a roll when it comes to open source.

- Windows Terminal is pretty solid, and fast. Dare I say, nearing rxvt-unicode/kitty speed. There are some remaining terminal corruption with tmux + vim sessions, but soon enough it'll be replacing hyper/conemu for me.

- WSL 2 alleviates file system issues that plagued WSL. I recently wiped debian off my Thinkpad because there's no point, I get everything I need from WSL 2. And I can start to dabble with learning C# / Visual Studio.

- https://github.com/microsoft/AirSim This thing, which has support for Unity and Unreal, and is MIT licensed

- VSCode: They ship a new feature release every month I guess? I was happy with it 1 year or two ago, but now they also have WSL 2 integration. This editor works across platforms on MacOS as well.

- Windows 10: Snapping, HiDPI, sound management, drivers just work, lots of apps in windows store, if not you have everything in chocolatey anyway. Steam, with all the games, at full speed. macOS is no longer clearly superior the consumer OS space. Windows 10 is better IMO.

The best part of Windows though is hardware choice. Unlike Apple where you're stuck with an expensive metal wedge, a keyboard you may not (or may!) like, that at least for me gets miserably slow after 3 years, in Windows-land you can pick Dell, Lenovo, HP, so on. You can build your own Desktop, and pick good quality components that last, that aren't soldered together wastefully. Generally speaking, it's more DIY / Hacker friendly.

Maybe Microsoft is getting stronger, or Apple is losing touch with open source stuff trying to push their app / boutique hardware business model. But without open source and standards, what will be left to sustain it all if/when their app/hardware market sours?

- Windows Terminal is nice but the windows command line is not. I don't like PowerShell, it is too verbose.

- WSL 2 is not stable and it is only available for the Windows Insider program. And it does not have X.

- Windows 10 drivers sucks. For example, Intel Graphics drivers has a lot of bugs.

- ClearType has been improved but Linux and Mac font aliasing is a lot better.

- I cannot upgrade my laptop to the last Windows version because something about the seller. The Windows Update does not give me the option.

- Windows really need a package manager. And not, Chocolatey is not enough.

- Windows desktop is nice but is not for me. I would like to remove the task bar and install something like i3wm.

- NTFS is getting old and it is very slow if you have a lot of small files.

Windows is nice to a light development. But if you really need a complete solution you have to search for alternatives.

PD: I have nothing against vscode :).

> Windows really need a package manager.

I feel like you only have this mindset because that's what you're used to, coming from the 'nix world. I came from the Windows world, and not even once have I wished that there was a package manager for Windows. In fact I think it's safe to say I've hated dealing with pretty much every package manager I've ever touched, with possibly the sole exception being pacman.

> NTFS is getting old and it is very slow if you have a lot of small files.

"Old"? So what? That means it's robust and well-tested with lots of tools designed for it. It's not a Javascript framework. And 2 seconds of benchmarking on FAT32, exFAT, or whatever other file system you want would easily demonstrate that the performance difference has nothing to do with NTFS. NTFS is fantastic; I'd take it over extwhatever any day. It doesn't deal with small files quickly simply because Windows and its performance trade-offs weren't designed around programs dealing with lots of tiny files individually. Yeah it sucks, and I wish it was better just like I wish ext was better in other ways, but it's not really surprising; you're trying to program on Windows with a 'nix mentality, so of course you'll hit an impedance mismatch. It's like going from Windows to Linux and complaining that you need to drop into the terminal all the time (or the reverse direction for that matter). It sucks, but the tool just wasn't designed to be used that way.

>I don't like PowerShell, it is too verbose.

>Intel Graphics drivers has a lot of bugs

They suck everywhere. I've had nothing but problems with HD4600 on Linux. Frequent video player crashes, kernel lockups, glitches, the whole shebang.

>- ClearType has been improved but Linux ... font aliasing is a lot better.

I have the opposite experience. Depends on your display I guess.

>I would like to remove the task bar

You can remove it. I don't use and don't see it on Win10.

>- NTFS is getting old and it is very slow if you have a lot of small files.

It's not NTFS. NTFS by itself is plenty fast. https://github.com/Microsoft/WSL/issues/873#issuecomment-425...

> You can remove it. I don't use and don't see it on Win10.

Not the parent - but a question on this. I was using Win10 as my main OS 'till quite recently. I always had the task bar on autohide, but was frequently annoyed by it popping up (when icons for running apps flash). I tried a few registry hacks but nothing ever worked. For unrelated reasons I'm back on Linux now, but am still curious to see if there's a solution to this.

I agree on the graphics drivers - you can't really hold that against Windows itself! IME I've had a lot of issues with Intel, AMD and NVidia drivers, on both Windows and Linux.

> alias

Right. And it ships with sensible aliases for pretty much everything right out of the box as well as excellent completion.

Don't really get the 'too verbose' argument at all.

It's probably just too advanced for him. I love PowerShell and use it on Linux, too.

> powershell

Imo bash and posix shells are too verbose. I have to learn 10 different little programs that have extremely different syntax instead of just learning powershell.

> package manager


> - Windows really need a package manager. And not, Chocolatey is not enough.

A package manager isn't really necessary on Windows, since Windows doesn't have a web of interdependent packages to manage.


Regarding Windows updates, I'm not aware of anything the vendor can do to prevent you from upgrading?

Microsoft does stagger updates over quite a long period, my guess is that's whats happened. If you want, you can get the update early by using Windows 10 Update Assistant[0]

Regarding the command line, there are more options than PowerShell (which I also really dislike); for example, if you install Git for Windows, you also have the option of installing Git Bash - all the goodness of bash, in Windows!

[0] https://support.microsoft.com/en-gb/help/3159635/windows-10-...

Some of what you write is true. Some is false or absurd.

> WSL 2 is not stable and it is only available for the Windows Insider program

True but so what? It works perfectly well for many purposes right now (I know this from experience). Work on it is progressing apace, and it'll be in the mainstream builds before long.

> And it does not have X.

I don't even know what that means. You can install an X server (x410's the best in my experience), and run X11 apps in it. I worked f/t on the Linux build of IntelliJ running in WSL2 for a couple of projects, and it was fine.

> NTFS is getting old and it is very slow if you have a lot of small files.

Windows file handling is pretty slow, but not mainly because of NTFS. Working in WSL2 you have a linux kernel & ext4 for your source files, so it doesn't matter.

> Windows is nice to a light development. But if you really need a complete solution you have to search for alternatives.

That's just a silly ideological statement. And it is not a matter of opinion - great swathes of significant and sophisticated software are written by devs using Windows. To suggest something more is 'needed' flies in the face of objective reality. By all means express your taste (mine also runs to Linux right now, though it's a marginal decision), but you'd be better off being aware that taste is just that, and only that.

"- WSL 2 is not stable and it is only available for the Windows Insider program. And it does not have X." WSL 2 is not perfect, but its pretty stable. And it's available for everyone on 1903 update. No need to be in Insider program. Yes, no X, that's true.

Have a link on installing wsl 2 on 1903? Last I checked it was only on insider builds.

> - Windows desktop is nice but is not for me. I would like to remove the task bar and install something like i3wm.

See https://news.ycombinator.com/item?id=20895031

Fancy Zones is a long way off being a full tiling window manager like i3.

WSL2 works fine as an X client in my experience. If you want to run an X server on windows, vcxsrv works pretty well.

Haven't tested WSL2, but used WSL as an X client quite a bit. It works, but performance is pretty terrible. It's fine for 'static' GUIs, but far from great for any sort of interactive graphics.

> Windows really need a package manager. And not, Chocolatey is not enough.

What does windows really need a package manager _for_, that Chocolatey and nuget are not enough for?

Windows drivers being bad is the fault of the hardware manufacturer; at least they provide some drivers!

Ironically windows has had a kind of package manager for years in the form of MSI and the "add/remove programs" system. It just didn't wire this up to a repository.

NTFS performance is becoming a serious problem. That and process spawning are the two things that Linux systems inherently do much faster. The tendency of Windows systems to hook antivirus into everything that the filesystem does is also crippling but still seems to be mandatory.

> Ironically windows has had a kind of package manager for years in the form of MSI and the "add/remove programs" system. It just didn't wire this up to a repository.

They added a repository, they call it the Microsoft Store. In Windows 10 you can install Win32 and even command line apps from it. It has a lot of what I need at this point: Python, Inkscape, Paint.NET, VLC, iCloud Drive, WSL Linux distros, etc. I haven't used Chocolatey in years, because most of what I had been using Chocolatey for is in the Store at this point (or I didn't like how Chocolatey was installing them anyway, there were a lot of dumb PowerShell install scripts in the Chocolatey repository).

It would be great to have even more applications in the Store or as MSIX sideload packages (with update support) instead of old MSI/EXE installers, but that's a developer project that takes upgrade/installer rebuild time (as opposed to just about anyone just writing some silly PowerShell script or another and uploading it to Chocolatey).

Interesting. I recently swapped desktop from Windows to Linux because of the instability from updates. I have a macbook pro I also use which is generally faster and more stable.

> Unlike Apple where you're stuck with an expensive metal wedge, a keyboard you may not (or may!) like, that at least for me gets miserably slow after 3 years

That's strange. My iMac has been on its original installation of MacOS since 2012 and feels just as performant as on day 1 despite all other computers being faster.

I am rooting for Windows Terminal to succeed, but currently it's definitely not fast. Complete redraws of the content are in fact painfully slow for me at the moment.

Windows can be convenient, but what is the cost of your convenience?

- Fewer hardware manufacturers will publish drivers for other OSes.

- More computer manufacturers will sell computers with Windows preinstalled (and other preinstalled software that you will likely not want in your computer), making your computer more expensive and slower, and sometimes, less secure (search: eDellRoot).

- Fewer game publishers will publish cross-platform builds, even if they use cross-platform libraries. More publishers will prefer Windows-only libraries like DirectX instead of cross-platform alternatives like Vulkan.

- Fewer software vendors will create cross-platform software.

- Exposure to ads, forced updates, "telemetry" and analytics, and other forms of loss of control over YOUR computer.

- You will be rewarding Microsoft stockholders, including software villains from the 90s.

- If your country gets slammed with US sanctions, Microsoft can no longer sell you software (unless you decide to pirate it, be cut from updates, and be left vulnerable to Internet worms like WannaCry). Call it loss of cyber-sovereignty if you wish.

Now, about .NET... There are Linux builds of the .NET framework. You can use many IDEs to develop. But if you want an editors/IDEs, JetBrains Rider can be a good alternative to Visual Studio.

Nah. I, for one, am fed up with feeling as a third-class citizen every single day.

I recently moved back to Windows after using Linux exclusively for five years. My opinion will probably prove unpopular here, but here goes: I have seen close to zero progress in making Linux a better desktop operating system in all this time, while MS has been doing solid work in making Windows a more development friendly environment.

I get this feeling that the community keeps reinventing the wheel every few years instead of making existing things more polished.

Linux is improving so fast it's really hard to keep up with it, but I'd say 99% of this progress is being made in server and embedded contexts. Billions are being poured into this area, while desktop is being pushed forward by like two guys working in their spare time.

I'll most likely wipe Linux from dual-boot after WSL 2 gets its first stable release.

On the contrary, being able to tinker with absolutely everything is what makes me feel like a first-class citizen on Linux.

There's a lot of value in sane defaults, and in learning to accept them. Having to tinker and adjust everything quickly becomes a chore.

Windows 10 got a LOT better usability wise, and I still think about moving from macOS and Ubuntu to it from time to time, but it is a privacy nightmare, so my Hackintosh will continue to do just fine.

As a linux user, the upsides of not facing toxic users who are constantly ranting about M$ beats most other things.

All good points, it's good to have alternatives and balance of power. I've been using macOS exclusively since Feb 2014, I like the OS, I like the convenience, but recently I bought a PC to go along with it.

Because the price of my convenience is:

- Want 16GB more of DDR3 2166 RAM in your laptop? $400 please. Paid $320 for 64GB of DDR4 3200 for my PC. Want an iMac with 64GB of DDR4 2666? Pay $1000 to upgrade from the standard 8GB.

- Can't have an NVIDIA GPU (at least not out of the box and even with an eGPU the support isn't first class)

- Can't have an AMD CPU

- Want 1TB SSD? Pay $300 more to upgrade from a hybrid HDD. Want a 2TB SSD? Get a volume discount and pay $700 more! Oh...

- No HDMI port

- honestly... hardly any ports and they "forgot" to include the dongles

- touchbar

- keyboard

- AppleCare - you better buy it because everything is soldered, your warranty is 1 year, and you really don't want to know the price of repair.

I'm reevaluating Linux as a viable choice every year or so too, it's getting better each time, but so do other platforms, so it's always playing catch-up. This year it was GPU drivers again (yes, NVIDIA). I problem solve for a living, but if I spend half my weekend and still can't figure out what's wrong, something is seriously wrong.

So, whatever you choose, you pay.

I have a Windows desktop, a MacBook Pro and a bunch of Thinkpads running Debian or OpenBSD. They are all fine and I don't understand why for some people it is such a big deal.

I don't think my tiny stupid computer is that important. What I run on the server is a much tougher decision.

I'm seriously considering moving back to Windows from Arch. I miss some software. Can you give some downsides of WSL2 so I know you're being impartial (I am) and to help me make a decision. I wasted a few days with WSL1 and don't want to repeat that.

Just minor issues:

You need to be on the insider programmer which forces telemetry and means you have a PITA windows style upgrade every other week (and the nagging associated with it).

Whilst you can read /mnt/c/ you can't read virtual file systems such as Google drive stream /mnt/g/ is just empty.

You need to do a bit of fuckery like pinning your ssh-agent to a known file socket and test this in your bash/zsh startup - not a biggie since you arent starting this off your WM

No X support - there are third party x viewers though but not officially endorsed. So no apps like xkeynav and xkill.

None of the intellij ecosystem have WSL support - sure you can set the terminal to be use wsl.exe but stuff like using your WSL2 distro's openssh config or using the agent running in your WSL2 etc... arent there or coming, VSCode is lightyears ahead in this department due to the way its modelled. Sadly intellij team aren't thinking in the same way of the vscode team, so instead of proxying through a remote demon they are thinking of doing something like reading //wsl$/distro/home/you/.ssh/config instead, hacking WSL support in their ssh/git bits

Need to set max memory in wslconfig too - not so well documented - otherwise your VM will just balloon to fill up all your RAM and windows and windows app will start swapping

We are working on solving that. No promises that we will solve it completely the first time, but it should get better soon.

> You need to be on the insider programmer which forces telemetry and means you have a PITA windows style upgrade every other week (and the nagging associated with it).

FWIW you can upgrade to the Fast Ring version of Windows that gets you WSL 2 and then switch to the Slow Ring that only gives you updates every month or so.

If I got you right about ssh-agent, there is a console frontend https://www.funtoo.org/Keychain.

>None of the intellij ecosystem

If you're doing C or C++ development, CLion does support WSL compilers/debuggers.

It's all hacked in on intellij platform and reading their youtrack that their plan - each plugin bakes in WSL knowledge, where as VSCode basically launches a remote command proxy so it works the same weather WSL2 or a local vbox with ssh or a remote VPS and plugins dont need to change (or do so in a minor away). More an IntelliJ rant I guess

WSL2 aren't shipped with systemd (or any other init processes) out of the box. So you, as an Arch user especially, will have much trouble managing Linux daemons.

If you are an embedded dev keep in mind that USB or any native devices on WSL2 is not supported.

If you are a web dev keep in mind that localhost is not available so that you need to figure out the IP address of WSL2.

> If you are a web dev keep in mind that localhost is not available so that you need to figure out the IP address of WSL2.

Which sounds like a non-issue, but is actually quite annoying, as almost every unconfigured daemon binds to localhost...

This is fixed at least in the fast ring

I think it’s a combination. Apple is getting worse and microsoft is getting better.

MS can't really win against its own Consolas. If you haven't tried Consolas, you owe it to yourself to give it a try. Would be cool if MS opensourced that, if they can.

Consolas has been my favorite monospaced font for years.

I prefer proportional fonts for reading and writing code, and my current favorite is another Microsoft font, Trebuchet MS.

But when I need a monospaced font, like in a terminal, Consolas is it.

> But when I need a proportional font, like in a terminal, Consolas is it.

You mean monospaced font? I’m curious why you use proportional fonts when writing code but not in your terminal.

Whoops, sorry for the very confusing typo, and thanks for noting it! Corrected now. That's what I get for commenting on HN when I should have already called it a night... :-)

With the typo corrected, yes I do prefer proportional fonts (and as mentioned especially Trebuchet MS), and all the editors I use support them. I just find them much more readable to my eyes than monospaced. Except in a terminal where apps assume monospaced font - so that's where Consolas shines.

Unfortunately, it's unlikely that Microsoft has the means to open source Consolas as it (along with most of the rest of the Office C-Family fonts) was a commission from / commercial partnership with Monotype (company/foundry; albeit I think it was Ascender at the time but M&A since then it's definitely Monotype that owns the commercial rights today).

Commercial licensing info: http://catalog.monotype.com/family/microsoft-corporation/con...

MS is a trillion dollar company. It has the means to do whatever it wants to do.

The keyword I used was "unlikely". The point being that it would be a coordinated effort between Microsoft and some other company (Monotype), increasing the unlikelihood, because it would require joint effort. Regardless of Microsoft's market cap, it would still have to deal with the lawyers and royalty concerns of its partner, it couldn't just unilaterally decide to open source it without negotiations. Given the nature of font design, Microsoft may not even have access the "source" for Consolas today, and maybe/probably only licenses the final TTFs from Monotype. (Plus, it's an old enough font that whatever "source" there may exist would only be glyphs in various proprietary formats and build tools/chains that would require conversion to tools more appropriate to open source.)

Yes, Microsoft has the resources to do all of that, given enough time and it becoming enough of a priority, but the likelihood of that becoming a priority one would directly assume is related to how much effort that would take. It would likely take a lot of effort.

10M would make Monotype pee itself. MS does not require board approval for deals $100M or less.

I completely agree, the only monospaced font I've used for the last 5+ years. I am however, giving this one a full go.

And Consolas with ligatures: https://github.com/somq/consolas-ligaturized

No license: can't use.

The font I always fall back to in Visual Studio after trying others. It's so clear.

Did anyone look at some code in Visual Studio with this font.

You'll be surprised how `!=` looks like with this font (C++), it's pretty cool [and I've never seen anything like it before]!

These are called "ligatures".

My long-time favorite font, Iosevka, does 'em too: https://github.com/be5invis/Iosevka#ligations

Another coding font thread from 2017 with some other examples: https://news.ycombinator.com/item?id=15255523

It's font ligatures, it can be enabled by setting CSS `font-variant-ligatures` property with some fonts, such as "Fira Code" font.

> You'll be surprised how `!=` looks like with this font […]

For anyone curious, you can see it here [1] (check the last character).

[1] https://raw.githubusercontent.com/microsoft/cascadia-code/ma...

Not the best decision I think, too much resemblance to the division assignment operator:

    x /= 10;

The last character guessmyname refers to is what '/=' looks like.

It looks different from that, let's have the spoiler: it looks like '=/=', but with the equal signs attached and the forward slash just 'on top' of it.

I think you're trying to describe an elongated `≠`?

Yip. It also contracts the '==', i.e. they are shown attached as one elongated '='.

Someone wants C to look like Haskell?

(as always, the Haskell users have taken it quite a bit further: https://github.com/i-tu/Hasklig/#hasklig--ligatures-for-code )

What do you mean? Fancy symbols in code look rather APL-ish than Haskell-ish. IIRC, while Haskell lets you use variety of Unicode symbols both as function names and operators, they are not very popular amongst Haskellers.

I think the word you’re looking for is “ligature”.

This is something interesting. Just now tried it in VS and it's pretty cool :)

Pet peeve: I think anyone designing a terminal / code font in 2019 should be including Powerline glyphs.

am I the only person who has trouble imagining what a font will look like from just a row of alphanumeric characters? I'm always wishing for a screenshot of it used in complex editor situations when these posts pop up.

No, being just a little unsatisfied with Consolas, I thought this might be the answer, until I loaded it up in VSCode. A little too serif-y.

This font looks great on Emacs, going to move away from Inconsolata!

No umlaute - can't use it. Looks nice though.

Check out PragmataPro. Has everything a man needs.

That's a cool font! Have you tried Operator by Hoefler Text?

Source: https://www.typography.com/blog/introducing-operator

Still can't beat Iosevka Slab.

Keen to try this and see how it stacks up against Dank Mono.

Just tried Cascadia Code with Emacs. I think Monofur is still better for me. Larger, easier to read, and even more number of text lines shown on screen.

> Larger...more number of text lines shown on screen

Surely that's down to the font size, which you can change?

In general, you cannot have Larger text with more number of text lines at the same time.

With Monofur the text are wider and more clear, and, for the same vertical space, more number of lines than Cascadia.

This is a good looking font. Will use it for a while. :)

Been using this font as my daily driver for a few days now - switched from Iosevka to this and I'll be using it for the foreseable future.

Great work Microsoft!

After long time, I found a font which is really eye soothing for windows terminal.

If Powerline support gets added, it will be one of the best.

Scott Hanselman actually published a video on using Cascadia with Powerline! [1]

[1] https://youtu.be/oHhiMf_6exY

It is a nice font, but a bit too wide for my taste.

And not other uses?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact