From 91ecf7cc0e0aa185495c7342207099b6f13702ff Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 17 Oct 2026 23:52:03 +0200 Subject: Add to codepoint data whether the codepoint is a character or not MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- UnicodeData.parse.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'UnicodeData.parse.c') diff --git a/UnicodeData.parse.c b/UnicodeData.parse.c index a5879b9..f9b676c 100644 --- a/UnicodeData.parse.c +++ b/UnicodeData.parse.c @@ -129,10 +129,12 @@ static int output_character_data(char *text) { char *field, *numeric_value = NULL, *simple_uppercase_mapping; + unsigned long int codepoint; const char *formatted; size_t n, i; - if (!(field = split(&text))) return 0; /* codepoint */ + if (!(field = split(&text))) return 0; + codepoint = strtoul(field, &field, 16); if (!(field = split(&text))) return 0; add_linef(".name = \"%s\"", field); @@ -145,6 +147,13 @@ output_character_data(char *text) if (!(field = split(&text))) return 0; add_linef(", .bidirectional_category = BIDIRECTIONAL_CATEGORY_%s", field); + if (strcmp(field, "Cn")) { + add_linef(", .noncharacter = 0"); + } else if ((0xFDD0u <= codepoint && codepoint <= 0xFDEFu) || (codepoint & 0xFFFEu) == 0xFFFEu) { + add_linef(", .noncharacter = 1"); + } else { + add_linef(", .noncharacter = 0"); + } if (!(field = split(&text))) return 0; if (!*field) { -- cgit v1.3.1