nbsp revision bfd7cbc1
1c067fea9Sghen// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP), 2c067fea9Sghen// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired 3c067fea9Sghen// levels. 4c067fea9Sghen 5c067fea9Sghen 6c067fea9Sghen//////////////////////////////////////// 7c067fea9Sghen// Only Space 8154daed1Smrg 9154daed1Smrgpartial 10154daed1Smrgxkb_symbols "none" { 11154daed1Smrg key <SPCE> { 12154daed1Smrg type[Group1]="ONE_LEVEL", 13154daed1Smrg symbols[Group1]= [ space ] 14154daed1Smrg }; 15154daed1Smrg}; 16154daed1Smrg 17c067fea9Sghen 18c067fea9Sghen//////////////////////////////////////// 19c067fea9Sghen// No-Break Space 20c067fea9Sghen 21154daed1Smrgpartial 22154daed1Smrgxkb_symbols "level2" { 23154daed1Smrg key <SPCE> { 24154daed1Smrg type[Group1]="TWO_LEVEL", 25154daed1Smrg symbols[Group1]= [ space, nobreakspace ] 26154daed1Smrg }; 27154daed1Smrg}; 28154daed1Smrg 29154daed1Smrg 30154daed1Smrg// level3 & level3ns provide no-breaking spaces starting from level3 31154daed1Smrg// This is good for typographers but experience shows many users accidently 32154daed1Smrg// type no-breaking spaces on the CLI (resulting in errors) 3347fb91feSmrg// Used by fr(latin9) and lt(std) 34154daed1Smrgpartial 35154daed1Smrgxkb_symbols "level3" { 36154daed1Smrg key <SPCE> { 37154daed1Smrg type[Group1]="FOUR_LEVEL", 38154daed1Smrg symbols[Group1]= [ space, space, nobreakspace ] 39154daed1Smrg }; 40154daed1Smrg}; 41154daed1Smrg 42154daed1Smrg// level3s kills fourth level 43154daed1Smrg// Used by ca(multix) 44154daed1Smrgpartial 45154daed1Smrgxkb_symbols "level3s" { 46154daed1Smrg key <SPCE> { 47154daed1Smrg type[Group1]="FOUR_LEVEL", 48154daed1Smrg symbols[Group1]= [ space, space, nobreakspace, NoSymbol ] 49154daed1Smrg }; 50154daed1Smrg}; 51154daed1Smrg 52c067fea9Sghen// for this reason pushing no-breaking spaces to level4 is the safe default nowadays 53154daed1Smrgpartial 54c067fea9Sghenxkb_symbols "level4" { 55154daed1Smrg key <SPCE> { 56154daed1Smrg type[Group1]="FOUR_LEVEL", 57c067fea9Sghen symbols[Group1]= [ space, space, space, nobreakspace ] 58154daed1Smrg }; 59154daed1Smrg}; 60154daed1Smrg 61154daed1Smrg 62c067fea9Sghen//////////////////////////////////////// 63c067fea9Sghen// Narrow No-Break Space 64c067fea9Sghen 65c067fea9Sghen// level3n provides narrow no-breaking space in addition to the normal one 66154daed1Smrgpartial 67c067fea9Sghenxkb_symbols "level3n" { 68154daed1Smrg key <SPCE> { 69154daed1Smrg type[Group1]="FOUR_LEVEL", 70c067fea9Sghen symbols[Group1]= [ space, space, nobreakspace, 0x100202F ] 71154daed1Smrg }; 72154daed1Smrg}; 73154daed1Smrg 74154daed1Smrg// level4n provides narrow no-breaking space in addition to the normal one 75154daed1Smrgpartial 76154daed1Smrgxkb_symbols "level4n" { 77154daed1Smrg key <SPCE> { 78154daed1Smrg type[Group1]="EIGHT_LEVEL", 79154daed1Smrg symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ] 80154daed1Smrg }; 81154daed1Smrg}; 82154daed1Smrg 83154daed1Smrg// level4nl provides narrow no-breaking space in addition to the normal one 84154daed1Smrg// without forcing the use of level5 for mostly four-level layouts 85154daed1Smrg// Used by fr(oss), be(oss)… 86154daed1Smrgpartial 87154daed1Smrgxkb_symbols "level4nl" { 88154daed1Smrg key <SPCE> { 89154daed1Smrg type[Group1]="LOCAL_EIGHT_LEVEL", 90154daed1Smrg symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ] 91154daed1Smrg }; 92154daed1Smrg}; 93154daed1Smrg 94c067fea9Sghen 95c067fea9Sghen//////////////////////////////////////// 96c067fea9Sghen// Zero-Width Non-Joiner & Zero-Width Joiner 97c067fea9Sghen// Author: Behnam Esfahbod <behnam@esfahbod.info> 98c067fea9Sghen 99c067fea9Sghen// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other 100c067fea9Sghen// languages that use PersoArabic script. 101c067fea9Sghen 102c067fea9Sghen 103c067fea9Sghen// ZWNJ on level 2 104c067fea9Sghenpartial 105c067fea9Sghenxkb_symbols "zwnj2" { 106c067fea9Sghen key <SPCE> { 107c067fea9Sghen type[Group1]="TWO_LEVEL", 108c067fea9Sghen symbols[Group1]= [ space, 0x100200c ] 109c067fea9Sghen }; 110c067fea9Sghen}; 111c067fea9Sghen 112c067fea9Sghen 113c067fea9Sghen// ZWNJ on level 2 114c067fea9Sghen// ZWJ on level 3 115c067fea9Sghenpartial 116c067fea9Sghenxkb_symbols "zwnj2zwj3" { 117c067fea9Sghen key <SPCE> { 118c067fea9Sghen type[Group1]="FOUR_LEVEL", 119c067fea9Sghen symbols[Group1]= [ space, 0x100200c, 0x100200d ] 120c067fea9Sghen }; 121c067fea9Sghen}; 122c067fea9Sghen 123c067fea9Sghen 124c067fea9Sghen// ZWNJ on level 2 125c067fea9Sghen// ZWJ on level 3 126c067fea9Sghen// NBSP on level 4 127c067fea9Sghenpartial 128c067fea9Sghenxkb_symbols "zwnj2zwj3nb4" { 129c067fea9Sghen key <SPCE> { 130c067fea9Sghen type[Group1]="FOUR_LEVEL", 131c067fea9Sghen symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ] 132c067fea9Sghen }; 133c067fea9Sghen}; 134c067fea9Sghen 135c067fea9Sghen// ZWNJ on level 2 136c067fea9Sghen// NBSP on level 3 137c067fea9Sghen// Used by ir(ku_ara), af(basic), af(ps), af(uz), af(olpc-fa), af(olpc-ps), af(olpc-uz) 138c067fea9Sghenpartial 139c067fea9Sghenxkb_symbols "zwnj2nb3" { 140c067fea9Sghen key <SPCE> { 141c067fea9Sghen type[Group1]="FOUR_LEVEL", 142c067fea9Sghen symbols[Group1]= [ space, 0x100200c, nobreakspace ] 143c067fea9Sghen }; 144c067fea9Sghen}; 145c067fea9Sghen 146c067fea9Sghen 147c067fea9Sghen// ZWNJ on level 2 148bfd7cbc1Smrg// NBSP on level 3 149c067fea9Sghenpartial 150c067fea9Sghenxkb_symbols "zwnj2nb3s" { 151c067fea9Sghen key <SPCE> { 152c067fea9Sghen type[Group1]="FOUR_LEVEL", 153c067fea9Sghen symbols[Group1]= [ space, 0x100200c, nobreakspace, NoSymbol ] 154c067fea9Sghen }; 155c067fea9Sghen}; 156c067fea9Sghen 157c067fea9Sghen 158c067fea9Sghen// ZWNJ on level 2 159c067fea9Sghen// NBSP on level 3 160c067fea9Sghen// ZWJ on level 4 161c067fea9Sghenpartial 162c067fea9Sghenxkb_symbols "zwnj2nb3zwj4" { 163c067fea9Sghen key <SPCE> { 164c067fea9Sghen type[Group1]="FOUR_LEVEL", 165c067fea9Sghen symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ] 166c067fea9Sghen }; 167c067fea9Sghen}; 168c067fea9Sghen 169c067fea9Sghen 170c067fea9Sghen// ZWNJ on level 2 171c067fea9Sghen// NBSP on level 3 172c067fea9Sghen// NNBSP on level 4 173c067fea9Sghen// Used by ir(pes) 174c067fea9Sghenpartial 175c067fea9Sghenxkb_symbols "zwnj2nb3nnb4" { 176c067fea9Sghen key <SPCE> { 177c067fea9Sghen type[Group1]="FOUR_LEVEL", 178c067fea9Sghen symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ] 179c067fea9Sghen }; 180c067fea9Sghen}; 181c067fea9Sghen 182c067fea9Sghen 183c067fea9Sghen// ZWNJ on level 3 184c067fea9Sghen// ZWJ on level 4 185c067fea9Sghen// Used by in(deva), in(olpc) 186c067fea9Sghenpartial 187c067fea9Sghenxkb_symbols "zwnj3zwj4" { 188c067fea9Sghen key <SPCE> { 189c067fea9Sghen type[Group1]="FOUR_LEVEL", 190c067fea9Sghen symbols[Group1]= [ space, space, 0x100200c, 0x100200d ] 191c067fea9Sghen }; 192c067fea9Sghen}; 193c067fea9Sghen 194bfd7cbc1Smrg 195bfd7cbc1Smrg// NBSP on level 2 196bfd7cbc1Smrg// ZWNJ on level 3 197bfd7cbc1Smrg// Used by lk(sin_phonetic) 198bfd7cbc1Smrgpartial 199bfd7cbc1Smrgxkb_symbols "nb2zwnj3s" { 200bfd7cbc1Smrg key <SPCE> { 201bfd7cbc1Smrg type[Group1]="FOUR_LEVEL", 202bfd7cbc1Smrg symbols[Group1]= [ space, nobreakspace, 0x100200c, NoSymbol ] 203bfd7cbc1Smrg }; 204bfd7cbc1Smrg}; 205