https://github.com/sourcelair/xterm.js/pull/938ã§åé€ããããµããŒã
ããã¯ç¢ºãã«ãŸã å¯èœã§ãããããã¬ã³ãã©ãŒã¯ã©ã®ãã£ã©ã¯ã¿ãŒãåå ããããç¥ãå¿ èŠããããŸãã
éåžžã®ååã«ã¯èå³ããªããšæããŸããïŒå®éã li
ãªã©ã®ååãæå¹ã«ããã®ã¯æªãããšã§ãïŒã ==
ã !==
å Žåã¯=>
ãªã©ã ããã¯ãfiraã³ãŒãã®çå¹
ãã©ã³ãã§ãµããŒããããŠããååã®çŽ æŽããããªã¹ãã§ãã
https://github.com/tonsky/FiraCode/blob/master/showcases/all_ligatures.png
çµçŽ®ã®ååãç°ãªãè²ã§ããå Žåã¯ã©ããªããŸããïŒ ãããã©ã®ããã«åŠçããŸããïŒ
@LoganDarkã¯ãéåžžã®ååã§ãæ©èœããŸããïŒ ãããšããè²ãéããšåè£ããã®ã§ããããïŒ
ãããããããã
æåã§ããã¹ããæç»ããŠãããšæããŸãããååãã¬ã³ããªã³ã°ããæ¹æ³ãç解ããŠããã®ã§ãtxtjsããã¬ã³ããªã³ã°ã³ãŒããååŸã§ãããã©ããçåã«æããŸãã http://txtjs.com/examples/Text/ligatures.html
@devsnekå®éã«ããã¹ãã®ã¬ã³ããªã³ã°ãè¡ãããšã¯åé¡ã§ã¯ãªããšæããŸãã åé¡ã¯ãã©ã®ãã£ã©ã¯ã¿ãŒãçµåããŠäžç·ã«æç»ã§ããããç¥ãããšã§ãïŒçŸåšãã==ãã¯ã==ãã§ã¯ãªãã=ãããã³ã=ããšããŠæç»ãããŸãïŒã
@Tyriarã¯ãç§ãã¡ã®ä»å ¥ãªãã«ãã©ã³ãã¬ã³ãã©ãŒã
@devsnekã¯ãããã ããã°ãªããå ã®åã»ã«ã¯ãããã€ãã®äŸå€ïŒçµµæåãå¹ ã®åºãUnicodeæåïŒãé€ããŠåå¥ã«æç»ãããŸãã ååã¯ã©ãããããããã®ãªã¹ãã«å«ãŸããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ã httpsïŒ//github.com/sourcelair/xterm.js/pull/938ã
@devsnek IT'S YOU
å 責äºé ïŒå®å šã«ãããã¯ããå€ããã©ã³ãã ãªã³ã¡ã³ãã®ã¿
@LoganDarkã¯ãéåžžã®ååã§ãæ©èœããŸããïŒ ãããšããè²ãéããšåè£ããã®ã§ããããïŒ
ç§ãã¡ã¯ãä»ã®ãšãã¥ã¬ãŒã¿ãããããåŠçããæ¹æ³ã«ããã€ãããªãã圌ãã¯å¥ã®è²ã§ããå Žåã«äºæ³ãããããã«ãåå²ã®ã§ããã ããã«ãããããšãã°ViMã®äžéšã®èšèªèå ãã³ã§èšå·ãæ£ããè¡šçŸã§ãããããããã¯ã»ãŒèŠä»¶ã§ãã
åºç€ãšãªããã¹ãŠã®æåã®ã¬ã³ããªã³ã°ã¢ãŒããåãã§ãªãå Žåã¯ãåã ã®ã·ã³ãã«ã衚瀺ããããšã¯ãŸã£ããåé¡ãªããšæããŸãã
@ Qix-ç§ã®ææ¡ã¯ããã¹ãŠã®ããã¹ããäžåºŠã«æç»ããŠããããã¹ãã§è²ä»ããè¡ãããšã§ãã ããã«ãããååã®åé¡ã解æ¶ãããååã®ãã¢ãæ€åºããå¿ èŠããªããªããŸãïŒãã ããå¯å€å¹ ãã©ã³ãããŸãã¯æŽæ°å¹ ããããã«ãããŠãã/ãªãçå¹ ãã©ã³ããšã®äºææ§ã倱ãããŸãïŒã
@LoganDarkã®ãã«ãã«ã©ãŒã®ååã¯å¥åŠã«èŠããIMOã«è²ã
ãããç§ã¯ãã«ãã«ã©ãŒã®ååãããŸããããšã¯æããŸããã ãŸããè€æ°ã§ã¯ãªãåäžã®ã°ãªããæåã«æç»ãããããã®äžã§ã®åäœã«ãåããŸãã
æ確ã«ããããã«ãããã¯ã©ã®æåã·ãŒã±ã³ã¹ãååãæã£ãŠããããæ€åºããããã®è¯ã解決çãåŸ ã£ãŠããŸãã ãããé©åã«è¡ãã«ã¯ããã©ã³ããã¡ã€ã«ããã§ãã¯ããäœã¬ãã«ã®ã³ãŒããå¿ èŠã«ãªãå¯èœæ§ããããŸãïŒãããã£ãŠããã€ãã£ãããŒãã¢ãžã¥ãŒã«ã§ããå¿ èŠããããWebã³ã³ã·ã¥ãŒããŒã§ã¯æ©èœããŸããïŒããã®æ å ±ã¯Webãã©ãããã©ãŒã ã«å ¬éãããŠããªããšæããŸãã
ãã€ããŒãªãªãŒã¹ããã2.0.0ãå®å®ããã®ã§ãååã®åé¿çã«ã¯ããé«ãåªå é äœãå¿ èŠã«ãªãå¯èœæ§ããããŸãã
ref https://github.com/zeit/hyper/issues/914#issuecomment -361034148
ã°ãªããããã³ã°ãæåã§æ±ºå®ããããšã¯ãé£ããåé¡ã§ãã ç§ãèšããããšããããããããŸãšããªçµéšãããããã«ã¯ã以äžãå¿ èŠã§ãïŒ
ç§ã¯ãåã¹ããããã©ãã»ã©é£ããããç解ããããã«ã Fira Code ïŒç¹ã«ãã®ãªã¿ã¯ãã©ã³ãããªã¢ã³ãïŒãæåã«èª¿ã¹ãŸããã ç§ã¯ãããåŒãåããã®ã«ååãªéå¿ãæããŠããïŒãŸãã¯ãã©ã³ãã®ååãååã«æ°ã«ãããŠããïŒãã©ããã¯ãŸã 決ããŠããŸããããç¥èã倱ãããªãããã«ç§ãèŠã€ãããã®ã¯æ¬¡ã®ãšããã§ãã
ãã©ãŠã¶APIã䜿çšããŠãã©ã³ãããŒã¿ããã§ããããæ¹æ³ããªããããããã¯xterm.jsã®çŽæ¥ã®æ©èœãšããŠã¯æ©èœããŸããããxterm.jsã«ãã£ãŠå ¬éãããããã¯ãåããåå¥ã®ããã±ãŒãž/æ¡åŒµæ©èœãšããŠæ©èœããå¯èœæ§ããããŸãã
ãã©ã³ãã®CSS font-family
åãWindowsã®ãã©ã³ããã¡ã€ã«ã«ãããã³ã°ããã®ã¯é¢åã§ãããå®è¡å¯èœã«èŠããŸãã ãããŸã§ã®ãšãããç§ãèŠã€ããå¯äžã®æ¹æ³ã¯ã %WINDIR%\Fonts
å
ã®ãã¹ãŠããã§ããããèŠã€ãããã¹ãŠã®ãã¡ã€ã«ã解æããããšã§ãïŒãã¿ãã¬ïŒæ¬åœã«é
ãã§ãïŒã ä»ã®ãã©ãããã©ãŒã ã¯ãŸã è©ŠããŠããŸããã ïŒæ³šïŒã¬ãžã¹ããªããååãåé€ããããšããŸãããããªã¿ã¯ãã©ã³ããªã©ã®äžéšã®ãã©ã³ãã§ã¯ååãäžèŽããŸãããã¬ãžã¹ããªã®ååã«å«ãŸããŠããªããåªå
ããã¡ããªãšãµããã¡ããªã䜿çšãããŸãããã ããcss font-family
ã§äœ¿çšãããŸããèå³ãããå Žåã¯ãã¬ãžã¹ããªããŒã¯HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
ïŒ
OpenTypeãã©ã³ãããŒãã«ã®å®å
šãªè§£æãè¡ãopentype.jsãšããã©ã€ãã©ãªããããåºæ¬çãªååãåŠçããfont.stringToGlyphs(str)
é¢æ°ããããŸãããFira Codeã®ååïŒããã³ä»ã®äžè¬çãªååãã©ã³ãã®ãã¹ãŠã§ã¯ãªãã«ããŠãããã€ãïŒããããŸãã opentype.jsïŒ Plannedã®äžã«ãªã¹ããããŠ
Fira Codeã®ååïŒããã³ä»ã®ååïŒã¯ãå®éã«ã¯ãå
ã®ã°ãªãããïŒã¢ãã¹ããŒã¹ãã©ã³ãã®ããããã£ãç¶æããããã«ïŒåäžã®éåžžã«å¹
ã®åºãã°ãªãã§ã¯ãªããåãæ°ã®ã°ãªãã«çœ®ãæããŸãã ==>
ãããªæååã®å Žåããã©ã³ãã¯2ã€ã®ãLIGãæåïŒåºæ¬çã«ã¯ç©ºã®ã¹ããŒã¹ïŒã«çœ®ãæããããã«æ瀺ãããã®åŸã«ååã®å®éã®ã°ãªããç¶ããŸããããã¯æè¡çã«ã¯1ã€ã®ã¢ãã¹ããŒã¹ã®ã¿ã§ããæåå¹
ã äžèŠåäžã®å¹
ã§ããã«ãããããããæåŸã®æåã®ãã¹ã¯ãæåã®å¢çããã¯ã¹ã®å·ŠåŽãè¶
ããŠããã®åã®2ã€ã®LIGæåãå ããã¹ããŒã¹ãã«ããŒããŸãã ããžã¥ã¢ã«ã«ã€ããŠã¯ã以äžãåç
§ããŠãã ããïŒ0ãš600ã¯ãã£ã©ã¯ã¿ãŒã®ããã¯ã¹ã®åŽé¢ã§ãïŒã ãããã¬ã³ãã©ãŒã®ã¿ã¹ã¯ãè€éã«ããã®ãããããšãxterm.jsã«æž¡ãåã«å€æããå¿
èŠãããã®ãââã¯ããããŸãããã泚æãå¿
èŠã§ãã
ããã®ãã1ã€ã®åé¡ã¯ãçµçŽ®ç³žããã€åè©äŸ¡ãããã決å®ããããšã§ãã ããšãã°ã =
4åç¶ããŠå
¥åããå ŽåãæãŸããåäœã¯ãåäžã®çå·ã次ã«äºéã®çå·ã次ã«äžéã®çå·ã次ã«4ã€ã®å¥ã
ã®çå·ã衚瀺ããããšã§ãã çµçŽ®ãã¯ãªã¢ããããã®ã³ã³ããã¹ã代æ¿ã«ãŒã«ã«ã¯å®éã«ã¯ãããã³ã°ããããŸãïŒã€ãŸããçŸåšã®å
¥åãã=ãã§ãåã®3æåãã===ãã®å Žåã¯ããŸã£ããåãããã³ã°ããªãã§ãã ããïŒãããããã®ã«ãŒã«ãé©çšããæ¹æ³ãç解ããããã«ã
OpenTypeã¯è€éã§ãã 確ãã«ãç§ã¯ãã©ã³ãã¬ã³ããªã³ã°ã®å°é家ã§ã¯ãããŸããããããŸããŸãªã¿ã€ãã®ã¬ã³ããªã³ã°ã«ã€ãªããå¯èœæ§ã®ããããªãšãŒã·ã§ã³ã®æ°ã¯ããªãåºç¯å²ã§ãã ãããã³ã°ãè¡ãçµã¿èŸŒã¿ã©ã€ãã©ãªããªãå Žåããããæ»æããæãåççãªæ¹æ³ã¯æ®µéçã«è¡ãããšã ãšæããŸãã Fira Codeã¯ãç¹ã«ãã§ãŒã³ã³ã³ããã¹ã眮æãã©ãŒããã3ã䜿çšããŠããŸãããå¥ã®ãã©ã³ãã䜿çšãã人æ°ã®ãããã©ã³ãã¯ä»ã«ããããšæããŸãã ããããã®ã»ãã³ãã£ã¯ã¹ã¯ãããã«ç°ãªãããã1ã€ããå§ããŠãããããå§ããã®ãããããçã«ããªã£ãŠããŸãã
@princjefæ¢çŽ¢ãå ±æããŠãããŠããããšããæ¬åœã«æ¬åœã«åœ¹ã«ç«ã¡ãŸããïŒ ç§ãæ°æ¥åã«ãã®ãããã¯ã«ããã€ãã®èããå ¥ããŠããŸããããããŠç§ã¯æ¬¡ã®çµè«ã«éããŸããïŒ
li
ïŒTBHãçŸåšã®ç¶æ ã§ååããµããŒãããããã«åªåãã䟡å€ã¯ãªããšæããŸãð
@mofuxå®éã«ã¯ãå¥ã®è§åºŠããã¢ãããŒãããããšã§ãxterm.jsã§ååãã¬ã³ããªã³ã°ããïŒããå£åœããã®è¯ãïŒæ¹æ³ãèŠã€ãããšæããŸãã æåã®èª¿æ»ã§ããã£ã³ãã¹ãèªåçã«ååãã¬ã³ããªã³ã°ããããšãã©ããããããèŠéããŸããã ååããµããŒãããããšã¯ãé¢é£ããæåãäžç·ã«ã¬ã³ããªã³ã°ãããããšã確èªããããšã®åé¡ã«ãªããŸãã
ãã®ããã«ãããã¹ãã¬ã³ãã©ãŒã埮調æŽããŠãåãå±æ§ïŒfgãbgãªã©ïŒãæã€æåãåäžã®ã°ã«ãŒããšããŠã¬ã³ããªã³ã°ããŸããã ããã¯ããã¹ãŠã®ååãæ£ããã¬ã³ããªã³ã°ããããã§ã¯ãããŸããïŒãŸããããã§ã¯ãªããã®ãã¬ã³ããªã³ã°ããå¯èœæ§ããããŸãïŒãã誰ããèŠãããšæãå Žæã«ååãã¬ã³ããªã³ã°ããå¿ èŠããããŸãã ããã¯ãFiraã³ãŒãã䜿çšãããã¢ã¢ããªã®NeoVIMã®ã¹ã¯ãªãŒã³ã·ã§ããã§ãïŒFirefoxã«è¡šç€ºãããChromeã§ãæ©èœããŸãããEdgeã§ã¯æ©èœããŸããïŒã
人ã ãèŠãŠã¿ãããªãããã©ã³ãã¯ããã«ãããŸãïŒ https ïŒ
ããã«é¢ããããã€ãã®æ³šæïŒ
Infinity
ã«èšå®ããã ãã§ããã£ãã·ã¥ãåé¿ã§ããŸããæåã¢ãã©ã¹ã䜿çšããŠããã¹ããã¬ã³ããªã³ã°ããã¢ã€ãã«ç¶æ ã®ãšãã«ããã¹ãã®ãããã¯ãšããŠããã¯ã©ãŠã³ãã§åã¬ã³ããªã³ã°ããã®ã¯ã©ãã§ããïŒ 2ã€ã®çµæãåãç»åã«ãªãå Žåã¯ãçµåãããããã¹ããç Žæ£ããŠãã¢ãã©ã¹ã«æ»ãããšãã§ããŸãã ããã¯ã°ã©ãŠã³ãã§ããã¹ãã®æååãåå²ããããšã«ãããã©ã®ããã¹ãã®æååãååã§ããããç¥ãããšãã§ãããããããŸããã
ããã«é¢ããããªãããŒãªéšåã¯ããªã¬ãã£ãŒã®ã¬ã³ããªã³ã°ãããªã¬ãã£ãŒã«ãã£ãŠçœ®ãæããããæåã ãã§ãªãããããã®ã³ã³ããã¹ãã«ãäŸåããããšã§ãã ããšãã°ãã=== 1ãã¯3ã€ã®çå·ãååãšããŠã¬ã³ããªã³ã°ããå¿ èŠããããŸãããã====ãã¯åã3ã€ã®çå·ãå¥ã ã®æåãšããŠã¬ã³ããªã³ã°ããå¿ èŠããããŸãã ãã®ã³ã³ããã¹ãã®å€§ããã«å¶éã¯ãªãããããªã¬ãã£ãŒãåºåããã¬ã³ããªã³ã°ãããã¿ã€ãã³ã°ã®ã«ãŒã«ã決å®ããã®ã¯é£ããããšã©ãŒãçºçããããå¯èœæ§ããããŸãã
ããä¿¡é Œæ§ã®é«ãïŒãã ã移æ€æ§ãäœãïŒã¢ãããŒãã¯ããã©ã³ãã¡ã¿ããŒã¿ãèªèããŠããå¥ã®é¢æ°ã«ãã£ãŠæäŸãããååç¯å²ã«é¢ãããã³ããååŸããããšã§ãã 次ã«ãå€éšé¢æ°ã«ãã£ãŠæäŸãããç¯å²ä»¥å€ã®ãã¹ãŠãã¢ãã©ã¹ã䜿çšããŠã¬ã³ããªã³ã°ã§ããŸãããæå®ãããã°ã«ãŒãã¯äžèšã®ãããªã¢ãããŒãã䜿çšã§ããŸãã ããã¹ãè¡ãæå®ããŠçœ®æã®å Žæã決å®ããã®ã¯ããªãéãã¯ãã§ãããåã«è©³ãã説æããããã€ãã®åé¡ããããŸãïŒäž»ã«ãåæåæã«é©åãªãã©ã³ããèŠã€ããé床/ä¿¡é Œæ§ãšãOpenTypeã³ã³ããã¹ã代æ¿ã®åŠçã®è€éãïŒã
ååãæå¹ã«ããèšå®ãããã®ã¯åççã§ããããïŒ
ã¿ãŒããã«ãŸã§äžåºŠã«å
šç·ïŒ ããã¯ãããªãããã§ã
æ£ããã¬ã³ããªã³ã°ãä¿èšŒããããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ãªããã€ã³ã«ãªããŸã
ã¹ããŒããããååãæ°ã«ãã人ã
æ¥ã2018幎4æ22æ¥ã«ã¯ãåå16æ21ãžã§ãã»ããªã³ã·ãã®[email protected]ã¯æžããŸããïŒ
ããã«é¢ããããªãããŒãªéšåã¯ãçµçŽ®ã®ã¬ã³ããªã³ã°ãäŸåããŠãããšããããšã§ã
çµçŽ®ã«ãã£ãŠçœ®ãæããããæåã ãã§ãªãããããã®ã³ã³ããã¹ãã«ã€ããŠãã
ããšãã°ãã=== 1ãã¯3ã€ã®çå·ãååãšããŠã¬ã³ããªã³ã°ããå¿ èŠããããŸããã
'===='ã¯ãåã3ã€ã®çå·ãå¥ã ã®æåãšããŠã¬ã³ããªã³ã°ããå¿ èŠããããŸãã
ãã®ã³ã³ããã¹ãã®å€§ããã«å¶éã¯ãªãã®ã§ãé£ããã§ãããã
çµçŽ®ãã¬ã³ããªã³ã°ãããã¿ã€ãã³ã°ã®ã«ãŒã«ã決å®ããããã«ãšã©ãŒãçºçãããã
ãã®åºåããã ããããä¿¡é Œæ§ã®é«ãïŒãã ã移æ€æ§ãäœãïŒã¢ãããŒãã¯ã
ãã©ã³ããç¥ã£ãŠããå¥ã®é¢æ°ã«ãã£ãŠæäŸãããååç¯å²
ã¡ã¿ããŒã¿ã 次ã«ãå€éšé¢æ°ã«ãã£ãŠæäŸãããç¯å²ä»¥å€ã®ãã¹ãŠ
ã¢ãã©ã¹ã䜿çšããŠã¬ã³ããªã³ã°ã§ããŸãããæå®ãããã°ã«ãŒãã¯
äžèšã®ãããªã¢ãããŒãã 眮æã®å Žæã®æ±ºå®
äžããããããã¹ãè¡ã¯ããªãéãã¯ãã§ãããããã€ãã®åé¡ããããŸã
åã«è©³ãã説æããŸããïŒäž»ã«ãé©åãªãã©ã³ããèŠã€ããé床/ä¿¡é Œæ§
OpenTypeã³ã³ããã¹ã代æ¿ã®åŠçã®åæåãšè€éãïŒãâ
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/xtermjs/xterm.js/issues/958#issuecomment-383420281 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAKyryMlayIQijY32GpWBmpvCUi13Wfbks5trRBigaJpZM4PRej6
ã
@princjefãããŒãããªãã®ç·šéã¯ãšãŠãç°¡åã«ãã©ããŒã§ããxtermã¯ã¬ã³ãã©ãŒã§ååããµããŒãã§ããããã§ãã ç§èš£ã¯ãã«ãŒã«ããããããæ¹æ³ãç解ããããšã§ãã ããã¯ç§ã«åžæãäžããŸãã
@princjefçŽ æŽããã調æ»ïŒ
ãã©ãŠã¶APIã䜿çšããŠãã©ã³ãããŒã¿ããã§ããããæ¹æ³ããªããããããã¯xterm.jsã®çŽæ¥ã®æ©èœãšããŠã¯æ©èœããŸããããxterm.jsã«ãã£ãŠå ¬éãããããã¯ãåããåå¥ã®ããã±ãŒãž/æ¡åŒµæ©èœãšããŠæ©èœããå¯èœæ§ããããŸãã
@princjefç§ã¯æçµçãªååãµããŒãã次ã®ããã«çããŠãããšæããŸãïŒ
some-magical-package
ïŒãã€ãã£ãããŒãã¢ãžã¥ãŒã«ã¯ãã€ãã£ããã©ã³ãæ
å ±ãååŸããå¯èœã§ããã°Webãã©ã³ãæååããã¡ã€ã«ã«ãããã³ã°ããŸãã ããã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ãæžããããã«AsyncWorker
ã§å®è¡ã§ããŸãã ãããæ æ°ã«è¡ãããæåã®èµ·åæã«ã¹ãã£ã³ããŠæŽæ°ãè¡ãã®ã«æ°ç§ãããå Žåã¯ã倧ããããšã§ã¯ãããŸãããxtermjs/xterm-ligature-support
ïŒããŒãã«äŸåãã some-magical-package
ã䜿çšããŠãã©ã³ãæ
å ±ãååŸããã³ãã£ãã·ã¥ããã¢ããªã³ã ãã®ã¢ããªã³ã¯ãèªèãããªããã©ã³ããfontsãã£ã¬ã¯ããªã§æ€åºããããã³ã«ã¹ãã£ã³ãå®è¡ãããã©ã³ããåé€ããããšåé€ããå¯èœæ§ããããŸãã 倧ãŸããªAPIãšããŠæ¬¡ã®ãããªãã®ãæåŸ
ããŠããŸãã
/** Returns a list of characters to be drawn together */
export function getLigatures(fontFamily: string): string[] { ... }
ãã©ã³ãããµããŒãããŠããå Žåã§ãã端æ«ã§ã¯æå³ããªããªãç¹å®ã®ååããããŸãïŒäŸïŒliïŒ
@mofuxããã«ã€ããŠå¿é ããå¿ èŠããããã©ããããããŸãããïŒ ãŠãŒã¶ãŒãååãèŠæ±ããå Žåãããããã¹ãŠãã¬ã³ããªã³ã°ããã¹ãã§ã¯ãããŸãããïŒ
è€æ°ã®ã»ã«ã«ãŸãããæåã®æç»ãšã¯ãªã¢ã®ãµããŒããè¿œå ããããšã¯ãçŸåšã®åäžæåããŒã¹ã®ã¬ã³ããªã³ã°ã¢ãããŒãïŒCharAtlasïŒã§ã¯å®è£ ãéåžžã«å°é£ã§ãã
@mofuxé£æ¥ããæåã®ã»ãããäžç·ã«æç»ããé¢æ°ãéåžžã«ç°¡åã«è¿œå ã§ããã¯ãã§ãã
@princjef ïŒãã³ãããŒã¯ã¯è¡ã£ãŠããŸããããããã¯ããã©ãŒãã³ã¹ã«è¯ããªãã ãããš
@wavebeem ïŒ
ãã£ã³ãã¹ã®äœ¿çšã«ããããã©ãŒãã³ã¹ã®åäžã¯ã»ãŒå®å šã«æã¡æ¶ããããšæããŸãã ãŸãããªãã·ã§ã³ã®æ°ãæå°éã«æãããã®ã§ããµããŒããè¿œå ããããã®ã¢ããªã³ãå«ãŸããŠããå Žåã¯ãååãæ©èœããå Žæã«å°éããããã«ããŠãã ããã
ãŸããããã©ãŒãã³ã¹ã«é¢ããŠã¯ãChromiumã®GPUãµããŒãã§åé¡ãçºçããå¯èœæ§ãããããšãå€ããããããä»åŸæ°ãæ以å ã«ãã©ãŒã«ããã¯DOMã¬ã³ããªã³ã°ãªãã·ã§ã³ã®è¿œå ã«åãçµãäºå®ã§ãã https://github.com/xtermjs/xterm.js/issues/1360ãåç §ããŠ
æåã¢ãã©ã¹ã䜿çšããŠããã¹ããã¬ã³ããªã³ã°ããã¢ã€ãã«ç¶æ ã®ãšãã«ããã¹ãã®ãããã¯ãšããŠããã¯ã©ãŠã³ãã§åã¬ã³ããªã³ã°ããã®ã¯ã©ãã§ããïŒ 2ã€ã®çµæãåãç»åã«ãªãå Žåã¯ãçµåãããããã¹ããç Žæ£ããŠãã¢ãã©ã¹ã«æ»ãããšãã§ããŸãã
@ j-f1ããã¯æã£ãããé£ããã§ãã æåãåãããã«ã¬ã³ããªã³ã°ãããŠããæåã¢ãã©ã¹ã®ééãç°ãªãããã2çªç®ã®æåã¯ç°ãªããŸãïŒæåã¯åžžã«äžžãæ°åã§æç»ãããŸãïŒã ãããæ©èœãããã«ã¯ãããã«å€ãã®ã¬ã³ããªã³ã°ãè¡ãå¿ èŠããããå€ãã®å·®åãã¯ã»ã«ãé«äŸ¡ã«ãªããŸãã
@Tyriarããªãã説æããäžè¬çãªãã¶ã€ã³ã¯ããªã£ãŠãããšæããŸãã some-magical-package
ã§ãã©ã³ããèŠã€ããããã«ãã€ãã£ãã³ãŒãã«äŸåããªããã®ãåé¿ã§ãããããããŸããããããã¯ééããªããã©ãããã©ãŒã /ãã¡ã€ã«ã·ã¹ãã ã«äŸåããŸãã ã³ã³ããã¹ãã®ä»£æ¿çœ®æã解æããããšããå§ããŸãããããããæ£ããè¡ãããã«ã©ãã ãå€ãã®æéããããããèšãã®ã¯é£ããã§ãã
ãŸãã some-magical-package
ãšã¯å°ãç°ãªãã€ã³ã¿ãŒãã§ãŒã¹ãå¿
èŠã«ãªããšæããŸãã
export function getSubstitutionRanges(fontFamily: string, text: string): Promise<[number, number][]>;
ååèªäœã決å®ããããã®ã«ãŒã«ã¯è€éã§ããããã©ã³ãèªäœã«ããªãæ·±ãçµã¿èŸŒãŸããŠããŸãã ãã©ã³ãããŒã¿èªäœãæž¡ããŠxterm.jsã§è§£éããè² æ ããããã®ã§ã¯ãªããä»ã®libã«ä»»ããŠãã©ã®æåãäžç·ã«ã¬ã³ããªã³ã°ããããxterm.jsã«æ瀺ãããŸãã ã³ã³ããã¹ãã®å èªã¿/åŸèªã¿ã®åŽé¢ã解æãè€éã«ããŸãã ããšãã°ãã===ãã¯ååã«ããããããŸããããã®åŸã«å¥ã®çå·ãç¶ãå Žåã¯ããããããŸããã
眮æç¯å²ã®æŠå¿µã«é¢ããå¥ã®æ³šæïŒç§ãèšããããšãããåäžã®ååã®å¢çã®æ確ãªæåã¯ãããŸããïŒå°ãªããšãæèäžã®ä»£æ¿ã䜿çšããå ŽåïŒã åã ã®æåã«é©çšããã眮æã®ã·ãŒã±ã³ã¹ããããŸãã ååãé£ç¶ããŠããå Žåã«å¢çãææ¡ããããã®ç§èš£ãããã€ãèŠã€ããŸããããããã¯ãããã絶察確å®ã§ã¯ãããŸããã 2ã€ã®ååã誀ã£ãŠåå²ããã®ã§ã¯ãªãã誀ã£ãŠ2ã€ã®ååã1ã€ãšããŠæ±ãããšã¯ã1ã€ã®ã°ã«ãŒããšããŠãŸãšããŠã¬ã³ããªã³ã°ããå Žåã§ãæ£ããã¬ã³ããªã³ã°ãããã¯ããªã®ã§ãããããééãã§ãã ããã«ããå¯äžã®æ¬åœã®åé¡ã¯ãããã«ç°çš®ã®ã¹ã¿ã€ã«ãé©çšããããšã§ãã
ããã«ããå¯äžã®æ¬åœã®åé¡ã¯ãããã«ç°çš®ã®ã¹ã¿ã€ã«ãé©çšããããšã§ãã
ããªãã§ãã ããã é£ç¶ã¹ã¿ã€ã«ã®åæååãåå¥ã«é¢æ°ã«æž¡ããŸãã ããªãã¯äžç·ãå¥ã ã«æãããŠããå Žåã¯ãäžç·ä»ãã®ããã¹ãã®ããã®äŸå€ãäœãããšãã§ãããããããŸããã
ãã€ãã£ãã³ãŒãã«äŸåããªããã®ã§éããããšãã§ãããããããŸãã
ð
ååèªäœã決å®ããããã®ã«ãŒã«ã¯è€éã§ããããã©ã³ãèªäœã«ããªãæ·±ãçµã¿èŸŒãŸããŠããŸãã ãã©ã³ãããŒã¿èªäœãæž¡ããŠxterm.jsã§è§£éããè² æ ããããã®ã§ã¯ãªããä»ã®libã«ä»»ããŠãã©ã®æåãäžç·ã«ã¬ã³ããªã³ã°ããããxterm.jsã«æ瀺ãããŸãã
@princjefããã¯ããã«è¯ãèãããŸããããã®é åã§xterm.jsãè¡ãå¿ èŠãå°ãªãã»ã©è¯ãã§ãã
ããã«ããå¯äžã®æ¬åœã®åé¡ã¯ãããã«ç°çš®ã®ã¹ã¿ã€ã«ãé©çšããããšã§ãã
ä»ã«ãããè¡ãããšãããã®ã¯ãªããšæããŸããåãã¹ã¿ã€ã«ã䜿çšããããã¹ãã®ååã®ã¿ãè¿œå ããå¿ èŠããããŸãã
ããã¯ãã©ã³ãåŽã§å®è¡å¯èœã«èŠããŸãã ãã¹ãŠã®FiraCodeååãæ£åžžã«è§£æããæåãçµã¿åãããããã®é©åãªç¯å²ãæäŸããã³ãŒããããã€ããããŸãã ãµããŒããæ¢ããŠããä»ã®ãã©ã³ãã1ã€ã2ã€ããå Žåã¯ããããã確èªããŠã¿ãŠãã ããã ãããŸã§ã®ãšãããFira Codeã«å¿ èŠãªçœ®æã¿ã€ãã®ã¿ãå®è£ ããŠããã®ã§ãä»ã®çœ®æã¿ã€ããå®è¡ããããã«ããã€ãã®çš®é¡ãæè¿ããŸãã
ããã§ããã©ã³ãã«ãã¯ã¢ããéšåãç解ããå¿ èŠããããŸãã 次ã«ããã«çŠç¹ãåœãŠãã€ããã§ãã ããã«ããã€ãã®ããã±ãŒãžããããŸããããããã¯ãã¹ãŠãã°ãããããäžååã«ç¶æãããŠããããã§ã
@princjefä»ã®ãã©ã³ãããã§ãã¯ãããå Žåã¯ã Iosevkaã䜿çšããŠã
äºè§£ããŸããã font-ligatures
ïŒå¥åsome-magical-package
ïŒãšããããã±ãŒãžãšããã€ãã®é¢é£ããã±ãŒãžãäœæããŸãããããã«ãããé©åãªãã©ã³ããå¹ççã«èŠã€ããŠãç¹å®ã®ããã¹ãå
¥åã®ååãã©ãã«ããããææ¡ã§ããŸãã
ãã©ã³ããèŠã€ããããã»ã¹ãæé©åããã®ã«å°ãæéãè²»ãããŸããã ã150 ttf / otfãã©ã³ãã®SurfacePro 4ã§ã¯ã300ã400ããªç§ã§ãã¹ãŠã®ãã©ã³ãã¡ã¿ããŒã¿ãååŸã§ããŸãã ããã¯äž»ã«I / OããŠã³ãã§ãããããŒãäžã®æåã®æ°åã®ã¬ã³ããªã³ã°ãµã€ã¯ã«ã§ããã¯ã°ã©ãŠã³ãã«ããã¯ã§ããŸãããptyãèµ·åããŠããã¹ããåãåºããŸã§ã«ãããŒãããã®ã«ååãªé床ã§ããå¿ èŠããããŸãã ããŒããããããã¬ã³ããªã³ã°ãããªã¬ãŒããŠããã§ã«ååšããå¯èœæ§ã®ããããã¹ããæŽæ°ã§ããŸãã ããã¯ããã©ã³ããå€æŽããããã³ã«ç¹°ãè¿ãããšãã§ããŸãããŸãã¯ãæåã«å®å šãªãªã¹ãããã£ãã·ã¥ããããšãã§ããŸãïŒãšã«ãããæåã«å®å šãªãªã¹ãããã§ããããŸãïŒã
ååãããã³ã°èªäœã«é¢ããŠã¯ãã©ã€ãã©ãªã¯æååãåãåããäžç·ã«ã¬ã³ããªã³ã°ããå¿ èŠãããæåã®ã°ã«ãŒããå«ãããã©ã³ãååã«é¢ããã¡ã¿ããŒã¿ãè¿ããŸãã CIã«ã¯ãFira CodeãIosevkaãMonoidã®ãã¹ãŠã®ååã®ãã¹ããå«ãŸããŠãããããå®è¡ãã眮æã¿ã€ãã«å¯ŸããŠæ£ããåŠçããããšåççã«ç¢ºä¿¡ããŠããŸãïŒãã ããä»ã®ã¿ã€ãã䜿çšãããã©ã³ããããã€ããããšç¢ºä¿¡ããŠããŸãïŒãç§ã¯å®è£ ããŠããŸããïŒã
ããããç§ã¯çµçŽ®è§£æã®æé©å/調æŽã«æéãè²»ãããŠããŸããã ç§ã¯ããã€ãã®ç°¡åãªãã¹ããè¡ããŸããããååã®è§£æã«ã¯äžçšåºŠã®é·ãã®æååïŒèªã¿åãïŒ1è¡ïŒã§2ã20ããªç§ãããããã§ãã ãŸã ãŸã æé©åã®äœå°ãããã®ã§ãä»ã®ãšããããŸãå¿é ããŠããŸããã ç§ã¯äž»ã«ãããåãåºããŠã€ã³ã¿ãŒãã§ãŒã¹ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããå¿ èŠã«å¿ããŠäººã ã«ã¿ã€ã€ã蹎ãããããšæã£ãŠããŸããã
@princjefã¯ããªãã¯ãŒã«ã«èŠããŸãïŒ 0xc0ffee
ã 0x1234
ãããã³17x32
ãã¹ããFiraã³ãŒãã«è¿œå ããããšã«ã€ããŠã©ãæããŸããïŒ ïŒ x
ã¯ãããã®æéèšå·ã«å€ãããŸãïŒ
@princjefçŽ æŽãããïŒ
ããã€ãã®ç°¡åãªãã¹ããè¡ããŸããããååã®è§£æã«ã¯äžçšåºŠã®é·ãã®æååã§2ã20ããªç§ãããããã§ãïŒèªã¿åãïŒ1è¡ïŒ
ããããã§ãã¯ããéèŠãªã³ãŒãã®ããã€ããæããŠããã ããŸããïŒ
@ j-f1ã¯ããããããæ©èœããŸãïŒ https ïŒ
@Tyriarç§ã¯ããªããéã¶ããšãã§ããåºæ¬çãªãã³ãããŒã¯ãè¿œå ããŸããã åŒã³åºããã¿ãŒã³ã¯node bench/lines.js <font-name> <input-text> [iterations]
ãŸãã è€æ°è¡ã®æååãæž¡ãããããã¹ãã®å
¥åãã¡ã€ã«ãå±éããããšãã§ããŸããããã«ãããè¡ã埪ç°ããŠããŸã£ããåãå
¥åãç¹°ãè¿ãå®è¡ãããããšã«ããéçŸå®çãªæé©åãåé¿ããããšããŸãã
ãããæžããŠãããšãã«ãè€æ°ã®ç°ãªãå ¥åè¡ã䜿çšããå Žåã§ããæåã®å®è¡åŸã«ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããããšã«æ°ä»ããŸããã çŽ10æåã®å ¥åã®å ŽåãIosevkaã®å¹³åã¯1ããªç§æªæºãFiraCodeã®å¹³åã¯0.5ããªç§åŒ·ã§ãã ç§ãç¹å¥ãªã±ãŒã¹ãæã€ããã¿ãŒããã¡ã³ããããéæ³ã®ããã«åããŠãããã®ã©ã¡ããã§ãã ãã®ãŸãŸäœ¿çšããã«ã¯ãŸã ååå¹ççã§ã¯ãããŸãããã次ã«ããã©ãŒãã³ã¹ã®æé©åã«çŠç¹ãåœãŠå§ããŸãïŒãã®æç¹ã§ãæ¹åã®æèŠãåŸãããã«ãããããããè¯ããã³ãããŒã¯ãè¿œå ããŸãïŒã
ããã€ãã®ã¡ã¢ïŒ
äœæããããã±ãŒãžïŒhttps://github.com/princjef/font-ligatures/issues/2ïŒã§ãåé¡ã®ããã©ãŒãã³ã¹ã®åŽé¢ã®è¿œè·¡ãéå§ããŸããã ããã€ãã®æ§æã§ããããã³ããŒãããåæã®æ°å€ã¯æ¬¡ã®ãšããã§ãïŒãã¹ãŠã®æ°å€ã¯ããªç§åäœã®æéã§ãïŒã æåã®5ã€ã®æ°ååã¯å ¥åè¡ããšã§ãæåŸã®2ã€ã¯æåããšã§ãã æåŸãã2çªç®ã®åã¯ãç§ãæã泚æãæã£ãŠããåã§ãã 1æåãããçŽ0.5ãã€ã¯ãç§ïŒããªç§åäœã§0.0005ïŒã§æ®åœ±ããŠããŸãïŒ
åå| AVG | STDEV | 5ïŒ
| 50ïŒ
| 95ïŒ
| AVGïŒCHARïŒ| STDEVïŒCHARïŒ
----------------------- | ------- | --------- | ------ | -------- | ------- | ------------- | --------------------------------
Firaã³ãŒãïŒcode.txt | 5.9570 | 12.6951 | 0.5270 | 5.1020 | 12.2330 | 0.1443531 | 0.2091743
ãã£ã©ã³ãŒãïŒnoLigatures.txt | 12.1932 | 3.4402 | 8.1420 | 12.1205 | 15.5900 | 0.1321094 | 0.0334362
IosevkaïŒcode.txt | 0.5571 | 1.4722 | 0.0485 | 0.3215 | 1.6155 | 0.0135005 | 0.0333483
IosevkaïŒnoLigatures.txt | 0.7476 | 0.4230 | 0.4365 | 0.6030 | 1.7725 | 0.0080998 | 0.0044501
ã¢ãã€ãïŒcode.txt | 0.8896 | 1.6637 | 0.0910 | 0.6625 | 1.9225 | 0.0215566 | 0.0482166
ã¢ãã€ãïŒnoLigatures.txt | 1.6661 | 0.6935 | 1.0695 | 1.4450 | 2.6910 | 0.0180521 | 0.0071922
Ubuntu MonoïŒcode.txt | 0.0402 | 0.3935 | 0.0080 | 0.0220 | 0.0605 | 0.0009735 | 0.0090228
Ubuntuã¢ãïŒnoLigatures.txt | 0.0356 | 0.0644 | 0.0120 | 0.0280 | 0.0805 | 0.0003858 | 0.0006891
åªããããŒã¹ã©ã€ã³ããŒã¿ãåŸãããã®ã§ãããã©ãŒãã³ã¹ã埮調æŽãããã³ã«åŸãããã¡ãªããã«ã€ããŠããããç解ã§ããŸãã
@Tyriar xterm-ligature-support
ããã±ãŒãžãã©ãã«ãããã©ã®ããã«ããã«å°éãããã«ã€ããŠã®å¥œã¿ã¯ãããŸããïŒ
xtermjsçµç¹ïŒç§ã«ã¯åççã«èãããŸãïŒã®äžã«çœ®ãã¹ãã ãšããªããèããŠããããã§ãããç§ã«ã¯çµç¹å ã®ãªããžããªãäœæ/ããã·ã¥ããæ©èœããããŸããã çµç¹ã«ç§»è¡ããããŠãŒã¶ãŒã®äžã®ãªããžããªã«é 眮ããŸããããããšãPRãéä¿¡ã§ããã¹ã¿ããªããžããªãäœæããŸããïŒ
ã¬ãã¥ãŒã®èŠ³ç¹ããã¯ãæåã«ïŒ1460ãå®æãããã®ãçã«ããªã£ãŠããã®ã§ãæ¥ãã§ããŸããããæºåãã§ãããã³ãŒããã©ãã«ãã³ãããããèããããšæããŸãã
@princjef https://github.com/xtermjs/xterm-ligature-supportãäœæãã管çè ã¢ã¯ã»ã¹æš©ãä»äžããŸããã ä»ã®ã¢ããªã³ãã©ã®ããã«æ©èœããããèŠãããšããããšæããŸããããããæåã®å ¬åŒã®å€éšã¢ããªã³ã«ãªããŸãã ãããã£ãŠãå®è£ ã®ãªãã¡ã¬ã³ã¹ãšããŠå éšã¢ããªã³ãšhttps://github.com/CoderPad/xterm-webfontã䜿çšããŠ
ããã«PRããã§ãã¯ããŸãð
ãã®https://github.com/microsoft/vscode/issues/34103ã®vscodeãªããžããªã«æŽæ°ãæçš¿ããŸãããããã¯ãxterm.jsã§ã¯ããŒãºãšåŒã¶åã®æ®ãã®äœæ¥ã§ãã
ã¿ãªãããããã§é 匵ã£ãŠãããŠããããšãïŒ ðð
@Tyriarããã質åãããã°ãWebãã©ãŠã¶ããµããŒãããäºå®ã¯ãããŸããïŒ
ããã¯ãã©ãŠã¶ã§ãæ©èœããããšãããããŸããããéåžžã«é ããªããŸãã ç§ãå°ãããããããŸãããããã©ãŠã¶ã§åäœãããã®ããŒãžã§ã³ã¯ã©ããããé ãã£ãã§ããïŒ
ããããšãïŒ
@ torch2424ãªã¬ãã£ãŒã®ãµããŒãã¯ãã©ã³ããã¡ã€ã«ã®è§£æã«äŸåããŠãããããã¬ã³ãã©ãŒãã©ã®ããã«æ©èœãããã¯äžå¯èœã ãšæããŸãïŒãŠãŒã¶ãŒãæäŸãããªã¬ãã£ãŒã®ãããªããŒãã³ãŒããªãïŒã
@Tyriarè¿ éãªå¯Ÿå¿ãããããšãïŒ
ããã¯æ®å¿µãªããšã§ãããæã£ãŠããŠããã£ãã§ãã ç§ãã¡ã¯é»åããŒãžã§ã³ãæ€èšããŠããã®ã§ãå€åãããå«ãŸããæ©èœãšããŠæã€ã§ãããðããããšãïŒ
ããŒãããŠã§ããã©ã³ãã䜿çšããåããã©ã³ããã¡ã€ã«ïŒurghïŒãJSã¬ã«ã ã«ããŒãããŠããªã¬ãã£ãŒããŒã¿ãæœåºããããšã§å¯èœã«ãªããšæããŸãã çµçŽ®ç³žã®æœåºã¯ããã©ãŒãã³ã¹ã«ããªã倧ããªå¹ã¿ãããããããããå®è¡å¯èœã§ãããããã®æ¹æ³ã§è¡ã䟡å€ããããã©ããã¯ããããŸããã memã®äœ¿çšæ³ã«ã€ããŠã¯ããããããŸãããããã©ã³ããã¡ã€ã«ã¯ããªã倧ãããªãå¯èœ@ princjefã«ã¯ãå®è¡æã®åäœã«é¢ããããã€ãã®æ°å€ããããŸããïŒ
調ã¹ãŠãããã°ããçµã¡ãŸããããWebãã©ã³ãã§ããã©ãŠã¶ã§çã®ãã©ã³ãæ å ±ãæœåºããAPIãçµã¿èŸŒãŸããŠããªãã£ãã®ãèŠããŠããŸãã
ãã¡ã€ã«ããç¬èªã®Webãã©ã³ããæåã§ããŒãããåããã¡ã€ã«ã®ã³ã³ãã³ããååã解æããããã®ã³ãŒãã«åå¥ã«æ¿å ¥ããå Žåãã¬ã³ãã©ãŒã§ã®ã°ãªããã£ãã·ã¥ã®æé©åããããããããšãªãçè«çã«å®è¡ã§ããŸãã ãšã¯èšããã®ã®ãæ¢åã®ã¢ããªã³ã¯ããã©ãŠã¶ä»¥å€ã®å Žåãããå€ãã®èª¿æŽãšæåé ç·ãå¿ èŠãšããããããã®ãŠãŒã¹ã±ãŒã¹ã念é ã«çœ®ããŠèšèšãããŠããŸããã
çµçŽ®ç³žã®æœåºã¯ããã©ãŒãã³ã¹ã«ããªã倧ããªå¹ã¿ãããããããããå®è¡å¯èœã§ãããããã®æ¹æ³ã§è¡ã䟡å€ããããã©ããã¯ããããŸããã memã®äœ¿çšæ³ãããããªãå Žåããã©ã³ããã¡ã€ã«ã¯ããªã倧ãããªãå¯èœæ§ããããŸã
ããã¯ãç¹å®ã®ãã©ã³ãã§ã¯ééããªãåé¡ã«ãªãå¯èœæ§ããããŸãã çµçŽ®åŠçããã±ãŒãžã¯ãã«ãã¯ã¢ãã/æ€åºã®å¹çã®ããã«å€§å¹ ã«æé©åãããŠããŸãããä»ã®ãšãããããŒãæéãšã¡ã¢ãªæ¶è²»ãé·ããªããŸãã ãã©ã³ãããšã«å€§å¹ ã«ç°ãªããŸãããèŠããŠãããšããã§ãããã
ååæ å ±ã®æœåºãå¯èœã§ãã£ããšããŠããWeb APIã¯ããã¹ã/æåã³ãŒããã€ã³ãã䜿çšããŸããããã©ã³ãå ã®ååã¯ãæç»ã®ããã«WebAPIã«çŽæ¥æž¡ãããšãã§ããªããã©ã³ãåºæã®ã°ãªãã€ã³ããã¯ã¹ã䜿çšããŸãã
@princjef Thxã¯é ãäžããŠãããã¯é¢åã«èãããŸãããåŸã§ãããäžããå©çã«ã¯äŸ¡å€ããããŸããã
@khaledhosnyã¢ã€ãã¢ã¯ãã³ãŒããã€ã³ããæäœããªããJSã®ãã©ã³ãããååæ å ±ãååŸãããã©ãŠã¶ãŒã®ãã©ã³ãã¬ã³ãã©ãŒã«äœã¬ãã«ã®åŠçãå®è¡ãããããšã«é¢ãããã®ã§ããïŒåããã©ã³ãã䜿çšããŠããå ŽåïŒã ã°ãªãã®æœåºãšç¬èªã®ã¬ã³ããªã³ã°ãJSã ãã§å®è¡ã§ãããã©ããã¯ããããŸããïŒç¬ãJSããŒã¹ã®ãã©ã³ãã¬ã³ãã©ãŒã§ããïŒãããå®è¡å¯èœã§ãã£ãŠããããã©ãŒãã³ã¹ãéåžžã«æªãã§ãããïŒã
ãããæŽæ°ããååã¢ããªã³ãã³ãŒãããŒã¹ïŒhttps://github.com/xtermjs/xterm.js/pull/2847ïŒã«ããŒãžããŸããããŸã å°ãå£ããŠããå¯èœæ§ããããŸãããçµ±åãã¹ãã®ã»ããã¢ãããªãã§ã¯ããããŸããïŒ https://github.com/xtermjs/xterm.js/issues/2896ïŒã
çŸåšãã¢ããªã³ã¯ãã©ãŠã¶ãŒ+ããŒãã©ã³ã¿ã€ã ïŒã€ãŸããelectronïŒã§ã®ã¿å®è¡ãããŸãããããŒãã®è©³çŽ°ãåé€ããŠãããVS CodeïŒhttpsïŒ/ /github.com/microsoft/vscode/issues/34103ïŒã https://github.com/xtermjs/xterm.js/issues/2897ãè©ŠããŠã¿ãã人ãããããå©ããå¿ èŠãšããã©ãã«ãä»ããããŠã
ååã¢ããªã³ã«FontAccess API ïŒçŸåšãªãªãžã³ãã©ã€ã¢ã«äžïŒã䜿çšããããšãæ€èšããå¿ èŠããããŸãã
ç§ã¯ãŠã§ãäžã§ã¿ãŒããã«ãå ±æããxterm.jsã䜿çšããttydã䜿çšããŠããŸãã äžã®ç»åã«ããããã«ãã¢ã€ã³ã³ãæ£ããããŒããããŠããŸããã ãããã¯å ã®ç«¯æ«ã«è¡šç€ºãããŸãã ãããããŠã§ãäžã§ã¯ãããã¯æ¬ èœããŠããŸãã
@UziTechããããããã§ããïŒ ãã®åéã§è¡ãããäœæ¥ã¯ãã¹ãŠããã©ã³ãã¢ã¯ã»ã¹APIã§æŽ»çšã§ããããã«ãååãã§ããå¿ èŠããããšæããŸãã
@UziTech @Tyriar @princjef
ãã©ã³ãã¢ã¯ã»ã¹APIã®ã³ãŒãã¯font-ligatures
ããã±ãŒãžã«å
¥ããããšãã§ãããšæããŸãã
ããã»ã¹ããã©ãŠã¶ãŸãã¯ããŒã/é»åã®ã©ã¡ãã«ããããæ€åºããåŸããã©ã³ãã¢ã¯ã»ã¹APIãåŒã³åºãããçŸåšã®ã¡ãœããã䜿çšãããã決å®ã§ããŸãã
ããããŒãªæŠå¿µå®èšŒãäœæãããã©ãŒã¯ïŒlocalFontsãã©ã³ãïŒã®ãã¢ã§å®è¡ããŸããã
chrome://flags
#font-access
ãæå¹ã«ããåŸã§è©ŠããŠã¿ãããšãã§ããŸãïŒãã©ã³ããžã®ã¢ã¯ã»ã¹ãèš±å¯ããåŸãäžåºŠæŽæ°ããå¿
èŠããããŸãïŒ
ãããããªãã«è¯ããããªããç§ã¯prãéããŠã¿ãããšãã§ããŸãã
ããã»ã¹ããã©ãŠã¶ãŸãã¯ããŒã/é»åã®ã©ã¡ãã«ããããæ€åºããåŸããã©ã³ãã¢ã¯ã»ã¹APIãåŒã³åºãããçŸåšã®ã¡ãœããã䜿çšãããã決å®ã§ããŸãã
Webã®ã¿ã®ãããžã§ã¯ãã§ã¯ããŒãã®è©³çŽ°ããã³ãã«ããéã«åé¡ãçºçããããããã®ãœãªã¥ãŒã·ã§ã³ã§åé¡ãçºçããããšã«ãªããŸãã ãã®çãã¯ãããŸããããæ©èœã®æ€åºãæåããå Žåã¯ããã©ã«ããå転ãïŒæçµçã«ã¯ïŒïŒããã©ã³ãã¢ã¯ã»ã¹ãããã©ã«ãã«ããå¿ èŠããããšæããŸãããã以å€ã®å Žåã¯ãã©ãŒã«ããã¯ããŸãã
ãããæ©èœãããã®ãçŽ æŽãããä»äºã§ãïŒ ããã¯çŽ æŽãããã§ãð
å¿
èŠãªå Žåã«ã®ã¿ãæ©èœæ€åºåŸã«require
ã§ããŸãã
ãŸããäŸåããWebã®ã¿ã®ãããžã§ã¯ãã¯ããã³ãã«äžã«ããããå€éšãšããŠããŒã¯ã§ããŸãã
ãã©ãŠã¶ãŒéã§äœ¿çšã§ããããã«ãªã£ããããã©ã³ãã¢ã¯ã»ã¹APIãããã©ã«ããšããŠäœ¿çšã§ããŸãã
ðåé¿çããããšãã£ããã£ãŠããã®ã§ããã³ãã©ãŒã®æžå¿µã«ã€ããŠèããããŠãããããããŸããã ãšã«ããElectronã§ãã©ã³ãã¢ã¯ã»ã¹ããªã³ã«ãªã£ãããElectronãªãã·ã§ã³ãéæšå¥š/段éçã«å»æ¢ããäºå®ã§ãã
@Tyriarãã©ã³ããã¡ã€ã³ããŒã®ã¢ããããŒãã§ååã¢ããªã³ã®ãªãªãŒã¹ãããã«å ¥æã§ããŸããïŒ
@UziTech [email protected]
ã¯ãã§ãã4.10ã®ããŒãžã§ã³ããã³ããããªãã€ã³ããŒãäœæããŸããhttps://github.com/xtermjs/xterm.js/issues/3220
ãããè¡ãããã®æåã®ã¹ããããšããŠãpr princjef / font-ligaturesïŒ22ãéããŸããã
æãåèã«ãªãã³ã¡ã³ã
éåžžã®ååã«ã¯èå³ããªããšæããŸããïŒå®éã
li
ãªã©ã®ååãæå¹ã«ããã®ã¯æªãããšã§ãïŒã==
ã!==
å Žåã¯=>
ãªã©ã ããã¯ãfiraã³ãŒãã®çå¹ ãã©ã³ãã§ãµããŒããããŠããååã®çŽ æŽããããªã¹ãã§ããhttps://github.com/tonsky/FiraCode/blob/master/showcases/all_ligatures.png