Philippe Verdy <verdy underscore p at wanadoo dot fr> wrote: > OK, this is a transform, but it is still canonically equivalent to the > source text. Transformations between canonical equivalent strings is > safe (at least for Korean Hangul), and this is what any normalizer > performs.
But compressors aren't normally expected to perform normalization too. >> This adds complexity, but is sometimes worth the effort. > > Not more complex than implementing the standard normalization. In any > case, most normalizers perform Hangul syllable normalization > algorithmically, so it's a couple of lines to modify to add a check > for possible TL/TLV composition in the NFC normalizer, or to decompose > TL and TLV but not LV in the NFD normalizer. Compressors aren't normally expected to perform normalization, even if there is a simple algorithmic way to do it. >> The Burrows-Wheeler block-sorting approach, for example, achieves >> very good results by adding a preprocessing step before >> "conventional" Huffman or arithmetic compression. > > I don't know what it is but I think it will try to create a unique > code from common sequences of codepoints, in order to flatten > approximately their distribution statistics. The assigned codes are > then sorted by frequency, from where Huffman/Arithmetic encoding of > these partially flattened codes will create the variable length codes, > with a bit more accuracy than if the intermediate codes were all > unsorted, the interest being that the result of Huffman/Arithmetic > encoding will contain sequences of frequent bits set to 0, so that it > is recompressible by a second Huffman/Arithmetic pass, or by a RLE > pass. You're right, you don't know what it is. :-) See ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz for the actual description. > It would be interesting to know if good SCSU compressors have been > developed, i.e. how they compare when they choose one option or the > other for the coding, between switch to UTF-16, temporary escape to > UTF-16, management of the most frequent codes in the 8-bit codepage, > switch of codepages, reset to default codepages... I think you mean "windows" here. SCSU does not deal with legacy code pages the way, say, ISO 2022 does. > I'm sure that many compressors have been attempted, but not fully > experimented to get the best result. So it's quite soon to compare > the performance of BOCU-1 and SCSU. I know one person who's looking forward to reading my paper. > After all, the "deflate" compression method in zlib is public, and all > ZIP tools can defalte deflated files, but they are not all equal in > terms of effective compression ratio (the fine tuning of compressors > between processing speed at compression time and result size requires > a lot of efforts, and this is where algorithms are proprietary and > often patented, despite the decompressor itself is free and mostly > identical between all products, with very few design choices except > minor optimizatrions for speed of the decompression process). > > So we should wait for some time until those who developed the best > tunings for "deflate" experiment their technics on SCSU. The current > ICU implementation is not too bad, but after looking at some generated > sequences, it is not always fully optimal, and I can still find > shorter codes manually in some examples not too hard to find, notably > in documents using mixed languages or scripts (I have not looked > precisely on the case of Korean, but I have looked at the currently > excellent result for Russian and Greek, with still some optimizations > possible for Latin based languages that use a higher number of accents > and use relatively more frequently the Latin Extended letters). Hoo boy, do I ever know someone who's looking forward to reading my paper. > Of course, as BOCU-1 and SCSU are considered as encoding schemes, they > cannot themselves alter the represented Unicode strings into > canonically equivalent ones. But I'm quite sure that if a process wish > to create strings that it knows they will be normalized when read (or > the reader will ignore differences of canonically equivalent strings, > something that all Unicode-based processes should respect), that > process could take it into account within its BOCU-1 or SCSU encoder > by allowing them to change the normalization form as long as canonical > equivalence is kept. For BOCU-1 this is quite simple as this is a > pipeline with separate tasks with little options, but in SCSU the > normalization form of the input string interacts with the SCSU-1 > compressor during its run, and offers more alternatives to the > compressor. Changing a sequence S to a canonically equivalent sequence S' is explicitly allowed by conformance clause C10, but I would be surprised if any designers or implementers of Unicode compression schemes have considered such a thing. Does this violate users' expectations of what "lossless" compression means? This might be a topic all by itself. -Doug Ewell Fullerton, California http://users.adelphia.net/~dewell/