]> Kevux Git Server - fll/commit
Progress: Add is joiner UTF-8 function.
authorKevin Day <Kevin@kevux.org>
Thu, 11 Jun 2026 02:17:34 +0000 (21:17 -0500)
committerKevin Day <Kevin@kevux.org>
Thu, 11 Jun 2026 02:17:34 +0000 (21:17 -0500)
commitf5c044a597b867412343439876c80af8267462ec
treeff81ee01a899104e87e5c600b9c02b1fc277265d
parent2ae1417923b29380d5904d1f6e23d3d51720916f
Progress: Add is joiner UTF-8 function.

I figured this would eventually happen given my relative inexperience with UTF-8.
This adds a new feature via additional functions for explicitly checking for joiner characters.
These joiner characters are not the same as combining characters.

The is alphabetic tests need to also handle joiner characters and treat them as not alphabetic.

This requires various build settings, like stand alone builds, to be updated with one of the following source files added:
```
  fll/level_0/private-utf_joiner.c
  level_0/private-utf_joiner.c
  private-utf_joiner.c
```

This requires various `config.h` files to now support handling of:
```
  #define _di_f_utf_character_is_joiner_
  #define _di_f_utf_is_joiner_
```

I had the option of either adding this and not exposing it through the **API** or exposing it through the **API**.
Exposing it through the **API** causes this to be a new feature (which I really want to avoid in general).
However, if the code is going to be added (because it is necessary and fixes some bugs), then it makes more sense to just expose it through the **API**.

This also fixes incidental missing `_di*_` in some cases.
86 files changed:
build/disable/level_0/f_utf.h
build/level_0/settings
build/monolithic/settings
build/stand_alone/byte_dump.config.h
build/stand_alone/byte_dump.settings
build/stand_alone/example.config.h
build/stand_alone/example.settings
build/stand_alone/fake.config.h
build/stand_alone/fake.settings
build/stand_alone/fss_identify.config.h
build/stand_alone/fss_identify.settings
build/stand_alone/fss_read.config.fss_basic.h
build/stand_alone/fss_read.config.fss_basic_list.h
build/stand_alone/fss_read.config.fss_embedded_list.h
build/stand_alone/fss_read.config.fss_extended.h
build/stand_alone/fss_read.config.fss_extended_list.h
build/stand_alone/fss_read.config.fss_payload.h
build/stand_alone/fss_read.config.h
build/stand_alone/fss_read.settings
build/stand_alone/fss_read.settings.fss_basic
build/stand_alone/fss_read.settings.fss_basic_list
build/stand_alone/fss_read.settings.fss_embedded_list
build/stand_alone/fss_read.settings.fss_extended
build/stand_alone/fss_read.settings.fss_extended_list
build/stand_alone/fss_read.settings.fss_payload
build/stand_alone/fss_write.config.fss_basic.h
build/stand_alone/fss_write.config.fss_basic_list.h
build/stand_alone/fss_write.config.fss_embedded_list.h
build/stand_alone/fss_write.config.fss_extended.h
build/stand_alone/fss_write.config.fss_extended_list.h
build/stand_alone/fss_write.config.fss_payload.h
build/stand_alone/fss_write.config.h
build/stand_alone/fss_write.settings
build/stand_alone/fss_write.settings.fss_basic
build/stand_alone/fss_write.settings.fss_basic_list
build/stand_alone/fss_write.settings.fss_embedded_list
build/stand_alone/fss_write.settings.fss_extended
build/stand_alone/fss_write.settings.fss_extended_list
build/stand_alone/fss_write.settings.fss_payload
build/stand_alone/iki_read.config.eki.h
build/stand_alone/iki_read.config.h
build/stand_alone/iki_read.settings
build/stand_alone/iki_read.settings.eki
build/stand_alone/iki_write.config.eki.h
build/stand_alone/iki_write.config.h
build/stand_alone/iki_write.settings
build/stand_alone/iki_write.settings.eki
build/stand_alone/status_code.config.fss.h
build/stand_alone/status_code.config.h
build/stand_alone/status_code.settings
build/stand_alone/status_code.settings.fss
build/stand_alone/utf8.config.h
build/stand_alone/utf8.settings
level_0/f_fss/tests/unit/c/test-fss-is_space.c
level_0/f_utf/c/private-utf.c
level_0/f_utf/c/private-utf.h
level_0/f_utf/c/private-utf_alphabetic.c
level_0/f_utf/c/private-utf_combining.c
level_0/f_utf/c/private-utf_combining.h
level_0/f_utf/c/private-utf_joiner.c [new file with mode: 0644]
level_0/f_utf/c/private-utf_joiner.h [new file with mode: 0644]
level_0/f_utf/c/private-utf_phonetic.c
level_0/f_utf/c/private-utf_phonetic.h
level_0/f_utf/c/private-utf_punctuation.c
level_0/f_utf/c/private-utf_punctuation.h
level_0/f_utf/c/private-utf_symbol.c
level_0/f_utf/c/private-utf_symbol.h
level_0/f_utf/c/private-utf_whitespace.c
level_0/f_utf/c/private-utf_whitespace.h
level_0/f_utf/c/utf/is.c
level_0/f_utf/c/utf/is.h
level_0/f_utf/c/utf/is_character.c
level_0/f_utf/c/utf/is_character.h
level_0/f_utf/data/build/settings
level_0/f_utf/data/build/settings-mocks
level_0/f_utf/data/build/settings-tests
level_0/f_utf/data/tests/bytesequences/joiner-all.txt [new file with mode: 0644]
level_0/f_utf/data/tests/codepoints/joiner-all.txt [new file with mode: 0644]
level_0/f_utf/tests/unit/c/data-utf.c
level_0/f_utf/tests/unit/c/data-utf.h
level_0/f_utf/tests/unit/c/test-utf-character_is_joiner.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-character_is_joiner.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_joiner.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_joiner.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf.c
level_0/f_utf/tests/unit/c/test-utf.h