grapheme_is_character_break.sh - libgrapheme - unicode string library
 (HTM) git clone git://git.suckless.org/libgrapheme
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       grapheme_is_character_break.sh (1949B)
       ---
            1 cat << EOF
            2 .Dd ${MAN_DATE}
            3 .Dt GRAPHEME_IS_CHARACTER_BREAK 3
            4 .Os suckless.org
            5 .Sh NAME
            6 .Nm grapheme_is_character_break
            7 .Nd test for a grapheme cluster break between two codepoints
            8 .Sh SYNOPSIS
            9 .In grapheme.h
           10 .Ft size_t
           11 .Fn grapheme_is_character_break "uint_least32_t cp1" "uint_least32_t cp2" "uint_least16_t *state"
           12 .Sh DESCRIPTION
           13 The
           14 .Fn grapheme_is_character_break
           15 function determines if there is a grapheme cluster break (see
           16 .Xr libgrapheme 7 )
           17 between the two codepoints
           18 .Va cp1
           19 and
           20 .Va cp2 .
           21 By specification this decision depends on a
           22 .Va state
           23 that can at most be completely reset after detecting a break and must
           24 be reset every time one deviates from sequential processing.
           25 .Pp
           26 If
           27 .Va state
           28 is
           29 .Dv NULL
           30 .Fn grapheme_is_character_break
           31 behaves as if it was called with a fully reset state.
           32 .Sh RETURN VALUES
           33 The
           34 .Fn grapheme_is_character_break
           35 function returns
           36 .Va true
           37 if there is a grapheme cluster break between the codepoints
           38 .Va cp1
           39 and
           40 .Va cp2
           41 and
           42 .Va false
           43 if there is not.
           44 .Sh EXAMPLES
           45 .Bd -literal
           46 /* cc (-static) -o example example.c -lgrapheme */
           47 #include <grapheme.h>
           48 #include <stdint.h>
           49 #include <stdio.h>
           50 #include <stdlib.h>
           51 
           52 int
           53 main(void)
           54 {
           55         uint_least16_t state = 0;
           56         uint_least32_t s1[] = ..., s2[] = ...; /* two input arrays */
           57         size_t i;
           58 
           59         for (i = 0; i + 1 < sizeof(s1) / sizeof(*s1); i++) {
           60                 if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
           61                         printf("break in s1 at offset %zu\n", i);
           62                 }
           63         }
           64         memset(&state, 0, sizeof(state)); /* reset state */
           65         for (i = 0; i + 1 < sizeof(s2) / sizeof(*s2); i++) {
           66                 if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
           67                         printf("break in s2 at offset %zu\n", i);
           68                 }
           69         }
           70 
           71         return 0;
           72 }
           73 .Ed
           74 .Sh SEE ALSO
           75 .Xr grapheme_next_character_break 3 ,
           76 .Xr grapheme_next_character_break_utf8 3 ,
           77 .Xr libgrapheme 7
           78 .Sh STANDARDS
           79 .Fn grapheme_is_character_break
           80 is compliant with the Unicode ${UNICODE_VERSION} specification.
           81 .Sh AUTHORS
           82 .An Laslo Hunhold Aq Mt dev@frign.de
           83 EOF