Class CollationFCD


  • public final class CollationFCD
    extends Object
    Data and functions for the FCD check fast path. The fast path looks at a pair of 16-bit code units and checks whether there is an FCD boundary between them; there is if the first unit has a trailing ccc=0 (!hasTccc(first)) or the second unit has a leading ccc=0 (!hasLccc(second)), or both. When the fast path finds a possible non-boundary, then the FCD check slow path looks at the actual sequence of FCD values. This is a pure optimization. The fast path must at least find all possible non-boundaries. If the fast path is too pessimistic, it costs performance. For a pair of BMP characters, the fast path tests are precise (1 bit per character). For a supplementary code point, the two units are its lead and trail surrogates. We set hasTccc(lead)=true if any of its 1024 associated supplementary code points has lccc!=0 or tccc!=0. We set hasLccc(trail)=true for all trail surrogates. As a result, we leave the fast path if the lead surrogate might start a supplementary code point that is not FCD-inert. (So the fast path need not detect that there is a surrogate pair, nor look ahead to the next full code point.) hasLccc(lead)=true if any of its 1024 associated supplementary code points has lccc!=0, for fast boundary checking between BMP & supplementary. hasTccc(trail)=false: It should only be tested for unpaired trail surrogates which are FCD-inert.
    • Constructor Detail

      • CollationFCD

        public CollationFCD()
    • Method Detail

      • hasLccc

        public static boolean hasLccc​(int c)
      • hasTccc

        public static boolean hasTccc​(int c)