From b1ff34842d6db79fa2b6f337f4e5b8eeb6534623 Mon Sep 17 00:00:00 2001 From: Joe Da Silva Date: Sat, 22 Oct 2022 22:22:22 -0800 Subject: [PATCH] Libuninameslist version 20221022 Unicode 15.0 and French Unicode 14.0. Fixed build so that configure will trigger update to building libuninameslist based on timestamp of buildnameslist.h --- ChangeLog | 3 +++ Makefile.am | 15 ++++++------- README.md | 2 +- configure.ac | 29 ++++++++++--------------- nameslist-fr.c | 28 ++++++++++++++++++------ nameslist.c | 54 ++++++++++++++++++++++++----------------------- tests/Makefile.am | 20 +++++++++--------- uninameslist.h | 4 ++-- 8 files changed, 83 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index dccabdd..595f71d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +- 2022-Oct-22 + * Version 1.12, Unicode 15.0 and French version 1.5 now is at 14.0. + - 2022-Jul-01 * Unicode 15.0_Beta (Nameslist.txt 15_Beta for review until Jul12). * Biswapriyo Nath added Windows MSYS2 build (used by github tests), diff --git a/Makefile.am b/Makefile.am index 68c64db..00b05f9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,10 +28,9 @@ EXTRA_DIST = LICENSE README.md m4/ax_check_compile_flag.m4 tests/call-test.c \ build.sh noinst_PROGRAMS = buildnameslist -buildnameslist_SOURCES = buildnameslist.c -buildnameslist.$(OBJEXT): buildnameslist.h +buildnameslist_SOURCES = buildnameslist.c buildnameslist.h -nodist_EXTRA_DATA = NamesList.txt ListeDesNoms.txt buildnameslist.h .git/* +nodist_EXTRA_DATA = NamesList.txt ListeDesNoms.txt buildnameslist.h .git .github .appveyor.yml .travis.yml DISTCLEANFILES = libuninameslist.pc DISTCHECK_CONFIGURE_FLAGS = --enable-frenchlib --enable-pylib --disable-silent-rules @@ -50,8 +49,8 @@ noinst_HEADERS = nameslist-dll.h if WANTLIBOFR include_HEADERS += uninameslist-fr.h libuninameslist_fr_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(FR_VERSION) -libuninameslist_fr_la_SOURCES = nameslist-fr.c -libuninameslist_fr_la.$(OBJEXT): uninameslist-fr.h nameslist-dll.h buildnameslist.h +libuninameslist_fr_la_SOURCES = nameslist-fr.c buildnameslist.h +libuninameslist_fr_la.$(OBJEXT): uninameslist-fr.h nameslist-dll.h libuninameslist_la_LIBADD += libuninameslist-fr.la man_MANS += libuninameslist-fr.3 else @@ -59,8 +58,8 @@ EXTRA_DIST += nameslist-fr.c uninameslist-fr.h libuninameslist-fr.3 endif libuninameslist_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(UN_VERSION) -libuninameslist_la_SOURCES = nameslist.c -libuninameslist_la.$(OBJEXT): uninameslist.h nameslist-dll.h buildnameslist.h +libuninameslist_la_SOURCES = nameslist.c buildnameslist.h +libuninameslist_la.$(OBJEXT): uninameslist.h nameslist-dll.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libuninameslist.pc @@ -73,7 +72,7 @@ libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status libtool NamesList.txt: - $(WGET) "http://www.unicode.org/Public/UNIDATA/NamesList.txt" -O NamesList.txt + $(WGET) "http://www.unicode.org/Public/15.0.0/ucd/NamesList.txt" -O NamesList.txt ListeDesNoms.txt: $(WGET) "http://hapax.qc.ca/ListeNoms-14.0.0.txt" -O ListeDesNoms.txt diff --git a/README.md b/README.md index 6cd017d..d593414 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ libuninameslist – A Library of Unicode names and annotation data Description ----------- -This library is updated for Nameslist.txt ver14.0 and ListeDesNoms.txt ver14.0 +This library is updated for Nameslist.txt ver15.0 and ListeDesNoms.txt ver14.0 and includes python wrapper 'uninameslist.py' For latest release, see: https://github.com/fontforge/libuninameslist/releases diff --git a/configure.ac b/configure.ac index 47bcd5d..a9486ca 100644 --- a/configure.ac +++ b/configure.ac @@ -4,13 +4,13 @@ AC_PREREQ([2.64]) #------------------------------------------- # PackageTimestamp, major version, minor version, and Nameslist.txt version # Libraries have a "package" version of the form major.minor.micro. -m4_define([uninameslist_package_stamp], [20220701]) dnl yyyymmdd -m4_define([uninameslist_major_version], [14]) dnl Nameslist.txt -m4_define([uninameslist_minor_version], [9]) +m4_define([uninameslist_package_stamp], [20221022]) dnl yyyymmdd +m4_define([uninameslist_major_version], [15]) dnl Nameslist.txt +m4_define([uninameslist_minor_version], [0]) m4_define([uninameslist_nameslist_ver], [uninameslist_major_version.uninameslist_minor_version]) # Libraries have a "libtool" version of the form current:revision:age. m4_define([uninameslist_current], [1]) -m4_define([uninameslist_revision],[11]) +m4_define([uninameslist_revision],[12]) m4_define([uninameslist_age], [0]) m4_define([uninameslist_libver], [uninameslist_current:uninameslist_revision:uninameslist_age]) @@ -227,18 +227,11 @@ AC_SUBST([WUNLIB]) #------------------------------------------- # Ensure fresh timestamps if run ./configure -echo 'const char NL_VERSION[[]] = "uninameslist_nameslist_ver";' > $(srcdir)/buildnameslist.h -echo 'const char NFR_VERSION[[]] = "uninameslist_fr_nameslist_ver";' >> $(srcdir)/buildnameslist.h -echo 'const char NL_VERSION[[]] = "Nameslist-Version: uninameslist_nameslist_ver";' > $(srcdir)/tests/call-test.h -echo 'const char NFR_VERSION[[]] = "Nameslist-Version: uninameslist_fr_nameslist_ver";' >> $(srcdir)/tests/call-test.h - -#------------------------------------------- -# We need to ensure the libuninameslist core -# library is always built whenever we modify -# parameters by running ./configure anything -# Example: with/without "--enable-frenchlib" -# So we touch nameslist.c to make it recent. -${TOUCH} $(srcdir)/nameslist.c +echo 'const char NL_VERSION[[]] = "uninameslist_nameslist_ver";' > buildnameslist.h +echo 'const char NFR_VERSION[[]] = "uninameslist_fr_nameslist_ver";' >> buildnameslist.h +rm -f ${top_builddir}tests/call-test.h +echo 'const char NL_VERSION[[]] = "Nameslist-Version: uninameslist_nameslist_ver";' > ${top_builddir}tests/call-test.h +echo 'const char NFR_VERSION[[]] = "Nameslist-Version: uninameslist_fr_nameslist_ver";' >> ${top_builddir}tests/call-test.h #------------------------------------------- AC_PROG_LIBTOOL @@ -255,8 +248,8 @@ AC_OUTPUT AC_MSG_NOTICE([ Configuration: - Source code location ${srcdir} - Build code location ${builddir} + Source code location ${top_srcdir} + Build code location ${top_builddir} Destination prefix ${prefix} Compiler ${CC} Config auto WCFLAGS "${WCFLAGS}" diff --git a/nameslist-fr.c b/nameslist-fr.c index 12a64b7..52e96e9 100644 --- a/nameslist-fr.c +++ b/nameslist-fr.c @@ -9,14 +9,28 @@ ; Standard Unicode 14.0 ou ; Norme internationale ISO/CEI 10646 ; -; Ces noms français sont utilisés pour confectionner -; les commentaires documentant chacun des caractères +; Liste des noms des caractères (version en langue française) + +; Le Consortium Unicode entretient une collaboration étroite +; et une liaison officielle avec le groupe de travail qui élabore +; la norme internationale ISO/CEI 10646. Le standard Unicode, version 14.0, +; intègre 838 nouveaux caractères, dont neuf idéogrammes unifiés CJC. + +; Le présent fichier peut être utilisé librement. Toutefois, aucune +; modification n’y est autorisée ; toutes les copies doivent être +; rigoureusement identiques au fichier original. + +; Le Consortium Unicode n’est pas responsable des erreurs ou omissions +; dans ce fichier. + +; Les noms en langue française des caractères codés sont utilisés, notamment, +; pour produire les commentaires documentant chacun des caractères ; dont les poids de tri sont déterminés dans la table commune -; de la norme internationale ISO/CEI 14651. Cette dernière table -; est normative. La présente liste est informative, jusqu’à ce que -; l’ISO/CEI 10646 ait été remise à niveau en français. -; -; Contributions à la version 14.0 française des noms de caractère : +; de la norme internationale ISO/CEI 14651. Ladite table est normative ; +; la présente liste est informative, jusqu’à ce que la norme +; ISO/CEI 10646 ait été remise à niveau en français. + +; Contributions à la version en langue française : 14.0 ; Jacques André, France ; Patrick Andries, Canada (Québec) ; Bernard Chauvois, France diff --git a/nameslist.c b/nameslist.c index 037a092..d33c7b3 100644 --- a/nameslist.c +++ b/nameslist.c @@ -67,7 +67,7 @@ const char *uniNamesList_annot(unsigned long uni) { /* Retrieve Nameslist.txt version number. */ UN_DLL_EXPORT const char *uniNamesList_NamesListVersion(void) { - return( "Nameslist-Version: 14.0" ); + return( "Nameslist-Version: 15.0" ); } @@ -123,27 +123,27 @@ const char * uniNamesList_blockName(int uniBlock) { /* Return count of how many names2 are found in this version of library */ UN_DLL_EXPORT int uniNamesList_names2cnt(void) { - return( 31 ); + return( 32 ); } static const unsigned long unicode_name2code[] = { - 0x01A2, 0x01A3, 0x0709, 0x0CDE, 0x0E9D, 0x0E9F, 0x0EA3, 0x0EA5, - 0x0FD0, 0x11EC, 0x11ED, 0x11EE, 0x11EF, 0x1BBD, 0x2118, 0x2448, - 0x2449, 0x2B7A, 0x2B7C, 0xA015, 0xAA6E, 0xFE18, 0xFEFF, 74452, - 74453, 93782, 93783, 93814, 93815, 110593, 118981 + 0x01A2, 0x01A3, 0x0616, 0x0709, 0x0CDE, 0x0E9D, 0x0E9F, 0x0EA3, + 0x0EA5, 0x0FD0, 0x11EC, 0x11ED, 0x11EE, 0x11EF, 0x1BBD, 0x2118, + 0x2448, 0x2449, 0x2B7A, 0x2B7C, 0xA015, 0xAA6E, 0xFE18, 0xFEFF, + 74452, 74453, 93782, 93783, 93814, 93815, 110593, 118981 }; static const char unicode_name2vals[] = { - 3,24, 3,22, 3,34, 3,19, 3,17, 3,17, 3,13, 3,13, - 3,35, 3,32, 3,37, 3,30, 3,33, 3,26, 3,29, 3,17, - 3,16, 3,59, 3,60, 3,26, 3,25, 3,61, 3,15, 3,24, - 3,42, 3,28, 3,29, 3,26, 3,27, 3,21, 3,52 + 3,24, 3,22, 3,47, 3,34, 3,19, 3,17, 3,17, 3,13, + 3,13, 3,35, 3,32, 3,37, 3,30, 3,33, 3,26, 3,29, + 3,17, 3,16, 3,59, 3,60, 3,26, 3,25, 3,61, 3,15, + 3,24, 3,42, 3,28, 3,29, 3,26, 3,27, 3,21, 3,52 }; /* Return unicode value with names2 (0<=count=31 ) return( -1 ); + if ( count<0 || count>=32 ) return( -1 ); return( (long)(unicode_name2code[count]) ); } @@ -152,7 +152,7 @@ UN_DLL_EXPORT int uniNamesList_names2getU(unsigned long uni) { int i; - if ( uni<0x110000 ) for ( i=0; i<31; ++i ) { + if ( uni<0x110000 ) for ( i=0; i<32; ++i ) { if ( uni==unicode_name2code[i] ) return( i ); if ( uni=31 ) return( -1 ); + if ( count<0 || count>=32 ) return( -1 ); return( (int)(unicode_name2vals[(count<<1)+1]) ); } @@ -177,7 +177,7 @@ const char *uniNamesList_names2anC(int count) { int c; const char *pt; - if ( count<0 || count>=31 ) return( NULL ); + if ( count<0 || count>=32 ) return( NULL ); c = unicode_name2vals[count<<1]; pt = uniNamesList_annot((unsigned long)(uniNamesList_names2val(count))); while ( --c>=0 ) ++pt; @@ -3615,7 +3615,8 @@ static const struct unicode_nameannot una_00_06[] = { /* 0614 */ { "ARABIC SIGN TAKHALLUS"," * sign placed over the name or nom-de-plume of a poet, or in some writings used to mark all proper names"}, /* 0615 */ { "ARABIC SMALL HIGH TAH"," * marks a recommended pause position in some Qurans published in Iran and Pakistan\n" " * should not be confused with the small TAH sign used as a diacritic for some letters such as 0679"}, -/* 0616 */ { "ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH"," * early Persian"}, +/* 0616 */ { "ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH"," % ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE\n" + " * early Persian"}, /* 0617 */ { "ARABIC SMALL HIGH ZAIN",NULL}, /* 0618 */ { "ARABIC SMALL FATHA"," * should not be confused with 064E FATHA"}, /* 0619 */ { "ARABIC SMALL DAMMA"," * should not be confused with 064F DAMMA"}, @@ -3809,7 +3810,7 @@ static const struct unicode_nameannot una_00_06[] = { " x (arabic letter keheh with dot above - 0762)"}, /* 06AD */ { "ARABIC LETTER NG"," * Uyghur, Kazakh, Moroccan Arabic, early Jawi, early Persian, ..."}, /* 06AE */ { "ARABIC LETTER KAF WITH THREE DOTS BELOW"," * Berber, early Persian\n" - " * Pegon alternative for 068A"}, + " * Pegon alternative for 08B4"}, /* 06AF */ { "ARABIC LETTER GAF"," * Persian, Urdu, ..."}, /* 06B0 */ { "ARABIC LETTER GAF WITH RING"," * Lahnda"}, /* 06B1 */ { "ARABIC LETTER NGOEH"," * Sindhi"}, @@ -9001,12 +9002,12 @@ static const struct unicode_nameannot una_00_19[] = { /* 19B2 */ { "NEW TAI LUE VOWEL SIGN II",NULL}, /* 19B3 */ { "NEW TAI LUE VOWEL SIGN U",NULL}, /* 19B4 */ { "NEW TAI LUE VOWEL SIGN UU",NULL}, -/* 19B5 */ { "NEW TAI LUE VOWEL SIGN E",NULL}, -/* 19B6 */ { "NEW TAI LUE VOWEL SIGN AE",NULL}, -/* 19B7 */ { "NEW TAI LUE VOWEL SIGN O",NULL}, +/* 19B5 */ { "NEW TAI LUE VOWEL SIGN E"," * precedes consonant in visual order"}, +/* 19B6 */ { "NEW TAI LUE VOWEL SIGN AE"," * precedes consonant in visual order"}, +/* 19B7 */ { "NEW TAI LUE VOWEL SIGN O"," * precedes consonant in visual order"}, /* 19B8 */ { "NEW TAI LUE VOWEL SIGN OA",NULL}, /* 19B9 */ { "NEW TAI LUE VOWEL SIGN UE",NULL}, -/* 19BA */ { "NEW TAI LUE VOWEL SIGN AY",NULL}, +/* 19BA */ { "NEW TAI LUE VOWEL SIGN AY"," * precedes consonant in visual order"}, /* 19BB */ { "NEW TAI LUE VOWEL SIGN AAY",NULL}, /* 19BC */ { "NEW TAI LUE VOWEL SIGN UY",NULL}, /* 19BD */ { "NEW TAI LUE VOWEL SIGN OY",NULL}, @@ -10966,7 +10967,7 @@ static const struct unicode_nameannot una_00_20[] = { /* 204D */ { "BLACK RIGHTWARDS BULLET",NULL}, /* 204E */ { "LOW ASTERISK"," x (asterisk - 002A)\n" " x (combining asterisk below - 0359)"}, -/* 204F */ { "REVERSED SEMICOLON"," * also used in Sindhi\n" +/* 204F */ { "REVERSED SEMICOLON"," * used occasionally in Sindhi when Sindhi is written in the Arabic script\n" " x (semicolon - 003B)\n" " x (arabic semicolon - 061B)"}, /* 2050 */ { "CLOSE UP"," * editing mark\n" @@ -11223,7 +11224,7 @@ static const struct unicode_nameannot una_00_21[] = { " # 0061 002F 0073"}, /* 2102 */ { "DOUBLE-STRUCK CAPITAL C"," = the set of complex numbers\n" " # 0043 latin capital letter c"}, -/* 2103 */ { "DEGREE CELSIUS"," = degrees Centigrade\n" +/* 2103 */ { "DEGREE CELSIUS"," = degrees centigrade\n" " # 00B0 0043"}, /* 2104 */ { "CENTRE LINE SYMBOL"," = clone"}, /* 2105 */ { "CARE OF"," # 0063 002F 006F"}, @@ -15437,7 +15438,8 @@ static const struct unicode_nameannot una_00_2E[] = { " x (double oblique hyphen - 2E17)\n" " x (katakana-hiragana double hyphen - 30A0)\n" " x (modifier letter short equals sign - A78A)"}, -/* 2E41 */ { "REVERSED COMMA"," * also used in Sindhi\n" +/* 2E41 */ { "REVERSED COMMA"," * Old Hungarian\n" + " * used occasionally in Sindhi when Sindhi is written in the Arabic script\n" " x (comma - 002C)\n" " x (arabic comma - 060C)"}, /* 2E42 */ { "DOUBLE LOW-REVERSED-9 QUOTATION MARK"," x (double low-9 quotation mark - 201E)"}, @@ -15461,7 +15463,7 @@ static const struct unicode_nameannot una_00_2E[] = { " x (reversed pilcrow sign - 204B)\n" " x (paragraphos - 2E0F)\n" " x (capitulum - 2E3F)"}, -/* 2E4E */ { "PUNCTUS ELEVATUS MARK"," This mark indicates a major intermediate pause where the sensus is complete but the sentence is not; this is similar in some regards to the modern use of a semicolon."}, +/* 2E4E */ { "PUNCTUS ELEVATUS MARK"," * This mark indicates a major intermediate pause where the sensus is complete but the sentence is not; this is similar in some regards to the modern use of a semicolon."}, /* 2E4F */ { "CORNISH VERSE DIVIDER",NULL}, /* 2E50 */ { "CROSS PATTY WITH RIGHT CROSSBAR"," x (maltese cross - 2720)\n" " x (latin capital letter half h - 2C75)"}, @@ -20497,7 +20499,7 @@ static const struct unicode_nameannot una_00_AB[] = { /* AB2D */ { "ETHIOPIC SYLLABLE BBE",NULL}, /* AB2E */ { "ETHIOPIC SYLLABLE BBO",NULL}, /* AB2F */ { NULL,NULL}, -/* AB30 */ { "LATIN SMALL LETTER BARRED ALPHA",NULL}, +/* AB30 */ { "LATIN SMALL LETTER BARRED ALPHA"," * This letter is a Latin alpha with a horizontal strikethrough bar. In some font designs, the bar might not extend beyond the edge of the letter, and in such cases, the letter should not be confused with a ligature of epsilon and iota."}, /* AB31 */ { "LATIN SMALL LETTER A REVERSED-SCHWA",NULL}, /* AB32 */ { "LATIN SMALL LETTER BLACKLETTER E",NULL}, /* AB33 */ { "LATIN SMALL LETTER BARRED E",NULL}, @@ -31179,7 +31181,7 @@ static const struct unicode_nameannot una_01_1F[] = { /* 11F3D */ { NULL,NULL}, /* 11F3E */ { "KAWI VOWEL SIGN E",NULL}, /* 11F3F */ { "KAWI VOWEL SIGN AI",NULL}, -/* 11F40 */ { "KAWI VOWEL SIGN EU"," * represents schwa [ǝ]"}, +/* 11F40 */ { "KAWI VOWEL SIGN EU"," * represents schwa [ə]"}, /* 11F41 */ { "KAWI SIGN KILLER"," * vowel killer, always rendered visibly"}, /* 11F42 */ { "KAWI CONJOINER"," * used for producing below-base and post-base conjunct forms"}, /* 11F43 */ { "KAWI DANDA",NULL}, diff --git a/tests/Makefile.am b/tests/Makefile.am index df1ed44..e645c0d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ # Common CPPFLAGS -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) +AM_CPPFLAGS = -I$(builddir) -I$(top_builddir) -I$(top_srcdir) -I$(srcdir) -AM_CFLAGS = -I$(top_srcdir) -I$(top_builddir) $(DEP_CFLAGS) $(BABL_CFLAGS) -lm +AM_CFLAGS = -I$(builddir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) $(DEP_CFLAGS) $(BABL_CFLAGS) -lm #DEPS = $(top_builddir)/libuninameslist.la @@ -17,34 +17,34 @@ LDADDS = $(top_builddir)/libuninameslist.la # The tests noinst_PROGRAMS = call-test0 call-test1 call-test2 -call_test0_SOURCES = call-test0.c +call_test0_SOURCES = call-test0.c call-test.h call-test0.$(OBJEXT): call-test.h call-test.c call_test0_LDADD = $(LDADDS) -call_test1_SOURCES = call-test1.c +call_test1_SOURCES = call-test1.c call-test.h call-test1.$(OBJEXT): call-test.h call-test.c call_test1_LDADD = $(LDADDS) -call_test2_SOURCES = call-test2.c +call_test2_SOURCES = call-test2.c call-test.h call-test2.$(OBJEXT): call-test.h call-test.c call_test2_LDADD = $(LDADDS) if WANTLIBOFR LDADDF = $(top_builddir)/libuninameslist-fr.la -call_test3_SOURCES = call-test3.c +call_test3_SOURCES = call-test3.c call-test.h call-test3.$(OBJEXT): call-test.h call-test.c call_test3_LDADD = $(LDADDF) -call_test4_SOURCES = call-test4.c +call_test4_SOURCES = call-test4.c call-test.h call-test4.$(OBJEXT): call-test.h call-test.c call_test4_LDADD = $(LDADDF) -call_test5_SOURCES = call-test5.c +call_test5_SOURCES = call-test5.c call-test.h call-test5.$(OBJEXT): call-test.h call-test.c call_test5_LDADD = $(LDADDS) $(LDADDF) -call_test7_SOURCES = call-test7.c +call_test7_SOURCES = call-test7.c call-test.h call-test7.$(OBJEXT): call-test.h call-test.c call_test7_LDADD = $(LDADDS) @@ -54,7 +54,7 @@ noinst_PROGRAMS += call-test6 EXTRA_DIST += call-test3.c call-test4.c call-test5.c call-test7.c endif -call_test6_SOURCES = call-test6.c +call_test6_SOURCES = call-test6.c call-test.h call-test6.$(OBJEXT): call-test.h call-test.c call_test6_LDADD = $(LDADDS) diff --git a/uninameslist.h b/uninameslist.h index 18ee48c..3f6c441 100644 --- a/uninameslist.h +++ b/uninameslist.h @@ -58,9 +58,9 @@ const char *uniNamesList_NamesListVersion(void); /* Version information for this include file */ #define LIBUNINAMESLIST_MAJOR 1 -#define LIBUNINAMESLIST_MINOR 10 +#define LIBUNINAMESLIST_MINOR 12 -/* Return number of blocks in this NamesList (Version 14.0). */ +/* Return number of blocks in this NamesList (Version 15.0). */ int uniNamesList_blockCount(void); /* Return block number for this unicode value (-1 if bad unicode value) */