Mitchell Hashimoto
๐ค PersonAppearances Over Time
Podcast Appearances
If Ghostly can build and run, then that's a pretty good, it's a pretty good sort of like big integration test, right, for the whole compiler.
If Ghostly can build and run, then that's a pretty good, it's a pretty good sort of like big integration test, right, for the whole compiler.
I have to laugh at that because the joke I always make about my work on Ghosty is that what I really ended up building, 70% of my time, I'm just building font rendering and the other 30% of my time is a terminal emulator. So I think that the really big hairy thing, is really font rendering. It is a minefield. And when I say font rendering, I don't mean just reading a font file and drawing a glyph.
I have to laugh at that because the joke I always make about my work on Ghosty is that what I really ended up building, 70% of my time, I'm just building font rendering and the other 30% of my time is a terminal emulator. So I think that the really big hairy thing, is really font rendering. It is a minefield. And when I say font rendering, I don't mean just reading a font file and drawing a glyph.
I mean, everything from Unicode handling, emoji, skin tone emoji, East Asian languages, and then drawing them as well. I mean, that whole path is... A crazy mess. And even just today, just total coincidence today, I tweeted about a bug I found with skin tone emoji. And that's just a coincidence. But my life has been dominated by font rendering. But luckily, I found a lot of joy when I get...
I mean, everything from Unicode handling, emoji, skin tone emoji, East Asian languages, and then drawing them as well. I mean, that whole path is... A crazy mess. And even just today, just total coincidence today, I tweeted about a bug I found with skin tone emoji. And that's just a coincidence. But my life has been dominated by font rendering. But luckily, I found a lot of joy when I get...
when I get it fixed, but I've been shocked by how much time I spend thinking about it.
when I get it fixed, but I've been shocked by how much time I spend thinking about it.
I thought it was in the past. I always think it's in the past, and here we are. Right, you think it's done, and then there's another bug. But today, it's done today. We're good. Now it's in the past.
I thought it was in the past. I always think it's in the past, and here we are. Right, you think it's done, and then there's another bug. But today, it's done today. We're good. Now it's in the past.
There's a lot of layers. And it is to some artistic, right? The way fonts look and stuff. And there's not a pixel perfect specification that says... that given this font and these characters, whatever, this is how it looks. It really is mathematical with a lot of wiggle room in terms of how much anti-aliasing you use, the spacing, where it floats on the line. There's a lot of wiggle room.
There's a lot of layers. And it is to some artistic, right? The way fonts look and stuff. And there's not a pixel perfect specification that says... that given this font and these characters, whatever, this is how it looks. It really is mathematical with a lot of wiggle room in terms of how much anti-aliasing you use, the spacing, where it floats on the line. There's a lot of wiggle room.
And so I think in addition to sort of the core technical challenges of so many different phases of fonts, there's also like people that just come up and say, it doesn't look good. Nothing's wrong. I just don't like the way it looks. And then you kind of have to dig into why that is. And Ghosty provides a ton of knobs for those people to get fonts looking the way you want.
And so I think in addition to sort of the core technical challenges of so many different phases of fonts, there's also like people that just come up and say, it doesn't look good. Nothing's wrong. I just don't like the way it looks. And then you kind of have to dig into why that is. And Ghosty provides a ton of knobs for those people to get fonts looking the way you want.
And then our gold standard has basically been we want our fonts to look like Mac default. So like TextEdit, honestly, is our gold standard. The way text looks in TextEdit is the way it's going to look in Ghosty by default. So yeah, that's been that. But I think also just finding... all the layers I never thought about.
And then our gold standard has basically been we want our fonts to look like Mac default. So like TextEdit, honestly, is our gold standard. The way text looks in TextEdit is the way it's going to look in Ghosty by default. So yeah, that's been that. But I think also just finding... all the layers I never thought about.
So I think the first one that shocked me that I had never considered as an engineer was how do you pick a default font? You have a monospace application. In a web browser, you say font family monospace, and the web browser picks it for you. Right, like a fallback. Yeah, there's that...
So I think the first one that shocked me that I had never considered as an engineer was how do you pick a default font? You have a monospace application. In a web browser, you say font family monospace, and the web browser picks it for you. Right, like a fallback. Yeah, there's that...
doesn't exist at the os level right you have a list doesn't no you have a list of fonts they have different properties some are monospace and not that's an easy one to just break down but within the monospace now you have a bunch of different ones and like how do you choose which one you want to use and it has to be deterministic because if they launch their terminal every time and you choose a different monospace font it's going to be a problem and so yeah it doesn't exist and so like that was the first thing where i was like
doesn't exist at the os level right you have a list doesn't no you have a list of fonts they have different properties some are monospace and not that's an easy one to just break down but within the monospace now you have a bunch of different ones and like how do you choose which one you want to use and it has to be deterministic because if they launch their terminal every time and you choose a different monospace font it's going to be a problem and so yeah it doesn't exist and so like that was the first thing where i was like