index.md (3862B)
1 Ligature support 2 ================ 3 4 Description 5 ----------- 6 This patch adds proper drawing of ligatures. 7 8 The code uses Harfbuzz library to transform original text of a single line to a list of glyphs with ligatures included. 9 10 Example 11 ------- 12 Taken with Fira Code Regular 14pt: 13 14 [![fira_code](fira-code.png)](fira-code.png) 15 16 Notes 17 ----- 18 * The patch adds additional dependency on Harfbuzz library and headers. 19 * Original patch was made for vanilla version of ST from latest master commit. It is not 100% compatible with Scrollback and Alpha patches, so I made modified versions that you can apply on top of a Scrollback and/or Alpha patch. 20 * Due to some limitations in drawing engine, ligatures will break when crossing colors, font styles or selection. They will still render properly as separate symbols, just not as ligatures. 21 * Since 0.8.4 patch, there's now a way to enable additional font rendering features. Look into `features` array in `hb.c` for details. 22 23 Boxdraw 24 ------- 25 * The original patch does not work very well with the boxdraw patch. Since it requires some additional changes in the code to make ligatures compatible with boxdraw, a special version of the patch was added, that you can apply on top of the boxdraw patch. 26 * It does not include Alpha or Scrollback patches. 27 28 Download 29 -------- 30 **0.9.2**: 31 * [st-ligatures-0.9.2](0.9.2/st-ligatures-20240427-0.9.2.diff) 32 * [st-ligatures-scrollback-0.9.2](0.9.2/st-ligatures-scrollback-20240427-0.9.2.diff) 33 * [st-ligatures-scrollback-ringbuffer-0.9.2](0.9.2/st-ligatures-scrollback-ringbuffer-20240427-0.9.2.diff) 34 * [st-ligatures-alpha-0.9.2](0.9.2/st-ligatures-alpha-20240427-0.9.2.diff) 35 * [st-ligatures-alpha-scrollback-0.9.2](0.9.2/st-ligatures-alpha-scrollback-20240427-0.9.2.diff) 36 * [st-ligatures-alpha-scrollback-ringbuffer-0.9.2](0.9.2/st-ligatures-alpha-scrollback-ringbuffer-20240427-0.9.2.diff) 37 * [st-ligatures-boxdraw-0.9.2](0.9.2/st-ligatures-boxdraw-20240427-0.9.2.diff) 38 39 **0.9**: 40 * [st-ligatures-0.9](0.9/st-ligatures-20240105-0.9.diff) 41 * [st-ligatures-scrollback-0.9](0.9/st-ligatures-scrollback-20240105-0.9.diff) 42 * [st-ligatures-scrollback-ringbuffer-0.9](0.9/st-ligatures-scrollback-ringbuffer-20240105-0.9.diff) 43 * [st-ligatures-alpha-0.9](0.9/st-ligatures-alpha-20240105-0.9.diff) 44 * [st-ligatures-alpha-scrollback-0.9](0.9/st-ligatures-alpha-scrollback-20240105-0.9.diff) 45 * [st-ligatures-alpha-scrollback-ringbuffer-0.9](0.9/st-ligatures-alpha-scrollback-ringbuffer-20240105-0.9.diff) 46 * [st-ligatures-boxdraw-0.9](0.9/st-ligatures-boxdraw-20240105-0.9.diff) 47 48 **0.8.4**: 49 * [st-ligatures-0.8.4](0.8.4/st-ligatures-20210824-0.8.4.diff) 50 * [st-ligatures-scrollback-0.8.4](0.8.4/st-ligatures-scrollback-20210824-0.8.4.diff) 51 * [st-ligatures-alpha-0.8.4](0.8.4/st-ligatures-alpha-20210824-0.8.4.diff) 52 * [st-ligatures-alpha-scrollback-0.8.4](0.8.4/st-ligatures-alpha-scrollback-20210824-0.8.4.diff) 53 * [st-ligatures-boxdraw-0.8.4](0.8.4/st-ligatures-boxdraw-20210824-0.8.4.diff) 54 55 **0.8.3**: 56 * [st-ligatures-0.8.3](0.8.3/st-ligatures-20200430-0.8.3.diff) 57 * [st-ligatures-scrollback-0.8.3](0.8.3/st-ligatures-scrollback-20200430-0.8.3.diff) 58 * [st-ligatures-alpha-0.8.3](0.8.3/st-ligatures-alpha-20200430-0.8.3.diff) 59 * [st-ligatures-alpha-scrollback-0.8.3](0.8.3/st-ligatures-alpha-scrollback-20200430-0.8.3.diff) 60 * [st-ligatures-boxdraw-0.8.3](0.8.3/st-ligatures-boxdraw-20200430-0.8.3.diff) 61 62 **0.8.2-28ad288**: 63 * [st-ligatures](28ad288/st-ligatures-20200428-28ad288.diff) 64 * [st-ligatures-scrollback](28ad288/st-ligatures-scrollback-20200428-28ad288.diff) 65 * [st-ligatures-alpha](28ad288/st-ligatures-alpha-20200428-28ad288.diff) 66 * [st-ligatures-alpha-scrollback](28ad288/st-ligatures-alpha-scrollback-20200428-28ad288.diff) 67 * [st-ligatures-boxdraw](28ad288/st-ligatures-boxdraw-20200428-28ad288.diff) 68 69 70 Authors 71 ------- 72 * Alexander Rogachev - [https://github.com/cog1to](https://github.com/cog1to)