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

[Suggestion] Fix invalid code points for some glyphs #365

Closed
delphinus opened this issue Aug 2, 2019 · 31 comments · Fixed by #773
Closed

[Suggestion] Fix invalid code points for some glyphs #365

delphinus opened this issue Aug 2, 2019 · 31 comments · Fixed by #773

Comments

@delphinus
Copy link
Collaborator

delphinus commented Aug 2, 2019

Summary

The current builds overwrites some code points that Unicode Consorthium prohibits to use for custom glyphs. I want to change this by fixing font_patcher.

Problem Detail

Unicode defines Private Use Areas and the consorthium itself decide not to add characters on these areas. So we can add glyphs as we like.

The areas has these code points: U+E000..U+F8FF, U+F0000..U+FFFFD, U+100000..U+10FFFD.

But the Nerd Fonts is overwriting more code points than them. The font_patcher writes glyphs as below.

  • source: the ones from source font files.
  • current: the ones font_patcher writes into.
Font Name source current plan 1 plan 2
Seti-UI + Custom E4FA-E52E E5FA-E62E
Devicons E600-E6C5 E700-E7C5 E630-E6F6 E700-E7C5 (not changed)
Powerline Symbols E0A0-E0B3
Powerline Extra Symbols E0A3-E0D4
Pomicons E000-E00A
Font Awesome F000-F2E0
Font Awesome Extension E000-E0A9 E200-E2A9
Power Symbols 23FB-2B58
Material F001-F847 F500-FD46 E700-EF47 F500-F8FF,E800-EC47
Weather Icons F000-F0EB E300-E3EB
Font Logos (Font Linux) F100-F11C F300-F31C
Octicons F000-F105 F400-F505
Octicons 2665-2665
Octicons 26A1-26A1
Octicons F27C-F27C F4A9-F4A9

It is the problem that font_patcher writes glyphs from Material into the range: U+F500 - U+FD46. This range overlaps areas that should not use for such purpose.

area name
U+F900..U+FAFF CJK Compatibility Ideographs
U+FB00..U+FB4F Alphabetic Presentation Forms
U+FB50..U+FDFF Arabic Presentation Forms-A

Suggestion

So I suggest two plans to solve this.

plan 1

  1. Move Devicons just after Seti-UI + Custom.
  2. Move Material to U+E700..U+EF47.
  • Pros - Material will be still in a cluster.
  • Cons - Two glyph sets will be moved.

plan 2

  1. Move and separate Material into U+F500..U+F8FF, U+E800-U+EC47.
  • Pros - Only one set will be moved.
  • Pros - The former part of Material still has the same code points.
  • Cons - Material will be separated into two clusters.

I prefer plan 2 because it has less impact on the current builds. How do you think?

@ryanoasis
Copy link
Owner

Thanks a lot @delphinus . I appreciate the thought you put into this.

To be completely honest I wasn't careful enough to be sure the ranges remained within the Private Use Areas. We should definitely make sure to stay within the PUAs going forward 😊

I think I like plan 2 or some variation of it as well. I would prefer plan 1 for something that wouldn't be a major release (e.g. 2.x.x).

We need to decide if we are following semver strictly or not, if strictly then this would technically be a breaking change either way and would require us to version as 3.x but at the same time it would "feel" wrong to bump to version 3 if this was the only major change.

Good plans and suggestions here and I am mostly in agreement with you. I am wondering about versioning and what exactly the ranges should/could be 😃

@delphinus
Copy link
Collaborator Author

Thanks for agreement. The changes will be a breaking change indeed. But for releasing v3.0.0, the “CHANGES” might be so less than the ones in v2.0.0. 🤔

@ryanoasis
Copy link
Owner

Yeah, your recommendation makes complete sense and obvious some changes need to happen.


But for releasing v3.0.0, the “CHANGES” might be so less than the ones in v2.0.0. thinking

Sorry, I didn't quite follow, can you elaborate?

@delphinus
Copy link
Collaborator Author

I see there are a lot of changes in v1.1.0 → v2.0.0. But if you use v3.0.0 this time, v2.0.0 → v3.0.0 will have 1 diff (this issue) only. I was just curious. ;)

@ryanoasis
Copy link
Owner

I get you now. I am thinking 3.0 would have this change and many others: update to material design, and other icon additions and programming fonts. I would like to do a 2.1 release soon, next one might be a big that 3.0 major.

@aaronbell
Copy link

Can you provide an update regarding this issue? That the Material Design set overrides non-PUA codepoints is a significant issue.

@ryanoasis
Copy link
Owner

ryanoasis commented Jan 21, 2020

@aaronbell Unfortunately the update I am going to give is not what you want to hear: There really are no updates on any forward momentum on moving the Material Design codepoints. However, I am back at trying to get a release out, after that this is likely one of the top priorities. This will be a breaking change as far as Nerd Fonts goes so it would be a 3.0 release. I agree it is a significant issue.

Hope that helps.

