-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Description
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
- Move Devicons just after Seti-UI + Custom.
- Move Material to U+E700..U+EF47.
- Pros - Material will be still in a cluster.
- Cons - Two glyph sets will be moved.
plan 2
- 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?