Skip to content

Commit

Permalink
Merge pull request #4003 from Tyriar/liga_no_node
Browse files Browse the repository at this point in the history
Remove node target from ligatures
  • Loading branch information
Tyriar authored Aug 4, 2022
2 parents 409cb4b + f0926e7 commit c021571
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 88 deletions.
15 changes: 3 additions & 12 deletions addons/xterm-addon-ligatures/src/font.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
* @license MIT
*/

import { FontList } from 'font-finder';
import { Font, loadBuffer, loadFile } from 'font-ligatures';
import { Font, loadBuffer } from 'font-ligatures';

import parse from './parse';

Expand All @@ -24,7 +23,7 @@ interface IFontAccessNavigator {
};
}

let fontsPromise: Promise<FontList | Record<string, IFontMetadata[]>> | undefined = undefined;
let fontsPromise: Promise<Record<string, IFontMetadata[]>> | undefined = undefined;

/**
* Loads the font ligature wrapper for the specified font family if it could be
Expand Down Expand Up @@ -81,14 +80,6 @@ export default async function load(fontFamily: string, cacheSize: number): Promi
console.error(err.name, err.message);
}
}
// Node environment or no font access API
else {
try {
fontsPromise = (await import('font-finder')).list();
} catch (err) {
// No-op
}
}
if (!fontsPromise) {
fontsPromise = Promise.resolve({});
}
Expand All @@ -110,7 +101,7 @@ export default async function load(fontFamily: string, cacheSize: number): Promi
const buffer = await bytes.arrayBuffer();
return loadBuffer(buffer, { cacheSize });
}
return await loadFile(font.path, { cacheSize });
return undefined;
}
}

Expand Down
70 changes: 0 additions & 70 deletions addons/xterm-addon-ligatures/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,76 +69,6 @@ describe('xterm-addon-ligatures', () => {
assert.deepEqual(term.joiner!(input), []);
});

it('returns the correct set of ranges once the font has loaded', done => {
assert.deepEqual(term.joiner!(input), []);
onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
done();
});
});

it('handles quoted font names', done => {
term.options.fontFamily = '"Fira Code", monospace';
assert.deepEqual(term.joiner!(input), []);
onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
done();
});
});

it('falls back to later fonts if earlier ones are not present', done => {
term.options.fontFamily = 'notinstalled, Fira Code, monospace';
assert.deepEqual(term.joiner!(input), []);
onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
done();
});
});

it('uses the current font value', done => {
// The first three calls are all synchronous so that we don't allow time for
// any fonts to load while we're switching things around
term.options.fontFamily = 'Fira Code';
assert.deepEqual(term.joiner!(input), []);
term.options.fontFamily = 'notinstalled';
assert.deepEqual(term.joiner!(input), []);
term.options.fontFamily = 'Iosevka';
assert.deepEqual(term.joiner!(input), []);
onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4]]);

// And switch it back to Fira Code for good measure
term.options.fontFamily = 'Fira Code';

// At this point, we haven't loaded the new font, so the result reverts
// back to empty until that happens
assert.deepEqual(term.joiner!(input), []);

onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
done();
});
});
});

it('allows multiple terminal instances that use different fonts', done => {
const onRefresh2 = sinon.stub();
const term2 = new MockTerminal(onRefresh2);
term2.options.fontFamily = 'Iosevka';
ligatureSupport.enableLigatures(term2 as any);

assert.deepEqual(term.joiner!(input), []);
onRefresh.callsFake(() => {
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
assert.deepEqual(term2.joiner!(input), []);
onRefresh2.callsFake(() => {
assert.deepEqual(term2.joiner!(input), [[2, 4]]);
assert.deepEqual(term.joiner!(input), [[2, 4], [7, 10]]);
done();
});
});
});

it('fails if it finds but cannot load the font', async () => {
term.options.fontFamily = 'Nonexistant Font, monospace';
assert.deepEqual(term.joiner!(input), []);
Expand Down
2 changes: 1 addition & 1 deletion addons/xterm-addon-ligatures/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* @license MIT
*/

import { Terminal } from 'xterm';
import type { Terminal } from 'xterm';
import { Font } from 'font-ligatures';

import load from './font';
Expand Down
11 changes: 6 additions & 5 deletions addons/xterm-addon-ligatures/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,19 @@ module.exports = {
},
mode: 'production',
externals: {
'font-finder': 'font-finder',
'fs': 'fs',
'path': 'path',
'stream': 'stream',
'os': 'os',
'util': 'util'
},
resolve: {
// The ligature modules contains fallbacks for node environments, we never want to browserify them
fallback: {
stream: false,
util: false,
fs: false,
os: false,
path: false
path: false,
stream: false,
util: false
}
}
};

0 comments on commit c021571

Please sign in to comment.