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;
|
await fontFaceSet.ready;
|
||||||
if (cancelled) return;
|
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 {
|
const term = termRef.current as {
|
||||||
cols: number;
|
cols: number;
|
||||||
rows: number;
|
rows: number;
|
||||||
@@ -664,6 +674,13 @@ export function useTerminalEffects(ctx: TerminalEffectsContext) {
|
|||||||
logger.warn("Font remeasure failed", err);
|
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 {
|
try {
|
||||||
fitAddon?.fit();
|
fitAddon?.fit();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user