Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix broken ligature glyphs in monospaced font (#12)
* Fix broken ligature glyphs in monospaced font [why] For some reason reading a font into fontforge looses data on glyphs. As a workaround their `font-patcher` script has the switch `--mono` to ascertain an equal width of all glyphs. We want to (and need to) use that mode of the script to get a new font that is detected as monospaced by Windows. Sometimes that workaround fails. For example it breaks ligature glyphs in some circumstances; they seem to be moved sideways. [how] The workaround is done in two steps: First each glyph is checked for negative bearings. If these are found they are set to fixed zero. Afterwards the glyph width is set to the font global width. The ligature glyphs have already the correct width, they just have negative bearings that they indeed need. There is no reason to change the (correct) bearings to get a monospaced font. In strict monospaced fonts that would be impossible, but the ligatures are only used in applications that could work with negative bearings and so they should be there. Strict monospaced usage does ignore the bearings anyhow. So what is needed is a change in the font-patcher script. This can be done in two ways: - patch the font-patcher script - do not use font-patcher's `--mono` and instead implement it as part of our rename script or additional script Of course the best solution would be to fix upstream font-patcher. But that might take some time. Meanwhile we can patch the font-patcher as it is rather stable (no recent commits) and our patch will most likely not fail in the near future. Forking font-patcher is not desirable I think. [note] There is some work in progress regarding Cascadia Code in Nerd Font's repository, but that seems slow ;) Project too big. Fixes: 3 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de> * Fix broken diacritic glyphs in monospaced font [why] Some glyphs are just used as overlays for 'real' glyphs. These are for example U+0300 .. U+036F (the 'COMBINING ...' diactritics) like U+0300, gravecomb, COMBINING GRAVE ACCENT U+0301, acutecomb, COMBINING ACUTE ACCENT U+0308, uni0308, COMBINING DIAERESIS They are never used on their own, at least they are overlayed over a blanc (U+0020, space). For the font rendering engine they need to have the correct negative bearings, so they are shifted to take no space by themselves. The font-patcher script does not allow negative bearings in monospaced fonts. This makes sense if every glyph is in itself a 'letter' that should not reach beyond it's allotted (monospaced) space. But well, this is not how Cascadia Code is assembled. [how] In the font-patcher script we do not touch the bearings of such overlay glyphs. They can be identified by their width of zero. For Windows to detect this font as 'monospaced' we need to change the width to the standard width, though. Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
- Loading branch information