@ryanoasis ryanoasis added this to the v3.0.0 milestone Jan 21, 2020
@aaronbell
Copy link

@ryanoasis Thanks Ryan. Too bad. Unfortunately, I will not be adding full Nerd Fonts support to Cascadia Code until v3.0 is released as I am unwilling to include Material Design icons in their current location. International interoperability takes precedent.

@ryanoasis
Copy link
Owner

@aaronbell I completely understand that position. Absolutely international support takes precedent as it should. The whole code points seeping outside of PUA is a big mistake on my part.

While there has been no momentum of the fix in terms of code I did start to group tasks under a new 3.0 milestone and there definitely is a pressure to make it right.

Thanks for your valuable input and straightforwardness.

freswa pushed a commit to freswa/i3status-rust that referenced this issue Jul 21, 2021
NerdFonts has one big issue. They overwrite code points which are
reserved for chinese and arabic letters (range 0xf500-0xfd46).
While overwriting chinese letters is bad, they are LTR glyphs and print
"normally".
`net_loopback` and `update` used to be symbols that usually map
to arabic letters which make pango print those strings RTL. I
tried to fix this with the LTR marker 0x200e in greshake#1206 but it failed.
This PR replaces the symbols with similar ones that don't map to
the arabic charset.
nerd-font issue: ryanoasis/nerd-fonts#365
fixes greshake#1206
@trallnag
Copy link

trallnag commented Oct 8, 2021

How difficult is it to move glyphs to another location? I guess the font patcher needs to be adjusted?

XenoPhex added a commit to XenoPhex/nvim-navic that referenced this issue May 3, 2023
XenoPhex added a commit to XenoPhex/nvim-navic that referenced this issue May 3, 2023
XenoPhex added a commit to XenoPhex/dashboard-nvim that referenced this issue May 3, 2023
XenoPhex added a commit to XenoPhex/lsp_signature.nvim that referenced this issue May 3, 2023
XenoPhex added a commit to XenoPhex/fzf-lua that referenced this issue May 3, 2023
ray-x pushed a commit to ray-x/lsp_signature.nvim that referenced this issue May 3, 2023
glepnir pushed a commit to nvimdev/dashboard-nvim that referenced this issue May 3, 2023
tfkhim added a commit to tfkhim/dotfiles that referenced this issue May 3, 2023
Nerd Font changed the code points of Material glyphs. Formerly those
glyphes used code points that were prohibited for custom glyphs [1].

