Skip to content

Commit

Permalink
Merge pull request #5001 from Tyriar/powerline_nf
Browse files Browse the repository at this point in the history
Don't rescale powerline or nerd fonts
  • Loading branch information
Tyriar committed Mar 15, 2024
2 parents 44feecf + 6b3d485 commit b7b9d27
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 10 deletions.
29 changes: 23 additions & 6 deletions src/browser/renderer/shared/RendererUtils.ts
Expand Up @@ -23,23 +23,40 @@ export function isRestrictedPowerlineGlyph(codepoint: number): boolean {
return 0xE0B0 <= codepoint && codepoint <= 0xE0B7;
}

function isNerdFontGlyph(codepoint: number): boolean {
return 0xE000 <= codepoint && codepoint <= 0xF8FF;
}

function isBoxOrBlockGlyph(codepoint: number): boolean {
return 0x2500 <= codepoint && codepoint <= 0x259F;
}

export function isEmoji(codepoint: number): boolean {
return (
codepoint >= 0x1F600 && codepoint <= 0x1F64F || // Emoticons
codepoint >= 0x1F300 && codepoint <= 0x1F5FF || // Misc Symbols and Pictographs
codepoint >= 0x1F680 && codepoint <= 0x1F6FF || // Transport and Map
codepoint >= 0x2600 && codepoint <= 0x26FF || // Misc symbols
codepoint >= 0x2700 && codepoint <= 0x27BF || // Dingbats
codepoint >= 0xFE00 && codepoint <= 0xFE0F || // Variation Selectors
codepoint >= 0x1F900 && codepoint <= 0x1F9FF || // Supplemental Symbols and Pictographs
codepoint >= 0x1F300 && codepoint <= 0x1F5FF || // Misc Symbols and Pictographs
codepoint >= 0x1F680 && codepoint <= 0x1F6FF || // Transport and Map
codepoint >= 0x2600 && codepoint <= 0x26FF || // Misc symbols
codepoint >= 0x2700 && codepoint <= 0x27BF || // Dingbats
codepoint >= 0xFE00 && codepoint <= 0xFE0F || // Variation Selectors
codepoint >= 0x1F900 && codepoint <= 0x1F9FF || // Supplemental Symbols and Pictographs
codepoint >= 0x1F1E6 && codepoint <= 0x1F1FF
);
}

export function allowRescaling(codepoint: number | undefined, width: number, glyphSizeX: number, deviceCellWidth: number): boolean {
return (
// Is single cell width
width === 1 &&
// Glyph exceeds cell bounds, + 1 to avoid hurting readability
glyphSizeX > deviceCellWidth + 1 &&
// Never rescale emoji
codepoint !== undefined && !isEmoji(codepoint) &&
// Never rescale powerline or nerd fonts
!isPowerlineGlyph(codepoint) && !isNerdFontGlyph(codepoint)
);
}

export function treatGlyphAsBackgroundColor(codepoint: number): boolean {
return isPowerlineGlyph(codepoint) || isBoxOrBlockGlyph(codepoint);
}
Expand Down
10 changes: 8 additions & 2 deletions typings/xterm-headless.d.ts
Expand Up @@ -144,8 +144,14 @@ declare module '@xterm/headless' {
* Whether to rescale glyphs horizontally that are a single cell wide but
* have glyphs that would overlap following cell(s). This typically happens
* for ambiguous width characters (eg. the roman numeral characters U+2160+)
* which aren't featured in monospace fonts. Emoji glyphs are never
* rescaled. This is an important feature for achieving GB18030 compliance.
* which aren't featured in monospace fonts. This is an important feature
* for achieving GB18030 compliance.
*
* The following glyphs will never be rescaled:
*
* - Emoji glyphs
* - Powerline glyphs
* - Nerd font glyphs
*
* Note that this doesn't work with the DOM renderer. The default is false.
*/
Expand Down
10 changes: 8 additions & 2 deletions typings/xterm.d.ts
Expand Up @@ -213,8 +213,14 @@ declare module '@xterm/xterm' {
* Whether to rescale glyphs horizontally that are a single cell wide but
* have glyphs that would overlap following cell(s). This typically happens
* for ambiguous width characters (eg. the roman numeral characters U+2160+)
* which aren't featured in monospace fonts. Emoji glyphs are never
* rescaled. This is an important feature for achieving GB18030 compliance.
* which aren't featured in monospace fonts. This is an important feature
* for achieving GB18030 compliance.
*
* The following glyphs will never be rescaled:
*
* - Emoji glyphs
* - Powerline glyphs
* - Nerd font glyphs
*
* Note that this doesn't work with the DOM renderer. The default is false.
*/
Expand Down

0 comments on commit b7b9d27

Please sign in to comment.