summaryrefslogtreecommitdiff
path: root/Build/source/texk/bibtex-x
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-04-29 03:14:26 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-04-29 03:14:26 +0000
commitaf4ad1c389367c6a6a264ee9402ac094ee28fc28 (patch)
tree2ab8e1945907815ea7548753fb018da549a0aac0 /Build/source/texk/bibtex-x
parentbe99afdf8b3704c3a42465354f690ed41bf5fdbc (diff)
bibtex-x: ver4.00, add is.cjk.str$, bitwise and/or to built-in function
git-svn-id: svn://tug.org/texlive/trunk@63173 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/bibtex-x')
-rw-r--r--Build/source/texk/bibtex-x/ChangeLog37
-rw-r--r--Build/source/texk/bibtex-x/HISTORY14
-rw-r--r--Build/source/texk/bibtex-x/Makefile.am14
-rw-r--r--Build/source/texk/bibtex-x/Makefile.in36
-rw-r--r--Build/source/texk/bibtex-x/bibtex-1.c36
-rw-r--r--Build/source/texk/bibtex-x/bibtex-2.c47
-rw-r--r--Build/source/texk/bibtex-x/bibtex-3.c11
-rw-r--r--Build/source/texk/bibtex-x/bibtex-4.c147
-rw-r--r--Build/source/texk/bibtex-x/bibtex.c4
-rw-r--r--Build/source/texk/bibtex-x/bibtex.h13
-rw-r--r--Build/source/texk/bibtex-x/bibtex8.120
-rw-r--r--Build/source/texk/bibtex-x/bibtexu.153
-rwxr-xr-xBuild/source/texk/bibtex-x/configure22
-rw-r--r--Build/source/texk/bibtex-x/configure.ac2
-rw-r--r--Build/source/texk/bibtex-x/datatype.h4
-rw-r--r--Build/source/texk/bibtex-x/gblprocs.h9
-rw-r--r--Build/source/texk/bibtex-x/gblvars.h9
-rw-r--r--Build/source/texk/bibtex-x/sysdep.h4
-rwxr-xr-xBuild/source/texk/bibtex-x/tests/bibtex8-char.test5
-rwxr-xr-xBuild/source/texk/bibtex-x/tests/bibtexu-char.test10
-rw-r--r--Build/source/texk/bibtex-x/tests/iscjku.aux4
-rw-r--r--Build/source/texk/bibtex-x/tests/iscjku.bbl63
-rw-r--r--Build/source/texk/bibtex-x/tests/ltnbib.bib57
-rw-r--r--Build/source/texk/bibtex-x/tests/mlgbib.bib148
-rw-r--r--Build/source/texk/bibtex-x/tests/namea.aux4
-rw-r--r--Build/source/texk/bibtex-x/tests/namea.bbl34
-rw-r--r--Build/source/texk/bibtex-x/tests/nameu.aux4
-rw-r--r--Build/source/texk/bibtex-x/tests/nameu.bbl92
-rw-r--r--Build/source/texk/bibtex-x/tests/perioda.bbl4
-rw-r--r--Build/source/texk/bibtex-x/tests/periodu.bbl16
-rw-r--r--Build/source/texk/bibtex-x/tests/substra.bbl283
-rw-r--r--Build/source/texk/bibtex-x/tests/substru.bbl748
-rw-r--r--Build/source/texk/bibtex-x/tests/testcase.bst4
-rw-r--r--Build/source/texk/bibtex-x/tests/testchar.bst4
-rw-r--r--Build/source/texk/bibtex-x/tests/testiscjk.bst47
-rw-r--r--Build/source/texk/bibtex-x/tests/testiscjku.bib66
-rw-r--r--Build/source/texk/bibtex-x/tests/testname.bst64
-rw-r--r--Build/source/texk/bibtex-x/tests/testperiod.bst4
-rw-r--r--Build/source/texk/bibtex-x/tests/testperioda.bib2
-rw-r--r--Build/source/texk/bibtex-x/tests/testperiodu.bib8
-rw-r--r--Build/source/texk/bibtex-x/tests/testsubstr.bst63
-rw-r--r--Build/source/texk/bibtex-x/tests/testsubstra.bib9
-rw-r--r--Build/source/texk/bibtex-x/tests/testsubstru.bib15
-rw-r--r--Build/source/texk/bibtex-x/tests/testtxtprfx.bst4
-rw-r--r--Build/source/texk/bibtex-x/tests/testwidth.bst4
-rw-r--r--Build/source/texk/bibtex-x/tests/testwidtha.bib4
-rw-r--r--Build/source/texk/bibtex-x/tests/testwidthu.bib30
-rw-r--r--Build/source/texk/bibtex-x/tests/txtprfxa.bbl27
-rw-r--r--Build/source/texk/bibtex-x/tests/txtprfxu.bbl46
-rw-r--r--Build/source/texk/bibtex-x/tests/widtha.bbl7
-rw-r--r--Build/source/texk/bibtex-x/tests/widthu.bbl79
-rw-r--r--Build/source/texk/bibtex-x/utils.c4
-rw-r--r--Build/source/texk/bibtex-x/utils.h4
-rw-r--r--Build/source/texk/bibtex-x/version.h6
54 files changed, 2034 insertions, 421 deletions
diff --git a/Build/source/texk/bibtex-x/ChangeLog b/Build/source/texk/bibtex-x/ChangeLog
index 7f13370e1c4..b8af7c733c2 100644
--- a/Build/source/texk/bibtex-x/ChangeLog
+++ b/Build/source/texk/bibtex-x/ChangeLog
@@ -1,3 +1,40 @@
+2022-04-29 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * configure.ac, version.h:
+ Bump version to 4.00 (29 apr 2022).
+
+ Both BibTeX8 and BibTeXu::
+ * bibtex.[ch], utils.[ch], datatype.h, gblprocs.h, gblvars.h, sysdep.h,
+ version.h, bibtex-[1234].c, HISTORY:
+ Remove keywords for RCS from headers since we do not use RCS anymore.
+ * bibtex-[234].c, bibtex.h, gblprocs.h, gblvars.h:
+ Add operators bitwise AND "&" and bitwise OR "|" to built-in functions
+ in style files.
+ * bibtex8.1, bibtexu.1, HISTORY: Update documents.
+ * Makefile.am, tests/bibtex[8u]-char.test,
+ tests/testcase.bst tests/testchar.bst,
+ tests/period[au].bbl, tests/testperiod[au].bib, tests/testperiod.bst,
+ tests/substr[au].bbl, tests/testsubstr[au].bib, tests/testsubstr.bst,
+ tests/txtprfx[au].bbl, tests/testtxtprfx.bst,
+ tests/width[au].bbl, tests/testwidth[au].bib, tests/testwidth.bst,
+ tests/name[au].{aux,bbl}, tests/{ltn,mlg}bib, tests/testname.bst,
+ tests/iscjku.{aux,bbl}, tests/testiscjku.bib, tests/testiscjk.bst:
+ Update tests.
+
+ BibTeXu only::
+ * bibtex-1.c:
+ Inhibit breaking lines between space and characters rather than Latin,
+ Greek, Cyrillic and Hangul Cyllables.
+ * bibtex-[234].c, bibtex.h, gblprocs.h, gblvars.h:
+ Add built-in functions is.cjk.str$ and is.kanji.str$ in style files
+ to check wheter a string is CJK or not.
+ * bibtex-[24].c:
+ Enhance built-in functions num.names$ and format.name$ in style files.
+ Ideographic/Fullwidth Comma ("、" U+3001, "," U+FF0C) in addition to
+ an " and " string is accepted as a sepalator between persons.
+ Ideographic Space (" " U+3000) in addition to a space " " is accepted
+ as a sepalator between a family name and a given name.
+
2022-04-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
* configure.ac, version.h:
diff --git a/Build/source/texk/bibtex-x/HISTORY b/Build/source/texk/bibtex-x/HISTORY
index f9c8619dcea..7a7daf1c0de 100644
--- a/Build/source/texk/bibtex-x/HISTORY
+++ b/Build/source/texk/bibtex-x/HISTORY
@@ -1,13 +1,21 @@
******************************************************************************
-FILE: $RCSfile: HISTORY,v $
- $Revision: 3.71 $
- $Date: 1996/08/18 20:42:32 $
+FILE: HISTORY
******************************************************************************
8-Bit BibTeX CHANGE HISTORY
---------------------------
+v4.00 29-April-2022 TANAKA Takuji
+ - Added operators bitwise AND "&" and bitwise OR "|" to built-in
+ functions in style files.
+
+v3.80 16-April-2022 TANAKA Takuji
+ - Supported Latin-1 characters by built-in function width$ in style
+ files.
+ - Accepted characters over ASCII by built-in function int.to.chr$
+ in style files.
+
31-May-2005 Karl Berry
- Applied utils.c patch from Arne J\"orgensen for space character
sorting weight, sent to tex-live@tug.org 31 May 2005 15:52:07 +0200.
diff --git a/Build/source/texk/bibtex-x/Makefile.am b/Build/source/texk/bibtex-x/Makefile.am
index 16bb0010e49..d11ea8bb789 100644
--- a/Build/source/texk/bibtex-x/Makefile.am
+++ b/Build/source/texk/bibtex-x/Makefile.am
@@ -116,11 +116,13 @@ EXTRA_DIST += tests/perioda.aux tests/perioda.bbl tests/testperioda.bib tests/te
tests/substra.aux tests/substra.bbl tests/testsubstra.bib tests/testsubstr.bst \
tests/txtprfxa.aux tests/txtprfxa.bbl tests/testtxtprfx.bst \
tests/widtha.aux tests/widtha.bbl tests/testwidtha.bib tests/testwidth.bst \
- tests/chara.aux tests/chara.bbl tests/testchara.bib tests/testchar.bst
+ tests/chara.aux tests/chara.bbl tests/testchara.bib tests/testchar.bst \
+ tests/namea.aux tests/namea.bbl tests/ltnbib.bib tests/testname.bst
DISTCLEANFILES += tests/xsubstra.aux tests/xsubstra.bbl tests/xsubstra.blg \
tests/xtxtprfxa.aux tests/txtprfxa.bbl tests/xtxtprfxa.blg \
tests/xwidtha.aux tests/widtha.bbl tests/xwidtha.blg \
- tests/xchara.aux tests/xchara.bbl tests/xchara.blg
+ tests/xchara.aux tests/xchara.bbl tests/xchara.blg \
+ tests/xnamea.aux tests/xnamea.bbl tests/xnamea.blg
##
## tests/bibtexu-basic.test
EXTRA_DIST += tests/ubasic.aux tests/ubasic.bbl tests/ubasic.bib
@@ -147,12 +149,16 @@ EXTRA_DIST += tests/periodu.aux tests/periodu.bbl tests/testperiodu.bib \
tests/substru.aux tests/substru.bbl tests/testsubstru.bib \
tests/txtprfxu.aux tests/txtprfxu.bbl \
tests/widthu.aux tests/widthu.bbl tests/testwidthu.bib \
- tests/charu.aux tests/charu.bbl tests/testcharu.bib
+ tests/charu.aux tests/charu.bbl tests/testcharu.bib \
+ tests/nameu.aux tests/nameu.bbl tests/mlgbib.bib \
+ tests/iscjku.aux tests/iscjku.bbl tests/testiscjku.bib tests/testiscjk.bst
DISTCLEANFILES += tests/xperiodu.aux tests/xperiodu.bbl tests/xperiodu.blg \
tests/xsubstru.aux tests/xsubstru.bbl tests/xsubstru.blg \
tests/xtxtprfxu.aux tests/txtprfxu.bbl tests/xtxtprfxu.blg \
tests/xwidthu.aux tests/widthu.bbl tests/xwidthu.blg \
- tests/xcharu.aux tests/xcharu.bbl tests/xcharu.blg
+ tests/xcharu.aux tests/xcharu.bbl tests/xcharu.blg \
+ tests/xnameu.aux tests/xnameu.bbl tests/xnameu.blg \
+ tests/xiscjku.aux tests/xiscjku.bbl tests/xiscjku.blg
## Not used
##
diff --git a/Build/source/texk/bibtex-x/Makefile.in b/Build/source/texk/bibtex-x/Makefile.in
index 4b68a465f2a..f5c9e571ee8 100644
--- a/Build/source/texk/bibtex-x/Makefile.in
+++ b/Build/source/texk/bibtex-x/Makefile.in
@@ -672,20 +672,23 @@ EXTRA_DIST = $(bibtex8_tests) $(bibtexu_tests) tests/sort.aux \
tests/txtprfxa.bbl tests/testtxtprfx.bst tests/widtha.aux \
tests/widtha.bbl tests/testwidtha.bib tests/testwidth.bst \
tests/chara.aux tests/chara.bbl tests/testchara.bib \
- tests/testchar.bst tests/ubasic.aux tests/ubasic.bbl \
- tests/ubasic.bib tests/urange.aux tests/urange.bbl \
- tests/urange.bib tests/yannis.aux tests/yannis.bbl \
- tests/yannis.bib tests/sortu.aux tests/sortu-az.bbl \
- tests/sortu-da.bbl tests/sortu-en.bbl tests/sortu-fi.bbl \
- tests/sortu-tr.bbl tests/testsortu.bib tests/caseu.aux \
- tests/caseu.bbl tests/testcaseu.bib tests/periodu.aux \
- tests/periodu.bbl tests/testperiodu.bib tests/substru.aux \
- tests/substru.bbl tests/testsubstru.bib tests/txtprfxu.aux \
- tests/txtprfxu.bbl tests/widthu.aux tests/widthu.bbl \
- tests/testwidthu.bib tests/charu.aux tests/charu.bbl \
- tests/testcharu.bib bt371csf.zip dos-dj.mak dos-emx.mak \
- os2.mak unix.mak csf/00readme.txt csf/COPYING csf/HISTORY \
- csf/file_id.diz
+ tests/testchar.bst tests/namea.aux tests/namea.bbl \
+ tests/ltnbib.bib tests/testname.bst tests/ubasic.aux \
+ tests/ubasic.bbl tests/ubasic.bib tests/urange.aux \
+ tests/urange.bbl tests/urange.bib tests/yannis.aux \
+ tests/yannis.bbl tests/yannis.bib tests/sortu.aux \
+ tests/sortu-az.bbl tests/sortu-da.bbl tests/sortu-en.bbl \
+ tests/sortu-fi.bbl tests/sortu-tr.bbl tests/testsortu.bib \
+ tests/caseu.aux tests/caseu.bbl tests/testcaseu.bib \
+ tests/periodu.aux tests/periodu.bbl tests/testperiodu.bib \
+ tests/substru.aux tests/substru.bbl tests/testsubstru.bib \
+ tests/txtprfxu.aux tests/txtprfxu.bbl tests/widthu.aux \
+ tests/widthu.bbl tests/testwidthu.bib tests/charu.aux \
+ tests/charu.bbl tests/testcharu.bib tests/nameu.aux \
+ tests/nameu.bbl tests/mlgbib.bib tests/iscjku.aux \
+ tests/iscjku.bbl tests/testiscjku.bib tests/testiscjk.bst \
+ bt371csf.zip dos-dj.mak dos-emx.mak os2.mak unix.mak \
+ csf/00readme.txt csf/COPYING csf/HISTORY csf/file_id.diz
DISTCLEANFILES = tests/xexampl.aux tests/xexampl.bbl tests/xexampl.blg \
tests/memtest.bib tests/memtest?.* tests/memtestu?.* \
tests/xsort[123].aux tests/xsort[123].bbl tests/xsort[123].blg \
@@ -694,6 +697,7 @@ DISTCLEANFILES = tests/xexampl.aux tests/xexampl.bbl tests/xexampl.blg \
tests/xtxtprfxa.aux tests/txtprfxa.bbl tests/xtxtprfxa.blg \
tests/xwidtha.aux tests/widtha.bbl tests/xwidtha.blg \
tests/xchara.aux tests/xchara.bbl tests/xchara.blg \
+ tests/xnamea.aux tests/xnamea.bbl tests/xnamea.blg \
tests/xubasic.aux tests/xubasic.bbl tests/xubasic.blg \
tests/xurange.aux tests/xurange.bbl tests/xurange.blg \
tests/xyannis.aux tests/xyannis.bbl tests/xyannis.blg \
@@ -703,7 +707,9 @@ DISTCLEANFILES = tests/xexampl.aux tests/xexampl.bbl tests/xexampl.blg \
tests/xsubstru.aux tests/xsubstru.bbl tests/xsubstru.blg \
tests/xtxtprfxu.aux tests/txtprfxu.bbl tests/xtxtprfxu.blg \
tests/xwidthu.aux tests/widthu.bbl tests/xwidthu.blg \
- tests/xcharu.aux tests/xcharu.bbl tests/xcharu.blg
+ tests/xcharu.aux tests/xcharu.bbl tests/xcharu.blg \
+ tests/xnameu.aux tests/xnameu.bbl tests/xnameu.blg \
+ tests/xiscjku.aux tests/xiscjku.bbl tests/xiscjku.blg
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
diff --git a/Build/source/texk/bibtex-x/bibtex-1.c b/Build/source/texk/bibtex-x/bibtex-1.c
index 3c4fde5119c..29ca1c46547 100644
--- a/Build/source/texk/bibtex-x/bibtex-1.c
+++ b/Build/source/texk/bibtex-x/bibtex-1.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex-1.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: bibtex-1.c
**
** DESCRIPTION
**
@@ -318,6 +316,37 @@ BEGIN
out_buf_ptr = MAX_PRINT_LINE + 1;
while (out_buf_ptr < end_ptr)
BEGIN
+#ifdef UTF_8
+ if (lex_class[out_buf[out_buf_ptr]] == WHITE_SPACE)
+ BEGIN
+ UChar32 ch;
+ U8_GET_OR_FFFD(out_buf, out_buf_ptr-4, out_buf_ptr-1, -1, ch);
+ switch ( ublock_getCode(ch) )
+ BEGIN
+ case UBLOCK_BASIC_LATIN:
+ case UBLOCK_LATIN_1_SUPPLEMENT:
+ case UBLOCK_LATIN_EXTENDED_A:
+ case UBLOCK_LATIN_EXTENDED_B:
+ case UBLOCK_LATIN_EXTENDED_C:
+ case UBLOCK_LATIN_EXTENDED_D:
+ case UBLOCK_LATIN_EXTENDED_E:
+ case UBLOCK_LATIN_EXTENDED_F:
+ case UBLOCK_LATIN_EXTENDED_G:
+ case UBLOCK_LATIN_EXTENDED_ADDITIONAL:
+ case UBLOCK_GREEK:
+ case UBLOCK_GREEK_EXTENDED:
+ case UBLOCK_CYRILLIC:
+ case UBLOCK_CYRILLIC_SUPPLEMENT:
+ case UBLOCK_CYRILLIC_EXTENDED_A:
+ case UBLOCK_CYRILLIC_EXTENDED_B:
+ case UBLOCK_CYRILLIC_EXTENDED_C:
+ case UBLOCK_HANGUL_SYLLABLES:
+ goto Loop1_Exit; /* break line */
+ break;
+ END
+ END
+ INCR (out_buf_ptr); /* do not break line */
+#else
if (lex_class[out_buf[out_buf_ptr]] != WHITE_SPACE)
BEGIN
INCR (out_buf_ptr);
@@ -326,6 +355,7 @@ BEGIN
BEGIN
goto Loop1_Exit;
END
+#endif
END
Loop1_Exit:
if (out_buf_ptr == end_ptr)
diff --git a/Build/source/texk/bibtex-x/bibtex-2.c b/Build/source/texk/bibtex-x/bibtex-2.c
index 3eacc70e16f..53b615691ee 100644
--- a/Build/source/texk/bibtex-x/bibtex-2.c
+++ b/Build/source/texk/bibtex-x/bibtex-2.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex-2.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: bibtex-2.c
**
** DESCRIPTION
**
@@ -209,6 +207,12 @@ BEGIN
case N_MINUS:
x_minus ();
break;
+ case N_BIT_AND:
+ x_bit_and ();
+ break;
+ case N_BIT_OR:
+ x_bit_or ();
+ break;
case N_CONCATENATE:
x_concatenate ();
break;
@@ -468,6 +472,11 @@ End_While_Label: DO_NOTHING;
case N_WRITE:
x_write ();
break;
+#ifdef UTF_8
+ case N_IS_CJK_STRING:
+ x_is_cjk_string ();
+ break;
+#endif
default:
CONFUSION ("Unknown built-in function");
break;
@@ -3590,7 +3599,19 @@ BEGIN
and_found = FALSE;
while (( ! and_found) && (ex_buf_ptr < ex_buf_length))
BEGIN
+#ifdef UTF_8
+ UChar32 ch;
+ U8_GET(&ex_buf[ex_buf_ptr], 0, 0, -1, ch);
+ if (ch<0)
+ BEGIN
+ INCR (ex_buf_ptr);
+ preceding_white = FALSE;
+ continue;
+ END
+ switch (ch)
+#else
switch (ex_buf[ex_buf_ptr])
+#endif
BEGIN
case 'a':
case 'A':
@@ -3625,6 +3646,21 @@ BEGIN
preceding_white = FALSE;
break;
+#ifdef UTF_8
+ case 0x3001: /* "、" Ideographic Comma */
+ case 0xFF0C: /* "," Fullwidth Comma */
+ ex_buf_ptr = ex_buf_ptr + 3;
+ preceding_white = FALSE;
+ and_found = TRUE;
+ break;
+ case 0x3000: /* " " Ideographic Space */
+ ex_buf[ex_buf_ptr ] = SPACE;
+ ex_buf[ex_buf_ptr+1] = SPACE;
+ ex_buf[ex_buf_ptr+2] = SPACE;
+ ex_buf_ptr = ex_buf_ptr + 3;
+ preceding_white = TRUE;
+ break;
+#endif
case LEFT_BRACE:
INCR (brace_level);
INCR (ex_buf_ptr);
@@ -3667,6 +3703,11 @@ BEGIN
END
else
BEGIN
+#ifdef UTF_8
+ if (utf8len(ex_buf[ex_buf_ptr])>0)
+ ex_buf_ptr = ex_buf_ptr + utf8len(ex_buf[ex_buf_ptr]);
+ else
+#endif
INCR (ex_buf_ptr);
preceding_white = FALSE;
END
diff --git a/Build/source/texk/bibtex-x/bibtex-3.c b/Build/source/texk/bibtex-x/bibtex-3.c
index 877771976b8..aa178d1ca92 100644
--- a/Build/source/texk/bibtex-x/bibtex-3.c
+++ b/Build/source/texk/bibtex-x/bibtex-3.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex-3.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: bibtex-3.c
**
** DESCRIPTION
**
@@ -241,6 +239,8 @@ BEGIN
build_in ("< ", 1, &b_less_than, N_LESS_THAN);
build_in ("+ ", 1, &b_plus, N_PLUS);
build_in ("- ", 1, &b_minus, N_MINUS);
+ build_in ("& ", 1, &b_bit_and, N_BIT_AND);
+ build_in ("| ", 1, &b_bit_or, N_BIT_OR);
build_in ("* ", 1, &b_concatenate, N_CONCATENATE);
build_in (":= ", 2, &b_gets, N_GETS);
build_in ("add.period$ ", 11, &b_add_period, N_ADD_PERIOD);
@@ -272,8 +272,11 @@ BEGIN
build_in ("warning$ ", 8, &b_warning, N_WARNING);
build_in ("width$ ", 6, &b_width, N_WIDTH);
build_in ("while$ ", 6, &b_while, N_WHILE);
- build_in ("width$ ", 6, &b_width, N_WIDTH);
build_in ("write$ ", 6, &b_write, N_WRITE);
+#ifdef UTF_8
+ build_in ("is.cjk.str$ ", 11, &b_cjk_string, N_IS_CJK_STRING);
+ build_in ("is.kanji.str$", 13, &b_cjk_string, N_IS_CJK_STRING);
+#endif
/*^^^^^^^^^^^^^^^^^^^^^^^^^^ END OF SECTION 334 ^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
/***************************************************************************
diff --git a/Build/source/texk/bibtex-x/bibtex-4.c b/Build/source/texk/bibtex-x/bibtex-4.c
index 9568d354d5c..e088331719d 100644
--- a/Build/source/texk/bibtex-x/bibtex-4.c
+++ b/Build/source/texk/bibtex-x/bibtex-4.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex-4.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: bibtex-4.c
**
** DESCRIPTION
**
@@ -965,7 +963,14 @@ BEGIN
END
if (ex_buf_ptr < ex_buf_length)
BEGIN
- ex_buf_ptr = ex_buf_ptr - 4;
+#ifdef UTF_8
+ if (ex_buf[ex_buf_ptr-3]==0xE3 || ex_buf[ex_buf_ptr-3]==0xEF)
+ /* expect U+3001 "、" or U+FF0C "," :: Ideographic/Fulwidth Comma */
+ ex_buf_ptr = ex_buf_ptr - 3;
+ else
+ /* expect "and " or "AND " */
+#endif
+ ex_buf_ptr = ex_buf_ptr - 4;
END
if (num_names < pop_lit2)
BEGIN
@@ -2493,7 +2498,7 @@ END
#ifdef UTF_8
Integer_T char_width_uni (ASCIICode_T * str)
BEGIN
- Integer_T ch;
+ UChar32 ch;
U8_GET_OR_FFFD(str, 0, 0, -1, ch);
if (ch<=LAST_LATIN_CHAR)
return ( char_width[ch] );
@@ -2732,3 +2737,135 @@ BEGIN
END
END
/*^^^^^^^^^^^^^^^^^^^^^^^^^^ END OF SECTION 454 ^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
+void x_bit_and (void)
+BEGIN
+ pop_lit_stk (&pop_lit1, &pop_typ1);
+ pop_lit_stk (&pop_lit2, &pop_typ2);
+ if (pop_typ1 != STK_INT)
+ BEGIN
+ print_wrong_stk_lit (pop_lit1, pop_typ1, STK_INT);
+ push_lit_stk (0, STK_INT);
+ END
+ else if (pop_typ2 != STK_INT)
+ BEGIN
+ print_wrong_stk_lit (pop_lit2, pop_typ2, STK_INT);
+ push_lit_stk (0, STK_INT);
+ END
+ else
+ BEGIN
+ push_lit_stk (pop_lit1 & pop_lit2, STK_INT);
+ END
+END
+void x_bit_or (void)
+BEGIN
+ pop_lit_stk (&pop_lit1, &pop_typ1);
+ pop_lit_stk (&pop_lit2, &pop_typ2);
+ if (pop_typ1 != STK_INT)
+ BEGIN
+ print_wrong_stk_lit (pop_lit1, pop_typ1, STK_INT);
+ push_lit_stk (0, STK_INT);
+ END
+ else if (pop_typ2 != STK_INT)
+ BEGIN
+ print_wrong_stk_lit (pop_lit2, pop_typ2, STK_INT);
+ push_lit_stk (0, STK_INT);
+ END
+ else
+ BEGIN
+ push_lit_stk (pop_lit1 | pop_lit2, STK_INT);
+ END
+END
+#ifdef UTF_8
+
+#define FULLWIDTH_DIGIT_0 0xFF10
+#define FULLWIDTH_DIGIT_9 0xFF19
+#define FULLWIDTH_CAPITAL_A 0xFF21
+#define FULLWIDTH_CAPITAL_Z 0xFF3A
+#define FULLWIDTH_SMALL_A 0xFF41
+#define FULLWIDTH_SMALL_Z 0xFF5A
+#define HALFWIDTH_KATAKANA_WO 0xFF66
+#define HALFWIDTH_KATAKANA_SMALL_TSU 0xFF6F
+#define HALFWIDTH_KATAKANA_A 0xFF71
+#define HALFWIDTH_KATAKANA_N 0xFF9D
+
+void x_is_cjk_string (void)
+BEGIN
+ pop_lit_stk (&pop_lit1, &pop_typ1);
+ if (pop_typ1 != STK_STR)
+ BEGIN
+ print_wrong_stk_lit (pop_lit1, pop_typ1, STK_STR);
+ push_lit_stk (-1, STK_INT);
+ END
+ else
+ BEGIN
+ ex_buf_length = 0;
+ add_buf_pool (pop_lit1);
+ string_width = 0;
+ BEGIN
+ ex_buf_ptr = 0;
+ while (ex_buf_ptr < ex_buf_length)
+ BEGIN
+ UChar32 ch;
+ U8_NEXT_OR_FFFD(ex_buf, ex_buf_ptr, -1, ch);
+ switch ( ublock_getCode(ch) )
+ BEGIN
+ /* hanzi */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS:
+ case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F:
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G:
+ string_width |= 0x001;
+ break;
+ /* kana */
+ case UBLOCK_HIRAGANA:
+ case UBLOCK_KATAKANA:
+ case UBLOCK_KATAKANA_PHONETIC_EXTENSIONS:
+ case UBLOCK_KANA_EXTENDED_A:
+ case UBLOCK_KANA_EXTENDED_B:
+ case UBLOCK_SMALL_KANA_EXTENSION:
+ string_width |= 0x002;
+ break;
+ /* hangul */
+ case UBLOCK_HANGUL_SYLLABLES:
+ case UBLOCK_HANGUL_JAMO:
+ case UBLOCK_HANGUL_JAMO_EXTENDED_A:
+ case UBLOCK_HANGUL_JAMO_EXTENDED_B:
+ case UBLOCK_HANGUL_COMPATIBILITY_JAMO:
+ string_width |= 0x004;
+ break;
+ /* bopomofo */
+ case UBLOCK_BOPOMOFO:
+ case UBLOCK_BOPOMOFO_EXTENDED:
+ string_width |= 0x008;
+ break;
+ case UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS:
+ /* Fullwidth ASCII variants except for U+FF01..FF0F, U+FF1A..FF20, U+FF3B..FF40, U+FF5B..FF5E */
+ if ( (FULLWIDTH_DIGIT_0 <=ch && ch<=FULLWIDTH_DIGIT_9 )
+ || (FULLWIDTH_CAPITAL_A<=ch && ch<=FULLWIDTH_CAPITAL_Z)
+ || (FULLWIDTH_SMALL_A <=ch && ch<=FULLWIDTH_SMALL_Z ) )
+ string_width |= 0x800;
+ /* Halfwidth Katakana variants except for U+FF65, U+FF70, U+FF9E..FF9F */
+ if ( (HALFWIDTH_KATAKANA_WO <=ch && ch<=HALFWIDTH_KATAKANA_SMALL_TSU )
+ || (HALFWIDTH_KATAKANA_A <=ch && ch<=HALFWIDTH_KATAKANA_N ) )
+ string_width |= 0x002;
+ break;
+ /* miscellaneous */
+ case UBLOCK_KANBUN:
+ case UBLOCK_KANGXI_RADICALS:
+ case UBLOCK_CJK_RADICALS_SUPPLEMENT:
+ string_width |= 0x800;
+ break;
+ END
+ END
+ END
+/*^^^^^^^^^^^^^^^^^^^^^^^^^^ END OF SECTION 451 ^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
+
+ push_lit_stk (string_width, STK_INT);
+ END
+END
+#endif
diff --git a/Build/source/texk/bibtex-x/bibtex.c b/Build/source/texk/bibtex-x/bibtex.c
index ed784b62b1f..8dc83fdf392 100644
--- a/Build/source/texk/bibtex-x/bibtex.c
+++ b/Build/source/texk/bibtex-x/bibtex.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: bibtex.c
**
** DESCRIPTION
**
diff --git a/Build/source/texk/bibtex-x/bibtex.h b/Build/source/texk/bibtex-x/bibtex.h
index c896598c0e5..33788a99999 100644
--- a/Build/source/texk/bibtex-x/bibtex.h
+++ b/Build/source/texk/bibtex-x/bibtex.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: bibtex.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: bibtex.h
**
** DESCRIPTION
**
@@ -1346,7 +1344,14 @@
#define N_WHILE 34
#define N_WIDTH 35
#define N_WRITE 36
-#define NUM_BLT_IN_FNS 37
+#define N_BIT_AND 37
+#define N_BIT_OR 38
+#ifdef UTF_8
+#define N_IS_CJK_STRING 39
+#define NUM_BLT_IN_FNS 40
+#else
+#define NUM_BLT_IN_FNS 39
+#endif
/***************************************************************************
* WEB section number: 338
diff --git a/Build/source/texk/bibtex-x/bibtex8.1 b/Build/source/texk/bibtex-x/bibtex8.1
index 4a5b66f3cbe..d37b9764505 100644
--- a/Build/source/texk/bibtex-x/bibtex8.1
+++ b/Build/source/texk/bibtex-x/bibtex8.1
@@ -1,4 +1,4 @@
-.TH BIBTEX8 "1" "March 2019" "bibtex8 3.71" "User Commands"
+.TH BIBTEX8 "1" "April 2022" "bibtex8 4.00" "User Commands"
.SH NAME
bibtex8 \- 8-bit Big BibTeX
.SH SYNOPSIS
@@ -86,6 +86,24 @@ allow ## unique strings.
.TP
\fB\-\-mwizfuns\fR ##
allow ## wizard functions (deprecated).
+
+.SH 8BIT LATIN LETTERS SUPPORT
+.PP
+.B BibTeX8
+supports extended features to handle 8bit latin letters.
+Several built-in functions in bibliography styles are enhanced as follows.
+.TP
+\fB&\fR
+Pops the top two (integer) literals and pushes their bitwise AND.
+.TP
+\fB|\fR
+Pops the top two (integer) literals and pushes their bitwise OR.
+.TP
+\fBchr.to.int$\fR, \fBint.to.chr$\fR
+The function is the same as original BibTeX but 8bit characters are accepted.
+.TP
+\fBwidth$\fR
+The function is the same as original BibTeX but letters of Latin-1 are supported.
.SH SEE ALSO
More detailed description of
.B BibTeX8
diff --git a/Build/source/texk/bibtex-x/bibtexu.1 b/Build/source/texk/bibtex-x/bibtexu.1
index 6c1f6aaed65..f7da2465e37 100644
--- a/Build/source/texk/bibtex-x/bibtexu.1
+++ b/Build/source/texk/bibtex-x/bibtexu.1
@@ -1,4 +1,4 @@
-.TH BIBTEXU "1" "March 2019" "bibtexu 3.71" "User Commands"
+.TH BIBTEXU "1" "April 2022" "bibtexu 4.00" "User Commands"
.SH NAME
bibtexu \- UTF-8 Big BibTeX
.SH SYNOPSIS
@@ -54,6 +54,57 @@ set min_crossrefs to ##.
.TP
\fB\-\-mstrings\fR ##
allow ## unique strings.
+.SH UNICODE SUPPORT
+.PP
+.B BibTeXu
+supports extended features to handle Unicode characters.
+Several built-in functions in bibliography styles are enhanced as follows.
+.TP
+\fB&\fR
+Pops the top two (integer) literals and pushes their bitwise AND.
+.TP
+\fB|\fR
+Pops the top two (integer) literals and pushes their bitwise OR.
+.TP
+\fBadd.period$\fR
+Pops the top (string) literal, adds a `.' to it if the last non`}'
+character isn't a `.', `?', `!' or a Unicode punctuation mark and pushes this resulting string.
+The mark may be U+203C, U+203D, U+2047, U+2048, U+2049, U+3002, U+FF01, U+FF0E or U+FF1F.
+.TP
+\fBchr.to.int$\fR
+Pops the top (string) literal, makes sure it's a multibyte string of a single Unicode code point,
+converts it to the corresponding Unicode scalar value (integer), and pushes this integer.
+.TP
+\fBint.to.chr$\fR
+Pops the top (integer) literal, interpreted as the Unicode scalar value of a single code point,
+converts it to the corresponding single character multibyte string, and pushes this string.
+.TP
+\fBnum.names$\fR, \fBformat.name$\fR
+The function is the same as original BibTeX but
+an Ideographic/Fullwidth Comma (U+3001, U+FF0C) in addition to an " and " string is
+accepted as a sepalator between persons and
+Ideographic Space (U+3000) in addition to a space " " is accepted as a sepalator between a family name and a given name.
+.TP
+\fBsubstring$\fR, \fBtext.length$\fR, \fBtext.prefix$\fR
+The function is the same as original BibTeX but the unit of operand numbers is Unicode code point.
+.TP
+\fBchange.case$\fR
+The function is the same as original BibTeX but letters of
+non-english Latin, Greek and Cyrillic are supported.
+.TP
+\fBwidth$\fR
+The function is the same as original BibTeX but letters of Latin-1 and Latin Extended-A
+and CJK characters are supported.
+.TP
+\fBis.cjk.str$\fR
+Pops the top (string) literal, set flag bits to an integer if CJK characters are found in the string,
+and pushes the resulting integer, otherwise pushes 0.
+Flags 0x001, 0x002, 0x004, 0x008 and 0x800 are corresponding to Hanzi (Kanji, Hanja), Kana, Hangul,
+Bopomofo and other CJK characters, respectively.
+For example, an integer 0x003 will be pushed if Hanzi and Kana characters are found in a poped string literal.
+.TP
+\fBis.kanji.str$\fR
+Same as \fBis.cjk.str$\fR for compatibility with (u)pBibTeX.
.SH SEE ALSO
More detailed description of
.B BibTeXu
diff --git a/Build/source/texk/bibtex-x/configure b/Build/source/texk/bibtex-x/configure
index 4f8b82a5c5e..0d8d462e130 100755
--- a/Build/source/texk/bibtex-x/configure
+++ b/Build/source/texk/bibtex-x/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for extended BibTeX (TeX Live) 3.80.
+# Generated by GNU Autoconf 2.71 for extended BibTeX (TeX Live) 4.00.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -629,8 +629,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='extended BibTeX (TeX Live)'
PACKAGE_TARNAME='extended-bibtex--tex-live-'
-PACKAGE_VERSION='3.80'
-PACKAGE_STRING='extended BibTeX (TeX Live) 3.80'
+PACKAGE_VERSION='4.00'
+PACKAGE_STRING='extended BibTeX (TeX Live) 4.00'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1399,7 +1399,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures extended BibTeX (TeX Live) 3.80 to adapt to many kinds of systems.
+\`configure' configures extended BibTeX (TeX Live) 4.00 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1471,7 +1471,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of extended BibTeX (TeX Live) 3.80:";;
+ short | recursive ) echo "Configuration of extended BibTeX (TeX Live) 4.00:";;
esac
cat <<\_ACEOF
@@ -1598,7 +1598,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-extended BibTeX (TeX Live) configure 3.80
+extended BibTeX (TeX Live) configure 4.00
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2279,7 +2279,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by extended BibTeX (TeX Live) $as_me 3.80, which was
+It was created by extended BibTeX (TeX Live) $as_me 4.00, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -8817,7 +8817,7 @@ fi
# Define the identity of the package.
PACKAGE='extended-bibtex--tex-live-'
- VERSION='3.80'
+ VERSION='4.00'
# Some tools Automake needs.
@@ -19007,7 +19007,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-extended BibTeX (TeX Live) config.lt 3.80
+extended BibTeX (TeX Live) config.lt 4.00
configured by $0, generated by GNU Autoconf 2.71.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -21205,7 +21205,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by extended BibTeX (TeX Live) $as_me 3.80, which was
+This file was extended by extended BibTeX (TeX Live) $as_me 4.00, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -21273,7 +21273,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-extended BibTeX (TeX Live) config.status 3.80
+extended BibTeX (TeX Live) config.status 4.00
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/bibtex-x/configure.ac b/Build/source/texk/bibtex-x/configure.ac
index 28a2c0f6bb9..cf6025f5550 100644
--- a/Build/source/texk/bibtex-x/configure.ac
+++ b/Build/source/texk/bibtex-x/configure.ac
@@ -8,7 +8,7 @@ dnl This file is free software; the copyright holder
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-AC_INIT([extended BibTeX (TeX Live)], [3.80], [tex-k@tug.org])
+AC_INIT([extended BibTeX (TeX Live)], [4.00], [tex-k@tug.org])
AC_PREREQ([2.65])
AC_CONFIG_SRCDIR([bibtex-1.c])
AC_CONFIG_AUX_DIR([../../build-aux])
diff --git a/Build/source/texk/bibtex-x/datatype.h b/Build/source/texk/bibtex-x/datatype.h
index 5367ee78e42..fb325711342 100644
--- a/Build/source/texk/bibtex-x/datatype.h
+++ b/Build/source/texk/bibtex-x/datatype.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: datatype.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: datatype.h
**
** DESCRIPTION
**
diff --git a/Build/source/texk/bibtex-x/gblprocs.h b/Build/source/texk/bibtex-x/gblprocs.h
index 6012949ba14..723da15b8da 100644
--- a/Build/source/texk/bibtex-x/gblprocs.h
+++ b/Build/source/texk/bibtex-x/gblprocs.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: gblprocs.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: gblprocs.h
**
** DESCRIPTION
**
@@ -392,6 +390,11 @@ void x_type (void);
void x_warning (void);
void x_width (void);
void x_write (void);
+void x_bit_and (void);
+void x_bit_or (void);
+#ifdef UTF_8
+void x_is_cjk_string (void);
+#endif
/*
diff --git a/Build/source/texk/bibtex-x/gblvars.h b/Build/source/texk/bibtex-x/gblvars.h
index 9d984b8bcda..91994c1356d 100644
--- a/Build/source/texk/bibtex-x/gblvars.h
+++ b/Build/source/texk/bibtex-x/gblvars.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: gblvars.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:47:30 $
+** file: gblvars.h
**
** DESCRIPTION
**
@@ -119,6 +117,8 @@ __EXTERN__ Integer_T aux_name_length;
__EXTERN__ AuxNumber_T aux_ptr;
__EXTERN__ HashLoc_T b_add_period;
+__EXTERN__ HashLoc_T b_bit_and;
+__EXTERN__ HashLoc_T b_bit_or;
__EXTERN__ HashLoc_T b_call_type;
__EXTERN__ HashLoc_T b_change_case;
__EXTERN__ HashLoc_T b_chr_to_int;
@@ -156,6 +156,9 @@ __EXTERN__ HashLoc_T b_warning;
__EXTERN__ HashLoc_T b_while;
__EXTERN__ HashLoc_T b_width;
__EXTERN__ HashLoc_T b_write;
+#ifdef UTF_8
+__EXTERN__ HashLoc_T b_cjk_string;
+#endif
__EXTERN__ Integer_T bad;
__EXTERN__ AlphaFile_T bbl_file;
__EXTERN__ Integer_T bbl_line_num;
diff --git a/Build/source/texk/bibtex-x/sysdep.h b/Build/source/texk/bibtex-x/sysdep.h
index ea289b19c99..e929dfbae95 100644
--- a/Build/source/texk/bibtex-x/sysdep.h
+++ b/Build/source/texk/bibtex-x/sysdep.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: sysdep.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: sysdep.h
**
** DESCRIPTION
**
diff --git a/Build/source/texk/bibtex-x/tests/bibtex8-char.test b/Build/source/texk/bibtex-x/tests/bibtex8-char.test
index 8da266856ec..ba3c461d9d4 100755
--- a/Build/source/texk/bibtex-x/tests/bibtex8-char.test
+++ b/Build/source/texk/bibtex-x/tests/bibtex8-char.test
@@ -38,6 +38,11 @@ cp $srcdir/tests/chara.aux tests/xchara.aux
./bibtex8 tests/xchara || rc=11
diff $srcdir/tests/chara.bbl tests/xchara.bbl || rc=12
+## test for num.names$, format.name$
+cp $srcdir/tests/namea.aux tests/xnamea.aux
+./bibtexu tests/xnamea || rc=13
+diff $srcdir/tests/namea.bbl tests/xnamea.bbl || rc=14
+
exit $rc
diff --git a/Build/source/texk/bibtex-x/tests/bibtexu-char.test b/Build/source/texk/bibtex-x/tests/bibtexu-char.test
index 604226a1762..a1491e4d2ed 100755
--- a/Build/source/texk/bibtex-x/tests/bibtexu-char.test
+++ b/Build/source/texk/bibtex-x/tests/bibtexu-char.test
@@ -39,6 +39,16 @@ cp $srcdir/tests/charu.aux tests/xcharu.aux
./bibtexu tests/xcharu || rc=11
diff $srcdir/tests/charu.bbl tests/xcharu.bbl || rc=12
+## test for num.names$, format.name$
+cp $srcdir/tests/nameu.aux tests/xnameu.aux
+./bibtexu tests/xnameu || rc=13
+diff $srcdir/tests/nameu.bbl tests/xnameu.bbl || rc=14
+
+## test for is.knj.str$
+cp $srcdir/tests/iscjku.aux tests/xiscjku.aux
+./bibtexu tests/xiscjku || rc=15
+diff $srcdir/tests/iscjku.bbl tests/xiscjku.bbl || rc=16
+
exit $rc
diff --git a/Build/source/texk/bibtex-x/tests/iscjku.aux b/Build/source/texk/bibtex-x/tests/iscjku.aux
new file mode 100644
index 00000000000..fc8b3de7e91
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/iscjku.aux
@@ -0,0 +1,4 @@
+\relax
+\citation{*}
+\bibstyle{testiscjk}
+\bibdata{testiscjku}
diff --git a/Build/source/texk/bibtex-x/tests/iscjku.bbl b/Build/source/texk/bibtex-x/tests/iscjku.bbl
new file mode 100644
index 00000000000..9e23ac2be53
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/iscjku.bbl
@@ -0,0 +1,63 @@
+\section*{Test result}
+\begin{itemize}
+\item ︵︶︷︸︹︺︻︼︽︾: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ㈀㈁㈂㈠㈡㈢㈱㋐㋑㋒: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item @: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item \: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item #: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item 𚿰𚿱𚿲𚿳𚿵𚿶𚿷𚿸: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item ■: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item △: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ◇: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ●: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ☀: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ☁: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ☂: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ☃: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ㇀㇁㇂㇃㇠㇡㇢㇣: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item 〄々〆〇【】〠〽: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ㆑㆒㆓㆔㆙㆚㆛㆜㆝㆞㆟: 2048 2048 hz:0 kn:0 hg:0 bp:0
+ misc:2048
+\item ¢£§©®±µ¶: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item £: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ₩: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item 0: 2048 2048 hz:0 kn:0 hg:0 bp:0 misc:2048
+\item 9: 2048 2048 hz:0 kn:0 hg:0 bp:0 misc:2048
+\item A: 2048 2048 hz:0 kn:0 hg:0 bp:0 misc:2048
+\item ACDE iouy: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ĂĆĎĘ ĭőůŷ: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ÅÇÐÈ îøüý: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item mix 나비蝴蝶: 5 5 hz:1 kn:0 hg:4 bp:0 misc:0
+\item mix てふ나비蝴蝶ㄏㄨˊㄉㄧㄝˊ⾍: 2063 2063 hz:1 kn:2 hg:4
+ bp:8 misc:2048
+\item mix てふ蝴蝶: 3 3 hz:1 kn:2 hg:0 bp:0 misc:0
+\item mix 蝴蝶ㄏㄨˊㄉㄧㄝˊ⾍: 2057 2057 hz:1 kn:0 hg:0 bp:8 misc:2048
+\item z: 2048 2048 hz:0 kn:0 hg:0 bp:0 misc:2048
+\item ΑΒΓΔφχψω: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item АБВГьэюя: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ᄀᄁᄂᄃᇶᇷᇸᇹ: 4 4 hz:0 kn:0 hg:4 bp:0 misc:0
+\item ㄱㄲㄳㄴㆉㆊㆋㆌ: 4 4 hz:0 kn:0 hg:4 bp:0 misc:0
+\item 가나다라마한글텍: 4 4 hz:0 kn:0 hg:4 bp:0 misc:0
+\item ꥠꥡꥢꥣꥤꥥꥦꥧ: 4 4 hz:0 kn:0 hg:4 bp:0 misc:0
+\item ힰힱힲힳힴힵힶힷ: 4 4 hz:0 kn:0 hg:4 bp:0 misc:0
+\item あいうえゐゑをん: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item アイウエヰヱヲン: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item アイウワヲン: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item ㌀㌁㌂㌃㌄㌅㌆㌇: 0 0 hz:0 kn:0 hg:0 bp:0 misc:0
+\item ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ: 2 2 hz:0 kn:2 hg:0 bp:0
+ misc:0
+\item 𛅐𛅑𛅒𛅤𛅥𛅦𛅧: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item 𛄀𛄁𛄂𛄃𛄄𛄅𛄆𛄇: 2 2 hz:0 kn:2 hg:0 bp:0 misc:0
+\item ㄅㄆㄇㄈㄦㄧㄨㄩ: 8 8 hz:0 kn:0 hg:0 bp:8 misc:0
+\item ㆠㆡㆢㆣㆤㆥㆦㆧ: 8 8 hz:0 kn:0 hg:0 bp:8 misc:0
+\item 一二三四漆捌玖拾: 1 1 hz:1 kn:0 hg:0 bp:0 misc:0
+\item 𪜀𪜁𪜂𪜃𪜄𪜅𪜆𪜇: 1 1 hz:1 kn:0 hg:0 bp:0 misc:0
+\item 㐂㒵㓛㞍㟢㐆㐬㐮㔫㚑㐧: 1 1 hz:1 kn:0 hg:0 bp:0 misc:0
+\item ⺐⺒⺓⺔⺖⺗⺘⺙⻭⻯⻲: 2048 2048 hz:0 kn:0 hg:0 bp:0
+ misc:2048
+\item 櫛杓𦥑𠮟𠀋𡈽𥝱𡚴: 1 1 hz:1 kn:0 hg:0 bp:0 misc:0
+\item 豈更車賈滑串句龜: 1 1 hz:1 kn:0 hg:0 bp:0 misc:0
+\item ⿎⿏⿐⿑⿒⿓⿔⿕: 2048 2048 hz:0 kn:0 hg:0 bp:0 misc:2048
+\end{itemize}
+\endinput
diff --git a/Build/source/texk/bibtex-x/tests/ltnbib.bib b/Build/source/texk/bibtex-x/tests/ltnbib.bib
new file mode 100644
index 00000000000..c47fac0f222
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/ltnbib.bib
@@ -0,0 +1,57 @@
+% Bibliography test file
+% Public domain.
+% You may freely use, modify and/or distribute this file.
+
+%% ASCII only
+%% author: Given_name Middle_name Family_name
+@book{kernighan78,
+ author = "Brian Wilson Kernighan and Dennis MacAlistair Ritchie",
+ title = "The C Programming Language, 1st edition",
+ publisher = "Prentice Hall",
+ year = 1978,
+}
+
+%% author: Family_name, Given_name Middle_name
+@book{kernighan88,
+ author = "Kernighan, Brian W. AND Ritchie, Dennis M.",
+ title = "The C Programming Language, 2nd edition",
+ publisher = "Prentice Hall",
+ year = 1988,
+}
+
+%% name with Jr
+@book{king63,
+ author = "King, Jr., Martin Luther",
+ title = "I Have a Dream!",
+ year = 1963,
+}
+
+%% Latin-1, name with nobiliary particle "von"
+@book{weber1821,
+ author = "Carl Maria von Weber",
+ title = "Der Freischtz",
+ year = 1821,
+}
+
+%% Latin-1, name with nobiliary particle "de"
+@book{Lautramont,
+ author = "Conte de Lautramont",
+ title = "Les Chants de Maldoror",
+ year = 1868,
+}
+
+%% Latin-1
+@book{Proust,
+ author = "Marcel Proust",
+ title = " la recherche du temps perdu",
+ publisher = "ditions Gallimard",
+ year = "1913--1927",
+}
+
+@book{BrderGrimm,
+ author = "Brder Grimm",
+ title = "Kinder- und Hausmrchen",
+ publisher = "Reimer",
+ year = 1812,
+}
+
diff --git a/Build/source/texk/bibtex-x/tests/mlgbib.bib b/Build/source/texk/bibtex-x/tests/mlgbib.bib
new file mode 100644
index 00000000000..3dc9fed54b9
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/mlgbib.bib
@@ -0,0 +1,148 @@
+% Bibliography test file
+% Public domain.
+% You may freely use, modify and/or distribute this file.
+
+%% ASCII only
+%% author: Given_name Middle_name Family_name
+@book{kernighan78,
+ author = "Brian Wilson Kernighan and Dennis MacAlistair Ritchie",
+ title = "The C Programming Language, 1st edition",
+ publisher = "Prentice Hall",
+ year = 1978,
+}
+
+%% author: Family_name, Given_name Middle_name
+@book{kernighan88,
+ author = "Kernighan, Brian W. AND Ritchie, Dennis M.",
+ title = "The C Programming Language, 2nd edition",
+ publisher = "Prentice Hall",
+ year = 1988,
+}
+
+%% name with Jr
+@book{king63,
+ author = "King, Jr., Martin Luther",
+ title = "I Have a Dream!",
+ year = 1963,
+}
+
+%% Latin-1, name with nobiliary particle "von"
+@book{weber1821,
+ author = "Carl Maria von Weber",
+ title = "Der Freischütz",
+ year = 1821,
+}
+
+%% Japanese, separate names by "、", " "
+@book{bibunsho8,
+ author = {奥村  晴彦、黒木  裕介},
+ title = {[改訂第8版] LaTeX2ε美文書作成入門},
+ year = 2020,
+ publisher = {技術評論社},
+ language = {ja},
+ yomi = {okumura}
+}
+
+%% Japanese, separate names by ",", " "
+@book{bibunsho7,
+ author = {奥村 晴彦,黒木  裕介},
+ title = {[改訂第7版] LaTeX2ε美文書作成入門},
+ year = 2017,
+ publisher = {技術評論社},
+ language = {ja},
+ yomi = {okumura}
+}
+
+%% Japanese
+@book{bibunsho6,
+ author = {奥村 晴彦 and 黒木 裕介},
+ title = {[改訂第6版] LaTeX2ε美文書作成入門},
+ year = 2013,
+ publisher = {技術評論社},
+ language = {ja},
+ yomi = {okumura}
+}
+
+%% Korean Hangul
+@book{kim-siseup,
+ author = "김 시습",
+ yomi = "Kim Si-seup",
+ title = "금오신화 (金鰲新話)",
+ year = "1494?",
+}
+
+%% Chinese
+@book{CaoXueQin,
+ author = "曹 雪芹",
+ title = "紅樓夢",
+}
+
+@book{JinPingMei,
+ author = "蘭陵笑笑生",
+ title = "金瓶梅",
+ year = 1610,
+}
+
+
+%% separate names by "、", "," and " "
+@book{test:misc0,
+ author = "テスト てすと and 名無 権兵衛、 何 誰兵衛, 無名  戦士 and John Smith and Schmidt, Hans",
+ yomi = "Tesuto Tesuto and Gombe Nanashi、 Darebe Nan,Senshi Mumei and John Smith and Hans Schmidt",
+ title = "UTF-8版jbibtexのテスト: ±α、β,γ。§абв.",
+ publisher = "Ω出版社",
+ year = 2007,
+}
+
+%% characters over BMP
+%% A BOM U+FEFF (Zero Width No-Break Space) is placed between "全" and "㐧"
+@book{髙島𠮷野,
+ author = {髙島 𠮷野、𡈽方  𠀋之助},
+ yomi = "Yoshino Takashima",
+ title = "𠷡と𩸽と‼夢か幻か⁇",
+ publisher = "安全㐧一",
+ isbn = "0-000000-00-0",
+ year = 2007,
+}
+
+%% Latin-1, name with nobiliary particle "de"
+@book{Lautréamont,
+ author = "Conte de Lautréamont",
+ title = "Les Chants de Maldoror",
+ year = 1868,
+}
+
+%% Latin-1
+@book{Proust,
+ author = "Marcel Proust",
+ title = "À la recherche du temps perdu",
+ publisher = "Éditions Gallimard",
+ year = "1913--1927",
+}
+
+@book{BrüderGrimm,
+ author = "Brüder Grimm",
+ title = "Kinder- und Hausmärchen",
+ publisher = "Reimer",
+ year = 1812,
+}
+
+%% Cyrillic
+@book{Булгаков,
+ author = "Булгаков, Михаил Афанасьевич",
+ title = "Мастер и Маргарита",
+ year = 1966,
+}
+
+@book{Го́голь,
+ author = "Мико́ла Васи́льович Го́голь",
+ title = "Нос",
+ year = 1836,
+}
+
+%% Greek
+@book{Διογένης,
+ author = "Διογένης Λαέρτιος",
+ title = "Βίοι καὶ γνῶμαι τῶν ἐν φιλοσοφίᾳ εὐδοκιμησάντων",
+ year = "3C",
+}
+
diff --git a/Build/source/texk/bibtex-x/tests/namea.aux b/Build/source/texk/bibtex-x/tests/namea.aux
new file mode 100644
index 00000000000..579873640af
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/namea.aux
@@ -0,0 +1,4 @@
+\relax
+\citation{*}
+\bibstyle{testname}
+\bibdata{ltnbib}
diff --git a/Build/source/texk/bibtex-x/tests/namea.bbl b/Build/source/texk/bibtex-x/tests/namea.bbl
new file mode 100644
index 00000000000..064c5fa611d
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/namea.bbl
@@ -0,0 +1,34 @@
+\section*{Test result}
+\begin{itemize}
+\item Brian Wilson Kernighan and Dennis MacAlistair Ritchie
+ [1] {ff} Brian~Wilson {ll} Kernighan {vv} {jj}
+ | Brian~WilsonKernighan | Brian~Wilson Kernighan | Kernighan, B.~W. | B.~W.
+ Kernighan
+ [2] {ff} Dennis~MacAlistair {ll} Ritchie {vv} {jj}
+ | Dennis~MacAlistairRitchie | Dennis~MacAlistair Ritchie | Ritchie, D.~M. |
+ D.~M. Ritchie
+\item Brder Grimm
+ [1] {ff} Brder {ll} Grimm {vv} {jj}
+ | BrderGrimm | Brder Grimm | Grimm, B. | B.~Grimm
+\item Carl Maria von Weber
+ [1] {ff} Carl~Maria {ll} Weber {vv} von {jj}
+ | Carl~MariavonWeber | Carl~Maria von Weber | von Weber, C.~M. | C.~M.
+ v.~Weber
+\item Conte de Lautramont
+ [1] {ff} Conte {ll} Lautramont {vv} de {jj}
+ | ContedeLautramont | Conte de Lautramont | de~Lautramont, C. |
+ C.~d.~Lautramont
+\item Kernighan, Brian W. AND Ritchie, Dennis M.
+ [1] {ff} Brian~W. {ll} Kernighan {vv} {jj}
+ | Brian~W.Kernighan | Brian~W. Kernighan | Kernighan, B.~W. | B.~W. Kernighan
+ [2] {ff} Dennis~M. {ll} Ritchie {vv} {jj}
+ | Dennis~M.Ritchie | Dennis~M. Ritchie | Ritchie, D.~M. | D.~M. Ritchie
+\item King, Jr., Martin Luther
+ [1] {ff} Martin~Luther {ll} King {vv} {jj} Jr.
+ | Martin~LutherKingJr. | Martin~Luther King Jr. | King, Jr., M.~L. | M.~L.
+ King, Jr.
+\item Marcel Proust
+ [1] {ff} Marcel {ll} Proust {vv} {jj}
+ | MarcelProust | Marcel Proust | Proust, M. | M.~Proust
+\end{itemize}
+\endinput
diff --git a/Build/source/texk/bibtex-x/tests/nameu.aux b/Build/source/texk/bibtex-x/tests/nameu.aux
new file mode 100644
index 00000000000..61c5df1d5b1
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/nameu.aux
@@ -0,0 +1,4 @@
+\relax
+\citation{*}
+\bibstyle{testname}
+\bibdata{mlgbib}
diff --git a/Build/source/texk/bibtex-x/tests/nameu.bbl b/Build/source/texk/bibtex-x/tests/nameu.bbl
new file mode 100644
index 00000000000..aa84f3cf205
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/nameu.bbl
@@ -0,0 +1,92 @@
+\section*{Test result}
+\begin{itemize}
+\item Brian Wilson Kernighan and Dennis MacAlistair Ritchie
+ [1] {ff} Brian~Wilson {ll} Kernighan {vv} {jj}
+ | Brian~WilsonKernighan | Brian~Wilson Kernighan | Kernighan, B.~W. | B.~W.
+ Kernighan
+ [2] {ff} Dennis~MacAlistair {ll} Ritchie {vv} {jj}
+ | Dennis~MacAlistairRitchie | Dennis~MacAlistair Ritchie | Ritchie, D.~M. |
+ D.~M. Ritchie
+\item Brüder Grimm
+ [1] {ff} Brüder {ll} Grimm {vv} {jj}
+ | BrüderGrimm | Brüder Grimm | Grimm, B. | B.~Grimm
+\item Carl Maria von Weber
+ [1] {ff} Carl~Maria {ll} Weber {vv} von {jj}
+ | Carl~MariavonWeber | Carl~Maria von Weber | von Weber, C.~M. | C.~M.
+ v.~Weber
+\item Conte de Lautréamont
+ [1] {ff} Conte {ll} Lautréamont {vv} de {jj}
+ | ContedeLautréamont | Conte de Lautréamont | de~Lautréamont, C. |
+ C.~d.~Lautréamont
+\item Kernighan, Brian W. AND Ritchie, Dennis M.
+ [1] {ff} Brian~W. {ll} Kernighan {vv} {jj}
+ | Brian~W.Kernighan | Brian~W. Kernighan | Kernighan, B.~W. | B.~W. Kernighan
+ [2] {ff} Dennis~M. {ll} Ritchie {vv} {jj}
+ | Dennis~M.Ritchie | Dennis~M. Ritchie | Ritchie, D.~M. | D.~M. Ritchie
+\item King, Jr., Martin Luther
+ [1] {ff} Martin~Luther {ll} King {vv} {jj} Jr.
+ | Martin~LutherKingJr. | Martin~Luther King Jr. | King, Jr., M.~L. | M.~L.
+ King, Jr.
+\item Marcel Proust
+ [1] {ff} Marcel {ll} Proust {vv} {jj}
+ | MarcelProust | Marcel Proust | Proust, M. | M.~Proust
+\item Διογένης Λαέρτιος
+ [1] {ff} Διογένης {ll} Λαέρτιος {vv} {jj}
+ | ΔιογένηςΛαέρτιος | Διογένης Λαέρτιος |
+ Λαέρτιος, Δ. | Δ. Λαέρτιος
+\item Булгаков, Михаил Афанасьевич
+ [1] {ff} Михаил~Афанасьевич {ll} Булгаков {vv} {jj}
+ | Михаил~АфанасьевичБулгаков |
+ Михаил~Афанасьевич Булгаков | Булгаков,
+ М.~А. | М.~А. Булгаков
+\item Мико́ла Васи́льович Го́голь
+ [1] {ff} Мико́ла~Васи́льович {ll} Го́голь {vv} {jj}
+ | Мико́ла~Васи́льовичГо́голь |
+ Мико́ла~Васи́льович Го́голь | Го́голь,
+ М.~В. | М.~В. Го́голь
+\item 김 시습
+ [1] {ff} 김 {ll} 시습 {vv} {jj}
+ | 김시습 | 김 시습 | 시습, 김. | 김. 시습
+\item テスト てすと and 名無 権兵衛、 何 誰兵衛, 無名
+  戦士 and John Smith and Schmidt, Hans
+ [1] {ff} テスト {ll} てすと {vv} {jj}
+ | テストてすと | テスト てすと | てすと, テ. | テ. てすと
+ [2] {ff} 名無 {ll} 権兵衛 {vv} {jj}
+ | 名無権兵衛 | 名無 権兵衛 | 権兵衛, 名. | 名. 権兵衛
+ [3] {ff} 何 {ll} 誰兵衛 {vv} {jj}
+ | 何誰兵衛 | 何 誰兵衛 | 誰兵衛, 何. | 何. 誰兵衛
+ [4] {ff} 無名 {ll} 戦士 {vv} {jj}
+ | 無名戦士 | 無名 戦士 | 戦士, 無. | 無. 戦士
+ [5] {ff} John {ll} Smith {vv} {jj}
+ | JohnSmith | John Smith | Smith, J. | J.~Smith
+ [6] {ff} Hans {ll} Schmidt {vv} {jj}
+ | HansSchmidt | Hans Schmidt | Schmidt, H. | H.~Schmidt
+\item 奥村 晴彦,黒木  裕介
+ [1] {ff} 奥村 {ll} 晴彦 {vv} {jj}
+ | 奥村晴彦 | 奥村 晴彦 | 晴彦, 奥. | 奥. 晴彦
+ [2] {ff} 黒木 {ll} 裕介 {vv} {jj}
+ | 黒木裕介 | 黒木 裕介 | 裕介, 黒. | 黒. 裕介
+\item 奥村  晴彦、黒木  裕介
+ [1] {ff} 奥村 {ll} 晴彦 {vv} {jj}
+ | 奥村晴彦 | 奥村 晴彦 | 晴彦, 奥. | 奥. 晴彦
+ [2] {ff} 黒木 {ll} 裕介 {vv} {jj}
+ | 黒木裕介 | 黒木 裕介 | 裕介, 黒. | 黒. 裕介
+\item 奥村 晴彦 and 黒木 裕介
+ [1] {ff} 奥村 {ll} 晴彦 {vv} {jj}
+ | 奥村晴彦 | 奥村 晴彦 | 晴彦, 奥. | 奥. 晴彦
+ [2] {ff} 黒木 {ll} 裕介 {vv} {jj}
+ | 黒木裕介 | 黒木 裕介 | 裕介, 黒. | 黒. 裕介
+\item 曹 雪芹
+ [1] {ff} 曹 {ll} 雪芹 {vv} {jj}
+ | 曹雪芹 | 曹 雪芹 | 雪芹, 曹. | 曹. 雪芹
+\item 蘭陵笑笑生
+ [1] {ff} {ll} 蘭陵笑笑生 {vv} {jj}
+ | 蘭陵笑笑生 | 蘭陵笑笑生 | 蘭陵笑笑生 | 蘭陵笑笑生
+\item 髙島 𠮷野、𡈽方  𠀋之助
+ [1] {ff} 髙島 {ll} 𠮷野 {vv} {jj}
+ | 髙島𠮷野 | 髙島 𠮷野 | 𠮷野, 髙. | 髙. 𠮷野
+ [2] {ff} 𡈽方 {ll} 𠀋之助 {vv} {jj}
+ | 𡈽方𠀋之助 | 𡈽方 𠀋之助 | 𠀋之助, 𡈽. | 𡈽.
+ 𠀋之助
+\end{itemize}
+\endinput
diff --git a/Build/source/texk/bibtex-x/tests/perioda.bbl b/Build/source/texk/bibtex-x/tests/perioda.bbl
index 86a530cd233..b240df41b31 100644
--- a/Build/source/texk/bibtex-x/tests/perioda.bbl
+++ b/Build/source/texk/bibtex-x/tests/perioda.bbl
@@ -10,5 +10,9 @@
\item[ap] ABC xyz?
\item[~~] ABC xyz,
\item[ap] ABC xyz,.
+\item[~~] ABC {xyz!}
+\item[ap] ABC {xyz!}
+\item[~~] ABC {{xyz?}}
+\item[ap] ABC {{xyz?}}
\end{itemize}
\endinput
diff --git a/Build/source/texk/bibtex-x/tests/periodu.bbl b/Build/source/texk/bibtex-x/tests/periodu.bbl
index 65bf03f6383..8672593a222 100644
--- a/Build/source/texk/bibtex-x/tests/periodu.bbl
+++ b/Build/source/texk/bibtex-x/tests/periodu.bbl
@@ -10,6 +10,14 @@
\item[ap] ABC xyz.
\item[~~] ABC xyz?
\item[ap] ABC xyz?
+\item[~~] ABC {xyz!}
+\item[ap] ABC {xyz!}
+\item[~~] ABC {{xyz?}}
+\item[ap] ABC {{xyz?}}
+\item[~~] АБВ {{эюя?}}
+\item[ap] АБВ {{эюя?}}
+\item[~~] АБВ {эюя!}
+\item[ap] АБВ {эюя!}
\item[~~] АБВ эюя
\item[ap] АБВ эюя.
\item[~~] АБВ эюя!
@@ -20,6 +28,14 @@
\item[ap] АБВ эюя.
\item[~~] АБВ эюя?
\item[ap] АБВ эюя?
+\item[~~] あいうわ{{{{おん⁇}}}}
+\item[ap] あいうわ{{{{おん⁇}}}}
+\item[~~] あいうわ{{{おん‼}}}
+\item[ap] あいうわ{{{おん‼}}}
+\item[~~] あいうわ{{おん?}}
+\item[ap] あいうわ{{おん?}}
+\item[~~] あいうわ{おん!}
+\item[ap] あいうわ{おん!}
\item[~~] あいうわおん
\item[ap] あいうわおん.
\item[~~] あいうわおん,
diff --git a/Build/source/texk/bibtex-x/tests/substra.bbl b/Build/source/texk/bibtex-x/tests/substra.bbl
index 1e6031919f9..0f96fa6b736 100644
--- a/Build/source/texk/bibtex-x/tests/substra.bbl
+++ b/Build/source/texk/bibtex-x/tests/substra.bbl
@@ -1,27 +1,25 @@
\section*{Test result}
\begin{itemize}
\item[orig] ABCDEFG tuvwxyz
-\item[1 1] A
-\item[1 2] AB
-\item[1 3] ABC
-\item[1 4] ABCD
\item[1 5] ABCDE
-\item[1 6] ABCDEF
-\item[1 7] ABCDEFG
+\item[1 4] ABCD
+\item[1 3] ABC
+\item[1 2] AB
\item[1 1] A
\item[2 1] B
\item[3 1] C
\item[4 1] D
\item[5 1] E
-\item[6 1] F
-\item[7 1] G
-\item[1 7] ABCDEFG
-\item[2 6] BCDEFG
+\item[1 5] ABCDE
+\item[2 5] BCDEF
\item[3 5] CDEFG
-\item[4 4] DEFG
-\item[5 3] EFG
-\item[6 2] FG
-\item[7 1] G
+\item[4 5] DEFG
+\item[5 5] EFG t
+\item[1 5] ABCDE
+\item[2 4] BCDE
+\item[3 3] CDE
+\item[4 2] DE
+\item[5 1] E
\item[1 8] ABCDEFG
\item[2 7] BCDEFG
\item[3 6] CDEFG
@@ -30,26 +28,25 @@
\item[6 3] FG
\item[7 2] G
\item[8 1]
-\item[-1 1] z
-\item[-1 2] yz
-\item[-1 3] xyz
+\item[-1 5] vwxyz
\item[-1 4] wxyz
+\item[-1 3] xyz
+\item[-1 2] yz
+\item[-1 1] z
+\item[-2 1] y
+\item[-3 1] x
+\item[-4 1] w
+\item[-5 1] v
\item[-1 5] vwxyz
-\item[-1 6] uvwxyz
-\item[-1 7] tuvwxyz
-\item[-2 7] tuvwxy
-\item[-3 7] G tuvwx
-\item[-4 7] FG tuvw
-\item[-5 7] EFG tuv
-\item[-6 7] DEFG tu
-\item[-7 7] CDEFG t
-\item[-1 7] tuvwxyz
-\item[-2 6] tuvwxy
+\item[-2 5] uvwxy
\item[-3 5] tuvwx
-\item[-4 4] tuvw
-\item[-5 3] tuv
-\item[-6 2] tu
-\item[-7 1] t
+\item[-4 5] tuvw
+\item[-5 5] G tuv
+\item[-1 5] vwxyz
+\item[-2 4] vwxy
+\item[-3 3] vwx
+\item[-4 2] vw
+\item[-5 1] v
\item[-1 8] tuvwxyz
\item[-2 7] tuvwxy
\item[-3 6] tuvwx
@@ -58,28 +55,136 @@
\item[-6 3] tu
\item[-7 2] t
\item[-8 1]
+\item[orig] {AB}CDEFG tuvwx{yz}
+\item[1 5] {AB}C
+\item[1 4] {AB}
+\item[1 3] {AB
+\item[1 2] {A
+\item[1 1] {
+\item[2 1] A
+\item[3 1] B
+\item[4 1] }
+\item[5 1] C
+\item[1 5] {AB}C
+\item[2 5] AB}CD
+\item[3 5] B}CDE
+\item[4 5] }CDEF
+\item[5 5] CDEFG
+\item[1 5] {AB}C
+\item[2 4] AB}C
+\item[3 3] B}C
+\item[4 2] }C
+\item[5 1] C
+\item[1 8] {AB}CDEF
+\item[2 7] AB}CDEF
+\item[3 6] B}CDEF
+\item[4 5] }CDEF
+\item[5 4] CDEF
+\item[6 3] DEF
+\item[7 2] EF
+\item[8 1] F
+\item[-1 5] x{yz}
+\item[-1 4] {yz}
+\item[-1 3] yz}
+\item[-1 2] z}
+\item[-1 1] }
+\item[-2 1] z
+\item[-3 1] y
+\item[-4 1] {
+\item[-5 1] x
+\item[-1 5] x{yz}
+\item[-2 5] wx{yz
+\item[-3 5] vwx{y
+\item[-4 5] uvwx{
+\item[-5 5] tuvwx
+\item[-1 5] x{yz}
+\item[-2 4] x{yz
+\item[-3 3] x{y
+\item[-4 2] x{
+\item[-5 1] x
+\item[-1 8] uvwx{yz}
+\item[-2 7] uvwx{yz
+\item[-3 6] uvwx{y
+\item[-4 5] uvwx{
+\item[-5 4] uvwx
+\item[-6 3] uvw
+\item[-7 2] uv
+\item[-8 1] u
+\item[orig] {{AB}CD}EFG tuv{wx{yz}}
+\item[1 5] {{AB}
+\item[1 4] {{AB
+\item[1 3] {{A
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1] A
+\item[4 1] B
+\item[5 1] }
+\item[1 5] {{AB}
+\item[2 5] {AB}C
+\item[3 5] AB}CD
+\item[4 5] B}CD}
+\item[5 5] }CD}E
+\item[1 5] {{AB}
+\item[2 4] {AB}
+\item[3 3] AB}
+\item[4 2] B}
+\item[5 1] }
+\item[1 8] {{AB}CD}
+\item[2 7] {AB}CD}
+\item[3 6] AB}CD}
+\item[4 5] B}CD}
+\item[5 4] }CD}
+\item[6 3] CD}
+\item[7 2] D}
+\item[8 1] }
+\item[-1 5] {yz}}
+\item[-1 4] yz}}
+\item[-1 3] z}}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1] z
+\item[-4 1] y
+\item[-5 1] {
+\item[-1 5] {yz}}
+\item[-2 5] x{yz}
+\item[-3 5] wx{yz
+\item[-4 5] {wx{y
+\item[-5 5] v{wx{
+\item[-1 5] {yz}}
+\item[-2 4] {yz}
+\item[-3 3] {yz
+\item[-4 2] {y
+\item[-5 1] {
+\item[-1 8] {wx{yz}}
+\item[-2 7] {wx{yz}
+\item[-3 6] {wx{yz
+\item[-4 5] {wx{y
+\item[-5 4] {wx{
+\item[-6 3] {wx
+\item[-7 2] {w
+\item[-8 1] {
\item[orig] ~
-\item[1 1]
-\item[1 2]
-\item[1 3]
-\item[1 4]
\item[1 5]
-\item[1 6]
-\item[1 7]
+\item[1 4]
+\item[1 3]
+\item[1 2]
\item[1 1]
\item[2 1]
\item[3 1]
\item[4 1]
\item[5 1]
-\item[6 1]
-\item[7 1]
-\item[1 7]
-\item[2 6]
+\item[1 5]
+\item[2 5]
\item[3 5]
-\item[4 4]
-\item[5 3]
-\item[6 2]
-\item[7 1]
+\item[4 5] ~
+\item[5 5] ~
+\item[1 5]
+\item[2 4]
+\item[3 3]
+\item[4 2]
+\item[5 1]
\item[1 8] ~
\item[2 7] ~
\item[3 6] ~
@@ -88,26 +193,25 @@
\item[6 3] ~
\item[7 2] ~
\item[8 1] ~
-\item[-1 1]
-\item[-1 2]
-\item[-1 3]
+\item[-1 5]
\item[-1 4]
+\item[-1 3]
+\item[-1 2]
+\item[-1 1]
+\item[-2 1]
+\item[-3 1]
+\item[-4 1]
+\item[-5 1]
\item[-1 5]
-\item[-1 6]
-\item[-1 7]
-\item[-2 7] ~
-\item[-3 7] ~
-\item[-4 7] ~
-\item[-5 7] ~
-\item[-6 7] ~
-\item[-7 7] ~
-\item[-1 7]
-\item[-2 6]
+\item[-2 5]
\item[-3 5]
-\item[-4 4]
-\item[-5 3]
-\item[-6 2]
-\item[-7 1]
+\item[-4 5] ~
+\item[-5 5] ~
+\item[-1 5]
+\item[-2 4]
+\item[-3 3]
+\item[-4 2]
+\item[-5 1]
\item[-1 8] ~
\item[-2 7] ~
\item[-3 6] ~
@@ -116,5 +220,60 @@
\item[-6 3] ~
\item[-7 2] ~
\item[-8 1] ~
+\item[orig] {{}}~{{}}
+\item[1 5] {{}
+\item[1 4] {{
+\item[1 3] {{
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1]
+\item[4 1]
+\item[5 1] }
+\item[1 5] {{}
+\item[2 5] {}
+\item[3 5] }
+\item[4 5] }}
+\item[5 5] }}
+\item[1 5] {{}
+\item[2 4] {}
+\item[3 3] }
+\item[4 2] }
+\item[5 1] }
+\item[1 8] {{}}
+\item[2 7] {}}
+\item[3 6] }}
+\item[4 5] }}
+\item[5 4] }}
+\item[6 3] }
+\item[7 2] }
+\item[8 1] }
+\item[-1 5] {}}
+\item[-1 4] }}
+\item[-1 3] }}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1]
+\item[-4 1]
+\item[-5 1] {
+\item[-1 5] {}}
+\item[-2 5] {}
+\item[-3 5] {
+\item[-4 5] {{
+\item[-5 5] {{
+\item[-1 5] {}}
+\item[-2 4] {}
+\item[-3 3] {
+\item[-4 2] {
+\item[-5 1] {
+\item[-1 8] {{}}
+\item[-2 7] {{}
+\item[-3 6] {{
+\item[-4 5] {{
+\item[-5 4] {{
+\item[-6 3] {
+\item[-7 2] {
+\item[-8 1] {
\end{itemize}
\endinput
diff --git a/Build/source/texk/bibtex-x/tests/substru.bbl b/Build/source/texk/bibtex-x/tests/substru.bbl
index 8624e2fcadb..bb1e9ab2903 100644
--- a/Build/source/texk/bibtex-x/tests/substru.bbl
+++ b/Build/source/texk/bibtex-x/tests/substru.bbl
@@ -1,27 +1,25 @@
\section*{Test result}
\begin{itemize}
\item[orig] ABCDEFG tuvwxyz
-\item[1 1] A
-\item[1 2] AB
-\item[1 3] ABC
-\item[1 4] ABCD
\item[1 5] ABCDE
-\item[1 6] ABCDEF
-\item[1 7] ABCDEFG
+\item[1 4] ABCD
+\item[1 3] ABC
+\item[1 2] AB
\item[1 1] A
\item[2 1] B
\item[3 1] C
\item[4 1] D
\item[5 1] E
-\item[6 1] F
-\item[7 1] G
-\item[1 7] ABCDEFG
-\item[2 6] BCDEFG
+\item[1 5] ABCDE
+\item[2 5] BCDEF
\item[3 5] CDEFG
-\item[4 4] DEFG
-\item[5 3] EFG
-\item[6 2] FG
-\item[7 1] G
+\item[4 5] DEFG
+\item[5 5] EFG t
+\item[1 5] ABCDE
+\item[2 4] BCDE
+\item[3 3] CDE
+\item[4 2] DE
+\item[5 1] E
\item[1 8] ABCDEFG
\item[2 7] BCDEFG
\item[3 6] CDEFG
@@ -30,26 +28,25 @@
\item[6 3] FG
\item[7 2] G
\item[8 1]
-\item[-1 1] z
-\item[-1 2] yz
-\item[-1 3] xyz
+\item[-1 5] vwxyz
\item[-1 4] wxyz
+\item[-1 3] xyz
+\item[-1 2] yz
+\item[-1 1] z
+\item[-2 1] y
+\item[-3 1] x
+\item[-4 1] w
+\item[-5 1] v
\item[-1 5] vwxyz
-\item[-1 6] uvwxyz
-\item[-1 7] tuvwxyz
-\item[-2 7] tuvwxy
-\item[-3 7] G tuvwx
-\item[-4 7] FG tuvw
-\item[-5 7] EFG tuv
-\item[-6 7] DEFG tu
-\item[-7 7] CDEFG t
-\item[-1 7] tuvwxyz
-\item[-2 6] tuvwxy
+\item[-2 5] uvwxy
\item[-3 5] tuvwx
-\item[-4 4] tuvw
-\item[-5 3] tuv
-\item[-6 2] tu
-\item[-7 1] t
+\item[-4 5] tuvw
+\item[-5 5] G tuv
+\item[-1 5] vwxyz
+\item[-2 4] vwxy
+\item[-3 3] vwx
+\item[-4 2] vw
+\item[-5 1] v
\item[-1 8] tuvwxyz
\item[-2 7] tuvwxy
\item[-3 6] tuvwx
@@ -59,27 +56,25 @@
\item[-7 2] t
\item[-8 1]
\item[orig] ÅÇÈÎØÜÝ~åçèîøüý
-\item[1 1] Å
-\item[1 2] ÅÇ
-\item[1 3] ÅÇÈ
-\item[1 4] ÅÇÈÎ
\item[1 5] ÅÇÈÎØ
-\item[1 6] ÅÇÈÎØÜ
-\item[1 7] ÅÇÈÎØÜÝ
+\item[1 4] ÅÇÈÎ
+\item[1 3] ÅÇÈ
+\item[1 2] ÅÇ
\item[1 1] Å
\item[2 1] Ç
\item[3 1] È
\item[4 1] Î
\item[5 1] Ø
-\item[6 1] Ü
-\item[7 1] Ý
-\item[1 7] ÅÇÈÎØÜÝ
-\item[2 6] ÇÈÎØÜÝ
+\item[1 5] ÅÇÈÎØ
+\item[2 5] ÇÈÎØÜ
\item[3 5] ÈÎØÜÝ
-\item[4 4] ÎØÜÝ
-\item[5 3] ØÜÝ
-\item[6 2] ÜÝ
-\item[7 1] Ý
+\item[4 5] ÎØÜÝ~
+\item[5 5] ØÜÝ~å
+\item[1 5] ÅÇÈÎØ
+\item[2 4] ÇÈÎØ
+\item[3 3] ÈÎØ
+\item[4 2] ÎØ
+\item[5 1] Ø
\item[1 8] ÅÇÈÎØÜÝ~
\item[2 7] ÇÈÎØÜÝ~
\item[3 6] ÈÎØÜÝ~
@@ -88,26 +83,25 @@
\item[6 3] ÜÝ~
\item[7 2] Ý~
\item[8 1] ~
-\item[-1 1] ý
-\item[-1 2] üý
-\item[-1 3] øüý
+\item[-1 5] èîøüý
\item[-1 4] îøüý
+\item[-1 3] øüý
+\item[-1 2] üý
+\item[-1 1] ý
+\item[-2 1] ü
+\item[-3 1] ø
+\item[-4 1] î
+\item[-5 1] è
\item[-1 5] èîøüý
-\item[-1 6] çèîøüý
-\item[-1 7] åçèîøüý
-\item[-2 7] ~åçèîøü
-\item[-3 7] Ý~åçèîø
-\item[-4 7] ÜÝ~åçèî
-\item[-5 7] ØÜÝ~åçè
-\item[-6 7] ÎØÜÝ~åç
-\item[-7 7] ÈÎØÜÝ~å
-\item[-1 7] åçèîøüý
-\item[-2 6] åçèîøü
+\item[-2 5] çèîøü
\item[-3 5] åçèîø
-\item[-4 4] åçèî
-\item[-5 3] åçè
-\item[-6 2] åç
-\item[-7 1] å
+\item[-4 5] ~åçèî
+\item[-5 5] Ý~åçè
+\item[-1 5] èîøüý
+\item[-2 4] èîøü
+\item[-3 3] èîø
+\item[-4 2] èî
+\item[-5 1] è
\item[-1 8] ~åçèîøüý
\item[-2 7] ~åçèîøü
\item[-3 6] ~åçèîø
@@ -117,27 +111,25 @@
\item[-7 2] ~å
\item[-8 1] ~
\item[orig] AÇう冤EÜЖ~tçユ漆𡚴xюω
-\item[1 1] A
-\item[1 2] AÇ
-\item[1 3] AÇう
-\item[1 4] AÇう冤
\item[1 5] AÇう冤E
-\item[1 6] AÇう冤EÜ
-\item[1 7] AÇう冤EÜЖ
+\item[1 4] AÇう冤
+\item[1 3] AÇう
+\item[1 2] AÇ
\item[1 1] A
\item[2 1] Ç
\item[3 1] う
\item[4 1] 冤
\item[5 1] E
-\item[6 1] Ü
-\item[7 1] Ж
-\item[1 7] AÇう冤EÜЖ
-\item[2 6] Çう冤EÜЖ
+\item[1 5] AÇう冤E
+\item[2 5] Çう冤EÜ
\item[3 5] う冤EÜЖ
-\item[4 4] 冤EÜЖ
-\item[5 3] EÜЖ
-\item[6 2] ÜЖ
-\item[7 1] Ж
+\item[4 5] 冤EÜЖ~
+\item[5 5] EÜЖ~t
+\item[1 5] AÇう冤E
+\item[2 4] Çう冤E
+\item[3 3] う冤E
+\item[4 2] 冤E
+\item[5 1] E
\item[1 8] AÇう冤EÜЖ~
\item[2 7] Çう冤EÜЖ~
\item[3 6] う冤EÜЖ~
@@ -146,26 +138,25 @@
\item[6 3] ÜЖ~
\item[7 2] Ж~
\item[8 1] ~
-\item[-1 1] ω
-\item[-1 2] юω
-\item[-1 3] xюω
+\item[-1 5] 漆𡚴xюω
\item[-1 4] 𡚴xюω
+\item[-1 3] xюω
+\item[-1 2] юω
+\item[-1 1] ω
+\item[-2 1] ю
+\item[-3 1] x
+\item[-4 1] 𡚴
+\item[-5 1] 漆
\item[-1 5] 漆𡚴xюω
-\item[-1 6] ユ漆𡚴xюω
-\item[-1 7] çユ漆𡚴xюω
-\item[-2 7] tçユ漆𡚴xю
-\item[-3 7] ~tçユ漆𡚴x
-\item[-4 7] Ж~tçユ漆𡚴
-\item[-5 7] ÜЖ~tçユ漆
-\item[-6 7] EÜЖ~tçユ
-\item[-7 7] 冤EÜЖ~tç
-\item[-1 7] çユ漆𡚴xюω
-\item[-2 6] çユ漆𡚴xю
+\item[-2 5] ユ漆𡚴xю
\item[-3 5] çユ漆𡚴x
-\item[-4 4] çユ漆𡚴
-\item[-5 3] çユ漆
-\item[-6 2] çユ
-\item[-7 1] ç
+\item[-4 5] tçユ漆𡚴
+\item[-5 5] ~tçユ漆
+\item[-1 5] 漆𡚴xюω
+\item[-2 4] 漆𡚴xю
+\item[-3 3] 漆𡚴x
+\item[-4 2] 漆𡚴
+\item[-5 1] 漆
\item[-1 8] tçユ漆𡚴xюω
\item[-2 7] tçユ漆𡚴xю
\item[-3 6] tçユ漆𡚴x
@@ -174,28 +165,302 @@
\item[-6 3] tçユ
\item[-7 2] tç
\item[-8 1] t
+\item[orig] {AB}CDEFG tuvwx{yz}
+\item[1 5] {AB}C
+\item[1 4] {AB}
+\item[1 3] {AB
+\item[1 2] {A
+\item[1 1] {
+\item[2 1] A
+\item[3 1] B
+\item[4 1] }
+\item[5 1] C
+\item[1 5] {AB}C
+\item[2 5] AB}CD
+\item[3 5] B}CDE
+\item[4 5] }CDEF
+\item[5 5] CDEFG
+\item[1 5] {AB}C
+\item[2 4] AB}C
+\item[3 3] B}C
+\item[4 2] }C
+\item[5 1] C
+\item[1 8] {AB}CDEF
+\item[2 7] AB}CDEF
+\item[3 6] B}CDEF
+\item[4 5] }CDEF
+\item[5 4] CDEF
+\item[6 3] DEF
+\item[7 2] EF
+\item[8 1] F
+\item[-1 5] x{yz}
+\item[-1 4] {yz}
+\item[-1 3] yz}
+\item[-1 2] z}
+\item[-1 1] }
+\item[-2 1] z
+\item[-3 1] y
+\item[-4 1] {
+\item[-5 1] x
+\item[-1 5] x{yz}
+\item[-2 5] wx{yz
+\item[-3 5] vwx{y
+\item[-4 5] uvwx{
+\item[-5 5] tuvwx
+\item[-1 5] x{yz}
+\item[-2 4] x{yz
+\item[-3 3] x{y
+\item[-4 2] x{
+\item[-5 1] x
+\item[-1 8] uvwx{yz}
+\item[-2 7] uvwx{yz
+\item[-3 6] uvwx{y
+\item[-4 5] uvwx{
+\item[-5 4] uvwx
+\item[-6 3] uvw
+\item[-7 2] uv
+\item[-8 1] u
+\item[orig] {{AB}CD}EFG tuv{wx{yz}}
+\item[1 5] {{AB}
+\item[1 4] {{AB
+\item[1 3] {{A
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1] A
+\item[4 1] B
+\item[5 1] }
+\item[1 5] {{AB}
+\item[2 5] {AB}C
+\item[3 5] AB}CD
+\item[4 5] B}CD}
+\item[5 5] }CD}E
+\item[1 5] {{AB}
+\item[2 4] {AB}
+\item[3 3] AB}
+\item[4 2] B}
+\item[5 1] }
+\item[1 8] {{AB}CD}
+\item[2 7] {AB}CD}
+\item[3 6] AB}CD}
+\item[4 5] B}CD}
+\item[5 4] }CD}
+\item[6 3] CD}
+\item[7 2] D}
+\item[8 1] }
+\item[-1 5] {yz}}
+\item[-1 4] yz}}
+\item[-1 3] z}}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1] z
+\item[-4 1] y
+\item[-5 1] {
+\item[-1 5] {yz}}
+\item[-2 5] x{yz}
+\item[-3 5] wx{yz
+\item[-4 5] {wx{y
+\item[-5 5] v{wx{
+\item[-1 5] {yz}}
+\item[-2 4] {yz}
+\item[-3 3] {yz
+\item[-4 2] {y
+\item[-5 1] {
+\item[-1 8] {wx{yz}}
+\item[-2 7] {wx{yz}
+\item[-3 6] {wx{yz
+\item[-4 5] {wx{y
+\item[-5 4] {wx{
+\item[-6 3] {wx
+\item[-7 2] {w
+\item[-8 1] {
+\item[orig] {{ÅÇ}ÈÎ}ØÜÝ~åçè{îø{üý}}
+\item[1 5] {{ÅÇ}
+\item[1 4] {{ÅÇ
+\item[1 3] {{Å
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1] Å
+\item[4 1] Ç
+\item[5 1] }
+\item[1 5] {{ÅÇ}
+\item[2 5] {ÅÇ}È
+\item[3 5] ÅÇ}ÈÎ
+\item[4 5] Ç}ÈÎ}
+\item[5 5] }ÈÎ}Ø
+\item[1 5] {{ÅÇ}
+\item[2 4] {ÅÇ}
+\item[3 3] ÅÇ}
+\item[4 2] Ç}
+\item[5 1] }
+\item[1 8] {{ÅÇ}ÈÎ}
+\item[2 7] {ÅÇ}ÈÎ}
+\item[3 6] ÅÇ}ÈÎ}
+\item[4 5] Ç}ÈÎ}
+\item[5 4] }ÈÎ}
+\item[6 3] ÈÎ}
+\item[7 2] Î}
+\item[8 1] }
+\item[-1 5] {üý}}
+\item[-1 4] üý}}
+\item[-1 3] ý}}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1] ý
+\item[-4 1] ü
+\item[-5 1] {
+\item[-1 5] {üý}}
+\item[-2 5] ø{üý}
+\item[-3 5] îø{üý
+\item[-4 5] {îø{ü
+\item[-5 5] è{îø{
+\item[-1 5] {üý}}
+\item[-2 4] {üý}
+\item[-3 3] {üý
+\item[-4 2] {ü
+\item[-5 1] {
+\item[-1 8] {îø{üý}}
+\item[-2 7] {îø{üý}
+\item[-3 6] {îø{üý
+\item[-4 5] {îø{ü
+\item[-5 4] {îø{
+\item[-6 3] {îø
+\item[-7 2] {î
+\item[-8 1] {
+\item[orig] {{一二}三四}五六七 肆伍陸{漆捌{玖拾}}
+\item[1 5] {{一二}
+\item[1 4] {{一二
+\item[1 3] {{一
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1] 一
+\item[4 1] 二
+\item[5 1] }
+\item[1 5] {{一二}
+\item[2 5] {一二}三
+\item[3 5] 一二}三四
+\item[4 5] 二}三四}
+\item[5 5] }三四}五
+\item[1 5] {{一二}
+\item[2 4] {一二}
+\item[3 3] 一二}
+\item[4 2] 二}
+\item[5 1] }
+\item[1 8] {{一二}三四}
+\item[2 7] {一二}三四}
+\item[3 6] 一二}三四}
+\item[4 5] 二}三四}
+\item[5 4] }三四}
+\item[6 3] 三四}
+\item[7 2] 四}
+\item[8 1] }
+\item[-1 5] {玖拾}}
+\item[-1 4] 玖拾}}
+\item[-1 3] 拾}}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1] 拾
+\item[-4 1] 玖
+\item[-5 1] {
+\item[-1 5] {玖拾}}
+\item[-2 5] 捌{玖拾}
+\item[-3 5] 漆捌{玖拾
+\item[-4 5] {漆捌{玖
+\item[-5 5] 陸{漆捌{
+\item[-1 5] {玖拾}}
+\item[-2 4] {玖拾}
+\item[-3 3] {玖拾
+\item[-4 2] {玖
+\item[-5 1] {
+\item[-1 8] {漆捌{玖拾}}
+\item[-2 7] {漆捌{玖拾}
+\item[-3 6] {漆捌{玖拾
+\item[-4 5] {漆捌{玖
+\item[-5 4] {漆捌{
+\item[-6 3] {漆捌
+\item[-7 2] {漆
+\item[-8 1] {
+\item[orig]
+ {{櫛杓}屠冤}𦥑𠮟𠀋𡈽𥝱𨦇𡚴{𠷡𧘕{𧘔𩸽}}
+\item[1 5] {{櫛杓}
+\item[1 4] {{櫛杓
+\item[1 3] {{櫛
+\item[1 2] {{
+\item[1 1] {
+\item[2 1] {
+\item[3 1] 櫛
+\item[4 1] 杓
+\item[5 1] }
+\item[1 5] {{櫛杓}
+\item[2 5] {櫛杓}屠
+\item[3 5] 櫛杓}屠冤
+\item[4 5] 杓}屠冤}
+\item[5 5] }屠冤}𦥑
+\item[1 5] {{櫛杓}
+\item[2 4] {櫛杓}
+\item[3 3] 櫛杓}
+\item[4 2] 杓}
+\item[5 1] }
+\item[1 8] {{櫛杓}屠冤}
+\item[2 7] {櫛杓}屠冤}
+\item[3 6] 櫛杓}屠冤}
+\item[4 5] 杓}屠冤}
+\item[5 4] }屠冤}
+\item[6 3] 屠冤}
+\item[7 2] 冤}
+\item[8 1] }
+\item[-1 5] {𧘔𩸽}}
+\item[-1 4] 𧘔𩸽}}
+\item[-1 3] 𩸽}}
+\item[-1 2] }}
+\item[-1 1] }
+\item[-2 1] }
+\item[-3 1] 𩸽
+\item[-4 1] 𧘔
+\item[-5 1] {
+\item[-1 5] {𧘔𩸽}}
+\item[-2 5] 𧘕{𧘔𩸽}
+\item[-3 5] 𠷡𧘕{𧘔𩸽
+\item[-4 5] {𠷡𧘕{𧘔
+\item[-5 5] 𡚴{𠷡𧘕{
+\item[-1 5] {𧘔𩸽}}
+\item[-2 4] {𧘔𩸽}
+\item[-3 3] {𧘔𩸽
+\item[-4 2] {𧘔
+\item[-5 1] {
+\item[-1 8] {𠷡𧘕{𧘔𩸽}}
+\item[-2 7] {𠷡𧘕{𧘔𩸽}
+\item[-3 6] {𠷡𧘕{𧘔𩸽
+\item[-4 5] {𠷡𧘕{𧘔
+\item[-5 4] {𠷡𧘕{
+\item[-6 3] {𠷡𧘕
+\item[-7 2] {𠷡
+\item[-8 1] {
\item[orig] ΑΒΓΔΕΖΗ στυφχψω
-\item[1 1] Α
-\item[1 2] ΑΒ
-\item[1 3] ΑΒΓ
-\item[1 4] ΑΒΓΔ
\item[1 5] ΑΒΓΔΕ
-\item[1 6] ΑΒΓΔΕΖ
-\item[1 7] ΑΒΓΔΕΖΗ
+\item[1 4] ΑΒΓΔ
+\item[1 3] ΑΒΓ
+\item[1 2] ΑΒ
\item[1 1] Α
\item[2 1] Β
\item[3 1] Γ
\item[4 1] Δ
\item[5 1] Ε
-\item[6 1] Ζ
-\item[7 1] Η
-\item[1 7] ΑΒΓΔΕΖΗ
-\item[2 6] ΒΓΔΕΖΗ
+\item[1 5] ΑΒΓΔΕ
+\item[2 5] ΒΓΔΕΖ
\item[3 5] ΓΔΕΖΗ
-\item[4 4] ΔΕΖΗ
-\item[5 3] ΕΖΗ
-\item[6 2] ΖΗ
-\item[7 1] Η
+\item[4 5] ΔΕΖΗ
+\item[5 5] ΕΖΗ σ
+\item[1 5] ΑΒΓΔΕ
+\item[2 4] ΒΓΔΕ
+\item[3 3] ΓΔΕ
+\item[4 2] ΔΕ
+\item[5 1] Ε
\item[1 8] ΑΒΓΔΕΖΗ
\item[2 7] ΒΓΔΕΖΗ
\item[3 6] ΓΔΕΖΗ
@@ -204,26 +469,25 @@
\item[6 3] ΖΗ
\item[7 2] Η
\item[8 1]
-\item[-1 1] ω
-\item[-1 2] ψω
-\item[-1 3] χψω
+\item[-1 5] υφχψω
\item[-1 4] φχψω
+\item[-1 3] χψω
+\item[-1 2] ψω
+\item[-1 1] ω
+\item[-2 1] ψ
+\item[-3 1] χ
+\item[-4 1] φ
+\item[-5 1] υ
\item[-1 5] υφχψω
-\item[-1 6] τυφχψω
-\item[-1 7] στυφχψω
-\item[-2 7] στυφχψ
-\item[-3 7] Η στυφχ
-\item[-4 7] ΖΗ στυφ
-\item[-5 7] ΕΖΗ στυ
-\item[-6 7] ΔΕΖΗ στ
-\item[-7 7] ΓΔΕΖΗ σ
-\item[-1 7] στυφχψω
-\item[-2 6] στυφχψ
+\item[-2 5] τυφχψ
\item[-3 5] στυφχ
-\item[-4 4] στυφ
-\item[-5 3] στυ
-\item[-6 2] στ
-\item[-7 1] σ
+\item[-4 5] στυφ
+\item[-5 5] Η στυ
+\item[-1 5] υφχψω
+\item[-2 4] υφχψ
+\item[-3 3] υφχ
+\item[-4 2] υφ
+\item[-5 1] υ
\item[-1 8] στυφχψω
\item[-2 7] στυφχψ
\item[-3 6] στυφχ
@@ -233,27 +497,25 @@
\item[-7 2] σ
\item[-8 1]
\item[orig] АБВГДЕЖ щъыьэюя
-\item[1 1] А
-\item[1 2] АБ
-\item[1 3] АБВ
-\item[1 4] АБВГ
\item[1 5] АБВГД
-\item[1 6] АБВГДЕ
-\item[1 7] АБВГДЕЖ
+\item[1 4] АБВГ
+\item[1 3] АБВ
+\item[1 2] АБ
\item[1 1] А
\item[2 1] Б
\item[3 1] В
\item[4 1] Г
\item[5 1] Д
-\item[6 1] Е
-\item[7 1] Ж
-\item[1 7] АБВГДЕЖ
-\item[2 6] БВГДЕЖ
+\item[1 5] АБВГД
+\item[2 5] БВГДЕ
\item[3 5] ВГДЕЖ
-\item[4 4] ГДЕЖ
-\item[5 3] ДЕЖ
-\item[6 2] ЕЖ
-\item[7 1] Ж
+\item[4 5] ГДЕЖ
+\item[5 5] ДЕЖ щ
+\item[1 5] АБВГД
+\item[2 4] БВГД
+\item[3 3] ВГД
+\item[4 2] ГД
+\item[5 1] Д
\item[1 8] АБВГДЕЖ
\item[2 7] БВГДЕЖ
\item[3 6] ВГДЕЖ
@@ -262,26 +524,25 @@
\item[6 3] ЕЖ
\item[7 2] Ж
\item[8 1]
-\item[-1 1] я
-\item[-1 2] юя
-\item[-1 3] эюя
+\item[-1 5] ыьэюя
\item[-1 4] ьэюя
+\item[-1 3] эюя
+\item[-1 2] юя
+\item[-1 1] я
+\item[-2 1] ю
+\item[-3 1] э
+\item[-4 1] ь
+\item[-5 1] ы
\item[-1 5] ыьэюя
-\item[-1 6] ъыьэюя
-\item[-1 7] щъыьэюя
-\item[-2 7] щъыьэю
-\item[-3 7] Ж щъыьэ
-\item[-4 7] ЕЖ щъыь
-\item[-5 7] ДЕЖ щъы
-\item[-6 7] ГДЕЖ щъ
-\item[-7 7] ВГДЕЖ щ
-\item[-1 7] щъыьэюя
-\item[-2 6] щъыьэю
+\item[-2 5] ъыьэю
\item[-3 5] щъыьэ
-\item[-4 4] щъыь
-\item[-5 3] щъы
-\item[-6 2] щъ
-\item[-7 1] щ
+\item[-4 5] щъыь
+\item[-5 5] Ж щъы
+\item[-1 5] ыьэюя
+\item[-2 4] ыьэю
+\item[-3 3] ыьэ
+\item[-4 2] ыь
+\item[-5 1] ы
\item[-1 8] щъыьэюя
\item[-2 7] щъыьэю
\item[-3 6] щъыьэ
@@ -291,27 +552,25 @@
\item[-7 2] щ
\item[-8 1]
\item[orig] あいうえおかき ユヨワヰヱヲン
-\item[1 1] あ
-\item[1 2] あい
-\item[1 3] あいう
-\item[1 4] あいうえ
\item[1 5] あいうえお
-\item[1 6] あいうえおか
-\item[1 7] あいうえおかき
+\item[1 4] あいうえ
+\item[1 3] あいう
+\item[1 2] あい
\item[1 1] あ
\item[2 1] い
\item[3 1] う
\item[4 1] え
\item[5 1] お
-\item[6 1] か
-\item[7 1] き
-\item[1 7] あいうえおかき
-\item[2 6] いうえおかき
+\item[1 5] あいうえお
+\item[2 5] いうえおか
\item[3 5] うえおかき
-\item[4 4] えおかき
-\item[5 3] おかき
-\item[6 2] かき
-\item[7 1] き
+\item[4 5] えおかき 
+\item[5 5] おかき ユ
+\item[1 5] あいうえお
+\item[2 4] いうえお
+\item[3 3] うえお
+\item[4 2] えお
+\item[5 1] お
\item[1 8] あいうえおかき 
\item[2 7] いうえおかき 
\item[3 6] うえおかき 
@@ -320,26 +579,25 @@
\item[6 3] かき 
\item[7 2] き 
\item[8 1]  
-\item[-1 1] ン
-\item[-1 2] ヲン
-\item[-1 3] ヱヲン
+\item[-1 5] ワヰヱヲン
\item[-1 4] ヰヱヲン
+\item[-1 3] ヱヲン
+\item[-1 2] ヲン
+\item[-1 1] ン
+\item[-2 1] ヲ
+\item[-3 1] ヱ
+\item[-4 1] ヰ
+\item[-5 1] ワ
\item[-1 5] ワヰヱヲン
-\item[-1 6] ヨワヰヱヲン
-\item[-1 7] ユヨワヰヱヲン
-\item[-2 7]  ユヨワヰヱヲ
-\item[-3 7] き ユヨワヰヱ
-\item[-4 7] かき ユヨワヰ
-\item[-5 7] おかき ユヨワ
-\item[-6 7] えおかき ユヨ
-\item[-7 7] うえおかき ユ
-\item[-1 7] ユヨワヰヱヲン
-\item[-2 6] ユヨワヰヱヲ
+\item[-2 5] ヨワヰヱヲ
\item[-3 5] ユヨワヰヱ
-\item[-4 4] ユヨワヰ
-\item[-5 3] ユヨワ
-\item[-6 2] ユヨ
-\item[-7 1] ユ
+\item[-4 5]  ユヨワヰ
+\item[-5 5] き ユヨワ
+\item[-1 5] ワヰヱヲン
+\item[-2 4] ワヰヱヲ
+\item[-3 3] ワヰヱ
+\item[-4 2] ワヰ
+\item[-5 1] ワ
\item[-1 8]  ユヨワヰヱヲン
\item[-2 7]  ユヨワヰヱヲ
\item[-3 6]  ユヨワヰヱ
@@ -349,27 +607,25 @@
\item[-7 2]  ユ
\item[-8 1]  
\item[orig] 一二三四五六七 肆伍陸漆捌玖拾
-\item[1 1] 一
-\item[1 2] 一二
-\item[1 3] 一二三
-\item[1 4] 一二三四
\item[1 5] 一二三四五
-\item[1 6] 一二三四五六
-\item[1 7] 一二三四五六七
+\item[1 4] 一二三四
+\item[1 3] 一二三
+\item[1 2] 一二
\item[1 1] 一
\item[2 1] 二
\item[3 1] 三
\item[4 1] 四
\item[5 1] 五
-\item[6 1] 六
-\item[7 1] 七
-\item[1 7] 一二三四五六七
-\item[2 6] 二三四五六七
+\item[1 5] 一二三四五
+\item[2 5] 二三四五六
\item[3 5] 三四五六七
-\item[4 4] 四五六七
-\item[5 3] 五六七
-\item[6 2] 六七
-\item[7 1] 七
+\item[4 5] 四五六七 
+\item[5 5] 五六七 肆
+\item[1 5] 一二三四五
+\item[2 4] 二三四五
+\item[3 3] 三四五
+\item[4 2] 四五
+\item[5 1] 五
\item[1 8] 一二三四五六七 
\item[2 7] 二三四五六七 
\item[3 6] 三四五六七 
@@ -378,26 +634,25 @@
\item[6 3] 六七 
\item[7 2] 七 
\item[8 1]  
-\item[-1 1] 拾
-\item[-1 2] 玖拾
-\item[-1 3] 捌玖拾
+\item[-1 5] 陸漆捌玖拾
\item[-1 4] 漆捌玖拾
+\item[-1 3] 捌玖拾
+\item[-1 2] 玖拾
+\item[-1 1] 拾
+\item[-2 1] 玖
+\item[-3 1] 捌
+\item[-4 1] 漆
+\item[-5 1] 陸
\item[-1 5] 陸漆捌玖拾
-\item[-1 6] 伍陸漆捌玖拾
-\item[-1 7] 肆伍陸漆捌玖拾
-\item[-2 7]  肆伍陸漆捌玖
-\item[-3 7] 七 肆伍陸漆捌
-\item[-4 7] 六七 肆伍陸漆
-\item[-5 7] 五六七 肆伍陸
-\item[-6 7] 四五六七 肆伍
-\item[-7 7] 三四五六七 肆
-\item[-1 7] 肆伍陸漆捌玖拾
-\item[-2 6] 肆伍陸漆捌玖
+\item[-2 5] 伍陸漆捌玖
\item[-3 5] 肆伍陸漆捌
-\item[-4 4] 肆伍陸漆
-\item[-5 3] 肆伍陸
-\item[-6 2] 肆伍
-\item[-7 1] 肆
+\item[-4 5]  肆伍陸漆
+\item[-5 5] 七 肆伍陸
+\item[-1 5] 陸漆捌玖拾
+\item[-2 4] 陸漆捌玖
+\item[-3 3] 陸漆捌
+\item[-4 2] 陸漆
+\item[-5 1] 陸
\item[-1 8]  肆伍陸漆捌玖拾
\item[-2 7]  肆伍陸漆捌玖
\item[-3 6]  肆伍陸漆捌
@@ -407,27 +662,25 @@
\item[-7 2]  肆
\item[-8 1]  
\item[orig] 櫛杓屠冤𦥑𠮟𠀋𡈽𥝱𨦇𡚴𠷡𧘕𧘔𩸽
-\item[1 1] 櫛
-\item[1 2] 櫛杓
-\item[1 3] 櫛杓屠
-\item[1 4] 櫛杓屠冤
\item[1 5] 櫛杓屠冤𦥑
-\item[1 6] 櫛杓屠冤𦥑𠮟
-\item[1 7] 櫛杓屠冤𦥑𠮟𠀋
+\item[1 4] 櫛杓屠冤
+\item[1 3] 櫛杓屠
+\item[1 2] 櫛杓
\item[1 1] 櫛
\item[2 1] 杓
\item[3 1] 屠
\item[4 1] 冤
\item[5 1] 𦥑
-\item[6 1] 𠮟
-\item[7 1] 𠀋
-\item[1 7] 櫛杓屠冤𦥑𠮟𠀋
-\item[2 6] 杓屠冤𦥑𠮟𠀋
+\item[1 5] 櫛杓屠冤𦥑
+\item[2 5] 杓屠冤𦥑𠮟
\item[3 5] 屠冤𦥑𠮟𠀋
-\item[4 4] 冤𦥑𠮟𠀋
-\item[5 3] 𦥑𠮟𠀋
-\item[6 2] 𠮟𠀋
-\item[7 1] 𠀋
+\item[4 5] 冤𦥑𠮟𠀋𡈽
+\item[5 5] 𦥑𠮟𠀋𡈽𥝱
+\item[1 5] 櫛杓屠冤𦥑
+\item[2 4] 杓屠冤𦥑
+\item[3 3] 屠冤𦥑
+\item[4 2] 冤𦥑
+\item[5 1] 𦥑
\item[1 8] 櫛杓屠冤𦥑𠮟𠀋𡈽
\item[2 7] 杓屠冤𦥑𠮟𠀋𡈽
\item[3 6] 屠冤𦥑𠮟𠀋𡈽
@@ -436,26 +689,25 @@
\item[6 3] 𠮟𠀋𡈽
\item[7 2] 𠀋𡈽
\item[8 1] 𡈽
-\item[-1 1] 𩸽
-\item[-1 2] 𧘔𩸽
-\item[-1 3] 𧘕𧘔𩸽
+\item[-1 5] 𡚴𠷡𧘕𧘔𩸽
\item[-1 4] 𠷡𧘕𧘔𩸽
+\item[-1 3] 𧘕𧘔𩸽
+\item[-1 2] 𧘔𩸽
+\item[-1 1] 𩸽
+\item[-2 1] 𧘔
+\item[-3 1] 𧘕
+\item[-4 1] 𠷡
+\item[-5 1] 𡚴
\item[-1 5] 𡚴𠷡𧘕𧘔𩸽
-\item[-1 6] 𨦇𡚴𠷡𧘕𧘔𩸽
-\item[-1 7] 𥝱𨦇𡚴𠷡𧘕𧘔𩸽
-\item[-2 7] 𡈽𥝱𨦇𡚴𠷡𧘕𧘔
-\item[-3 7] 𠀋𡈽𥝱𨦇𡚴𠷡𧘕
-\item[-4 7] 𠮟𠀋𡈽𥝱𨦇𡚴𠷡
-\item[-5 7] 𦥑𠮟𠀋𡈽𥝱𨦇𡚴
-\item[-6 7] 冤𦥑𠮟𠀋𡈽𥝱𨦇
-\item[-7 7] 屠冤𦥑𠮟𠀋𡈽𥝱
-\item[-1 7] 𥝱𨦇𡚴𠷡𧘕𧘔𩸽
-\item[-2 6] 𥝱𨦇𡚴𠷡𧘕𧘔
+\item[-2 5] 𨦇𡚴𠷡𧘕𧘔
\item[-3 5] 𥝱𨦇𡚴𠷡𧘕
-\item[-4 4] 𥝱𨦇𡚴𠷡
-\item[-5 3] 𥝱𨦇𡚴
-\item[-6 2] 𥝱𨦇
-\item[-7 1] 𥝱
+\item[-4 5] 𡈽𥝱𨦇𡚴𠷡
+\item[-5 5] 𠀋𡈽𥝱𨦇𡚴
+\item[-1 5] 𡚴𠷡𧘕𧘔𩸽
+\item[-2 4] 𡚴𠷡𧘕𧘔
+\item[-3 3] 𡚴𠷡𧘕
+\item[-4 2] 𡚴𠷡
+\item[-5 1] 𡚴
\item[-1 8] 𡈽𥝱𨦇𡚴𠷡𧘕𧘔𩸽
\item[-2 7] 𡈽𥝱𨦇𡚴𠷡𧘕𧘔
\item[-3 6] 𡈽𥝱𨦇𡚴𠷡𧘕
diff --git a/Build/source/texk/bibtex-x/tests/testcase.bst b/Build/source/texk/bibtex-x/tests/testcase.bst
index e6e1fe0d2cb..7336420f134 100644
--- a/Build/source/texk/bibtex-x/tests/testcase.bst
+++ b/Build/source/texk/bibtex-x/tests/testcase.bst
@@ -1,3 +1,7 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
diff --git a/Build/source/texk/bibtex-x/tests/testchar.bst b/Build/source/texk/bibtex-x/tests/testchar.bst
index 9d5ce6e0011..45ff0bdd701 100644
--- a/Build/source/texk/bibtex-x/tests/testchar.bst
+++ b/Build/source/texk/bibtex-x/tests/testchar.bst
@@ -1,3 +1,7 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
diff --git a/Build/source/texk/bibtex-x/tests/testiscjk.bst b/Build/source/texk/bibtex-x/tests/testiscjk.bst
new file mode 100644
index 00000000000..1836581cd2d
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/testiscjk.bst
@@ -0,0 +1,47 @@
+% BibTeXu test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+%
+% Test for built-in functions is.cjk.str$ and is.kanji.str$
+
+ENTRY {field}{}{}
+
+FUNCTION {output_entry} {
+ "\item " field * write$
+ ": " field is.cjk.str$ int.to.str$ * write$
+ " " field is.kanji.str$ int.to.str$ * write$
+ " hz:" field is.cjk.str$ #1 & int.to.str$ * write$
+ " kn:" field is.cjk.str$ #2 & int.to.str$ * write$
+ " hg:" field is.cjk.str$ #4 & int.to.str$ * write$
+ " bp:" field is.cjk.str$ #8 & int.to.str$ * write$
+ " misc:" field is.cjk.str$ #2048 & int.to.str$ * write$
+ newline$
+}
+
+FUNCTION {type} {output_entry}
+
+READ
+
+FUNCTION {set_sortkey} {
+ field 'sort.key$ :=
+}
+
+ITERATE {set_sortkey}
+
+SORT
+
+FUNCTION {output_beg} {
+ "\section*{Test result}" write$ newline$
+ "\begin{itemize}" write$ newline$
+}
+
+FUNCTION {output_end} {
+ "\end{itemize}" write$ newline$
+ "\endinput" write$ newline$
+}
+
+EXECUTE {output_beg}
+
+ITERATE {call.type$}
+
+EXECUTE {output_end}
diff --git a/Build/source/texk/bibtex-x/tests/testiscjku.bib b/Build/source/texk/bibtex-x/tests/testiscjku.bib
new file mode 100644
index 00000000000..be03f14c313
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/testiscjku.bib
@@ -0,0 +1,66 @@
+@Type{ascii-1000, field = {ACDE iouy}, }
+
+@Type{latin1-1000, field = {ÅÇÐÈ îøüý}, }
+@Type{latin1-2000, field = {¢£§©®±µ¶}, }
+@Type{latinExtA-1000, field = {ĂĆĎĘ ĭőůŷ}, }
+
+@Type{greek-1000, field = {ΑΒΓΔφχψω}, }
+
+@Type{cyrillic-1000, field = {АБВГьэюя}, }
+
+@Type{kana-1000, field = {あいうえゐゑをん}, }
+@Type{kana-2000, field = {アイウエヰヱヲン}, }
+@Type{kana-3000, field = {アイウワヲン}, }
+@Type{katakana-phonetic-extensions-1000, field = {ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ}, }
+@Type{kana-ExtA-1000, field = {𛄀𛄁𛄂𛄃𛄄𛄅𛄆𛄇}, }
+@Type{kana-ExtB-1000, field = {𚿰𚿱𚿲𚿳𚿵𚿶𚿷𚿸}, }
+@Type{small-kana-Ext-1000, field = {𛅐𛅑𛅒𛅤𛅥𛅦𛅧}, }
+
+@Type{hanzi-1000, field = {一二三四漆捌玖拾}, }
+@Type{cjk-ideograph-ExtA-1000, field = {㐂㒵㓛㞍㟢㐆㐬㐮㔫㚑㐧}, }
+@Type{cjk-ideograph-ExtB-1000, field = {櫛杓𦥑𠮟𠀋𡈽𥝱𡚴}, }
+@Type{cjk-compatibility-ideograph-1000, field = {豈更車賈滑串句龜}, }
+@Type{cjk-ideograph-ExtC-1000, field = {𪜀𪜁𪜂𪜃𪜄𪜅𪜆𪜇}, }
+
+@Type{hangul-1000, field = {가나다라마한글텍}, }
+
+@Type{fullw-001, field = {#}, }
+@Type{fullw-002, field = {@}, }
+@Type{fullw-003, field = {A}, }
+@Type{fullw-004, field = {z}, }
+@Type{fullw-005, field = {£}, }
+@Type{fullw-006, field = {₩}, }
+@Type{fullw-007, field = {0}, }
+@Type{fullw-008, field = {9}, }
+
+@Type{symbol-101, field = {☀}, }
+@Type{symbol-102, field = {☁}, }
+@Type{symbol-103, field = {☂}, }
+@Type{symbol-104, field = {☃}, }
+@Type{symbol-105, field = {●}, }
+@Type{symbol-106, field = {△}, }
+@Type{symbol-107, field = {■}, }
+@Type{symbol-108, field = {◇}, }
+@Type{symbol-109, field = {\}, }
+
+@Type{hangul-jamo-1000, field = {ᄀᄁᄂᄃᇶᇷᇸᇹ}, }
+@Type{hangul-compatibilityjamo-1000, field = {ㄱㄲㄳㄴㆉㆊㆋㆌ}, }
+@Type{hangul-jamo-ExtA-1000, field = {ꥠꥡꥢꥣꥤꥥꥦꥧ}, }
+@Type{hangul-jamo-ExtB-1000, field = {ힰힱힲힳힴힵힶힷ}, }
+@Type{cjk-radical-supplement-1000, field = {⺐⺒⺓⺔⺖⺗⺘⺙⻭⻯⻲}, }
+@Type{kangxi-radicals-1000, field = {⿎⿏⿐⿑⿒⿓⿔⿕}, }
+@Type{ideographic-description-char-1000, field = {⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻}, }
+@Type{bopomofo-1000, field = {ㄅㄆㄇㄈㄦㄧㄨㄩ}, }
+@Type{bopomofo-extended-1000, field = {ㆠㆡㆢㆣㆤㆥㆦㆧ}, }
+@Type{kanbun-1000, field = {㆑㆒㆓㆔㆙㆚㆛㆜㆝㆞㆟}, }
+@Type{cjk-strokes-1000, field = {㇀㇁㇂㇃㇠㇡㇢㇣}, }
+
+@Type{cjk-symbols-and-punctuation-1000, field = {〄々〆〇【】〠〽}, }
+@Type{enclosed-cjk-letters-and-months-1000, field = {㈀㈁㈂㈠㈡㈢㈱㋐㋑㋒}, }
+@Type{cjk-compatibility-1000, field = {㌀㌁㌂㌃㌄㌅㌆㌇}, }
+@Type{cjk-compatibility-forms-1000, field = {︵︶︷︸︹︺︻︼︽︾}, }
+
+@Type{mix0, field = {mix てふ나비蝴蝶ㄏㄨˊㄉㄧㄝˊ⾍}, }
+@Type{mix1, field = {mix てふ蝴蝶}, }
+@Type{mix2, field = {mix 蝴蝶ㄏㄨˊㄉㄧㄝˊ⾍}, }
+@Type{mix3, field = {mix 나비蝴蝶}, }
diff --git a/Build/source/texk/bibtex-x/tests/testname.bst b/Build/source/texk/bibtex-x/tests/testname.bst
new file mode 100644
index 00000000000..648048bda7a
--- /dev/null
+++ b/Build/source/texk/bibtex-x/tests/testname.bst
@@ -0,0 +1,64 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
+ENTRY {author}{}{}
+
+STRINGS { s }
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { " [" nameptr int.to.str$ * "]" * write$
+ " {ff} " s nameptr "{ff}" format.name$ * write$
+ " {ll} " s nameptr "{ll}" format.name$ * write$
+ " {vv} " s nameptr "{vv}" format.name$ * write$
+ " {jj} " s nameptr "{jj}" format.name$ * write$ newline$
+ " | " s nameptr "{ff}{vv}{ll}{jj}" format.name$ * write$
+ " | " s nameptr "{ff }{vv }{ll}{ jj}" format.name$ * write$
+ " | " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * write$
+ " | " s nameptr "{f.~}{v.~}{ll}{, jj}" format.name$ * write$
+ newline$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {output_entry} {
+ "\item " author * write$ newline$
+ author format.names
+}
+
+FUNCTION {book} {output_entry}
+
+READ
+
+FUNCTION {set_sortkey} {
+ author 'sort.key$ :=
+}
+
+ITERATE {set_sortkey}
+
+SORT
+
+FUNCTION {output_beg} {
+ "\section*{Test result}" write$ newline$
+ "\begin{itemize}" write$ newline$
+}
+
+FUNCTION {output_end} {
+ "\end{itemize}" write$ newline$
+ "\endinput" write$ newline$
+}
+
+EXECUTE {output_beg}
+
+ITERATE {call.type$}
+
+EXECUTE {output_end}
diff --git a/Build/source/texk/bibtex-x/tests/testperiod.bst b/Build/source/texk/bibtex-x/tests/testperiod.bst
index 3b58e98ae54..736caa09353 100644
--- a/Build/source/texk/bibtex-x/tests/testperiod.bst
+++ b/Build/source/texk/bibtex-x/tests/testperiod.bst
@@ -1,3 +1,7 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
diff --git a/Build/source/texk/bibtex-x/tests/testperioda.bib b/Build/source/texk/bibtex-x/tests/testperioda.bib
index 61212461f4b..047ad091dca 100644
--- a/Build/source/texk/bibtex-x/tests/testperioda.bib
+++ b/Build/source/texk/bibtex-x/tests/testperioda.bib
@@ -3,4 +3,6 @@
@Type{abc2, field = {ABC xyz!}, }
@Type{abc3, field = {ABC xyz?}, }
@Type{abc4, field = {ABC xyz,}, }
+@Type{abc5, field = {ABC {xyz!}}, }
+@Type{abc6, field = {ABC {{xyz?}}}, }
diff --git a/Build/source/texk/bibtex-x/tests/testperiodu.bib b/Build/source/texk/bibtex-x/tests/testperiodu.bib
index 0f63becfb6f..e6bd30ba548 100644
--- a/Build/source/texk/bibtex-x/tests/testperiodu.bib
+++ b/Build/source/texk/bibtex-x/tests/testperiodu.bib
@@ -3,12 +3,16 @@
@Type{abc2, field = {ABC xyz!}, }
@Type{abc3, field = {ABC xyz?}, }
@Type{abc4, field = {ABC xyz,}, }
+@Type{abc5, field = {ABC {xyz!}}, }
+@Type{abc6, field = {ABC {{xyz?}}}, }
@Type{cyrillic0, field = {АБВ эюя}, }
@Type{cyrillic1, field = {АБВ эюя.}, }
@Type{cyrillic2, field = {АБВ эюя!}, }
@Type{cyrillic3, field = {АБВ эюя?}, }
@Type{cyrillic4, field = {АБВ эюя,}, }
+@Type{cyrillic5, field = {АБВ {эюя!}}, }
+@Type{cyrillic6, field = {АБВ {{эюя?}}}, }
@Type{aiu0, field = {あいうわおん}, }
@Type{aiu1, field = {あいうわおん。}, }
@@ -22,4 +26,8 @@
@Type{aiu9, field = {あいうわおん‽}, }
@Type{aiuA, field = {あいうわおん、}, }
@Type{aiuB, field = {あいうわおん,}, }
+@Type{aiuC, field = {あいうわ{おん!}}, }
+@Type{aiuD, field = {あいうわ{{おん?}}}, }
+@Type{aiuE, field = {あいうわ{{{おん‼}}}}, }
+@Type{aiuF, field = {あいうわ{{{{おん⁇}}}}}, }
diff --git a/Build/source/texk/bibtex-x/tests/testsubstr.bst b/Build/source/texk/bibtex-x/tests/testsubstr.bst
index 146bd94bfb6..7da2e11b9e3 100644
--- a/Build/source/texk/bibtex-x/tests/testsubstr.bst
+++ b/Build/source/texk/bibtex-x/tests/testsubstr.bst
@@ -1,28 +1,30 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
"\item[orig] " field * write$ newline$
- "\item[1 1] " field #1 #1 substring$ * write$ newline$
- "\item[1 2] " field #1 #2 substring$ * write$ newline$
- "\item[1 3] " field #1 #3 substring$ * write$ newline$
- "\item[1 4] " field #1 #4 substring$ * write$ newline$
"\item[1 5] " field #1 #5 substring$ * write$ newline$
- "\item[1 6] " field #1 #6 substring$ * write$ newline$
- "\item[1 7] " field #1 #7 substring$ * write$ newline$
+ "\item[1 4] " field #1 #4 substring$ * write$ newline$
+ "\item[1 3] " field #1 #3 substring$ * write$ newline$
+ "\item[1 2] " field #1 #2 substring$ * write$ newline$
"\item[1 1] " field #1 #1 substring$ * write$ newline$
"\item[2 1] " field #2 #1 substring$ * write$ newline$
"\item[3 1] " field #3 #1 substring$ * write$ newline$
"\item[4 1] " field #4 #1 substring$ * write$ newline$
"\item[5 1] " field #5 #1 substring$ * write$ newline$
- "\item[6 1] " field #6 #1 substring$ * write$ newline$
- "\item[7 1] " field #7 #1 substring$ * write$ newline$
- "\item[1 7] " field #1 #7 substring$ * write$ newline$
- "\item[2 6] " field #2 #6 substring$ * write$ newline$
+ "\item[1 5] " field #1 #5 substring$ * write$ newline$
+ "\item[2 5] " field #2 #5 substring$ * write$ newline$
"\item[3 5] " field #3 #5 substring$ * write$ newline$
- "\item[4 4] " field #4 #4 substring$ * write$ newline$
- "\item[5 3] " field #5 #3 substring$ * write$ newline$
- "\item[6 2] " field #6 #2 substring$ * write$ newline$
- "\item[7 1] " field #7 #1 substring$ * write$ newline$
+ "\item[4 5] " field #4 #5 substring$ * write$ newline$
+ "\item[5 5] " field #5 #5 substring$ * write$ newline$
+ "\item[1 5] " field #1 #5 substring$ * write$ newline$
+ "\item[2 4] " field #2 #4 substring$ * write$ newline$
+ "\item[3 3] " field #3 #3 substring$ * write$ newline$
+ "\item[4 2] " field #4 #2 substring$ * write$ newline$
+ "\item[5 1] " field #5 #1 substring$ * write$ newline$
"\item[1 8] " field #1 #8 substring$ * write$ newline$
"\item[2 7] " field #2 #7 substring$ * write$ newline$
"\item[3 6] " field #3 #6 substring$ * write$ newline$
@@ -31,26 +33,25 @@ FUNCTION {output_entry} {
"\item[6 3] " field #6 #3 substring$ * write$ newline$
"\item[7 2] " field #7 #2 substring$ * write$ newline$
"\item[8 1] " field #8 #1 substring$ * write$ newline$
- "\item[-1 1] " field #-1 #1 substring$ * write$ newline$
- "\item[-1 2] " field #-1 #2 substring$ * write$ newline$
- "\item[-1 3] " field #-1 #3 substring$ * write$ newline$
+ "\item[-1 5] " field #-1 #5 substring$ * write$ newline$
"\item[-1 4] " field #-1 #4 substring$ * write$ newline$
+ "\item[-1 3] " field #-1 #3 substring$ * write$ newline$
+ "\item[-1 2] " field #-1 #2 substring$ * write$ newline$
+ "\item[-1 1] " field #-1 #1 substring$ * write$ newline$
+ "\item[-2 1] " field #-2 #1 substring$ * write$ newline$
+ "\item[-3 1] " field #-3 #1 substring$ * write$ newline$
+ "\item[-4 1] " field #-4 #1 substring$ * write$ newline$
+ "\item[-5 1] " field #-5 #1 substring$ * write$ newline$
"\item[-1 5] " field #-1 #5 substring$ * write$ newline$
- "\item[-1 6] " field #-1 #6 substring$ * write$ newline$
- "\item[-1 7] " field #-1 #7 substring$ * write$ newline$
- "\item[-2 7] " field #-2 #7 substring$ * write$ newline$
- "\item[-3 7] " field #-3 #7 substring$ * write$ newline$
- "\item[-4 7] " field #-4 #7 substring$ * write$ newline$
- "\item[-5 7] " field #-5 #7 substring$ * write$ newline$
- "\item[-6 7] " field #-6 #7 substring$ * write$ newline$
- "\item[-7 7] " field #-7 #7 substring$ * write$ newline$
- "\item[-1 7] " field #-1 #7 substring$ * write$ newline$
- "\item[-2 6] " field #-2 #6 substring$ * write$ newline$
+ "\item[-2 5] " field #-2 #5 substring$ * write$ newline$
"\item[-3 5] " field #-3 #5 substring$ * write$ newline$
- "\item[-4 4] " field #-4 #4 substring$ * write$ newline$
- "\item[-5 3] " field #-5 #3 substring$ * write$ newline$
- "\item[-6 2] " field #-6 #2 substring$ * write$ newline$
- "\item[-7 1] " field #-7 #1 substring$ * write$ newline$
+ "\item[-4 5] " field #-4 #5 substring$ * write$ newline$
+ "\item[-5 5] " field #-5 #5 substring$ * write$ newline$
+ "\item[-1 5] " field #-1 #5 substring$ * write$ newline$
+ "\item[-2 4] " field #-2 #4 substring$ * write$ newline$
+ "\item[-3 3] " field #-3 #3 substring$ * write$ newline$
+ "\item[-4 2] " field #-4 #2 substring$ * write$ newline$
+ "\item[-5 1] " field #-5 #1 substring$ * write$ newline$
"\item[-1 8] " field #-1 #8 substring$ * write$ newline$
"\item[-2 7] " field #-2 #7 substring$ * write$ newline$
"\item[-3 6] " field #-3 #6 substring$ * write$ newline$
diff --git a/Build/source/texk/bibtex-x/tests/testsubstra.bib b/Build/source/texk/bibtex-x/tests/testsubstra.bib
index 2b5f67c0722..ab1b6b9b227 100644
--- a/Build/source/texk/bibtex-x/tests/testsubstra.bib
+++ b/Build/source/texk/bibtex-x/tests/testsubstra.bib
@@ -1,8 +1,17 @@
@Type{ascii,
field = {ABCDEFG tuvwxyz},
}
+@Type{ascii-a,
+ field = {{AB}CDEFG tuvwx{yz}},
+}
+@Type{ascii-b,
+ field = {{{AB}CD}EFG tuv{wx{yz}}},
+}
@Type{latin1,
field = {~},
}
+@Type{latin1-b,
+ field = {{{}}~{{}}},
+}
diff --git a/Build/source/texk/bibtex-x/tests/testsubstru.bib b/Build/source/texk/bibtex-x/tests/testsubstru.bib
index 60ff348c8b9..c4919faad5c 100644
--- a/Build/source/texk/bibtex-x/tests/testsubstru.bib
+++ b/Build/source/texk/bibtex-x/tests/testsubstru.bib
@@ -1,10 +1,19 @@
@Type{ascii,
field = {ABCDEFG tuvwxyz},
}
+@Type{ascii-a,
+ field = {{AB}CDEFG tuvwx{yz}},
+}
+@Type{ascii-b,
+ field = {{{AB}CD}EFG tuv{wx{yz}}},
+}
@Type{latin1,
field = {ÅÇÈÎØÜÝ~åçèîøüý},
}
+@Type{latin1-b,
+ field = {{{ÅÇ}ÈÎ}ØÜÝ~åçè{îø{üý}}},
+}
@Type{greek,
field = {ΑΒΓΔΕΖΗ στυφχψω},
@@ -21,10 +30,16 @@
@Type{hanzi,
field = {一二三四五六七 肆伍陸漆捌玖拾},
}
+@Type{hanzi-b,
+ field = {{{一二}三四}五六七 肆伍陸{漆捌{玖拾}}},
+}
@Type{hanzi2,
field = {櫛杓屠冤𦥑𠮟𠀋𡈽𥝱𨦇𡚴𠷡𧘕𧘔𩸽},
}
+@Type{hanzi2-b,
+ field = {{{櫛杓}屠冤}𦥑𠮟𠀋𡈽𥝱𨦇𡚴{𠷡𧘕{𧘔𩸽}}},
+}
@Type{mix,
field = {AÇう冤EÜЖ~tçユ漆𡚴xюω},
diff --git a/Build/source/texk/bibtex-x/tests/testtxtprfx.bst b/Build/source/texk/bibtex-x/tests/testtxtprfx.bst
index d09c8ebc2fe..2d501059949 100644
--- a/Build/source/texk/bibtex-x/tests/testtxtprfx.bst
+++ b/Build/source/texk/bibtex-x/tests/testtxtprfx.bst
@@ -1,3 +1,7 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
diff --git a/Build/source/texk/bibtex-x/tests/testwidth.bst b/Build/source/texk/bibtex-x/tests/testwidth.bst
index 600ff28a74d..e8bb929bd0a 100644
--- a/Build/source/texk/bibtex-x/tests/testwidth.bst
+++ b/Build/source/texk/bibtex-x/tests/testwidth.bst
@@ -1,3 +1,7 @@
+% BibTeX test style file
+% Copyright 2022 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+% You may freely use, modify and/or distribute this file.
+
ENTRY {field}{}{}
FUNCTION {output_entry} {
diff --git a/Build/source/texk/bibtex-x/tests/testwidtha.bib b/Build/source/texk/bibtex-x/tests/testwidtha.bib
index 58ebae66192..f4cd21e57f7 100644
--- a/Build/source/texk/bibtex-x/tests/testwidtha.bib
+++ b/Build/source/texk/bibtex-x/tests/testwidtha.bib
@@ -149,3 +149,7 @@
@Type{latin1-0FE, field = {}, }
@Type{latin1-0FF, field = {}, }
+@Type{ascii-long-100, field = {LONG long LONG long LONG long LONG long LONG long LONG long LONG long LONG long}, }
+@Type{ascii-long-101, field = {LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong LONG long}, }
+@Type{latin1-long-100, field = { }, }
+@Type{latin1-long-101, field = { }, }
diff --git a/Build/source/texk/bibtex-x/tests/testwidthu.bib b/Build/source/texk/bibtex-x/tests/testwidthu.bib
index d3a84553d0c..71ef3dba7c2 100644
--- a/Build/source/texk/bibtex-x/tests/testwidthu.bib
+++ b/Build/source/texk/bibtex-x/tests/testwidthu.bib
@@ -346,3 +346,33 @@
@Type{symbol-107, field = {■}, }
@Type{symbol-108, field = {◇}, }
+@Type{ascii-long-100, field = {L LONG long LONG long LONG long LONG long LONG long LONG long LONG long LONG long}, }
+@Type{ascii-long-101, field = {L LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong LONG long}, }
+@Type{ascii-long-102, field = {L LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONG{long} LONG long}, }
+@Type{ascii-long-103, field = {L LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong\\ LONG long}, }
+@Type{ascii-long-104, field = {L longlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong LONG long}, }
+@Type{latin1-long-100, field = {L ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý}, }
+@Type{latin1-long-101, field = {L ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüý ÅÇÐÈ îøüý}, }
+@Type{latin1-long-102, field = {L ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈ{îøüý} ÅÇÐÈ îøüý}, }
+@Type{latin1-long-103, field = {L ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüý\\ ÅÇÐÈ îøüý}, }
+@Type{latin1-long-104, field = {L ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈiouý ÅÇÐÈ îøüý}, }
+@Type{latin1-long-105, field = {L ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈiouy ÅÇÐÈ îøüý}, }
+@Type{latinEA-long-100, field = {L ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ}, }
+@Type{latinEA-long-101, field = {L ĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷ ĂĆĎĘ ĭőůŷ}, }
+@Type{greek-long-100, field = {L ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω}, }
+@Type{greek-long-101, field = {L ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψω ΑΒΓΔ φχψω}, }
+@Type{greek-long-102, field = {L ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔ{φχψω} ΑΒΓΔ φχψω}, }
+@Type{greek-long-103, field = {L ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψω\\ ΑΒΓΔ φχψω}, }
+@Type{greek-long-104, field = {L ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔiouΓ ABCD φχψω}, }
+@Type{cyrillic-long-100,field = {L АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя}, }
+@Type{cyrillic-long-101,field = {L АБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюя АБВГ ьэюя}, }
+@Type{hanzi-long-100, field = {L 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾}, }
+@Type{hanzi-long-101, field = {L 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾 一二三 捌玖拾}, }
+@Type{hanzi-long-102, field = {L 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三{捌玖拾} 一二三 捌玖拾}, }
+@Type{hanzi-long-103, field = {L 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾\\ 一二三 捌玖拾}, }
+@Type{hanzi-long-200, field = {L 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱}, }
+@Type{hanzi-long-201, field = {L 冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱}, }
+@Type{hagul-long-100, field = {L 가나다 한글텍 가나다 한글텍 가나다 한글텍 가나다 한글텍 가나다 한글텍 가나다 한글텍 가나다 한글텍}, }
+@Type{hagul-long-101, field = {L 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍 가나다 한글텍}, }
+@Type{hagul-long-102, field = {L 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다{한글텍} 가나다 한글텍}, }
+@Type{hagul-long-103, field = {L 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍\\ 가나다 한글텍}, }
diff --git a/Build/source/texk/bibtex-x/tests/txtprfxa.bbl b/Build/source/texk/bibtex-x/tests/txtprfxa.bbl
index d18d6e7a42e..c50f2c955ff 100644
--- a/Build/source/texk/bibtex-x/tests/txtprfxa.bbl
+++ b/Build/source/texk/bibtex-x/tests/txtprfxa.bbl
@@ -9,6 +9,24 @@
\item[5] ABCDE
\item[6] ABCDEF
\item[7] ABCDEFG
+\item[orig] {AB}CDEFG tuvwx{yz}
+\item[len] 15
+\item[1] {A}
+\item[2] {AB}
+\item[3] {AB}C
+\item[4] {AB}CD
+\item[5] {AB}CDE
+\item[6] {AB}CDEF
+\item[7] {AB}CDEFG
+\item[orig] {{AB}CD}EFG tuv{wx{yz}}
+\item[len] 15
+\item[1] {{A}}
+\item[2] {{AB}}
+\item[3] {{AB}C}
+\item[4] {{AB}CD}
+\item[5] {{AB}CD}E
+\item[6] {{AB}CD}EF
+\item[7] {{AB}CD}EFG
\item[orig] ~
\item[len] 15
\item[1]
@@ -18,5 +36,14 @@
\item[5]
\item[6]
\item[7]
+\item[orig] {{}}~{{}}
+\item[len] 15
+\item[1] {{}}
+\item[2] {{}}
+\item[3] {{}}
+\item[4] {{}}
+\item[5] {{}}
+\item[6] {{}}
+\item[7] {{}}
\end{itemize}
\endinput
diff --git a/Build/source/texk/bibtex-x/tests/txtprfxu.bbl b/Build/source/texk/bibtex-x/tests/txtprfxu.bbl
index 2c7719e4dc0..502400ae128 100644
--- a/Build/source/texk/bibtex-x/tests/txtprfxu.bbl
+++ b/Build/source/texk/bibtex-x/tests/txtprfxu.bbl
@@ -27,6 +27,52 @@
\item[5] AÇう冤E
\item[6] AÇう冤EÜ
\item[7] AÇう冤EÜЖ
+\item[orig] {AB}CDEFG tuvwx{yz}
+\item[len] 15
+\item[1] {A}
+\item[2] {AB}
+\item[3] {AB}C
+\item[4] {AB}CD
+\item[5] {AB}CDE
+\item[6] {AB}CDEF
+\item[7] {AB}CDEFG
+\item[orig] {{AB}CD}EFG tuv{wx{yz}}
+\item[len] 15
+\item[1] {{A}}
+\item[2] {{AB}}
+\item[3] {{AB}C}
+\item[4] {{AB}CD}
+\item[5] {{AB}CD}E
+\item[6] {{AB}CD}EF
+\item[7] {{AB}CD}EFG
+\item[orig] {{ÅÇ}ÈÎ}ØÜÝ~åçè{îø{üý}}
+\item[len] 15
+\item[1] {{Å}}
+\item[2] {{ÅÇ}}
+\item[3] {{ÅÇ}È}
+\item[4] {{ÅÇ}ÈÎ}
+\item[5] {{ÅÇ}ÈÎ}Ø
+\item[6] {{ÅÇ}ÈÎ}ØÜ
+\item[7] {{ÅÇ}ÈÎ}ØÜÝ
+\item[orig] {{一二}三四}五六七 肆伍陸{漆捌{玖拾}}
+\item[len] 15
+\item[1] {{一}}
+\item[2] {{一二}}
+\item[3] {{一二}三}
+\item[4] {{一二}三四}
+\item[5] {{一二}三四}五
+\item[6] {{一二}三四}五六
+\item[7] {{一二}三四}五六七
+\item[orig]
+ {{櫛杓}屠冤}𦥑𠮟𠀋𡈽𥝱𨦇𡚴{𠷡𧘕{𧘔𩸽}}
+\item[len] 15
+\item[1] {{櫛}}
+\item[2] {{櫛杓}}
+\item[3] {{櫛杓}屠}
+\item[4] {{櫛杓}屠冤}
+\item[5] {{櫛杓}屠冤}𦥑
+\item[6] {{櫛杓}屠冤}𦥑𠮟
+\item[7] {{櫛杓}屠冤}𦥑𠮟𠀋
\item[orig] ΑΒΓΔΕΖΗ στυφχψω
\item[len] 15
\item[1] Α
diff --git a/Build/source/texk/bibtex-x/tests/widtha.bbl b/Build/source/texk/bibtex-x/tests/widtha.bbl
index 0f49d0834fb..b4714f5fdba 100644
--- a/Build/source/texk/bibtex-x/tests/widtha.bbl
+++ b/Build/source/texk/bibtex-x/tests/widtha.bbl
@@ -20,6 +20,9 @@
\item 750
\item 903
\item 5057
+\item 37067
+
+\item 38788
\item 500 a
\item 500
\item 500
@@ -69,6 +72,10 @@
\item 778 K
\item 528 k
\item 625 L
+\item 42346 LONG long LONG long LONG long LONG long LONG long LONG long LONG
+ long LONG long
+\item 43504 LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong
+ LONG long
\item 278 l
\item 917 M
\item 833 m
diff --git a/Build/source/texk/bibtex-x/tests/widthu.bbl b/Build/source/texk/bibtex-x/tests/widthu.bbl
index 3e06ed472a7..d5f87de5750 100644
--- a/Build/source/texk/bibtex-x/tests/widthu.bbl
+++ b/Build/source/texk/bibtex-x/tests/widthu.bbl
@@ -105,6 +105,85 @@
\item 625 Ĺ
\item 625 Ľ
\item 625 Ļ
+\item 37970 L ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ
+ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ ĂĆĎĘ ĭőůŷ
+\item 39691 L
+ ĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷĂĆĎĘĭőůŷ
+ ĂĆĎĘ ĭőůŷ
+\item 37970 L ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ
+ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý ÅÇÐÈ îøüý
+\item 39691 L
+ ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈiouy
+ ÅÇÐÈ îøüý
+\item 39691 L
+ ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈiouý
+ ÅÇÐÈ îøüý
+\item 39691 L
+ ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüý
+ ÅÇÐÈ îøüý
+\item 40691 L
+ ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüý\\
+ ÅÇÐÈ îøüý
+\item 40691 L
+ ÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈîøüýÅÇÐÈ{îøüý}
+ ÅÇÐÈ îøüý
+\item 43249 L LONG long LONG long LONG long LONG long LONG long LONG long LONG
+ long LONG long
+\item 44407 L LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong
+ LONG long
+\item 45407 L
+ LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong\\ LONG long
+\item 45407 L
+ LONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONG{long} LONG long
+\item 43303 L longlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlongLONGlong
+ LONG long
+\item 43717 L ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ
+ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω ΑΒΓΔ φχψω
+\item 45637 L
+ ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔiouΓ
+ ABCD φχψω
+\item 47259 L
+ ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔ{φχψω}
+ ΑΒΓΔ φχψω
+\item 46259 L
+ ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψω
+ ΑΒΓΔ φχψω
+\item 47259 L
+ ΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψωΑΒΓΔφχψω\\
+ ΑΒΓΔ φχψω
+\item 43717 L АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ
+ ьэюя АБВГ ьэюя АБВГ ьэюя АБВГ ьэюя
+\item 46259 L
+ АБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюяАБВГьэюя
+ АБВГ ьэюя
+\item 46517 L 가나다 한글텍 가나다 한글텍 가나다 한글텍
+ 가나다 한글텍 가나다 한글텍 가나다 한글텍 가나다
+ 한글텍
+\item 44459 L
+ 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다{한글텍}
+ 가나다 한글텍
+\item 43459 L
+ 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍
+ 가나다 한글텍
+\item 44459 L
+ 가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍가나다한글텍\\
+ 가나다 한글텍
+\item 46517 L 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾
+ 一二三 捌玖拾 一二三 捌玖拾 一二三 捌玖拾 一二三
+ 捌玖拾
+\item 44459 L
+ 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三{捌玖拾}
+ 一二三 捌玖拾
+\item 43459 L
+ 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾 一二三 捌玖拾
+\item 44459 L
+ 一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾一二三捌玖拾\\
+ 一二三 捌玖拾
+\item 46517 L 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟
+ 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱 冤𦥑𠮟
+ 𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱
+\item 43459 L
+ 冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱冤𦥑𠮟𠀋𡈽𥝱 冤𦥑𠮟 𠀋𡈽𥝱
\item 917 M
\item 750 N
\item 750 Ń
diff --git a/Build/source/texk/bibtex-x/utils.c b/Build/source/texk/bibtex-x/utils.c
index 02cef72ddb7..5a7b973dffa 100644
--- a/Build/source/texk/bibtex-x/utils.c
+++ b/Build/source/texk/bibtex-x/utils.c
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: utils.c,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: utils.c
**
** DESCRIPTION
**
diff --git a/Build/source/texk/bibtex-x/utils.h b/Build/source/texk/bibtex-x/utils.h
index f75e0760bff..334a7b11e5b 100644
--- a/Build/source/texk/bibtex-x/utils.h
+++ b/Build/source/texk/bibtex-x/utils.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: utils.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: utils.h
**
** DESCRIPTION
**
diff --git a/Build/source/texk/bibtex-x/version.h b/Build/source/texk/bibtex-x/version.h
index 759c78fb660..55ae788527b 100644
--- a/Build/source/texk/bibtex-x/version.h
+++ b/Build/source/texk/bibtex-x/version.h
@@ -4,9 +4,7 @@
**
** MODULE
**
-** $RCSfile: version.h,v $
-** $Revision: 3.71 $
-** $Date: 1996/08/18 20:37:06 $
+** file: version.h
**
** DESCRIPTION
**
@@ -91,7 +89,7 @@
*/
#ifndef __VERSION_H__
# define __VERSION_H__ 1
-# define PACKAGE_DATE "(21 apr 2022)"
+# define PACKAGE_DATE "(29 apr 2022)"
# define VERSION PACKAGE_VERSION " " PACKAGE_DATE
#endif /* __VERSION_H__ */