[1] ryanoasis/nerd-fonts#365
scottames referenced this issue in scottames/dots May 5, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ryanoasis/nerd-fonts](https://togithub.com/ryanoasis/nerd-fonts) |
major | `v2.3.3` -> `v3.0.0` |

---

### Release Notes

<details>
<summary>ryanoasis/nerd-fonts</summary>

###
[`v3.0.0`](https://togithub.com/ryanoasis/nerd-fonts/releases/tag/v3.0.0)

[Compare
Source](https://togithub.com/ryanoasis/nerd-fonts/compare/v2.3.3...v3.0.0)

***Update: Preparation already for a bugfix release, see known bugs
[here](https://togithub.com/ryanoasis/nerd-fonts/milestone/26)***

This major release introduces some breaking changes:

##### Breaking 1: Naming

This release fixes some long standing issues that are due to the naming
of the fonts: There is a completely new naming scheme. This might be
inconvientient for existing setups, sorry.

- Some fonts will have `Nerd Font` in the name while other have it
abbreviated as `NF`. This is needed because some names just were too
long. (Same for `Nerd Font Mono` and `NFM`.)
- There are no `Windows Compatible` fonts anymore. All fonts work on all
platforms.
- The `Complete` from the font names (and the repo directories) has been
dropped (Complete is the new normal).
- The name parts will be ordered as expected with style and weight last
(`Somefont Bold Nerd Font` -> `Somefont Nerd Font Bold`).
-   The filename will have no blanks anymore.

##### Breaking 2: Material Design Icons Codepoints

The old Material Design Icon codepoints are finally dropped. Due to an
historic mistace we placed them in between some asiatic glyphs, breaking
that script.
Since v2.3.0 the (updated and expanded) Material Design Icons have new
codepoints in the 5 digit region.

-   Dropped codepoints `F500`... and class names `nf-mdi-*`
- New codepoints `F0001`... and class names `nf-md-*` (already since
`v2.3.0`)
- The whole discussions are here:
[https://github.com/ryanoasis/nerd-fonts/issues/365](https://togithub.com/ryanoasis/nerd-fonts/issues/365)
- A translation table is available here:
[https://github.com/ryanoasis/nerd-fonts/issues/1059#issuecomment-1404891287](https://togithub.com/ryanoasis/nerd-fonts/issues/1059#issuecomment-1404891287)
- There are tools out there that probably can update your configuration.
- Relevant thread:
[#&#8203;1190](https://togithub.com/ryanoasis/nerd-fonts/issues/1190)

Otherwise this is a 'Update release', so now the good stuff:

##### Updates

-   Update `Agave` to v37
-   Update `Arimo` to 1.33
-   Update `DaddyTimeMono` to 1.2.3
-   Update `Fira Mono` to 3.206
-   Update `Go Mono` to 2.010
-   Update `Hermit` to 2.0
-   Update `IBM Plex` to 2.3
-   Update `Iosevka` to 22.1.0
-   Update `Literation` to 2.1.5
-   Update `Lilex` to 2.000
-   Update `mononoki` to 1.6
-   Update `MPlus` to ... current
-   Update `Overpass` to 3.0.5
-   Update `Roboto Mono` to 3.0
-   Update `Source Code Pro` to 2.038
-   Update `Terminus` to 4.49.2
-   Update `Victor Mono` to 1.5.4
-   Update the Octicons set to 18.3.0

##### Features

-   New font `ComicShannsMono`
-   New variant in release `Nerd Font Propo` for GUI usecases
-   Patch in heavy angle brackets
-   Patch in boxdrawing glyphs (if the font has no complete set)
-   Repair Panose info if source font has broken data
-   Reform PowerlineExtra sizing
-   Autocreate a `FontPatcher.zip` from `HEAD`
-   Create a json database with css names
-   Disentangle `Iosevka` into two packets (one for `Iosevka Term`)
- Add option to manipulate `xAvgCharWidth` (needed rarely by
self-patchers)
-   Add option to allow italic-less fonts with oblique
-   Add `--debug` and `--dry` to `font-patcher`
-   Add logging into file to `font-patcher`
- Add `NERDFONTS` environment variable to transport options through
`gotta-patch-em`

##### Improvements

- Fix `Caskaydia Code` height different to `Cascadia Code` (hinting
problem) (font is now `ttf` instead of `otf`!)

##### Fixes

-   Fix baseline to basline distance (line gap) for some fonts
-   Fix weather icons cloud scaling
-   Fix UniqueID of the fonts
- Fix `Bitstream Vera` name: Is now `Bitstrom Wera` due to licensing
issue
-   No fix, but: Drop support for Python 2

#### New Contributors

- [@&#8203;Goooler](https://togithub.com/Goooler) made their first
contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1079](https://togithub.com/ryanoasis/nerd-fonts/pull/1079)
- [@&#8203;MicaelJarniac](https://togithub.com/MicaelJarniac) made their
first contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1100](https://togithub.com/ryanoasis/nerd-fonts/pull/1100)
- [@&#8203;teatimeguest](https://togithub.com/teatimeguest) made their
first contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1119](https://togithub.com/ryanoasis/nerd-fonts/pull/1119)
- [@&#8203;b-](https://togithub.com/b-) made their first contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1044](https://togithub.com/ryanoasis/nerd-fonts/pull/1044)
- [@&#8203;Weltolk](https://togithub.com/Weltolk) made their first
contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1163](https://togithub.com/ryanoasis/nerd-fonts/pull/1163)
- [@&#8203;sullrich84](https://togithub.com/sullrich84) made their first
contribution in
[https://github.com/ryanoasis/nerd-fonts/pull/1166](https://togithub.com/ryanoasis/nerd-fonts/pull/1166)

**Full Changelog**:
ryanoasis/nerd-fonts@v2.3.3...v3.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/scottames/dots).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43MS4wIiwidXBkYXRlZEluVmVyIjoiMzUuNzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
KGB33 added a commit to KGB33/.dotfiles that referenced this issue May 6, 2023
tobyvin added a commit to tobyvin/.dotfiles that referenced this issue May 15, 2023
ibhagwan pushed a commit to ibhagwan/fzf-lua that referenced this issue May 16, 2023
ajvondrak added a commit to ajvondrak/euclid that referenced this issue May 18, 2023
Nerd Font 3.0.0 removed the old Material Design icons and replaced them
with different codepoints, ugh.

Ref: ryanoasis/nerd-fonts#365
uwabami added a commit to uwabami/fsmrmp that referenced this issue Aug 23, 2023
* Use Noto Emoji (monochrome) instead of Twitter Color Emoji SVGinOT
* Use Nerd icons because fixed issue: ryanoasis/nerd-fonts#365

Signed-off-by: Youhei SASAKI <[email protected]>
@github-actions
Copy link
Contributor

This issue has been automatically locked since there has not been any recent activity (i.e. last half year) after it was closed. It helps our maintainers focus on the active issues. If you have found a problem that seems similar, please open a new issue, complete the issue template with all the details necessary to reproduce, and mention this issue as reference.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 30, 2023
LNKLEO pushed a commit to LNKLEO/Nerd that referenced this issue Nov 24, 2023
LNKLEO pushed a commit to LNKLEO/Nerd that referenced this issue Nov 24, 2023
[why]
Material Design Icons has grown quite a bit.

[how]
Add the icons at their original position which is in PUA1.
Use the desktop font instead of the webfont.
Add cheat cheat file.

Fixes: ryanoasis#365

Signed-off-by: Fini Jastrow <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.