mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-12-31 02:32:13 +00:00
I've cleaned up the code we use for scaling and positioning glyphs for raster, under both CoreText and FreeType. Before we had some imprecision, and under CoreText we were sometimes stretching glyphs in unseemly ways. These changes make it so that our constraints can position and size glyphs *exactly* and we don't have any chopped-off row/column issues for CoreText. With this, PowerLine Extra symbols now always align *perfectly* with the cell height: ||Before|After| |-:|-|-| |**CoreText**|<img width="105" height="245" alt="image" src="https://github.com/user-attachments/assets/d3c1b1cb-a798-4e18-a0e0-59551893369c" />|<img width="106" height="246" alt="image" src="https://github.com/user-attachments/assets/dac10c49-9ec1-4f4f-8825-a5e8c2fd3402" />| |**FreeType**|<img width="105" height="245" alt="image" src="https://github.com/user-attachments/assets/160e1e35-4a3c-42d0-9042-215301e636a1" />|<img width="106" height="245" alt="image" src="https://github.com/user-attachments/assets/89bf1538-7271-4baf-88c0-51ebc4d360df" />| The other changes are mainly just cleanup stuff, though one of the changes makes it so that we do once again properly apply constraints to symbols from the dingbats block (it was a regression, noted in #7955, that we stopped doing that). ### Future work This has been a problem since we introduced the custom constraints, but I noticed it while preparing the before/after images: the left-edge PLE symbols (meant to connect to a full block on the right) expand out to the *right*, so if they're followed immediately by another character than they actually get squished and don't match the right-edge symbols: <img width="75" height="114" alt="image" src="https://github.com/user-attachments/assets/1420b9a5-9950-4210-9934-8ef7cd7a1e19" /> I have a WIP change to move constraint logic to the shapers, and at that point we can maybe do something to allow the constraint to grow in to whitespace on the left side instead of on the right side.