这是indexloc提供的服务,不要输入任何密码
Skip to content

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

@delphinus

Description

@delphinus

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?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions