Kenneth Whistler wrote:

However, implementations don't get to pick and choose so easily
about aspects of the standard such as encoding forms and normalization.
You can't, for example, recognize that <U+006E, U+0303> is canonically
equivalent to U+00F1 (Ã), but claim *not* to recognize that <U+0065, U+0303> is likewise canonically equivalent to U+1EBD, simply
because U+1EBD is not in a range that your implementation chooses
to "interpret" for display. Such, broken, partial recognitions of
canonical equivalence would represent non-conformant implementations
of normalization.


I am not sure I understand all the implications of your words:

My rendering system supports the following repertoire: {U+0065, U+006E, U+0303, U+00F1}. The inputs <U+006E, U+0303> and <U+00F1> produce the same correct output. The input <U+0065, U+0303> produces a correct output. Are you saying that, in order to claim conformance, my system needs to render correctly the input <U+1EBD>, because that is canonically equivalent to <U+0065, U+0303>, and the latter is entirely in my supported repertoire? Or can I claim conformance even if my system renders <U+1EBD> as a square box (or a smiley), or generates an error?


Going back to the original scenario, to make my point clearer:

System A, a subset of FileMaker, has {U+0065, U+0303, U+1EBD} as its repertoire. When presented with the input <U+0065, U+0303>, it produces the output <U+1EBD>.

System B, my rendering system, has {U+0065, U+0303} as its repertoire. When presented with the input <U+0065, U+0303>, it produces a correct rendering. When presented with the input <U+1EBD> it outputs a smiley.

Both systems are conformant (I would hope), yet putting them together does not mean that the result is automatically conformant, even on the intersection of their repertoire. Hence, one cannot attribute the problem that Richard is seeing to either system. The problem belongs to Richard, when he did put the two systems together.

If we want some automatic guarantee of conformance for combinations of conformant systems, then we need at least to impose that the repertoire supported by conformant implementations be closed under canonical equivalence. Such a condition is not there today. It has interesting consequences: e.g. U+2FA1C is canonically equivalent to U+9F3B, so the BMP is not closed under canonical equivalence, so no conformant system could make its repertoire exactly the BMP.

Eric.




Reply via email to