Merge pull request #1380 from binaricat/fix/issue-1363-nerd-font-glyphs-on-startup
Some checks failed
build-packages / ${{ needs.dedupe.outputs.skip_heavy_ci == 'true' && 'deduped build-linux-x64' || 'build-linux-x64' }} (push) Has been cancelled
build-packages / ${{ needs.dedupe.outputs.skip_heavy_ci == 'true' && 'deduped build-linux-arm64' || 'build-linux-arm64' }} (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / dedupe push run (push) Has been cancelled
build-packages / dedupe result (push) Has been cancelled
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
Some checks failed
build-packages / ${{ needs.dedupe.outputs.skip_heavy_ci == 'true' && 'deduped build-linux-x64' || 'build-linux-x64' }} (push) Has been cancelled
build-packages / ${{ needs.dedupe.outputs.skip_heavy_ci == 'true' && 'deduped build-linux-arm64' || 'build-linux-arm64' }} (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / dedupe push run (push) Has been cancelled
build-packages / dedupe result (push) Has been cancelled
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
fix(terminal): refresh Nerd Font glyphs on cold start (fixes #1363)
This commit is contained in:
@@ -652,6 +652,16 @@ export function useTerminalEffects(ctx: TerminalEffectsContext) {
|
||||
await fontFaceSet.ready;
|
||||
if (cancelled) return;
|
||||
|
||||
// Ensure bundled Nerd Font icon fallbacks are loaded at the terminal's
|
||||
// cell size. Shell prompts can arrive before these faces finish loading
|
||||
// on cold start (Linux), leaving Powerline glyphs cached as tofu (#1363).
|
||||
try {
|
||||
await fontFaceSet.load(`${effectiveFontSize}px "Symbols Nerd Font Mono"`);
|
||||
} catch (err) {
|
||||
logger.warn("Nerd Font preload failed", err);
|
||||
}
|
||||
if (cancelled) return;
|
||||
|
||||
const term = termRef.current as {
|
||||
cols: number;
|
||||
rows: number;
|
||||
@@ -664,6 +674,13 @@ export function useTerminalEffects(ctx: TerminalEffectsContext) {
|
||||
logger.warn("Font remeasure failed", err);
|
||||
}
|
||||
|
||||
// remeasureFont does not invalidate cells rasterized before fonts were ready.
|
||||
xtermRuntimeRef.current?.clearTextureAtlas();
|
||||
const visibleTerm = termRef.current;
|
||||
if (visibleTerm) {
|
||||
forceSyncRenderAfterResize(visibleTerm);
|
||||
}
|
||||
|
||||
try {
|
||||
fitAddon?.fit();
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user