Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

font-patcher: Fix some Nerd Font Mono too wide #1045

Merged
merged 2 commits into from
Jan 11, 2023

Conversation

Finii
Copy link
Collaborator

@Finii Finii commented Jan 10, 2023

[why]
The 'monospace' width is determined by examining all the 'normal' glyphs and taking the widest one.

'Normal' means 0x00-0x17f: the Latin Extended-A range.

Unfortunately Overpass (Mono) has wide-as-two-letters IJ and ij ligatures.

[how]
Exclude a small sub-range from the 'find the widest glyph' that contain these ligatures. Yes they will kind of break, but what can we do if we want to create a strictly monospaced font?

[note]
Related commit
fbe07b8 Fix Noto too wide

Related: #1043

Requirements / Checklist

What does this Pull Request (PR) do?

Exclude IJ and ij ligatures from the width calculation (for NFM), as they are too wide in the supposed to be monospaced font Overpass Mono.

How should this be manually tested?

Any background context you can provide?

What are the relevant tickets (if any)?

Screenshots (if appropriate or helpful)

[why]
The 'monospace' width is determined by examining all the 'normal' glyphs
and taking the widest one.

'Normal' means 0x00-0x17f: the Latin Extended-A range.

Unfortunately Overpass (Mono) has wide-as-two-letters IJ and ij ligatures.

[how]
Exclude a small sub-range from the 'find the widest glyph' that contain
these ligatures. Yes they will kind of break, but what can we do if we
want to create a strictly monospaced font?

[note]
Related commit
  fbe07b8  Fix Noto too wide

Related: #1043

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii
Copy link
Collaborator Author

Finii commented Jan 10, 2023

Searching systematically for more potentially problematic fonts...

These need a more detailed look at

  • Anonymice ✔️ (is asymmetric)
  • FantastiqueSansMono ✔️ [1]
  • iMWritingMono 🔴 % is wider
  • Inconsolata LGC 🔴 ", ', backtick are wider
  • Meslo LG M ✔️ [1]
  • Monoid ✔️ (font is 'right aligned')
  • OpenDyslexicMono ✔️ (ok with master)
  • ProggyClean TT (seems too narrow) ✔️ (by design two consecutive Ms touch)
  • Roboto Mono 🔴 (Lots of combinations are too wide)
  • Terminess TTF ✔️ (The outline font in this font sucks)

[1] These fonts look bad, probably because they are already Poweline patched and THAT patching went wrong. At least we introduce no new issues.

Codes (hex)

  • 25
  • 22, 27, 60
  • (2D), (66), D0, 10F, 110, 111, 127, 13E, 140, 165

image

image

image

image

image

image

image

image

image

image

@Finii Finii added this to the v2.3.0 milestone Jan 10, 2023
[why]
The 'monospace' width is determined by examining all the 'normal' glyphs
and taking the widest one.

'Normal' means 0x00-0x17f: the Latin Extended-A range.

Unfortunately some fonts that claim to be monospaced still have some
glyphs that are wider than the others.

[how]
Exclude a small group of glyphs from the 'find the widest glyph'.
The list is specifically targetted at the fonts we patch, see PR #1045.

Most of these glyphs are either visually small and it is unclear why
they are too wide (like double-quotes), or they are from the real
extended set, notably all the Eth (D with a slash) and other added-slash
or added-caron glyphs.

In ignoring them we might 'break' these specific glyphs for the people
who use them (like: they extend out of the cell into the next), but that
is the only way to keep the 'monospaced promise' without redesigning the
actual font.
But without these exceptions we have Nerd Font Mono fonts that increase
the cell width so that 'normal text' is rendered almost unreadable.
So this is an improvement for most users; and I see no way so solve
these font issues for all users (without redesigning the font itself ;).

Also add a 'warning' if a (still) problematic font is to be patched.
As reminder for self-patcher or when we add fonts here.

[note]
Related commit
  fbe07b8  Fix Noto too wide
  2945cec  Fix Overpass Mono too wide

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii changed the title font-patcher: Fix Overpass Mono too wide font-patcher: Fix some Nerd Font Mono too wide Jan 11, 2023
@Finii Finii merged commit 99c2608 into master Jan 11, 2023
@Finii Finii deleted the bugfix/OverpassMono-hspacing branch January 11, 2023 11:58
LNKLEO pushed a commit to LNKLEO/Nerd that referenced this pull request Nov 24, 2023
[why]
The 'monospace' width is determined by examining all the 'normal' glyphs
and taking the widest one.

'Normal' means 0x00-0x17f: the Latin Extended-A range.

Unfortunately some fonts that claim to be monospaced still have some
glyphs that are wider than the others.

[how]
Exclude a small group of glyphs from the 'find the widest glyph'.
The list is specifically targetted at the fonts we patch, see PR ryanoasis#1045.

Most of these glyphs are either visually small and it is unclear why
they are too wide (like double-quotes), or they are from the real
extended set, notably all the Eth (D with a slash) and other added-slash
or added-caron glyphs.

In ignoring them we might 'break' these specific glyphs for the people
who use them (like: they extend out of the cell into the next), but that
is the only way to keep the 'monospaced promise' without redesigning the
actual font.
But without these exceptions we have Nerd Font Mono fonts that increase
the cell width so that 'normal text' is rendered almost unreadable.
So this is an improvement for most users; and I see no way so solve
these font issues for all users (without redesigning the font itself ;).

Also add a 'warning' if a (still) problematic font is to be patched.
As reminder for self-patcher or when we add fonts here.

[note]
Related commit
  fbe07b8  Fix Noto too wide
  2945cec  Fix Overpass Mono too wide

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant