about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEgmont Koblinger <egmont@gmail.com>2017-03-22 21:27:30 -0400
committerCarlos O'Donell <carlos@redhat.com>2017-03-28 10:35:58 -0400
commitea1898dded26316e2e73adfb409224e864ffaa8b (patch)
treeee5e62cfccfaf0c5145bc4c51df644cb2d918cd1
parent78c05814320cdc3377347f8e5fdbaa7cf5abf5b5 (diff)
downloadglibc-ea1898dded26316e2e73adfb409224e864ffaa8b.tar.gz
glibc-ea1898dded26316e2e73adfb409224e864ffaa8b.tar.xz
glibc-ea1898dded26316e2e73adfb409224e864ffaa8b.zip
localedata: hu_HU: fix multiple sorting bugs (bug 18934)
Fix the incorrect sorting order of a digraph and its geminated variant,
regression introduced by a faulty fix to bug 13547 in commit
b008d4c85619a753e441d7f473ba8af0db400bd6.

Fix two inconsistencies in sorting unusual capitalization of digraphs
(bug #18587).

Enable DIACRIT_FORWARD to work around bug #17750.

Sort foreign accents after the Hungarian ones.

Add extensive unittests containing all the examples from The Rules of
Hungarian Orthography and many more, including explanatory comments.
-rw-r--r--NEWS4
-rw-r--r--localedata/ChangeLog7
-rw-r--r--localedata/Makefile4
-rw-r--r--localedata/hu_HU.in560
-rw-r--r--localedata/locales/hu_HU286
5 files changed, 716 insertions, 145 deletions
diff --git a/NEWS b/NEWS
index 5162534d2d..3590878a98 100644
--- a/NEWS
+++ b/NEWS
@@ -37,6 +37,10 @@ Version 2.26
   headers, and the NIS(+) name service modules, to be built and
   installed.  This option may be removed in a future release.
 
+* Extensive new collation tests for Hungarian locales based on
+  "The Rules of Hungarian Orthography, 12th edition" and the work of
+  Egmont Koblinger (Bug 18934).
+
 Security related changes:
 
   [Add security related changes here]
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 3b257a2f32..f0d5965cff 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,10 @@
+2017-03-28  Egmont Koblinger  <egmont@gmail.com>
+
+	[BZ #18934]
+	* locales/hu_HU: Fix multiple collate bugs.
+	* hu_HU.in: New file.
+	* Makefile (test-input): Add hu_HU.UTF-8.
+
 2017-02-20  Mike FABIAN  <mfabian@redhat.com>
 
 	[BZ #20313]
diff --git a/localedata/Makefile b/localedata/Makefile
index f6a70a3254..47ca39d76a 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -37,7 +37,7 @@ test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
 	     tst-ctype tst-langinfo tst-langinfo-static tst-numeric
 test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \
 	      hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 tr_TR.UTF-8 fr_FR.UTF-8 \
-	      si_LK.UTF-8 uk_UA.UTF-8
+	      si_LK.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8
 test-input-data = $(addsuffix .in, $(basename $(test-input)))
 test-output := $(foreach s, .out .xout, \
 			 $(addsuffix $s, $(basename $(test-input))))
@@ -106,7 +106,7 @@ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
 	   hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
 	   nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 tr_TR.UTF-8 cs_CZ.UTF-8 \
 	   zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 si_LK.UTF-8 \
-	   tr_TR.ISO-8859-9 en_GB.UTF-8 uk_UA.UTF-8
+	   tr_TR.ISO-8859-9 en_GB.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8
 include ../gen-locales.mk
 endif
 
diff --git a/localedata/hu_HU.in b/localedata/hu_HU.in
new file mode 100644
index 0000000000..7736ac08f7
--- /dev/null
+++ b/localedata/hu_HU.in
@@ -0,0 +1,560 @@
+AkH-14-a1 acél          ; The "AkH" tests are from:
+AkH-14-a1 cukor         ;
+AkH-14-a1 csók          ; A magyar helyesírás szabályai, 12. kiadás
+AkH-14-a1 gép           ; [The Rules of Hungarian Orthography, 12th edition]
+AkH-14-a1 hideg         ;
+AkH-14-a1 kettő         ; often referred to as akadémiai helyesírás (AkH.) [academic orthography]
+AkH-14-a1 Nagy          ;
+AkH-14-a1 nyúl          ; http://helyesiras.mta.hu/helyesiras/default/akh12
+AkH-14-a1 olasz         ;
+AkH-14-a1 öröm          ; Alphabetical ordering described in #14-16.
+AkH-14-a1 remény
+AkH-14-a1 sokáig        ; #14-a1: Sort based on first letter.
+AkH-14-a1 szabad
+AkH-14-a1 Tamás
+AkH-14-a1 vásárol
+AkH-14-a2 jácint        ; #14-a2: If no other difference, lowercase initial precedes uppercase.
+AkH-14-a2 Jácint
+AkH-14-a2 opera
+AkH-14-a2 Opera
+AkH-14-a2 szűcs
+AkH-14-a2 Szűcs
+AkH-14-a2 viola
+AkH-14-a2 Viola
+AkH-14-a3 cudar         ; #14-a3: Compound letters (cs, dz, dzs, gy, ly, ny, sz, ty, zs)
+AkH-14-a3 cukor         ; are sorted separately, after their first letter:
+AkH-14-a3 cuppant       ; a b c cs d dz dzs e f g gy h ... l ly m n ny o ... s sz t ty u ... z zs
+AkH-14-a3 csalit
+AkH-14-a3 csata
+AkH-14-a3 Csepel
+AkH-14-a3 Zoltán
+AkH-14-a3 zongora
+AkH-14-a3 zúdul
+AkH-14-a3 zsalu
+AkH-14-a3 zseni
+AkH-14-a3 Zsigmond
+AkH-14-b1 lom           ; #14-b1: The first difference matters.
+AkH-14-b1 lomb
+AkH-14-b1 lombik
+AkH-14-b1 Lontay
+AkH-14-b1 lovagol
+AkH-14-b1 pirinkó
+AkH-14-b1 pirinyó
+AkH-14-b1 pirít
+AkH-14-b1 pirkad
+AkH-14-b1 Piroska
+AkH-14-b1 tükör
+AkH-14-b1 Tünde
+AkH-14-b1 tünemény
+AkH-14-b1 tüntet
+AkH-14-b1 tüzér
+AkH-14-b2 kas           ; #14-b2: If a compound letter is pronounced long, only the first letter
+AkH-14-b2 Kasmír        ; is duplicated in writing: <cs><cs> becomes ccs, <dzs><dzs> is ddzs etc.
+AkH-14-b2 Kassák        ; (unless it's at the boundary of a compound word where it's written out twice).
+AkH-14-b2 kastély       ; Sort according to the actual tokens, not the shorthand written form.
+AkH-14-b2 kasza         ; <k><a><sz><a>
+AkH-14-b2 kaszinó       ; <k><a><sz><i><n><ó>
+AkH-14-b2 kassza        ; <k><a><sz><sz><a>
+AkH-14-b2 kaszt         ; <k><a><sz><t>
+AkH-14-b2 mennek
+AkH-14-b2 mennének
+AkH-14-b2 menü
+AkH-14-b2 menza
+AkH-14-b2 meny          ; <m><e><ny>
+AkH-14-b2 Menyhért      ; <M><e><ny><h><é><r><t>
+AkH-14-b2 mennybolt     ; <m><e><ny><ny><b><o><l><t>
+AkH-14-b2 mennyi        ; <m><e><ny><ny><i>
+AkH-14-b2 nagy          ; <n><a><gy>
+AkH-14-b2 naggyá        ; <n><a><gy><gy><á>
+AkH-14-b2 nagygyakorlat ; <n><a><gy><gy><a><k><o><r><l><a><t> (compound word: nagy+gyakorlat)
+AkH-14-b2 naggyal       ; <n><a><gy><gy><a><l>
+AkH-14-b2 nagyít        ; <n><a><gy><í><t>
+AkH-14-b2 nagyobb
+AkH-14-b2 nagyol
+AkH-14-b2 nagyoll
+AkH-14-c1 ír            ; #14-c1: Vowels collate equally in pairs: a-á, e-é, i-í, o-ó, ö-ő, u-ú, ü-ű.
+AkH-14-c1 Irak
+AkH-14-c1 iram
+AkH-14-c1 Irán
+AkH-14-c1 írandó
+AkH-14-c1 iránt
+AkH-14-c1 író
+AkH-14-c1 iroda
+AkH-14-c1 irónia
+AkH-14-c2 Eger          ; #14-c2: Short vowel (unaccented, or with diaeresis) comes first if that's the only difference.
+AkH-14-c2 egér
+AkH-14-c2 egyfelé
+AkH-14-c2 egyféle
+AkH-14-c2 elöl
+AkH-14-c2 elől
+AkH-14-c2 kerek
+AkH-14-c2 kerék
+AkH-14-c2 keres
+AkH-14-c2 kérés
+AkH-14-c2 koros
+AkH-14-c2 kóros
+AkH-14-c2 szel
+AkH-14-c2 szél
+AkH-14-c2 szeles
+AkH-14-c2 széles
+AkH-14-c2 szüret
+AkH-14-c2 szűret
+AkH-14-d1 kis részben   ; #14-d1: Spaces, hyphens are ignored.
+AkH-14-d1 kissé
+AkH-14-d1 Kiss Ernő
+AkH-14-d1 kis sorozat
+AkH-14-d1 kissorozat-gyártás
+AkH-14-d1 kis számban
+AkH-14-d1 kistányér
+AkH-14-d1 kis virág
+AkH-14-d1 márvány
+AkH-14-d1 márványkő
+AkH-14-d1 márvány sírkő
+AkH-14-d1 Márvány-tenger
+AkH-14-d1 márványtömb
+AkH-14-d1 Márvány Zsolt
+AkH-14-d1 másféle
+AkH-14-d1 másol
+AkH-14-d1 tiszafa
+AkH-14-d1 Tiszahát
+AkH-14-d1 Tisza Kálmán
+AkH-14-d1 Tisza menti
+AkH-14-d1 Tiszántúl
+AkH-14-d1 Tisza-part
+AkH-14-d1 tiszavirág
+AkH-14-d1 tiszt
+AkH-15 cérna            ; #15: Foreign accents are ignored, unless they're the only difference,
+AkH-15 Černý            ; in which case they are sorted after the Hungarian ones (in unspecified order).
+AkH-15 Champagne
+AkH-15 Cholnoky
+AkH-15 címez
+AkH-15 cukor
+AkH-15 Czuczor
+AkH-15 csapat
+AkH-15 Gaal
+AkH-15 galamb
+AkH-15 Gärtner
+AkH-15 gáz
+AkH-15 geodézia
+AkH-15 Georges
+AkH-15 góc
+AkH-15 Goethe
+AkH-15 moshat
+AkH-15 mosna
+AkH-15 Mošna
+AkH-15 mosópor
+AkH-15 Møsstrand
+AkH-15 mostan
+AkH-15 munka
+AkH-15 Muñoz
+alphabet a              ; All the remaining tests were added by glibc.
+alphabet á
+alphabet aa             ; a = á unless that's the only difference in which case a < á.
+alphabet aá             ; (Same for e = é, i = í, o = ó, ö = ő, u = ú, ü = ű below.)
+alphabet áa             ; Differences in accents matter from left to right.
+alphabet áá
+alphabet áp
+alphabet aq
+alphabet b
+alphabet c
+alphabet cz             ; <c><z>
+alphabet cs             ; <cs>        -- or rarely <c><s>, can't tell for sure, assume <cs>.
+alphabet csc            ; <cs><c>
+alphabet ccs            ; <cs><cs>    -- or rarely <c><cs>, can't tell for sure, assume <cs><cs>.
+alphabet cscs           ; <cs><cs>    -- Make sure ccs and cscs don't collate as equal, see bug 13547.
+alphabet ccsa           ; <cs><cs><a> -- The order of ccs and cscs is not specified in the rules and is arbitrarily chosen by glibc.
+alphabet cscsa          ; <cs><cs><a>
+alphabet csd            ; <cs><d>     -- (These comments also apply to all other compound letters below.)
+alphabet d
+alphabet dz             ; <dz>
+alphabet dzd            ; <dz><d>
+alphabet ddz            ; <dz><dz>
+alphabet dzdz           ; <dz><dz>
+alphabet ddza           ; <dz><dz><a>
+alphabet dzdza          ; <dz><dz><a>
+alphabet dzdzs          ; <dz><dzs>
+alphabet dze            ; <dz><e>
+alphabet dzz            ; <dz><z>
+alphabet dzs            ; <dzs>
+alphabet dzsdz          ; <dzs><dz>
+alphabet ddzs           ; <dzs><dzs>
+alphabet dzsdzs         ; <dzs><dzs>
+alphabet ddzsa          ; <dzs><dzs><a>
+alphabet dzsdzsa        ; <dzs><dzs><a>
+alphabet dzse           ; <dzs><e>
+alphabet e
+alphabet é
+alphabet ee
+alphabet eé
+alphabet ée
+alphabet éé
+alphabet ép
+alphabet eq
+alphabet f
+alphabet g
+alphabet gz             ; <g><z>
+alphabet gy             ; <gy>
+alphabet gyg            ; <gy><g>
+alphabet ggy            ; <gy><gy>
+alphabet gygy           ; <gy><gy>
+alphabet ggya           ; <gy><gy><a>
+alphabet gygya          ; <gy><gy><a>
+alphabet gyh            ; <gy><h>
+alphabet h
+alphabet i
+alphabet í
+alphabet ii
+alphabet ií
+alphabet íi
+alphabet íí
+alphabet íp
+alphabet iq
+alphabet j
+alphabet k
+alphabet l
+alphabet lz             ; <l><z>
+alphabet ly             ; <ly>
+alphabet lyl            ; <ly><l>
+alphabet lly            ; <ly><ly>
+alphabet lyly           ; <ly><ly>
+alphabet llya           ; <ly><ly><a>
+alphabet lylya          ; <ly><ly><a>
+alphabet lym            ; <ly><m>
+alphabet m
+alphabet n
+alphabet nz             ; <n><z>
+alphabet ny             ; <ny>
+alphabet nyn            ; <ny><n>
+alphabet nny            ; <ny><ny>
+alphabet nyny           ; <ny><ny>
+alphabet nnya           ; <ny><ny><a>
+alphabet nynya          ; <ny><ny><a>
+alphabet nyo            ; <ny><o>
+alphabet o
+alphabet ó
+alphabet oo
+alphabet oó
+alphabet óo
+alphabet óó
+alphabet óp
+alphabet oq
+alphabet ö              ; ö = ő (unless that's the only difference), but these come strictly after o and ó.
+alphabet ő
+alphabet öö
+alphabet öő
+alphabet őö
+alphabet őő
+alphabet őp
+alphabet öq
+alphabet p
+alphabet q
+alphabet r
+alphabet s
+alphabet sz             ; <sz>
+alphabet szs            ; <sz><s>
+alphabet ssz            ; <sz><sz>
+alphabet szsz           ; <sz><sz>
+alphabet ssza           ; <sz><sz><a>
+alphabet szsza          ; <sz><sz><a>
+alphabet szt            ; <sz><t>
+alphabet t
+alphabet tz             ; <t><z>
+alphabet ty             ; <ty>
+alphabet tyt            ; <ty><t>
+alphabet tty            ; <ty><ty>
+alphabet tyty           ; <ty><ty>
+alphabet ttya           ; <ty><ty><a>
+alphabet tytya          ; <ty><ty><a>
+alphabet tyu            ; <ty><u>
+alphabet u
+alphabet ú
+alphabet úp
+alphabet uq
+alphabet uu
+alphabet uú
+alphabet úu
+alphabet úú
+alphabet ü              ; ü = ű (unless that's the only difference), but these come strictly after u and ú.
+alphabet ű
+alphabet űp
+alphabet üq
+alphabet üü
+alphabet üű
+alphabet űü
+alphabet űű
+alphabet v
+alphabet w
+alphabet x
+alphabet y
+alphabet z
+alphabet zz             ; <z><z>
+alphabet zs             ; <zs>
+alphabet zsz            ; <zs><z>
+alphabet zzs            ; <zs><zs>
+alphabet zszs           ; <zs><zs>
+alphabet zzsa           ; <zs><zs><a>
+alphabet zszsa          ; <zs><zs><a>
+case a                  ; #14-a2 specifies that if the same word appears in lowercase as well as with
+case A                  ; uppercase initial, the lowercase one is to be sorted first.
+case á                  ; Arbitrarily extend this to all other weird combinations of upper- and lowercases in compound letters.
+case Á
+case cs                 ; <cs>
+case cS
+case Cs
+case CS
+case ccs                ; <cs><cs>
+case ccS
+case cCs
+case cCS
+case Ccs
+case CcS
+case CCs
+case CCS
+case dz                 ; <dz>
+case dZ
+case Dz
+case DZ
+case ddz                ; <dz><dz>
+case ddZ
+case dDz
+case dDZ
+case Ddz
+case DdZ
+case DDz
+case DDZ
+case dzs                ; <dzs>
+case dzS
+case dZs
+case dZS
+case Dzs
+case DzS
+case DZs
+case DZS
+case ddzs               ; <dzs><dzs>
+case ddzS
+case ddZs
+case ddZS
+case dDzs
+case dDzS
+case dDZs
+case dDZS
+case Ddzs
+case DdzS
+case DdZs
+case DdZS
+case DDzs
+case DDzS
+case DDZs
+case DDZS
+case e
+case E
+case é
+case É
+case gy                 ; <gy>
+case gY
+case Gy
+case GY
+case ggy                ; <gy><gy>
+case ggY
+case gGy
+case gGY
+case Ggy
+case GgY
+case GGy
+case GGY
+case i
+case I
+case í
+case Í
+case ly                 ; <ly>
+case lY
+case Ly
+case LY
+case lly                ; <ly><ly>
+case llY
+case lLy
+case lLY
+case Lly
+case LlY
+case LLy
+case LLY
+case ny                 ; <ny>
+case nY
+case Ny
+case NY
+case nny                ; <ny><ny>
+case nnY
+case nNy
+case nNY
+case Nny
+case NnY
+case NNy
+case NNY
+case o
+case O
+case ó
+case Ó
+case ö
+case Ö
+case ő
+case Ő
+case sz                 ; <sz>
+case sZ
+case Sz
+case SZ
+case ssz                ; <sz><sz>
+case ssZ
+case sSz
+case sSZ
+case Ssz
+case SsZ
+case SSz
+case SSZ
+case ty                 ; <ty>
+case tY
+case Ty
+case TY
+case tty                ; <ty><ty>
+case ttY
+case tTy
+case tTY
+case Tty
+case TtY
+case TTy
+case TTY
+case u
+case U
+case ú
+case Ú
+case ü
+case Ü
+case ű
+case Ű
+case zs                 ; <zs>
+case zS
+case Zs
+case ZS
+case zzs                ; <zs><zs>
+case zzS
+case zZs
+case zZS
+case Zzs
+case ZzS
+case ZZs
+case ZZS
+foreign-a1 á            ; More thorough tests for foreign accents (#15).
+foreign-a1 à            ; Each test consists of 4 lines. The foreign accent is in the middle two.
+foreign-a1 àp           ; That is, on their own they come after the Hungarian accent, but a
+foreign-a1 áq           ; subsequent difference (p and q) overrides this.
+foreign-a2 á
+foreign-a2 â
+foreign-a2 âp
+foreign-a2 áq
+foreign-a3 á
+foreign-a3 ã
+foreign-a3 ãp
+foreign-a3 áq
+foreign-a4 á
+foreign-a4 ä
+foreign-a4 äp
+foreign-a4 áq
+foreign-a5 á
+foreign-a5 å
+foreign-a5 åp
+foreign-a5 áq
+foreign-a6 á
+foreign-a6 ă
+foreign-a6 ăp
+foreign-a6 áq
+foreign-c1 c
+foreign-c1 ç
+foreign-c1 çp
+foreign-c1 cq
+foreign-d1 d
+foreign-d1 đ
+foreign-d1 đp
+foreign-d1 dq
+foreign-e1 é
+foreign-e1 è
+foreign-e1 èp
+foreign-e1 éq
+foreign-e2 é
+foreign-e2 ê
+foreign-e2 êp
+foreign-e2 éq
+foreign-e3 é
+foreign-e3 ë
+foreign-e3 ëp
+foreign-e3 éq
+foreign-e4 é
+foreign-e4 ě
+foreign-e4 ěp
+foreign-e4 éq
+foreign-i1 í
+foreign-i1 ì
+foreign-i1 ìp
+foreign-i1 íq
+foreign-i2 í
+foreign-i2 î
+foreign-i2 îp
+foreign-i2 íq
+foreign-i3 í
+foreign-i3 ï
+foreign-i3 ïp
+foreign-i3 íq
+foreign-l1 l
+foreign-l1 ł
+foreign-l1 łp
+foreign-l1 lq
+foreign-n1 n
+foreign-n1 ñ
+foreign-n1 ñp
+foreign-n1 nq
+foreign-n2 n
+foreign-n2 ň
+foreign-n2 ňp
+foreign-n2 nq
+foreign-o1 ó            ; The rules are not explicit whether foreign accents on top of o or u
+foreign-o1 ò            ; should be sorted among o-ó and u-ú, or among ö-ő and ü-ű, but the
+foreign-o1 òp           ; AkH #15 example with Møsstrand implicitly shows that it's the former.
+foreign-o1 óq
+foreign-o2 ó
+foreign-o2 ô
+foreign-o2 ôp
+foreign-o2 óq
+foreign-o3 ó
+foreign-o3 õ
+foreign-o3 õp
+foreign-o3 óq
+foreign-o4 ó
+foreign-o4 ø
+foreign-o4 øp
+foreign-o4 óq
+foreign-r1 r
+foreign-r1 ř
+foreign-r1 řp
+foreign-r1 rq
+foreign-s1 s
+foreign-s1 š
+foreign-s1 šp
+foreign-s1 sq
+foreign-u1 ú
+foreign-u1 ù
+foreign-u1 ùp
+foreign-u1 úq
+foreign-u2 ú
+foreign-u2 û
+foreign-u2 ûp
+foreign-u2 úq
+foreign-u3 ú
+foreign-u3 ũ
+foreign-u3 ũp
+foreign-u3 úq
+foreign-u4 ú
+foreign-u4 ů
+foreign-u4 ůp
+foreign-u4 úq
+foreign-y1 y
+foreign-y1 ÿ
+foreign-y1 ÿp
+foreign-y1 yq
diff --git a/localedata/locales/hu_HU b/localedata/locales/hu_HU
index 898d293b18..31c59ea194 100644
--- a/localedata/locales/hu_HU
+++ b/localedata/locales/hu_HU
@@ -22,7 +22,7 @@ escape_char /
 % - made all days abbreviations same lenght by appending spaces
 % Email: srtxg@chanae.alphanet.ch
 %
-% Further changes by Egmont Koblinger, 2002/Jan/06, 2012/Jan/03, 2015/Sep/03
+% Further changes by Egmont Koblinger during 2002-2017:
 % - fixed tons of remaining bugs in alphabetical order
 % - turned month names and similar stuff to lowercase
 % - other small bugfixes
@@ -64,6 +64,7 @@ category "i18n:2012";LC_MEASUREMENT
 END LC_IDENTIFICATION
 
 LC_COLLATE
+define DIACRIT_FORWARD
 copy "iso14651_t1"
 
 %% a b c cs d dz dzs e f g gy h i j k l ly m n ny o o: p q
@@ -77,15 +78,18 @@ copy "iso14651_t1"
 %% dzs+dzs becomes ddzs, and so on.
 %% However, c+cs is also spelled as ccs, you need to speak
 %% the language to tell which one is the case.
-%% Tokenize ccs as <c_or_cs><cs>, and sort the tokens as
-%% a b c c_or_cs cs d... This effectively assumes cs+cs
-%% which is more frequent than c+cs, but guarantees that the
-%% strings ccs and cscs don't collate as equal.
+%% Tokenize ccs as <cs><cs> since this is much more frequent
+%% than <c><cs>, but apply SINGLE-OR-COMPOUND and COMPOUND
+%% to the tokens so that the strings ccs and cscs don't collate
+%% as equal.
+%% The same goes for all other compound consonants.
 
 collating-symbol  <odouble>
 collating-symbol  <udouble>
 
-collating-symbol  <c_or_cs>
+collating-symbol  <SINGLE-OR-COMPOUND>
+collating-symbol  <COMPOUND>
+
 collating-symbol  <cs>
 collating-element <C-S> from "<U0043><U0053>"
 collating-element <C-s> from "<U0043><U0073>"
@@ -100,7 +104,6 @@ collating-element <c-C-s> from "<U0063><U0043><U0073>"
 collating-element <c-c-S> from "<U0063><U0063><U0053>"
 collating-element <c-c-s> from "<U0063><U0063><U0073>"
 
-collating-symbol  <d_or_dz>
 collating-symbol  <dz>
 collating-element <D-Z> from "<U0044><U005A>"
 collating-element <D-z> from "<U0044><U007A>"
@@ -115,7 +118,6 @@ collating-element <d-D-z> from "<U0064><U0044><U007A>"
 collating-element <d-d-Z> from "<U0064><U0064><U005A>"
 collating-element <d-d-z> from "<U0064><U0064><U007A>"
 
-collating-symbol  <d_or_dzs>
 collating-symbol  <dzs>
 collating-element <D-Z-S> from "<U0044><U005A><U0053>"
 collating-element <D-Z-s> from "<U0044><U005A><U0073>"
@@ -142,7 +144,6 @@ collating-element <d-d-Z-s> from "<U0064><U0064><U005A><U0073>"
 collating-element <d-d-z-S> from "<U0064><U0064><U007A><U0053>"
 collating-element <d-d-z-s> from "<U0064><U0064><U007A><U0073>"
 
-collating-symbol  <g_or_gy>
 collating-symbol  <gy>
 collating-element <G-Y> from "<U0047><U0059>"
 collating-element <G-y> from "<U0047><U0079>"
@@ -157,7 +158,6 @@ collating-element <g-G-y> from "<U0067><U0047><U0079>"
 collating-element <g-g-Y> from "<U0067><U0067><U0059>"
 collating-element <g-g-y> from "<U0067><U0067><U0079>"
 
-collating-symbol  <l_or_ly>
 collating-symbol  <ly>
 collating-element <L-Y> from "<U004C><U0059>"
 collating-element <L-y> from "<U004C><U0079>"
@@ -172,7 +172,6 @@ collating-element <l-L-y> from "<U006C><U004C><U0079>"
 collating-element <l-l-Y> from "<U006C><U006C><U0059>"
 collating-element <l-l-y> from "<U006C><U006C><U0079>"
 
-collating-symbol  <n_or_ny>
 collating-symbol  <ny>
 collating-element <N-Y> from "<U004E><U0059>"
 collating-element <N-y> from "<U004E><U0079>"
@@ -187,7 +186,6 @@ collating-element <n-N-y> from "<U006E><U004E><U0079>"
 collating-element <n-n-Y> from "<U006E><U006E><U0059>"
 collating-element <n-n-y> from "<U006E><U006E><U0079>"
 
-collating-symbol  <s_or_sz>
 collating-symbol  <sz>
 collating-element <S-Z> from "<U0053><U005A>"
 collating-element <S-z> from "<U0053><U007A>"
@@ -202,7 +200,6 @@ collating-element <s-S-z> from "<U0073><U0053><U007A>"
 collating-element <s-s-Z> from "<U0073><U0073><U005A>"
 collating-element <s-s-z> from "<U0073><U0073><U007A>"
 
-collating-symbol  <t_or_ty>
 collating-symbol  <ty>
 collating-element <T-Y> from "<U0054><U0059>"
 collating-element <T-y> from "<U0054><U0079>"
@@ -217,7 +214,6 @@ collating-element <t-T-y> from "<U0074><U0054><U0079>"
 collating-element <t-t-Y> from "<U0074><U0074><U0059>"
 collating-element <t-t-y> from "<U0074><U0074><U0079>"
 
-collating-symbol  <z_or_zs>
 collating-symbol  <zs>
 collating-element <Z-S> from "<U005A><U0053>"
 collating-element <Z-s> from "<U005A><U0073>"
@@ -232,8 +228,10 @@ collating-element <z-Z-s> from "<U007A><U005A><U0073>"
 collating-element <z-z-S> from "<U007A><U007A><U0053>"
 collating-element <z-z-s> from "<U007A><U007A><U0073>"
 
+collating-symbol <CAP-CAP>
 collating-symbol <CAP-MIN>
 collating-symbol <MIN-CAP>
+collating-symbol <MIN-MIN>
 collating-symbol <CAP-CAP-CAP>
 collating-symbol <CAP-CAP-MIN>
 collating-symbol <CAP-MIN-CAP>
@@ -244,6 +242,7 @@ collating-symbol <MIN-MIN-CAP>
 collating-symbol <MIN-MIN-MIN>
 
 reorder-after <MIN>
+<MIN-MIN>
 <MIN-CAP>
 <MIN-MIN-MIN>
 <MIN-MIN-CAP>
@@ -252,42 +251,38 @@ reorder-after <MIN>
 
 reorder-after <CAP>
 <CAP-MIN>
+<CAP-CAP>
 <CAP-MIN-MIN>
 <CAP-MIN-CAP>
 <CAP-CAP-MIN>
 <CAP-CAP-CAP>
 
 reorder-after <c>
-<c_or_cs>
 <cs>
 reorder-after <d>
-<d_or_dz>
-<d_or_dzs>
 <dz>
 <dzs>
 reorder-after <g>
-<g_or_gy>
 <gy>
 reorder-after <l>
-<l_or_ly>
 <ly>
 reorder-after <n>
-<n_or_ny>
 <ny>
 reorder-after <o>
 <odouble>
 reorder-after <s>
-<s_or_sz>
 <sz>
 reorder-after <t>
-<t_or_ty>
 <ty>
 reorder-after <u>
 <udouble>
 reorder-after <z>
-<z_or_zs>
 <zs>
 
+reorder-after <BAS>
+<SINGLE-OR-COMPOUND>
+<COMPOUND>
+
 reorder-after <o>
 <U00F6>	<odouble>;<REU>;<MIN>;IGNORE
 <U0151>	<odouble>;<DAC>;<MIN>;IGNORE
@@ -300,152 +295,157 @@ reorder-after <u>
 <U00DC>	<udouble>;<REU>;<CAP>;IGNORE
 <U0170>	<udouble>;<DAC>;<CAP>;IGNORE
 
+reorder-after <BAS>
+<ACA>
+<REU>
+<DAC>
+
 reorder-after <U0043>
-<C-S>		<cs>;<BAS>;<CAP>;IGNORE
-<C-s>		<cs>;<BAS>;<CAP-MIN>;IGNORE
-<C-C-S>		"<c_or_cs><cs>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<C-C-s>		"<c_or_cs><cs>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<C-c-S>		"<c_or_cs><cs>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<C-c-s>		"<c_or_cs><cs>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<C-S>		<cs>;<COMPOUND>;<CAP-CAP>;IGNORE
+<C-s>		<cs>;<COMPOUND>;<CAP-MIN>;IGNORE
+<C-C-S>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<C-C-s>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<C-c-S>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<C-c-s>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U0063>
-<c-S>		<cs>;<BAS>;<MIN-CAP>;IGNORE
-<c-s>		<cs>;<BAS>;<MIN>;IGNORE
-<c-C-S>		"<c_or_cs><cs>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<c-C-s>		"<c_or_cs><cs>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<c-c-S>		"<c_or_cs><cs>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<c-c-s>		"<c_or_cs><cs>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<c-S>		<cs>;<COMPOUND>;<MIN-CAP>;IGNORE
+<c-s>		<cs>;<COMPOUND>;<MIN-MIN>;IGNORE
+<c-C-S>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<c-C-s>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<c-c-S>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<c-c-s>		"<cs><cs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U0044>
-<D-Z>		<dz>;<BAS>;<CAP>;IGNORE
-<D-z>		<dz>;<BAS>;<CAP-MIN>;IGNORE
-<D-D-Z>		"<d_or_dz><dz>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<D-D-z>		"<d_or_dz><dz>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<D-d-Z>		"<d_or_dz><dz>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<D-d-z>		"<d_or_dz><dz>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<D-Z>		<dz>;<COMPOUND>;<CAP-CAP>;IGNORE
+<D-z>		<dz>;<COMPOUND>;<CAP-MIN>;IGNORE
+<D-D-Z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<D-D-z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<D-d-Z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<D-d-z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U0064>
-<d-Z>		<dz>;<BAS>;<MIN-CAP>;IGNORE
-<d-z>		<dz>;<BAS>;<MIN>;IGNORE
-<d-D-Z>		"<d_or_dz><dz>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<d-D-z>		"<d_or_dz><dz>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<d-d-Z>		"<d_or_dz><dz>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<d-d-z>		"<d_or_dz><dz>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<d-Z>		<dz>;<COMPOUND>;<MIN-CAP>;IGNORE
+<d-z>		<dz>;<COMPOUND>;<MIN-MIN>;IGNORE
+<d-D-Z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<d-D-z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<d-d-Z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<d-d-z>		"<dz><dz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U0044>
-<D-Z-S>		<dzs>;<BAS>;<CAP-CAP-CAP>;IGNORE
-<D-Z-s>		<dzs>;<BAS>;<CAP-CAP-MIN>;IGNORE
-<D-z-S>		<dzs>;<BAS>;<CAP-MIN-CAP>;IGNORE
-<D-z-s>		<dzs>;<BAS>;<CAP-MIN-MIN>;IGNORE
-<D-D-Z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-CAP>";IGNORE
-<D-D-Z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-MIN>";IGNORE
-<D-D-z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-CAP>";IGNORE
-<D-D-z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-MIN>";IGNORE
-<D-d-Z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-CAP>";IGNORE
-<D-d-Z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-MIN>";IGNORE
-<D-d-z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-CAP>";IGNORE
-<D-d-z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-MIN>";IGNORE
+<D-Z-S>		<dzs>;<COMPOUND>;<CAP-CAP-CAP>;IGNORE
+<D-Z-s>		<dzs>;<COMPOUND>;<CAP-CAP-MIN>;IGNORE
+<D-z-S>		<dzs>;<COMPOUND>;<CAP-MIN-CAP>;IGNORE
+<D-z-s>		<dzs>;<COMPOUND>;<CAP-MIN-MIN>;IGNORE
+<D-D-Z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP-CAP>";IGNORE
+<D-D-Z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP-MIN>";IGNORE
+<D-D-z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN-CAP>";IGNORE
+<D-D-z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN-MIN>";IGNORE
+<D-d-Z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP-CAP>";IGNORE
+<D-d-Z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP-MIN>";IGNORE
+<D-d-z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN-CAP>";IGNORE
+<D-d-z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN-MIN>";IGNORE
 reorder-after <U0064>
-<d-Z-S>		<dzs>;<BAS>;<MIN-CAP-CAP>;IGNORE
-<d-Z-s>		<dzs>;<BAS>;<MIN-CAP-MIN>;IGNORE
-<d-z-S>		<dzs>;<BAS>;<MIN-MIN-CAP>;IGNORE
-<d-z-s>		<dzs>;<BAS>;<MIN-MIN-MIN>;IGNORE
-<d-D-Z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-CAP>";IGNORE
-<d-D-Z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-MIN>";IGNORE
-<d-D-z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-CAP>";IGNORE
-<d-D-z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-MIN>";IGNORE
-<d-d-Z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-CAP>";IGNORE
-<d-d-Z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-MIN>";IGNORE
-<d-d-z-S>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-CAP>";IGNORE
-<d-d-z-s>	"<d_or_dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-MIN>";IGNORE
+<d-Z-S>		<dzs>;<COMPOUND>;<MIN-CAP-CAP>;IGNORE
+<d-Z-s>		<dzs>;<COMPOUND>;<MIN-CAP-MIN>;IGNORE
+<d-z-S>		<dzs>;<COMPOUND>;<MIN-MIN-CAP>;IGNORE
+<d-z-s>		<dzs>;<COMPOUND>;<MIN-MIN-MIN>;IGNORE
+<d-D-Z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP-CAP>";IGNORE
+<d-D-Z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP-MIN>";IGNORE
+<d-D-z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN-CAP>";IGNORE
+<d-D-z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN-MIN>";IGNORE
+<d-d-Z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP-CAP>";IGNORE
+<d-d-Z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP-MIN>";IGNORE
+<d-d-z-S>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN-CAP>";IGNORE
+<d-d-z-s>	"<dzs><dzs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN-MIN>";IGNORE
 
 reorder-after <U0047>
-<G-Y>		<gy>;<BAS>;<CAP>;IGNORE
-<G-y>		<gy>;<BAS>;<CAP-MIN>;IGNORE
-<G-G-Y>		"<g_or_gy><gy>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<G-G-y>		"<g_or_gy><gy>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<G-g-Y>		"<g_or_gy><gy>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<G-g-y>		"<g_or_gy><gy>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<G-Y>		<gy>;<COMPOUND>;<CAP-CAP>;IGNORE
+<G-y>		<gy>;<COMPOUND>;<CAP-MIN>;IGNORE
+<G-G-Y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<G-G-y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<G-g-Y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<G-g-y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U0067>
-<g-y>		<gy>;<BAS>;<MIN>;IGNORE
-<g-Y>		<gy>;<BAS>;<MIN-CAP>;IGNORE
-<g-G-Y>		"<g_or_gy><gy>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<g-G-y>		"<g_or_gy><gy>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<g-g-Y>		"<g_or_gy><gy>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<g-g-y>		"<g_or_gy><gy>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<g-Y>		<gy>;<COMPOUND>;<MIN-CAP>;IGNORE
+<g-y>		<gy>;<COMPOUND>;<MIN-MIN>;IGNORE
+<g-G-Y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<g-G-y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<g-g-Y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<g-g-y>		"<gy><gy>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U004C>
-<L-Y>		<ly>;<BAS>;<CAP>;IGNORE
-<L-y>		<ly>;<BAS>;<CAP-MIN>;IGNORE
-<L-L-Y>		"<l_or_ly><ly>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<L-L-y>		"<l_or_ly><ly>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<L-l-Y>		"<l_or_ly><ly>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<L-l-y>		"<l_or_ly><ly>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<L-Y>		<ly>;<COMPOUND>;<CAP-CAP>;IGNORE
+<L-y>		<ly>;<COMPOUND>;<CAP-MIN>;IGNORE
+<L-L-Y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<L-L-y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<L-l-Y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<L-l-y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U006C>
-<l-y>		<ly>;<BAS>;<MIN>;IGNORE
-<l-Y>		<ly>;<BAS>;<MIN-CAP>;IGNORE
-<l-L-Y>		"<l_or_ly><ly>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<l-L-y>		"<l_or_ly><ly>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<l-l-Y>		"<l_or_ly><ly>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<l-l-y>		"<l_or_ly><ly>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<l-Y>		<ly>;<COMPOUND>;<MIN-CAP>;IGNORE
+<l-y>		<ly>;<COMPOUND>;<MIN-MIN>;IGNORE
+<l-L-Y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<l-L-y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<l-l-Y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<l-l-y>		"<ly><ly>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U004E>
-<N-Y>		<ny>;<BAS>;<CAP>;IGNORE
-<N-y>		<ny>;<BAS>;<CAP-MIN>;IGNORE
-<N-N-Y>		"<n_or_ny><ny>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<N-N-y>		"<n_or_ny><ny>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<N-n-Y>		"<n_or_ny><ny>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<N-n-y>		"<n_or_ny><ny>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<N-Y>		<ny>;<COMPOUND>;<CAP-CAP>;IGNORE
+<N-y>		<ny>;<COMPOUND>;<CAP-MIN>;IGNORE
+<N-N-Y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<N-N-y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<N-n-Y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<N-n-y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U006E>
-<n-y>		<ny>;<BAS>;<MIN>;IGNORE
-<n-Y>		<ny>;<BAS>;<MIN-CAP>;IGNORE
-<n-N-Y>		"<n_or_ny><ny>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<n-N-y>		"<n_or_ny><ny>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<n-n-Y>		"<n_or_ny><ny>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<n-n-y>		"<n_or_ny><ny>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<n-Y>		<ny>;<COMPOUND>;<MIN-CAP>;IGNORE
+<n-y>		<ny>;<COMPOUND>;<MIN-MIN>;IGNORE
+<n-N-Y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<n-N-y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<n-n-Y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<n-n-y>		"<ny><ny>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U0053>
-<S-Z>		<sz>;<BAS>;<CAP>;IGNORE
-<S-z>		<sz>;<BAS>;<CAP-MIN>;IGNORE
-<S-S-Z>		"<s_or_sz><sz>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<S-S-z>		"<s_or_sz><sz>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<S-s-Z>		"<s_or_sz><sz>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<S-s-z>		"<s_or_sz><sz>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<S-Z>		<sz>;<COMPOUND>;<CAP-CAP>;IGNORE
+<S-z>		<sz>;<COMPOUND>;<CAP-MIN>;IGNORE
+<S-S-Z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<S-S-z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<S-s-Z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<S-s-z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U0073>
-<s-Z>		<sz>;<BAS>;<MIN-CAP>;IGNORE
-<s-z>		<sz>;<BAS>;<MIN>;IGNORE
-<s-S-Z>		"<s_or_sz><sz>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<s-S-z>		"<s_or_sz><sz>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<s-s-Z>		"<s_or_sz><sz>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<s-s-z>		"<s_or_sz><sz>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<s-Z>		<sz>;<COMPOUND>;<MIN-CAP>;IGNORE
+<s-z>		<sz>;<COMPOUND>;<MIN-MIN>;IGNORE
+<s-S-Z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<s-S-z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<s-s-Z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<s-s-z>		"<sz><sz>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U0054>
-<T-Y>		<ty>;<BAS>;<CAP>;IGNORE
-<T-y>		<ty>;<BAS>;<CAP-MIN>;IGNORE
-<T-T-Y>		"<t_or_ty><ty>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<T-T-y>		"<t_or_ty><ty>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<T-t-Y>		"<t_or_ty><ty>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<T-t-y>		"<t_or_ty><ty>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<T-Y>		<ty>;<COMPOUND>;<CAP-CAP>;IGNORE
+<T-y>		<ty>;<COMPOUND>;<CAP-MIN>;IGNORE
+<T-T-Y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<T-T-y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<T-t-Y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<T-t-y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U0074>
-<t-Y>		<ty>;<BAS>;<MIN-CAP>;IGNORE
-<t-y>		<ty>;<BAS>;<MIN>;IGNORE
-<t-T-Y>		"<t_or_ty><ty>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<t-T-y>		"<t_or_ty><ty>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<t-t-Y>		"<t_or_ty><ty>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<t-t-y>		"<t_or_ty><ty>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<t-Y>		<ty>;<COMPOUND>;<MIN-CAP>;IGNORE
+<t-y>		<ty>;<COMPOUND>;<MIN-MIN>;IGNORE
+<t-T-Y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<t-T-y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<t-t-Y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<t-t-y>		"<ty><ty>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-after <U005A>
-<Z-S>		<zs>;<BAS>;<CAP>;IGNORE
-<Z-s>		<zs>;<BAS>;<CAP-MIN>;IGNORE
-<Z-Z-S>		"<z_or_zs><zs>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
-<Z-Z-s>		"<z_or_zs><zs>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
-<Z-z-S>		"<z_or_zs><zs>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
-<Z-z-s>		"<z_or_zs><zs>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+<Z-S>		<zs>;<COMPOUND>;<CAP-CAP>;IGNORE
+<Z-s>		<zs>;<COMPOUND>;<CAP-MIN>;IGNORE
+<Z-Z-S>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-CAP>";IGNORE
+<Z-Z-s>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><CAP-MIN>";IGNORE
+<Z-z-S>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-CAP>";IGNORE
+<Z-z-s>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<CAP><MIN-MIN>";IGNORE
 reorder-after <U007A>
-<z-S>		<zs>;<BAS>;<MIN-CAP>;IGNORE
-<z-s>		<zs>;<BAS>;<MIN>;IGNORE
-<z-Z-S>		"<z_or_zs><zs>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
-<z-Z-s>		"<z_or_zs><zs>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
-<z-z-S>		"<z_or_zs><zs>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
-<z-z-s>		"<z_or_zs><zs>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<z-S>		<zs>;<COMPOUND>;<MIN-CAP>;IGNORE
+<z-s>		<zs>;<COMPOUND>;<MIN-MIN>;IGNORE
+<z-Z-S>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-CAP>";IGNORE
+<z-Z-s>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><CAP-MIN>";IGNORE
+<z-z-S>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-CAP>";IGNORE
+<z-z-s>		"<zs><zs>";"<SINGLE-OR-COMPOUND><COMPOUND>";"<MIN><MIN-MIN>";IGNORE
 
 reorder-end