mKittyConfFont.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #!/bin/bash
  2. source "sKitty.sh"
  3. HEAD(){ for (( a=2; a<=18; a++ ))
  4. do
  5. TPUT $a 1
  6. $E "\033[1;35m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  7. done
  8. TPUT 3 1
  9. $E "\033[0m\033[35m+- Font customization ----------------------- Настройка шрифта ------------------+\033[0m";
  10. TPUT 16 1
  11. $E "\033[0m\033[35m+--- Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter ---------------------------------------------------+\033[0m";
  12. MARK;TPUT 1 1
  13. $E "$c";UNMARK;}
  14. i=0; CLEAR; CIVIS;NULL=/dev/null
  15. # 32 это расстояние сверху и 48 это расстояние слева
  16. FOOT(){ MARK;TPUT 19 1
  17. $E "$c";UNMARK;}
  18. # это управляет кнопками ввер/хвниз
  19. i=0; CLEAR; CIVIS;NULL=/dev/null
  20. #
  21. M0(){ TPUT 4 3; $e " Отрегулируйте вертикальное выравнивание \e[32madjust_baseline \e[0m";}
  22. M1(){ TPUT 5 3; $e " Например \e[32msymbol_map \e[0m";}
  23. M2(){ TPUT 6 3; $e " Например узкие символы \e[32mnarrow_symbols \e[0m";}
  24. M3(){ TPUT 7 3; $e " Kак обрабатывать многосимвольные лигатуры \e[32mdisable_ligatures \e[0m";}
  25. M4(){ TPUT 8 3; $e " Kакие функции OpenType включить/отключить \e[32mfont_features \e[0m";}
  26. M5(){ TPUT 9 3; $e " Изменение размеров линий символов Unicode \e[32mbox_drawing_scale \e[0m";}
  27. M6(){ TPUT 10 3; $e " Цвет текста \e[32mforeground \e[0m";}
  28. M7(){ TPUT 11 3; $e " Размер шрифта \e[32mfont_size \e[0m";}
  29. M8(){ TPUT 12 3; $e " Семейство шрифтов \e[32mfont_family \e[0m";}
  30. M9(){ TPUT 13 3; $e " Начертание шрифта \e[32mbold_font \e[0m";}
  31. M10(){ TPUT 14 3; $e " Список поддерживаемых шрифтов \e[32mkitty +list-fonts \e[0m";}
  32. M11(){ TPUT 15 3; $e " Двунаправленный текст \e[32mBidi \e[0m";}
  33. #
  34. M12(){ TPUT 17 3; $e " \e[90mExit \033[0m";}
  35. LM=12
  36. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  37. POS(){ if [[ $cur == up ]];then ((i--));fi
  38. if [[ $cur == dn ]];then ((i++));fi
  39. if [[ $i -lt 0 ]];then i=$LM;fi
  40. if [[ $i -gt $LM ]];then i=0;fi;}
  41. REFRESH(){ after=$((i+1)); before=$((i-1))
  42. if [[ $before -lt 0 ]];then before=$LM;fi
  43. if [[ $after -gt $LM ]];then after=0;fi
  44. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  45. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  46. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  47. INIT(){ R;HEAD;FOOT;MENU;}
  48. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  49. # Функция возвращения в меню
  50. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  51. while [[ "$O" != " " ]]; do case $i in
  52. 0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e " Отрегулируйте вертикальное выравнивание текста (высоту в ячейке, на которой
  53. расположен текст). Вы можете использовать либо числа, которые интерпретируются
  54. как пиксели, либо проценты (число, за которым следует %), которые
  55. интерпретируются как процент высоты строки. Положительное значение перемещает
  56. базовую линию вверх, а отрицательное — вниз.
  57. Позиции подчеркивания и зачеркивания корректируются соответствующим образом.
  58. \e[32m adjust_baseline 0\e[0m";ES;fi;;
  59. 1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e " Например. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols Сопоставьте
  60. указанные кодовые точки Unicode с определенным шрифтом. Полезно, если вам нужен
  61. специальный рендеринг для некоторых символов, например для Powerline.
  62. Избегает необходимости в исправленных шрифтах. Каждая кодовая точка Юникода
  63. указывается в форме U+<кодовая точка в шестнадцатеричном формате>.
  64. Вы можете указать несколько кодовых точек, разделенных запятыми, и диапазоны,
  65. разделенные дефисами. Сам symbol_map может быть указан несколько раз.
  66. Синтаксис: symbol_map codepoints Название семейства шрифтов
  67. \e[32m symbol_map\e[0m";ES;fi;;
  68. 2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "
  69. Например. узкие_символы U+E0A0-U+E0A3,U+E0C0-U+E0C7 1
  70. Обычно для частного использования символы Unicode и некоторые символы
  71. символов/дингбатов, если за символом следует один или несколько пробелов,
  72. ktty будет использовать эти дополнительные ячейки для отображения символ
  73. крупнее, если символ в шрифте имеет широкое соотношение сторон.
  74. Используя эту настройку, вы может заставить kitty ограничить отображение
  75. указанных кодовых точек в указанном количестве ячеек, по умолчанию в одной ячейке
  76. Синтаксис: narrow_symbols codepoints Необязательно количество ячеек
  77. \e[32m narrow_symbols\e[0m";ES;fi;;
  78. 3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
  79. Выберите, как вы хотите обрабатывать многосимвольные лигатуры.
  80. По умолчанию они всегда отображаются.
  81. Вы можете сказать котенку не отображать их, когда на них наведен курсор.
  82. с помощью курсора, чтобы упростить редактирование, или чтобы kitty никогда не
  83. отображал их, используя всегда, если они вам не нравятся.
  84. Стратегия лигатуры может быть установлена для каждого окна
  85. либо с помощью средства удаленного управления kitty,
  86. либо путем определения ярлыков для него в kitty.conf, например:
  87. map alt+1 disable_ligatures_in active always
  88. map alt+2 disable_ligatures_in all never
  89. map alt+3 disable_ligatures_in tab cursor
  90. Обратите внимание, что это относится к программным лигатурам,
  91. обычно реализуемым с помощью функции calt OpenType.
  92. Для отключения общих лигатур используйте параметр font_features.
  93. \e[32m disable_ligatures never\e[0m";ES;fi;;
  94. 4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
  95. Например. font_features нет.
  96. Выберите, какие именно функции OpenType включить или отключить.
  97. Это полезно, поскольку некоторые шрифты могут иметь полезные функции в терминале.
  98. Например, Fira Code Retina включает в себя необязательную функцию, ноль, которая
  99. в этом шрифте изменяет внешний вид нуля (0), чтобы сделать его более простым.
  100. отличить от Ø. Fira Code Retina также включает другие дополнительные функции,
  101. известные как стилистические наборы, которые имеют теги от ss01 до ss20.
  102. Для точного синтаксис для отдельных функций см. в документации Harfbuzz:
  103. https://harfbuzz.github.io/harfbuzz-hb-common.html#hb-feature-from-string
  104. Обратите внимание, что этот код индексируется по имени PostScript,
  105. а не по семейству шрифтов. Это позволяет вам определить очень точные настройки
  106. функции; например вы можете отключить функцию курсивом, но не обычным шрифтом.
  107. В Linux они сначала считываются из базы данных FontConfig, а затем применяется
  108. этот параметр, поэтому их можно настраивается в одном центральном месте.
  109. Чтобы получить имя PostScript для шрифта, используйте kitty +list-fonts
  110. --psnames:
  111. .. code-block:: sh
  112. \$ kitty +list-fonts --psnames | grep Fira
  113. Fira Code
  114. Fira Code Bold (FiraCode-Bold)
  115. Fira Code Light (FiraCode-Light)
  116. Fira Code Medium (FiraCode-Medium)
  117. Fira Code Regular (FiraCode-Regular)
  118. Fira Code Retina (FiraCode-Retina)
  119. В скобках указано имя PostScript.
  120. Включить альтернативные нули и цифры старого стиля:
  121. font_features FiraCode-Retina +zero +onum
  122. Включить только альтернативные нули font_features FiraCode-Retina +zero
  123. Отключить нормальные лигатуры, но сохранить функцию калта, которая в этом шрифте
  124. разбивает монотонность font_features TT2020StyleB-Regular -liga + calt
  125. В сочетании с force_ltr вы можете полностью отключить формирование арабского
  126. языка и смотреть только на отдельные формы, если они появляются в документе.
  127. Вы можете сделать это, например:
  128. font_features UnifontMedium +isol -medi -fina -init
  129. \e[32m font_features\e[0m";ES;fi;;
  130. 5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
  131. Изменение размеров линий, используемых для рисования символов Unicode.
  132. Эти значения указаны в точках. Они будут масштабироваться с помощью
  133. DPI монитора, чтобы получить значение в пикселях.
  134. Должно быть четыре значения:
  135. соответствующие тонким, нормальным, толстым и очень толстым линиям.
  136. \e[32m box_drawing_scale 0.001, 1, 1.5, 2\e[0m";ES;fi;;
  137. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m foreground #ffffff\e[0m";ES;fi;;
  138. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m font_size 3.0\e[0m";ES;fi;;
  139. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo -e "
  140. Fonts kitty имеет очень мощное управление шрифтами.
  141. Вы можете настроить отдельные шрифты
  142. и даже указать специальные шрифты для определенных символов.
  143. \e[32m font_family\e[36m monospace
  144. serif
  145. sans-serif
  146. cursive
  147. fantasy
  148. arial
  149. verdana
  150. Georgia
  151. Impact
  152. Comic Sans MS
  153. Trebuchet MS
  154. Courier New
  155. Times New Roman
  156. \e[0m";ES;fi;;
  157. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo -e "\e[32m
  158. bold_font\e[36m auto
  159. normal
  160. bold
  161. lighter
  162. bolder
  163. \e[0m";ES;fi;;
  164. 10) S=M10;SC;if [[ $cur == enter ]];then R;kitty +list-fonts;ES;fi;;
  165. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo -e "
  166. kitty не поддерживает BIDI (двунаправленный текст),
  167. однако для скриптов RTL слова автоматически отображаются в RTL.
  168. То есть в сценарии RTL слова «HELLO WORLD» отображается в котенке как
  169. «WORLD HELLO», и если вы попытаетесь выбрать подстроку RTL-образной строки,
  170. вы получите символ, который был бы там, строка была LTR.
  171. Например, предположив еврейское слово ירושלים, выбор символа,
  172. который на экране выглядит как ם, на самом деле запишет буфер выбора символа י
  173. поведение kitty по умолчанию полезно в сочетании с фильтром для изменения
  174. порядка слов, однако, если вы хотите манипулировать Глифы RTL, работать с ними
  175. может быть очень сложно, поэтому предусмотрена эта опция для отключения.
  176. Кроме того, эту опцию можно использовать с программой командной строки
  177. GNU FriBidi: https://github.com/fribidi/fribidi#executable
  178. чтобы получить поддержку BIDI, потому что это заставит kitty всегда обрабатывать
  179. текст как LTR, чего ожидает FriBidi для терминалов.
  180. ";ES;fi;;
  181. #
  182. 12) S=M12;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
  183. esac;POS;done