GRAPHEME_IS_CHARACTER_BREAK(3)

NAME
grapheme_is_character_break - test for a grapheme cluster break between two codepoints

SYNOPSIS
#include <grapheme.h>
size_t
grapheme_is_character_break(uint_least32_t cp1, uint_least32_t cp2, uint_least16_t *state);

DESCRIPTION
The grapheme_is_character_break() function determines if there is a grapheme cluster break (see libgrapheme(7)) between the two codepoints cp1 and cp2. By specification this decision depends on a state that can at most be completely reset after detecting a break and must be reset every time one deviates from sequential processing.

If state is NULL grapheme_is_character_break() behaves as if it was called with a fully reset state.

RETURN VALUES
The grapheme_is_character_break() function returns true if there is a grapheme cluster break between the codepoints cp1 and cp2 and false if there is not.

EXAMPLES

    /* cc (-static) -o example example.c -lgrapheme */
    #include <grapheme.h>
    #include <stdint.h>
    #include <stdio.h>
    #include <stdlib.h>
    int
    main(void)
    {
    	uint_least16_t state = 0;
    	uint_least32_t s1[] = ..., s2[] = ...; /* two input arrays */
    	size_t i;
    	for (i = 0; i + 1 < sizeof(s1) / sizeof(*s1); i++) {
    		if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
    			printf("break in s1 at offset %zu, i);
    		}
    	}
    	memset(&state, 0, sizeof(state)); /* reset state */
    	for (i = 0; i + 1 < sizeof(s2) / sizeof(*s2); i++) {
    		if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
    			printf("break in s2 at offset %zu, i);
    		}
    	}
    	return 0;
    }

SEE ALSO
grapheme_next_character_break(3), grapheme_next_character_break_utf8(3), libgrapheme(7)

STANDARDS
grapheme_is_character_break() is compliant with the Unicode 15.0.0 specification.

AUTHORS
Laslo Hunhold <dev@frign.de>