1c Created by Lorna A. Priest, SIL International
2c Any changes to be made should be able to be
3c      made in the "stores" rather than in the rules
4c This keyboard uses both "virtual keys" (ALT, CTRL) and deadkeys
5c      and will only work on US keyboards
6c This keyboard was written to normalize to NFC. If you wish to
7c      use NFD then you should go through the keyboard and
8c      remove "use(NFC)"
9c 2009-08-31 LP updated all PUA characters to their official Unicode codepoints
10c      Distributed under X11 license
11c      Added TSF store and rule
12
13NAME "Pan Africa (for US Keyboards)"
14VERSION 6.0
15BITMAP AFR.bmp
16HOTKEY  "^+A"
17COPYRIGHT "� 2003-2009 SIL International. Distributed under the X11 free software license (http://scripts.sil.org/X11License)."
18
19begin Unicode > use(MainU)
20
21store(&mnemoniclayout) "0"
22store(&message) "This keyboard was written to normalize to NFC." \
23                " If you wish to use NFD then you should go" \
24                " through the keyboard and remove 'use(NFC)'"
25
26c This new store is a fix for the problem of fast typing reordering keystrokes when using Keyman with TSF
27store(chars) 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]\{}|;:",./<>?' "'`~"
28
29c deadkey for first set
30store(K_1)       "["
31
32c deadkey for second set
33store(K_2)       "]"
34
35c reassigned characters (these need to be changed if the above deadkeys are changed)
36store(deadkeys_KV) [LALT K_SLASH]       [SHIFT LALT K_COMMA]   [SHIFT LALT K_PERIOD] \
37                   [SHIFT LALT K_2]     [LALT K_LBRKT]         [LALT K_RBRKT] \
38                   [SHIFT LALT K_6]     [SHIFT LALT K_HYPHEN]  [LALT K_BKQUOTE] \
39                   [SHIFT LALT K_LBRKT] [SHIFT LALT K_BKSLASH] [SHIFT LALT K_RBRKT] \
40                   [SHIFT LALT K_BKQUOTE]
41store(deadkeys_K)  "/"               "<"                       ">" \
42                   "@"               "["                       "]" \
43                   "^"               "_"                       "`" \
44                   "{"               "|"                       "}" \
45                   "~"
46store(deadkeys)    U+002F            U+003C                    U+003E \
47                   U+0040            U+005B                    U+005D \
48                   U+005E            U+005F                    U+0060 \
49                   U+007B            U+007C                    U+007D \
50                   U+007E
51
52
53c using first deadkey
54c                hand a           hook b           hook c           hook d
55c                schwa            hook f           hook g           hook h
56c                bar i            hook d           hook k           ipsilon
57c                left n           eng              open o           hook p
58c                slash o          bar r            epsilon          hook t
59c                bar u            hook v           hook w           gamma
60c                hook y           ezh              glottal          semi-colon
61c                opening chevron  closing chevron
62
63store(KV_lc1)    [RALT K_A]       [RALT K_B]       [RALT K_C]       [RALT K_D] \
64                 [RALT K_E]       [RALT K_F]       [RALT K_G]       [RALT K_H] \
65                 [RALT K_I]       [RALT K_J]       [RALT K_K]       [RALT K_L] \
66                 [RALT K_M]       [RALT K_N]       [RALT K_O]       [RALT K_P] \
67                 [RALT K_Q]       [RALT K_R]       [RALT K_S]       [RALT K_T] \
68                 [RALT K_U]       [RALT K_V]       [RALT K_W]       [RALT K_X] \
69                 [RALT K_Y]       [RALT K_Z]       [RALT K_QUOTE]
70
71
72store(K_lc1)     "a"              "b"              "c"              "d" \
73                 "e"              "f"              "g"              "h" \
74                 "i"              "j"              "k"              "l" \
75                 "m"              "n"              "o"              "p" \
76                 "q"              "r"              "s"              "t" \
77                 "u"              "v"              "w"              "x" \
78                 "y"              "z"              "'"
79
80
81store(lc1)       U+0251           U+0253           U+0188           U+0257 \
82                 U+01DD           U+0192           U+0260           U+0266 \
83                 U+0268           U+0256           U+0199           U+0269 \
84                 U+0272           U+014B           U+0254           U+01A5 \
85                 U+00F8           U+024D           U+025B           U+01AD \
86                 U+0289           U+028B           U+2C73           U+0263 \
87                 U+01B4           U+0292           U+02BC
88
89store(K_UC1)     "A"              "B"              "C"              "D" \
90                 "E"              "F"              "G"              "H" \
91                 "I"              "J"              "K"              "L" \
92                 "M"              "N"              "O"              "P" \
93                 "Q"              "R"              "S"              "T" \
94                 "U"              "V"              "W"              "X" \
95                 "Y"              "Z"              "?"
96
97store(KV_UC1)    [SHIFT RALT K_A] [SHIFT RALT K_B] [SHIFT RALT K_C] [SHIFT RALT K_D] \
98                 [SHIFT RALT K_E] [SHIFT RALT K_F] [SHIFT RALT K_G] [SHIFT RALT K_H] \
99                 [SHIFT RALT K_I] [SHIFT RALT K_J] [SHIFT RALT K_K] [SHIFT RALT K_L] \
100                 [SHIFT RALT K_M] [SHIFT RALT K_N] [SHIFT RALT K_O] [SHIFT RALT K_P] \
101                 [SHIFT RALT K_Q] [SHIFT RALT K_R] [SHIFT RALT K_S] [SHIFT RALT K_T] \
102                 [SHIFT RALT K_U] [SHIFT RALT K_V] [SHIFT RALT K_W] [SHIFT RALT K_X] \
103                 [SHIFT RALT K_Y] [SHIFT RALT K_Z] [SHIFT RALT K_SLASH]
104
105store(UC1)       U+2C6D           U+0181           U+0187           U+018A \
106                 U+018E           U+0191           U+0193           U+021E \
107                 U+0197           U+0189           U+0198           U+0196 \
108                 U+019D           U+014A           U+0186           U+01A4 \
109                 U+00D8           U+024C           U+0190           U+01AC \
110                 U+0244           U+01B2           U+2C72           U+0194 \
111                 U+01B3           U+01B7           U+0294
112
113
114
115c using second deadkey
116c                optional schwa  hook r           esh  \
117c                bar t            upside v        barred z
118c                reverse glottal
119
120store(KV_lc2)    [LALT K_E]       [LALT K_R]       [LALT K_S] \
121                 [LALT K_T]       [LALT K_V]       [LALT K_Z]
122
123store(K_lc2)     "e"              "r"              "s" \
124                 "t"              "v"              "z"
125
126store(lc2)       U+0259           U+027D           U+0283 \
127                 U+0167           U+028C           U+01B6
128
129store(KV_UC2)    [SHIFT LALT K_E] [SHIFT LALT K_R] [SHIFT LALT K_S] \
130                 [SHIFT LALT K_T] [SHIFT LALT K_V] [SHIFT LALT K_Z]  \
131                 [SHIFT LALT K_SLASH]
132
133store(K_UC2)     "E"              "R"              "S" \
134                 "T"              "V"              "Z" \
135                 "?"
136
137store(UC2)       U+018F           U+2C64           U+01A9 \
138                 U+0166           U+0245           U+01B5            \
139                 U+0295
140store(unused2)   "abcdfghijklmnopquwxy" \
141                 "ABCDFGHIJKLMNOPQUWXY"
142
143c DIACRITICS
144store(DAgrave)       U+0300
145store(DAacute)       U+0301
146store(DAcirc)        U+0302
147store(DAtilde)       U+0303
148store(DAmacron)      U+0304
149store(DAdot)         U+0307
150store(DAdiaeresis)   U+0308
151store(DAhachek)      U+030C
152store(DAvert)        U+030D
153store(DAcircle)      U+030A
154store(DUtilde)       U+0330
155store(DUmacron)      U+0331
156store(DUdot)         U+0323
157store(DUvert)        U+0329
158store(DUcircle)      U+0325
159store(DUcedilla)     U+0327
160
161c DIACRITICS - using first deadkey
162c                    grave                  acute                  circumflex
163c                    tilde                  macron                 dot over
164c                    diaeresis              caron                  vert
165c                    ring over
166
167
168store(K_diacritics1) "`"                    "/"                    "^" \
169                     "~"                    "_"                    "}" \
170                     '"'                    "{"                    "|" \
171                     "@"
172
173
174store(diacritics1)   outs(DAgrave)          outs(DAacute)          outs(DAcirc) \
175                     outs(DAtilde)          outs(DAmacron)         outs(DAdot) \
176                     outs(DAdiaeresis)      outs(DAhachek)         outs(DAvert) \
177                     outs(DAcircle)
178
179c DIACRITICS - using second deadkey
180c                    tilde Under            macron Under            dot Under
181c                    vertical Under         ring Under              cedilla
182
183store(K_diacritics2) "~"                    "_"                     "}" \
184                     "|"                    "@"                     ","
185
186
187store(KV_dia2)       [SHIFT RALT K_BKQUOTE] [SHIFT RALT K_HYPHEN]   [RALT K_PERIOD] \
188                     [SHIFT RALT K_BKSLASH] [SHIFT RALT K_2]        [RALT K_COMMA]
189
190store(diacritics2)   outs(DUtilde)          outs(DUmacron)          outs(DUdot) \
191                     outs(DUvert)           outs(DUcircle)          outs(DUcedilla)
192
193C Stores used to create composed characters
194store(Vowels)        "a"    "A"    "e"    "E"    "i"    "I"    "o"    "O"    "u"    "U"
195store(graveA)        U+00E0 U+00C0 U+00E8 U+00C8 U+00EC U+00CC U+00F2 U+00D2 U+00F9 U+00D9
196store(acuteA)        U+00E1 U+00C1 U+00E9 U+00C9 U+00ED U+00CD U+00F3 U+00D3 U+00FA U+00DA
197store(circA)         U+00E2 U+00C2 U+00EA U+00CA U+00EE U+00CE U+00F4 U+00D4 U+00FB U+00DC
198store(tildeA)        U+00E3 U+00C3 U+1EBD U+1EBC U+0129 U+0128 U+00F5 U+00D5 U+0169 U+0168
199store(diaeresisA)    U+00E4 U+00C4 U+00EB U+00CB U+00EF U+00CF U+00F6 U+00D6 U+00FC U+00DC
200store(macronA)       U+0101 U+0100 U+0113 U+0112 U+012B U+012A U+014D U+014C U+016B U+016A
201store(hachekA)       U+01CE U+01CD U+011B U+011A U+01D0 U+01CF U+01D2 U+01D1 U+01D4 U+01D3
202store(dotU)          U+1EA1 U+1EA0 U+1EB9 U+1EB8 U+1ECB U+1ECA U+1ECD U+1ECC U+1EE5 U+1EE4
203
204store(circle_K)      "a"    "A"    "u"    "U"
205store(circleA)       U+00E5 U+00C5 U+016F U+016E
206store(circleU_K)     "a"    "A"
207store(circleU)       U+1E01 U+1E00
208store(tildeU_K)      "e"    "E"    "i"    "I"    "u"    "U"
209store(tildeU)        U+1E1B U+1E1A U+1E2D U+1E2C U+1E75 U+1E74
210
211store(dot_K)         "a"    "A"    "b"    "B"    "c"    "C"    "d"    "D"   \
212                     "e"    "E"    "f"    "F"    "g"    "G"    "h"    "H"   \
213                     "m"    "M"    "n"    "N"    "o"    "O"    "p"    "P"   \
214                     "r"    "R"    "s"    "S"    "t"    "T"    "w"    "W"   \
215                     "x"    "X"    "y"    "Y"    "z"    "Z"
216store(dotA)          U+0227 U+0226 U+1E03 U+1E02 U+010B U+010A U+1E0B U+1E0A \
217                     U+0117 U+0116 U+1E1F U+1E1E U+0121 U+0120 U+1E23 U+1E22 \
218                     U+1E41 U+1E40 U+1E45 U+1E44 U+022F U+022E U+1E57 U+1E56 \
219                     U+1E59 U+1E58 U+1E61 U+1E60 U+1E6B U+1E6A U+1E87 U+1E86 \
220                     U+1E8B U+1E8A U+1E8F U+1E8E U+017C U+017B
221store(ConsHachek_K)  "C"    "c"    "D"    "d"    "G"    "g"    "H"    "h"    \
222                     "K"    "k"    "N"    "n"    "R"    "r"    "S"    "s"    \
223                     "T"    "t"    "Z"    "z"    U+01B7 U+0292
224store(ConsHachekA)   U+010C U+010D U+010E U+010F U+01E6 U+01E7 U+021E U+021F \
225                     U+01E8 U+01E9 U+0147 U+0148 U+0158 U+0159 U+0160 U+0161 \
226                     U+0164 U+0165 U+017D U+017E U+01EE U+01EF
227store(ConsMacron_K)  U+00C6 U+00E6 "G"    "g"    "Y"    "y"
228store(ConsMacronA)   U+01E2 U+01E3 U+1E20 U+1E21 U+0232 U+0233
229
230store(ConsGrave_K)   "N"    "n"    "W"    "w"    "Y"    "y"
231store(ConsGraveA)    U+01F8 U+01F9 U+1E80 U+1E81 U+1EF2 U+1EF3
232
233store(ConsAcute_K)   U+00C6 U+00E6 "C"    "c"    U+00C7 U+00E7 "G"    "g"    "K"    "k"    \
234                     "L"    "l"    "M"    "m"    "N"    "n"    U+00D8 U+00F8 "P"    "p"    \
235                     "R"    "r"    "S"    "s"    "W"    "w"    "Y"    "y"    "Z"    "z"
236store(ConsAcuteA)    U+01FC U+01FD U+0106 U+0107 U+1E08 U+1E09 U+01F4 U+01F5 U+1E30 U+1E31 \
237                     U+0139 U+013A U+1E3E U+1E3F U+0143 U+0144 U+01FE U+01FF U+1E54 U+1E55 \
238                     U+0154 U+0155 U+015A U+015B U+1E82 U+1E83 U+00DD U+00FD U+0179 U+017A
239
240store(ConsTilde_K)   "N"    "n"    "V"    "v"    "Y"    "y"
241store(ConsTildeA)    U+00D1 U+00F1 U+1E7C U+1E7D U+1EF8 U+1EF9
242
243store(ConsCirc_K)    "C"    "c"    "G"    "g"    "H"    "h"    "J"    "j"    "S"    "s"    \
244                     "W"    "w"    "Y"    "y"    "Z"    "z"
245store(ConsCircA)     U+0108 U+0109 U+011C U+011D U+0124 U+0125 U+0134 U+0135 U+015C U+015D \
246                     U+0174 U+0175 U+0176 U+0177 U+1E90 U+1E91
247
248store(ConsDiaeresis_K) "H"    "h"    "W"    "w"    "X"    "x"    "Y"    "y"
249store(ConsDiaeresisA)  U+1E26 U+1E27 U+1E84 U+1E85 U+1E8C U+1E8D U+0178 U+00FF
250
251store(cedilla_K)     "c"    "C"    "e"    "E"    "h"    "H"    "s"    "S"    "t"    "T"
252store(cedillaU)      U+00E7 U+00C7 U+0229 U+0228 U+1E29 U+1E28 U+015F U+015E U+0163 U+0162
253
254store(ConsDotU_K)    "B"    "b"    "D"    "d"    "H"    "h"    "K"    "k" \
255                     "L"    "l"    "M"    "m"    "N"    "n"    "R"    "r" \
256                     "S"    "s"    "T"    "t"    "V"    "v"    "W"    "w" \
257                     "Y"    "y"    "Z"    "z"
258store(ConsDotU)      U+1E04 U+1E05 U+1E0C U+1E0D U+1E24 U+1E25 U+1E32 U+1E33 \
259                     U+1E36 U+1E37 U+1E42 U+1E43 U+1E46 U+1E47 U+1E5A U+1E5B \
260                     U+1E62 U+1E63 U+1E6C U+1E6D U+1E7E U+1E7F U+1E88 U+1E89 \
261                     U+1EF4 U+1EF5 U+1E92 U+1E93
262
263store(ConsbarU_K)    "B"    "b"    "D"    "d"    "K"    "k"    "L"    "l" \
264                     "N"    "n"    "R"    "r"    "T"    "t"    "Z"    "z"
265store(ConsbarU)      U+1E06 U+1E07 U+1E0E U+1E0F U+1E34 U+1E35 U+1E3A U+1E3B \
266                     U+1E48 U+1E49 U+1E5E U+1E5F U+1E6E U+1E6F U+1E94 U+1E95
267
268store(StackingBM)     U+00E4 U+00C4 U+00F6 U+00D6 U+00FC U+00DC \
269                      U+0227 U+0226 U+022F U+022E \
270                      U+00F5 U+00D5
271store(StackingMacron) U+01DF U+01DE U+022B U+022A U+01D6 U+01D5 \
272                      U+01E1 U+01E0 U+0231 U+0230 \
273                      U+022D U+022C
274store(StackingBA)     U+0113 U+0112 U+00EF U+00CF U+014D U+014C U+00FC U+00DC \
275                      U+00E5 U+00C5 U+00F5 U+00D5 U+0169 U+0168
276store(StackingAcute)  U+1E17 U+1E16 U+1E2F U+1E2E U+1E53 U+1E52 U+01D8 U+01D7 \
277                      U+01FB U+01FA U+1E4D U+1E4C U+1E79 U+1E78
278
279store(StackingBH)     U+00FC U+00DC
280store(StackingHachek) U+01DA U+01D9
281
282store(StackingBG)     U+0113 U+0112 U+014D U+014C U+00FC U+00DC
283store(StackingGrave)  U+1E15 U+1E14 U+1E51 U+1E50 U+01DC U+01DB
284
285store(StackingBT)     U+00E2 U+00C2 U+00EA U+00CA U+00F4 U+00D4
286store(StackingTilde)  U+1EAB U+1EAA U+1EC5 U+1EC4 U+1ED7 U+1ED6
287store(StackingBDot1)  U+00E2 U+00C2 U+00EA U+00CA U+00F4 U+00D4
288store(StackingBDot2)  U+1EA1 U+1EA0 U+1EB9 U+1EB8 U+1ECD U+1ECC
289store(StackingDot)    U+1EAD U+1EAC U+1EC7 U+1EC6 U+1ED9 U+1ED8
290
291store(StackingBDiar)    U+1E4F U+1E4E U+016B U+016A
292store(StackingDiaresis) U+00F5 U+00D5 U+1E7B U+1E7A
293
294
295c chevron quotation marks. If curly quotes are desired use stores below.
296
297store(opSglQ_K)      "<"
298store(opSglQ)        U+2039
299store(opDblQ)        U+00AB
300store(clSglQ_K)      ">"
301store(clSglQ)        U+203A
302store(clDblQ)        U+00BB
303
304c curly quotation marks.
305store(opSglQ2)       U+2018
306store(opDblQ2)       U+201C
307store(clSglQ2)       U+2019
308store(clDblQ2)       U+201D
309
310c end of STORES
311c ***************************************************
312
313c begin groups
314c ***************************************************
315
316c begin MainU group
317c ***************************************************
318
319
320group(MainU) using keys
321
322c deadkeys
323            + any(K_1)          > dk(1)
324            + any(K_2)          > dk(2)
325
326c reassigned characters
327dk(2)       + any(deadkeys_K)   > index(deadkeys,2)
328            + any(deadkeys_KV)  > index(deadkeys,1)
329c PUNCTUATION
330c chevrons
331            + any(opSglQ_K)     > outs(opSglQ) use(Quotes)
332            + any(clSglQ_K)     > outs(clSglQ) use(Quotes)
333c curly quotes
334dk(1)       + any(opSglQ_K)     > outs(opSglQ2) use(Quotes)
335dk(1)       + any(clSglQ_K)     > outs(clSglQ2) use(Quotes)
336
337c special characters - using deadkey
338dk(1)       + any(K_lc1)        > index(lc1,2)
339dk(2)       + any(K_lc2)        > index(lc2,2)
340dk(1)       + any(K_UC1)        > index(UC1,2)
341dk(2)       + any(K_UC2)        > index(UC2,2)
342dk(2)       + any(unused2)      > beep
343
344c special characters - using shift keys
345            + any(KV_lc1)       > index(lc1,1)
346            + any(KV_UC1)       > index(UC1,1)
347            + any(KV_lc2)       > index(lc2,1)
348            + any(KV_UC2)       > index(UC2,1)
349
350c diacritics - using deadkey
351            + any(K_diacritics1) > index(diacritics1,1) use(NFC)
352dk(1)       + any(K_diacritics2) > index(diacritics2,2) use(NFC)
353
354c diacritics - using shift keys
355            + any(KV_dia2)       > index(diacritics2,1) use(NFC)
356
357c group(2) using keys
358c housekeeping
359any(graveA)       + [K_BKSP] >  index(Vowels,1)
360any(ConsGraveA)   + [K_BKSP] >  index(ConsGrave_K,1)
361any(acuteA)       + [K_BKSP] >  index(Vowels,1)
362any(ConsAcuteA)   + [K_BKSP] >  index(ConsAcute_K,1)
363any(circA)        + [K_BKSP] >  index(Vowels,1)
364any(ConsCircA)    + [K_BKSP] >  index(ConsCirc_K,1)
365any(tildeA)       + [K_BKSP] >  index(Vowels,1)
366any(ConsTildeA)   + [K_BKSP] >  index(ConsTilde_K,1)
367any(macronA)      + [K_BKSP] >  index(Vowels,1)
368any(ConsMacronA)  + [K_BKSP] >  index(ConsMacron_K,1)
369any(diaeresisA)   + [K_BKSP] >  index(Vowels,1)
370any(ConsDiaeresisA)   + [K_BKSP] >  index(ConsDiaeresis_K,1)
371any(hachekA)      + [K_BKSP] >  index(Vowels,1)
372any(ConsHachekA)  + [K_BKSP] >  index(ConsHachek_K,1)
373any(dotU)         + [K_BKSP] >  index(Vowels,1)
374any(ConsDotU)     + [K_BKSP] >  index(ConsDotU_K,1)
375any(circleA)      + [K_BKSP] >  index(circle_K,1)
376any(circleU)      + [K_BKSP] >  index(circleU_K,1)
377any(tildeU)       + [K_BKSP] >  index(tildeU_K,1)
378any(dotA)         + [K_BKSP] >  index(Dot_K,1)
379any(cedillaU)     + [K_BKSP] >  index(cedilla_K,1)
380any(ConsbarU)     + [K_BKSP] >  index(ConsbarU_K,1)
381any(StackingMacron)   + [K_BKSP] > index(StackingBM,1)
382any(StackingAcute)    + [K_BKSP] > index(StackingBA,1)
383any(StackingHachek)   + [K_BKSP] > index(StackingBH,1)
384any(StackingGrave)    + [K_BKSP] > index(StackingBG,1)
385any(StackingTilde)    + [K_BKSP] > index(StackingBT,1)
386any(StackingDot)      + [K_BKSP] > index(StackingBDot2,1)
387any(StackingDiaresis) + [K_BKSP] > index(StackingBDiar,1)
388
389c This new rule is a fix for the problem of fast typing reordering keystrokes when using Keyman with TSF.
390c It apparently must be the last rule in the group.
391
392 + any(chars) > index(chars, 1)
393
394c end MainU group
395c ***************************************************
396
397c begin Quotes group
398c ***************************************************
399
400group(Quotes)
401
402any(opSglQ) any(opSglQ)    >     outs(opDblQ)
403any(clSglQ) any(clSglQ)    >     outs(clDblQ)
404any(opSglQ2) any(opSglQ2)  >     outs(opDblQ2)
405any(clSglQ2) any(clSglQ2)  >     outs(clDblQ2)
406
407
408
409c end Quotes group
410c ***************************************************
411
412c begin NFC group
413c ***************************************************
414
415group(NFC)
416
417c Diacritics (single)
418any(Vowels) any(DAgrave)        > index(graveA,1)
419any(ConsGrave_K) any(DAgrave)   > index(ConsGraveA,1)
420
421any(Vowels) any(DAacute)        > index(acuteA,1)
422any(ConsAcute_K) any(DAacute)   > index(ConsAcuteA,1)
423
424any(Vowels) any(DAcirc)         > index(circA,1)
425any(ConsCirc_K) any(DAcirc)     > index(ConsCircA,1)
426
427any(Vowels) any(DAtilde)        > index(tildeA,1)
428any(ConsTilde_K) any(DAtilde)   > index(ConsTildeA,1)
429
430any(Vowels) any(DAmacron)       > index(macronA,1)
431any(ConsMacron_K) any(DAmacron) > index(ConsMacronA,1)
432
433any(Vowels) any(DAdiaeresis)    > index(diaeresisA,1)
434any(ConsDiaeresis_K) any(DAdiaeresis)    > index(ConsDiaeresisA,1)
435
436any(Vowels) any(DAhachek)       > index(hachekA,1)
437any(ConsHachek_K) any(DAhachek) > index(ConsHachekA,1)
438
439any(Vowels) any(DUdot)          > index(dotU,1)
440any(ConsDotU_K) any(DUdot)      > index(ConsDotU,1)
441
442any(circle_K) any(DAcircle)     > index(circleA,1)
443any(circleU_K) any(DUcircle)    > index(circleU,1)
444
445any(tildeU_K) any(DUtilde)      > index(tildeU,1)
446any(dot_K) any(DAdot)           > index(dotA,1)
447any(cedilla_K) any(DUcedilla)   > index(cedillaU,1)
448any(ConsbarU_K) any(DUmacron)   > index(ConsbarU,1)
449
450C Stacking diacritics (multi)
451
452any(StackingBM) any(DAmacron)       > index(StackingMacron,1)
453any(StackingBA) any(DAacute)        > index(StackingAcute,1)
454any(StackingBH) any(DAhachek)       > index(StackingHachek,1)
455any(StackingBG) any(DAgrave)        > index(StackingGrave,1)
456any(StackingBT) any(DAtilde)        > index(StackingTilde,1)
457any(StackingBDot1) any(DUdot)       > index(StackingDot,1)
458any(StackingBDot2) any(DAcirc)      > index(StackingDot,1)
459any(StackingBDiar) any(DAdiaeresis) > index(StackingDiaresis,1)
460
461c end COMPOSITE groups
462c ************************************************************************************
463
464c end groups
465c ************************************************************************************
466
467
468
469
470