From ba00fec507cef3bfe1dc6619e1cdff812d58713a Mon Sep 17 00:00:00 2001 From: Takuji Tanaka Date: Mon, 29 Apr 2024 14:27:21 +0000 Subject: omegafonts: ver.2.2, Extend maximum character code git-svn-id: svn://tug.org/texlive/trunk@71118 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/help.h | 3 + Build/source/texk/web2c/omegafonts/ChangeLog | 13 +++ Build/source/texk/web2c/omegafonts/Makefile.am | 5 +- Build/source/texk/web2c/omegafonts/Makefile.in | 11 +- Build/source/texk/web2c/omegafonts/char_routines.c | 8 +- Build/source/texk/web2c/omegafonts/omfonts.c | 18 ++-- Build/source/texk/web2c/omegafonts/omfonts.h | 1 + Build/source/texk/web2c/omegafonts/out_ofm.c | 1 + Build/source/texk/web2c/omegafonts/overbmp.test | 24 +++++ Build/source/texk/web2c/omegafonts/parse_ofm.c | 4 +- .../source/texk/web2c/omegafonts/tests/adbjpn.opl | 22 ++++ Build/source/texk/web2c/omegafonts/tests/inbmp.opl | 12 +++ .../source/texk/web2c/omegafonts/tests/overbmp.opl | 6 ++ .../source/texk/web2c/omegafonts/tests/overbmp.ovp | 14 +++ .../source/texk/web2c/omegafonts/tests/overucs.opl | 46 +++++++++ .../source/texk/web2c/omegafonts/tests/overucs.ovp | 111 +++++++++++++++++++++ 16 files changed, 279 insertions(+), 20 deletions(-) create mode 100644 Build/source/texk/web2c/omegafonts/tests/adbjpn.opl create mode 100644 Build/source/texk/web2c/omegafonts/tests/overucs.opl create mode 100644 Build/source/texk/web2c/omegafonts/tests/overucs.ovp (limited to 'Build/source/texk') diff --git a/Build/source/texk/web2c/help.h b/Build/source/texk/web2c/help.h index 37f64b4e249..00737bb898a 100644 --- a/Build/source/texk/web2c/help.h +++ b/Build/source/texk/web2c/help.h @@ -350,6 +350,9 @@ const_string OVP2OVFHELP[] = { " Default OVFFILE is basename of OVPFILE extended with `.ovf'.", " Default OFMFILE is basename of OVFFILE extended with `.ofm'.", "", +#ifdef OMFONTS + "-omit-ofm do not output OFMFILE", +#endif "-help display this help and exit", "-verbose display progress reports", "-version output version information and exit", diff --git a/Build/source/texk/web2c/omegafonts/ChangeLog b/Build/source/texk/web2c/omegafonts/ChangeLog index d7df7a08bf6..7ee9ac9b7dc 100644 --- a/Build/source/texk/web2c/omegafonts/ChangeLog +++ b/Build/source/texk/web2c/omegafonts/ChangeLog @@ -1,3 +1,16 @@ +2024-04-29 TANAKA Takuji + + * omfonts.{c,h}, out_ofm.c: + Add new option '-omit-ofm' for 'omfonts -ovp2ovf' + * parse_ofm.c, char_routines.c: + Extend maximum character code from 0x10FFFF to 0xFFFFFF + to support new encoding of upTeX for combining characters. + https://github.com/texjporg/tex-jp-build/issues/46 + * overbmp.test, tests/inbmp.opl, tests/over{bmp,ucs}.{opl,ovp}, + tests/adbjpn.opl, Makefile.am: Update tests. + + * omfonts.c: Version 2.2. + 2023-09-03 TANAKA Takuji * {check,repeat,selectfont}.test: Update tests for Windows. diff --git a/Build/source/texk/web2c/omegafonts/Makefile.am b/Build/source/texk/web2c/omegafonts/Makefile.am index b7bcd38784a..f52580aa46f 100644 --- a/Build/source/texk/web2c/omegafonts/Makefile.am +++ b/Build/source/texk/web2c/omegafonts/Makefile.am @@ -153,8 +153,9 @@ DISTCLEANFILES += tests/Cherokee.tfm tests/OCherokee.ofm \ tests/OCherokee.opl tests/OCherokee.ovf \ tests/xCherokee.* tests/xOCherokee.* ## overbmp.test -EXTRA_DIST += tests/inbmp.opl tests/overbmp.opl tests/overbmp.ovp -DISTCLEANFILES += tests/xinbmp* tests/xoverbmp* +EXTRA_DIST += tests/inbmp.opl tests/overbmp.opl tests/overbmp.ovp \ + tests/overucs.opl tests/overucs.ovp adbjpn.opl +DISTCLEANFILES += tests/xinbmp* tests/xoverbmp* tests/xoverucs* tests/xadbjpn* ## realnum.test EXTRA_DIST += tests/realnum.opl tests/realnum.out DISTCLEANFILES += tests/realnum.* diff --git a/Build/source/texk/web2c/omegafonts/Makefile.in b/Build/source/texk/web2c/omegafonts/Makefile.in index 99e5f6328ca..a63ee7d60b2 100644 --- a/Build/source/texk/web2c/omegafonts/Makefile.in +++ b/Build/source/texk/web2c/omegafonts/Makefile.in @@ -108,7 +108,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/web2c-disable.m4 \ $(top_srcdir)/../../m4/kpse-harfbuzz-flags.m4 \ $(top_srcdir)/../../m4/kpse-icu-flags.m4 \ $(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \ - $(top_srcdir)/../../m4/kpse-largefile.m4 \ $(top_srcdir)/../../m4/kpse-lex.m4 \ $(top_srcdir)/../../m4/kpse-lib-version.m4 \ $(top_srcdir)/../../m4/kpse-libpng-flags.m4 \ @@ -752,10 +751,11 @@ DISTCLEANFILES = pl-parser.output bad*.* tests/charwdr.* \ tests/xofont* tests/Cherokee.tfm tests/OCherokee.ofm \ tests/OCherokee.opl tests/OCherokee.ovf tests/xCherokee.* \ tests/xOCherokee.* tests/xinbmp* tests/xoverbmp* \ - tests/realnum.* tests/xrepeated.* tests/sample*.ofm \ - tests/sample*.ovf tests/sample1-h.opl tests/xsample*.out \ - tests/shortend.* tests/specialhex.ofm tests/specialhex.opl \ - tests/specialhex.ovf tests/xspecialhex.* tests/*yarabic* + tests/xoverucs* tests/xadbjpn* tests/realnum.* \ + tests/xrepeated.* tests/sample*.ofm tests/sample*.ovf \ + tests/sample1-h.opl tests/xsample*.out tests/shortend.* \ + tests/specialhex.ofm tests/specialhex.opl tests/specialhex.ovf \ + tests/xspecialhex.* tests/*yarabic* linked_programs = ofm2opl opl2ofm ovf2ovp ovp2ovf bin_links = \ omfonts$(EXEEXT):ofm2opl \ @@ -782,6 +782,7 @@ EXTRA_DIST = $(OMFONTS_tests) tests/badofm.ofm tests/badopl.opl \ tests/ofontv5.opl tests/ofontv5.ovp tests/ofontv6.opl \ tests/ofontv6.ovp tests/Cherokee.pl tests/OCherokee.ovp \ tests/inbmp.opl tests/overbmp.opl tests/overbmp.ovp \ + tests/overucs.opl tests/overucs.ovp adbjpn.opl \ tests/realnum.opl tests/realnum.out tests/repeat.opl \ tests/repeated.opl tests/sample.out tests/sample.ovp \ tests/sample0-h.opl tests/shorten.opl tests/specialhex.ovp \ diff --git a/Build/source/texk/web2c/omegafonts/char_routines.c b/Build/source/texk/web2c/omegafonts/char_routines.c index 75d370f27d0..61f2fbe4214 100644 --- a/Build/source/texk/web2c/omegafonts/char_routines.c +++ b/Build/source/texk/web2c/omegafonts/char_routines.c @@ -986,16 +986,16 @@ compute_ofm_character_info(void) break; } case OFM_LEVEL0: { - if (ec>0x10ffff) + if (ec>0xffffff) fatal_error_1( - "Char (%x) too big for OFM level-0 (max 10ffff); use level-2", + "Char (%x) too big for OFM level-0 (max ffffff); use level-2", ec); break; } case OFM_LEVEL1: { - if (ec>0x10ffff) + if (ec>0xffffff) fatal_error_1( - "Char (%x) too big for OFM level-1 (max 10ffff); use level-2", + "Char (%x) too big for OFM level-1 (max ffffff); use level-2", ec); num_char_info = 0; for (c = bc; c <= ec; c++) { diff --git a/Build/source/texk/web2c/omegafonts/omfonts.c b/Build/source/texk/web2c/omegafonts/omfonts.c index 7e8d4d2fa34..9bd87d27b5b 100644 --- a/Build/source/texk/web2c/omegafonts/omfonts.c +++ b/Build/source/texk/web2c/omegafonts/omfonts.c @@ -54,6 +54,7 @@ int verbose_option; int char_format = CHAR_CODE_NUM; int num_format = NUM_CODE_HEX; int text_format = TEXT_CODE_MIXED; +int omit_ofm = 0; int program; @@ -91,11 +92,11 @@ static const_string names_program[PROG_NUM] = static const_string *names_help[PROG_NUM] = { OFM2OPLHELP, OPL2OFMHELP, OVF2OVPHELP, OVP2OVFHELP, OMFONTSHELP }; static const_string names_msg[PROG_NUM] = { - "This is ofm2opl, Version 2.1", - "This is opl2ofm, Version 2.1", - "This is ovf2ovp, Version 2.1", - "This is ovp2ovf, Version 2.1", - "This is omfonts, Version 2.1" + "This is ofm2opl, Version 2.2", + "This is opl2ofm, Version 2.2", + "This is ovf2ovp, Version 2.2", + "This is ovp2ovf, Version 2.2", + "This is omfonts, Version 2.2" }; int no_files=0; @@ -109,6 +110,7 @@ static struct option long_options[] = { {"num-format", 1, 0, 0}, {"charcode-format", 1, 0, 0}, {"text-format", 1, 0, 0}, + {"omit-ofm", 0, 0, 0}, {"ofm2opl", 0, 0, 0}, {"opl2ofm", 0, 0, 0}, {"ovf2ovp", 0, 0, 0}, @@ -163,6 +165,8 @@ main (int argc, string *argv) } else if (!strcmp(long_options[option_index ].name, "ovp2ovf")) { if (program == PROG_OMFONTS) program = PROG_OVP2OVF; else usage (names_program[program]); + } else if (!strcmp(long_options[option_index ].name, "omit-ofm")) { + omit_ofm = 1; } else if (!strcmp(long_options[option_index ].name, "char-format")) { if (!strcmp(optarg, "ascii")) char_format = CHAR_CODE_ASCII; else if (!strcmp(optarg, "num")) char_format = CHAR_CODE_NUM; @@ -313,12 +317,12 @@ main (int argc, string *argv) case PROG_OVP2OVF: { file_ovp = kpse_open_file(name_ovp, kpse_ovp_format); rewritebin(file_ovf, name_ovf); - rewritebin(file_ofm, name_ofm); + if (!omit_ofm) rewritebin(file_ofm, name_ofm); init_tables(); yyin = file_ovp; (void)yyparse(); output_ofm_file(); - (void)fclose(file_ofm); + if (!omit_ofm) (void)fclose(file_ofm); output_ovf_file(); (void)fclose(file_ovf); if (num_errors > 0) exit(1); diff --git a/Build/source/texk/web2c/omegafonts/omfonts.h b/Build/source/texk/web2c/omegafonts/omfonts.h index 6486c15c0c8..a22b95982d1 100644 --- a/Build/source/texk/web2c/omegafonts/omfonts.h +++ b/Build/source/texk/web2c/omegafonts/omfonts.h @@ -35,6 +35,7 @@ extern int verbose_option; extern int char_format; extern int num_format; extern int text_format; +extern int omit_ofm; extern unsigned length_ofm; extern unsigned length_ovf; diff --git a/Build/source/texk/web2c/omegafonts/out_ofm.c b/Build/source/texk/web2c/omegafonts/out_ofm.c index 0f8f515cd9a..bd7fbee2f52 100644 --- a/Build/source/texk/web2c/omegafonts/out_ofm.c +++ b/Build/source/texk/web2c/omegafonts/out_ofm.c @@ -42,6 +42,7 @@ void output_ofm_file(void) { check_and_correct(); + if (omit_ofm) return; compute_ofm_extra_stuff(); compute_ofm_character_info(); compute_ofm_subsizes(); diff --git a/Build/source/texk/web2c/omegafonts/overbmp.test b/Build/source/texk/web2c/omegafonts/overbmp.test index 809e000be2f..97fef55b62c 100755 --- a/Build/source/texk/web2c/omegafonts/overbmp.test +++ b/Build/source/texk/web2c/omegafonts/overbmp.test @@ -58,4 +58,28 @@ $_omfonts -ovf2ovp $tests/xoverbmp1 xoverbmp1 $tests/xoverbmp2 || rc=15 diff $tests/xoverbmp1.ovp $tests/xoverbmp2.ovp || rc=16 + +# +# JVF with characters of code points over UCS-range in upTeX encoding +# +$_omfonts -ovp2ovf $srcdir/$tests/overucs.ovp $tests/xoverucs || rc=21 + +$_omfonts -ovp2ovf -omit-ofm $srcdir/$tests/overucs.ovp $tests/xoverucs1 || rc=22 + +cmp $tests/xoverucs.ovf $tests/xoverucs1.ovf || rc=23 + +$_omfonts -ofm2opl xoverucs $tests/xoverucs || rc=24 + +diff $srcdir/$tests/overucs.opl $tests/xoverucs.opl || rc=25 + +$_omfonts -ovf2ovp $tests/xoverucs xoverucs $tests/xoverucs.ovp || rc=26 + +diff $srcdir/$tests/overucs.ovp $tests/xoverucs.ovp || rc=27 + +$_omfonts -opl2ofm $srcdir/$tests/adbjpn $tests/xadbjpn || rc=28 + +$_omfonts -ofm2opl xadbjpn $tests/xadbjpn || rc=29 + +diff $srcdir/$tests/adbjpn.opl $tests/xadbjpn.opl || rc=30 + exit $rc diff --git a/Build/source/texk/web2c/omegafonts/parse_ofm.c b/Build/source/texk/web2c/omegafonts/parse_ofm.c index 7aa0dadccbc..6eaea0f2079 100644 --- a/Build/source/texk/web2c/omegafonts/parse_ofm.c +++ b/Build/source/texk/web2c/omegafonts/parse_ofm.c @@ -187,14 +187,14 @@ ofm_organize(void) eval_four_bytes(&ec); eval_four_bytes(&nw); eval_four_bytes(&nh); - eval_four_bytes(&nd); + eval_four_bytes(&nd); eval_four_bytes(&ni); eval_four_bytes(&nl); eval_four_bytes(&nk); eval_four_bytes(&ne); eval_four_bytes(&np); eval_four_bytes(&font_dir); - top_char = 0x10ffff; + top_char = 0xffffff; top_width = 65535; top_height = 255; top_depth = 255; diff --git a/Build/source/texk/web2c/omegafonts/tests/adbjpn.opl b/Build/source/texk/web2c/omegafonts/tests/adbjpn.opl new file mode 100644 index 00000000000..a395342628a --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/tests/adbjpn.opl @@ -0,0 +1,22 @@ +(OFMLEVEL H 0) +(FONTDIR TL) +(FAMILY UNSPECIFIED) +(FACE F MRR) +(CODINGSCHEME UNSPECIFIED) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H 293701E9) +(SEVENBITSAFEFLAG FALSE) +(CHARACTER H 2079 + (CHARWD R 1.0) + ) +(CHARACTER H 3408 + (CHARWD R 1.0) + ) +(CHARACTER H 37CA + (CHARWD R 1.0) + ) +(CHARACTER H 3F51 + (CHARWD R 1.0) + ) diff --git a/Build/source/texk/web2c/omegafonts/tests/inbmp.opl b/Build/source/texk/web2c/omegafonts/tests/inbmp.opl index 7f23d0b8298..a51e02055a8 100644 --- a/Build/source/texk/web2c/omegafonts/tests/inbmp.opl +++ b/Build/source/texk/web2c/omegafonts/tests/inbmp.opl @@ -8,9 +8,21 @@ (COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) (CHECKSUM H AA6297E0) (SEVENBITSAFEFLAG FALSE) +(CHARACTER H 304B + (CHARWD R 1.0) + ) (CHARACTER H 4E00 (CHARWD R 1.0) ) (CHARACTER H 53F1 (CHARWD R 1.0) ) +(CHARACTER H 9038 + (CHARWD R 1.0) + ) +(CHARACTER H FA25 + (CHARWD R 1.0) + ) +(CHARACTER H FA6C + (CHARWD R 1.0) + ) diff --git a/Build/source/texk/web2c/omegafonts/tests/overbmp.opl b/Build/source/texk/web2c/omegafonts/tests/overbmp.opl index c80f889b8b2..19eaf62f0e3 100644 --- a/Build/source/texk/web2c/omegafonts/tests/overbmp.opl +++ b/Build/source/texk/web2c/omegafonts/tests/overbmp.opl @@ -20,3 +20,9 @@ (CHARACTER H 20BB7 (CHARWD R 1.0) ) +(CHARACTER H 242EE + (CHARWD R 1.0) + ) +(CHARACTER H 2F9DE + (CHARWD R 1.0) + ) diff --git a/Build/source/texk/web2c/omegafonts/tests/overbmp.ovp b/Build/source/texk/web2c/omegafonts/tests/overbmp.ovp index 9110397b8d8..fa92efb4372 100644 --- a/Build/source/texk/web2c/omegafonts/tests/overbmp.ovp +++ b/Build/source/texk/web2c/omegafonts/tests/overbmp.ovp @@ -47,3 +47,17 @@ (SETCHAR H 53F1) ) ) +(CHARACTER H 242EE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 242EE) + ) + ) +(CHARACTER H 2F9DE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2F9DE) + ) + ) diff --git a/Build/source/texk/web2c/omegafonts/tests/overucs.opl b/Build/source/texk/web2c/omegafonts/tests/overucs.opl new file mode 100644 index 00000000000..0a012d5ac30 --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/tests/overucs.opl @@ -0,0 +1,46 @@ +(OFMLEVEL H 1) +(FONTDIR TL) +(FAMILY UNSPECIFIED) +(FACE F MRR) +(CODINGSCHEME UNSPECIFIED) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H DD8C3992) +(SEVENBITSAFEFLAG FALSE) +(CHARACTER H 304B + (CHARWD R 1.0) + ) +(CHARACTER H 30EF + (CHARWD R 1.0) + ) +(CHARACTER H 9038 + (CHARWD R 1.0) + ) +(CHARACTER H 242EE + (CHARWD R 1.0) + ) +(CHARACTER H 2230EF + (CHARWD R 1.0) + ) +(CHARACTER H 24304B + (CHARWD R 1.0) + ) +(CHARACTER H 408ED4 + (CHARWD R 1.0) + ) +(CHARACTER H 409038 + (CHARWD R 1.0) + ) +(CHARACTER H 4242EE + (CHARWD R 1.0) + ) +(CHARACTER H 8242EE + (CHARWD R 1.0) + ) +(CHARACTER H 849038 + (CHARWD R 1.0) + ) +(CHARACTER H 8642EE + (CHARWD R 1.0) + ) diff --git a/Build/source/texk/web2c/omegafonts/tests/overucs.ovp b/Build/source/texk/web2c/omegafonts/tests/overucs.ovp new file mode 100644 index 00000000000..68c610347c5 --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/tests/overucs.ovp @@ -0,0 +1,111 @@ +(VTITLE JVF with characters of code points over UCS-range in upTeX encoding) +(OFMLEVEL H 1) +(FONTDIR TL) +(FAMILY UNSPECIFIED) +(FACE F MRR) +(CODINGSCHEME UNSPECIFIED) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H DD8C3992) +(SEVENBITSAFEFLAG FALSE) +(MAPFONT D 0 + (FONTNAME xinbmp) + (FONTCHECKSUM H AA6297E0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME xoverbmp) + (FONTCHECKSUM H DD8C3992) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME xadbjpn) + (FONTCHECKSUM H DD8C3992) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 304B + (CHARWD R 1.0) + (MAP + (SETCHAR H 304B) + ) + ) +(CHARACTER H 30EF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 30EF) + ) + ) +(CHARACTER H 9038 + (CHARWD R 1.0) + (MAP + (SETCHAR H 9038) + ) + ) +(CHARACTER H 242EE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 242EE) + ) + ) +(CHARACTER H 2230EF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 2079) + ) + ) +(CHARACTER H 24304B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3F51) + ) + ) +(CHARACTER H 408ED4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2F9DE) + ) + ) +(CHARACTER H 409038 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H FA25) + ) + ) +(CHARACTER H 4242EE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H FA6C) + ) + ) +(CHARACTER H 8242EE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 37CA) + ) + ) +(CHARACTER H 849038 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3408) + ) + ) +(CHARACTER H 8642EE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 37C9) + ) + ) -- cgit v1.2.3