From 408d0995dddbe7b8e078cc68fb97d3f6166df7d0 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:26:15 -0800 Subject: [PATCH] Support detailed ligatures and variants Fixes #5284 --- addons/addon-ligatures/src/LigaturesAddon.ts | 13 +++++--- addons/addon-ligatures/src/Types.ts | 1 + .../typings/addon-ligatures.d.ts | 30 ++++++++++++------ addons/addon-webgl/src/GlyphRenderer.ts | 4 +-- demo/client.ts | 31 +++++++++++++++---- src/browser/renderer/shared/TextureAtlas.ts | 26 +++++++++++----- src/browser/renderer/shared/Types.ts | 4 +-- 7 files changed, 77 insertions(+), 32 deletions(-) diff --git a/addons/addon-ligatures/src/LigaturesAddon.ts b/addons/addon-ligatures/src/LigaturesAddon.ts index 47fbc323..2bde9cf6 100644 --- a/addons/addon-ligatures/src/LigaturesAddon.ts +++ b/addons/addon-ligatures/src/LigaturesAddon.ts @@ -15,19 +15,22 @@ export interface ITerminalAddon { export class LigaturesAddon implements ITerminalAddon , ILigaturesApi { private readonly _fallbackLigatures: string[]; + private readonly _fontFeatureSettings?: string; private _terminal: Terminal | undefined; private _characterJoinerId: number | undefined; constructor(options?: Partial) { + // Source: calt set from https://github.com/be5invis/Iosevka?tab=readme-ov-file#ligations this._fallbackLigatures = (options?.fallbackLigatures || [ '<--', '<---', '<<-', '<-', '->', '->>', '-->', '--->', '<==', '<===', '<<=', '<=', '=>', '=>>', '==>', '===>', '>=', '>>=', - '<->', '<-->', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '-------->', - '<~~', '<~', '~>', '~~>', '::', ':::', '==', '!=', '===', '!==', - ':=', ':-', ':+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+:', '-:', '=:', ':>', - '++', '+++', '', '<--->', '<---->', '<=>', '<==>', '<===>', '<====>', '::', ':::', + '<~~', '', '/>', '~~>', '==', '!=', '/=', '~=', '<>', '===', '!==', '!===', + '<:', ':=', '*=', '*+', '<*', '<*>', '*>', '<|', '<|>', '|>', '+*', '=*', '=:', ':>', + '/*', '*/', '+++', ' ---> * <== <=== <<= <= => =>> ==> ===> >= >>= - * <-> <--> <---> <----> <=> <==> <===> <====> --------> - * <~~ <~ ~> ~~> :: ::: == != === !== - * := :- :+ <* <*> *> <| <|> |> +: -: =: :> - * ++ +++ <---> <----> <=> <==> <===> <====> :: ::: + * <~~ /> ~~> == != /= ~= <> === !== !=== + * <: := *= *+ <* <*> *> <| <|> |> +* =* =: :> + * /* +++