From 956c7cbcba5dd5e0300c84203e074f32c0c66abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Breitbart?= Date: Fri, 4 Oct 2024 04:00:20 +0200 Subject: [PATCH] demo tests --- .../typings/addon-web-fonts.d.ts | 4 +- addons/addon-web-fonts/webpack.config.js | 2 +- demo/bpdots.regular.otf | Bin 0 -> 48296 bytes demo/client.ts | 23 +++- demo/index.html | 4 + demo/kongtext.regular.ttf | Bin 0 -> 10280 bytes demo/server.js | 3 + demo/style.css | 112 ------------------ 8 files changed, 31 insertions(+), 117 deletions(-) create mode 100644 demo/bpdots.regular.otf create mode 100644 demo/kongtext.regular.ttf diff --git a/addons/addon-web-fonts/typings/addon-web-fonts.d.ts b/addons/addon-web-fonts/typings/addon-web-fonts.d.ts index c353a421..9be3de21 100644 --- a/addons/addon-web-fonts/typings/addon-web-fonts.d.ts +++ b/addons/addon-web-fonts/typings/addon-web-fonts.d.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2017 The xterm.js authors. All rights reserved. + * Copyright (c) 2024 The xterm.js authors. All rights reserved. * @license MIT */ @@ -13,7 +13,7 @@ declare module '@xterm/addon-web-fonts' { */ export class WebFontsAddon implements ITerminalAddon { /** - * @param forceInitialRelayout Force an initial relayout, if a webfont was found. + * @param forceInitialRelayout Force initial relayout, if a webfont was found (default true). */ constructor(forceInitialRelayout?: boolean); public activate(terminal: Terminal): void; diff --git a/addons/addon-web-fonts/webpack.config.js b/addons/addon-web-fonts/webpack.config.js index c73a60ba..f75d2d50 100644 --- a/addons/addon-web-fonts/webpack.config.js +++ b/addons/addon-web-fonts/webpack.config.js @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * Copyright (c) 2024 The xterm.js authors. All rights reserved. * @license MIT */ diff --git a/demo/bpdots.regular.otf b/demo/bpdots.regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..e5b5d1dcb74e06e7719aefbe81fd356e6257c1a7 GIT binary patch literal 48296 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 literal 0 HcmV?d00001 diff --git a/demo/client.ts b/demo/client.ts index d125bfee..d5e9fc08 100644 --- a/demo/client.ts +++ b/demo/client.ts @@ -23,7 +23,7 @@ import { FitAddon } from '@xterm/addon-fit'; import { LigaturesAddon } from '@xterm/addon-ligatures'; import { SearchAddon, ISearchOptions } from '@xterm/addon-search'; import { SerializeAddon } from '@xterm/addon-serialize'; -import { WebFontsAddon } from '@xterm/addon-web-fonts'; +import { WebFontsAddon, loadFonts } from '@xterm/addon-web-fonts'; import { WebLinksAddon } from '@xterm/addon-web-links'; import { WebglAddon } from '@xterm/addon-webgl'; import { Unicode11Addon } from '@xterm/addon-unicode11'; @@ -252,6 +252,7 @@ if (document.location.pathname === '/test') { addVtButtons(); initImageAddonExposed(); testEvents(); + testWebfonts(); } function createTerminal(): void { @@ -268,7 +269,7 @@ function createTerminal(): void { backend: 'conpty', buildNumber: 22621 } : undefined, - fontFamily: '"Roboto Mono", "Fira Code", courier-new, courier, monospace, "Powerline Extra Symbols"', + fontFamily: '"Fira Code", courier-new, courier, monospace, "Powerline Extra Symbols"', theme: xtermjsTheme } as ITerminalOptions); @@ -1427,3 +1428,21 @@ function testEvents(): void { document.getElementById('event-focus').addEventListener('click', ()=> term.focus()); document.getElementById('event-blur').addEventListener('click', ()=> term.blur()); } + +function testWebfonts() { + document.getElementById('webfont-kongtime').addEventListener('click', async () => { + const ff = new FontFace('Kongtext', "url(/kongtext.regular.ttf) format('truetype')"); + await loadFonts([ff]); + term.options.fontFamily = 'Kongtext'; + term.options.lineHeight = 1.3; + addons.fit.instance?.fit(); + }); + document.getElementById('webfont-bpdots').addEventListener('click', async () => { + document.styleSheets[0].insertRule("@font-face { font-family: 'BPdots'; src: url(/bpdots.regular.otf) format('opentype'); weight: 400 }", 0); + await loadFonts(['BPdots']); + term.options.fontFamily = 'BPdots'; + term.options.lineHeight = 1.3; + term.options.fontSize = 20; + addons.fit.instance?.fit(); + }); +} diff --git a/demo/index.html b/demo/index.html index 06451847..a5673481 100644 --- a/demo/index.html +++ b/demo/index.html @@ -116,6 +116,10 @@
Events Test
+ +
Webfonts
+
+
diff --git a/demo/kongtext.regular.ttf b/demo/kongtext.regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5e4d65fd1e059a159342d62f86c374da152df7f5 GIT binary patch literal 10280 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 res.sendFile(__dirname + '/kongtext.regular.ttf')); + app.get('/bpdots.regular.otf', (req, res) => res.sendFile(__dirname + '/bpdots.regular.otf')); + app.use('/dist', express.static(__dirname + '/dist')); app.use('/src', express.static(__dirname + '/src')); diff --git a/demo/style.css b/demo/style.css index 3e32b42f..1fb8f7ac 100644 --- a/demo/style.css +++ b/demo/style.css @@ -1,115 +1,3 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm3CWWoKC.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm3mWWoKC.woff2) format('woff2'); - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm36WWoKC.woff2) format('woff2'); - unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm3KWWoKC.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm3OWWoKC.woff2) format('woff2'); - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto Mono'; - font-style: italic; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x7DF4xlVMF-BfR8bXMIjhOm32WWg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhGq3-OXg.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhPq3-OXg.woff2) format('woff2'); - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhIq3-OXg.woff2) format('woff2'); - unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhEq3-OXg.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhFq3-OXg.woff2) format('woff2'); - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 100 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/robotomono/v23/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - - - - body { font-family: helvetica, sans-serif, arial; font-size: 1em;