+2010-06-04 Damien Diederen <dd@crosstwine.com>
+
+ * create-category-table.cs: Utility to generate reasonably-packed
+ Unicode tables.
+
+ This program generates (partially) bi-level tables encoding the
+ contents of the Unicode character category database.
+
+ Mono embeds a linear table with category codes for the Unicode BMP
+ (first 65536 codepoints), and lacks information about characters
+ in the astral planes--leading to requests such as bug 480178.
+ Extending the linear table to cover the full codespace is not an
+ ideal solution, as that would expand the embedded "blob" by a
+ factor of 17.
+
+ The new tables generated by this program can be used to support
+ the full range of characters. An additional level of indirection
+ used for characters outside the U+0000..U+FFFF range enables
+ "page" sharing, so that the total amount of embedded data only
+ grows by 13.5kB.
+
+ Cf. in-file comments for usage instructions.
+
+2010-05-17 Atsushi Enomoto <atsushi@ximian.com>
+
+ * SimpleCollator.cs : fix extender search index for LastIndexOf().
+ Fixed bug #605094.
+
+2010-04-20 Damien Diederen <dd@crosstwine.com>
+
+ * Normalization.cs: Really apply canonical reordering "recursively."
+
+ Before this, a sequence of code points with the combining
+ classes (22, 33, 11) would be reordered to (22, 11, 33) instead of
+ the correct (11, 22, 33). This is because the 'i--' would be
+ directly cancelled by the 'i++' in the for loop.
+
+2010-04-20 Damien Diederen <dd@crosstwine.com>
+
+ * Normalization.cs: The correct "checkType" argument to
+ Decompose() is NKD or NKFD when normalizing to NKC resp. NKFC.
+
+ * StringTest.cs: More NFC test cases.
+
+2010-04-20 Damien Diederen <dd@crosstwine.com>
+
+ * Normalization.cs: Implement algorithmic Hangul composition.
+ Calling Normalize(NormalizationForm.FormC) on Korean characters
+ now works properly (bnc#480152).
+
+ * StringTest.cs: Add test cases for Hangul composition.
+
+2010-04-20 Damien Diederen <dd@crosstwine.com>
+
+ * Normalization.cs: Follow the spec when checking composition pairs.
+
+ Figure 7 in section 1.3 of http://unicode.org/reports/tr15/ shows
+ how when doing composition, one has to examine the successive
+ (starter, candidate) pairs, and combine if a matching canonical
+ decomposition exists.
+
+ The original algorithm was, instead, iterating on canonical
+ decompositions, and, for each one, trying to match a sequence
+ of (starter, non-starter, ...). This, however, does not produce
+ the same results as it is violating some implicit ordering
+ constraints in the Unicode tables.
+
+ E.g., when composing the following sequence of codepoints, the
+ original algorithm was picking:
+
+ 03B7 0313 0300 0345
+ ^^^^ ^^^^
+ 1F74 0313 0345
+ ^^^^ ^^^^
+ 1FC2 0313
+
+ and would stop at 1FC2 0313 as there is no decomposition matching
+ it. The new algorithm, which follows the guidance of the pretty
+ figure 7, ends up doing:
+
+ 03B7 0313 0300 0345
+ ^^^^ ^^^^
+ 1F20 0300 0345
+ ^^^^ ^^^^
+ 1F22 0345
+ ^^^^ ^^^^
+ 1F92
+
+ resulting in the correct 1F92.
+
+2010-04-19 Damien Diederen <dd@crosstwine.com>
+
+ * Normalization.cs: Recursively apply the Unicode decomposition mapping.
+
+ According to http://www.unicode.org/reports/tr15/tr15-31.html,
+ section 1.3:
+
+ "To transform a Unicode string into a given Unicode Normalization
+ Form, the first step is to fully decompose the string. [...] Full
+ decomposition involves recursive application of the
+ Decomposition_Mapping values, because in some cases a complex
+ composite character may have a Decomposition_Mapping into a
+ sequence of characters, one of which may also have its own
+ non-trivial Decomposition_Mapping value."
+
+2010-02-18 Gabriel Burt <gabriel.burt@gmail.com>
+
+ * Normalization.cs: Implement algorithmic Hangul decomposition; Calling
+ string.Normalize on Korean characters now works properly (bnc#480152).
+ This reduces the number of errors in 'make test' from 27k to 4.8k.
+
+ * StringNormalizationTestSource.cs:
+ * Makefile: Use the local, working copy of Normalization etc,so as to make
+ modifying Normalization.cs and then testing your changes with 'make test'
+ possible. Also, fix building/running of tests, patch by Alexander
+ Kojevnikov.
+
+2009-09-18 Atsushi Enomoto <atsushi@ximian.com>
+
+ * Normalization.cs : Handle blocked characters which are not
+ immediately next to the primary composite character. This fixes
+ some Arabic string sequence normalization.
+ * Makefile : fix test build.
+
+2009-09-17 Atsushi Enomoto <atsushi@ximian.com>
+
+ * Normalization.cs : some renaming for disambiguation.
+ * NormalizationTableUtil.cs : fix some wrong ranges in
+ mapIdxToComposite. This fixes some Arabic normalization (and more).
+ * normalization-notes.txt : added some notes on the implementation.
+
+2008-06-19 Atsushi Enomoto <atsushi@ximian.com>
+
+ * Normalization.cs :
+ - reverted the previous index calculation change. It was correctly
+ implemented and I rather broke it.
+ - fix index calculation on combining.
+ - NFKD was incorrectly directed to combining path. It should not.
+ - Simplify quick check.
+
+2008-06-15 Atsushi Enomoto <atsushi@ximian.com>
+
+ * Normalization.cs : For NFC and NFKC, IsNormalized() was not working
+ enough to check composed characters. It's not possible without
+ the actual composition, so just call Normalize() and compare them.
+ In Normalize() mapping helper didn't pick correct map index since
+ the table for index stores index for "uncompressed" numbers.
+ * NormalizationTableUtil.cs : updated to the latest UCD.
+ * Makefile : to build test, source file must be downloaded too.
+
+2008-11-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ucd.cs : Write type for *_count. Add notice to not edit
+ unicode-data.h directly.
+
+2008-11-04 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ucd.cs : new code to generate unicode table for eglib.
+
+2008-07-04 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
+
+ * SortKey: Fix parameter names, add attribute, small formatting
+
+2008-06-27 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * CodePointIndexer.cs : Make TableRange a struct instead
+ of a class so we save 2 memory ops per ToIndex loop.
+
+2008-04-02 Atsushi Enomoto <atsushi@ximian.com>
+
+ * SortKey.cs : check null arguments. Fixed bug #376171.
+
+2007-07-20 Atsushi Enomoto <atsushi@ximian.com>
+
+ * create-mscompat-collation-table.cs : I wonder how long its build
+ has been broken ...
+
2007-03-06 Atsushi Enomoto <atsushi@ximian.com>
* SimpleCollator.cs : disable QuickCheckPossible(), which is