diff --git a/source/texk/web2c/Makefile.in b/source/texk/web2c/Makefile.in index 9f1c3cab3..4a1931b90 100644 --- a/source/texk/web2c/Makefile.in +++ b/source/texk/web2c/Makefile.in @@ -3128,14 +3128,15 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ tests/auxinclude.bbl tests/auxinclude.bib tests/auxinclude.tex \ tests/auxinclude2.aux tests/auxinclude2.tex \ tests/fn-generate.perl tests/fn-utf8.txt tests/fn-euc.txt \ - tests/fn-sjis.txt tests/allbib.aux tests/allbib.tex \ - tests/apalike.bst tests/badpl.pl tests/badtfm.tfm \ - tests/badvf.tfm tests/badvf.vf tests/badvpl.vpl \ - tests/batch.tex tests/check.log tests/cmr10.600gf \ - tests/cmr10.pk tests/cmr10.pl tests/cmr10.tfm tests/cmr7.tfm \ - tests/cmr8.tfm tests/cmti10.tfm tests/cmtt10.tfm \ - tests/cmtt8.tfm tests/dict tests/eight.tex tests/end.tex \ - tests/exampl.aux tests/exampl.tex tests/gray.tfm \ + tests/fn-sjis.txt tests/uctt10x.opl tests/uctt10x.ofm \ + tests/uctt10x.ovp tests/uctt10x.ovf tests/allbib.aux \ + tests/allbib.tex tests/apalike.bst tests/badpl.pl \ + tests/badtfm.tfm tests/badvf.tfm tests/badvf.vf \ + tests/badvpl.vpl tests/batch.tex tests/check.log \ + tests/cmr10.600gf tests/cmr10.pk tests/cmr10.pl \ + tests/cmr10.tfm tests/cmr7.tfm tests/cmr8.tfm tests/cmti10.tfm \ + tests/cmtt10.tfm tests/cmtt8.tfm tests/dict tests/eight.tex \ + tests/end.tex tests/exampl.aux tests/exampl.tex tests/gray.tfm \ tests/hello.tex tests/io.mf tests/just.texi tests/label.mp \ tests/label.mpx tests/logo8.tfm tests/longline.aux \ tests/longline.bib tests/longline.tex tests/longtfm.tex \ @@ -3236,7 +3237,8 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ uptexdir/tests/gkhugeok.tfm uptexdir/tests/gkhugeng.tfm \ uptexdir/tests/gkhugeng.err uptexdir/tests/gk256g.tfm \ uptexdir/tests/gk256k.tfm uptexdir/uptrip/uptrip.diffs \ - uptexdir/uptrip/texmf.cnf $(euptex_web_srcs) $(euptex_ch_srcs) \ + uptexdir/uptrip/texmf.cnf uptexdir/tests/up-ofm.tex \ + uptexdir/tests/up-ofm.log $(euptex_web_srcs) $(euptex_ch_srcs) \ euptexdir/euptex.defines euptexdir/COPYRIGHT \ euptexdir/COPYRIGHT.jis euptexdir/ChangeLog \ euptexdir/EUPTEX.txt $(euptex_tests) \ @@ -3246,6 +3248,7 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ euptexdir/tests/pdfprimitive-test.tex \ euptexdir/tests/pdfprimitive-euptex.log \ euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex \ + euptexdir/tests/eup-ofm.tex euptexdir/tests/eup-ofm.log \ hitexdir/ChangeLog $(hitex_web) $(hitex_tests) \ hitexdir/tests/hello.tex hitexdir/tests/rule.tex \ pdftexdir/regex/COPYING.LIB pdftexdir/regex/README \ @@ -3568,24 +3571,24 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ uptests/xcmr10.tfm uptests/xcmr10.pl uptests/xsample*.typ \ uptests/x*min10.* uptests/xchcode*.* uptests/xtestnewu*.* \ uptests/xuparse.* uptests/yuparse.* uptests/ygkhuge*.* \ - uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs \ + uptests/ygk256*.* uptests/xskipjfmp.* up-ofm.* uptrip.diffs \ $(nodist_euptex_SOURCES) euptex.web euptex.ch euptex-web2c \ - euptex.p euptex.pool euptex-tangle euptrip.diffs \ - pdfprimitive-euptex.* eup-ctrlsym.fmt eup-ctrlsym.log \ - eup-ctrlsym.out eup-ctrlsym.tex $(nodist_hitex_SOURCES) \ - $(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES) \ - hiformat-tangle hitex-tangle hello.log rule.log \ - $(nodist_pdftex_SOURCES) pdftex-final.ch pdftex-web2c pdftex.p \ - pdftex.pool pdftex-tangle pwprob.log pwprob.tex pdfimage.fmt \ - pdfimage.log pdfimage.pdf expanded.log cnfline.log \ - partoken-ok.log partoken-xfail.log pdftests/fn*.* postV3.afm \ - postV7.afm test-13.pdf test-13.xref test-15.pdf test-15.xref \ - $(nodist_libluatex_sources) luaimage.* luajitimage.* \ - $(nodist_xetex_SOURCES) xetex.web xetex-final.ch xetex-web2c \ - xetex.p xetex.pool xetex-tangle bug73.fmt bug73.log bug73.out \ - bug73.tex filedump.log filedump.out filedump.tex \ - xe-ctrlsym.fmt xe-ctrlsym.log xe-ctrlsym.out xe-ctrlsym.tex \ - xetests/fn*.* $(omegaware_programs:=.c) \ + euptex.p euptex.pool euptex-tangle pdfprimitive-euptex.* \ + eup-ctrlsym.fmt eup-ctrlsym.log eup-ctrlsym.out \ + eup-ctrlsym.tex eup-ofm.* euptrip.diffs \ + $(nodist_hitex_SOURCES) $(nodist_hishrink_SOURCES) \ + $(nodist_histretch_SOURCES) hiformat-tangle hitex-tangle \ + hello.log rule.log $(nodist_pdftex_SOURCES) pdftex-final.ch \ + pdftex-web2c pdftex.p pdftex.pool pdftex-tangle pwprob.log \ + pwprob.tex pdfimage.fmt pdfimage.log pdfimage.pdf expanded.log \ + cnfline.log partoken-ok.log partoken-xfail.log pdftests/fn*.* \ + postV3.afm postV7.afm test-13.pdf test-13.xref test-15.pdf \ + test-15.xref $(nodist_libluatex_sources) luaimage.* \ + luajitimage.* $(nodist_xetex_SOURCES) xetex.web xetex-final.ch \ + xetex-web2c xetex.p xetex.pool xetex-tangle bug73.fmt \ + bug73.log bug73.out bug73.tex filedump.log filedump.out \ + filedump.tex xe-ctrlsym.fmt xe-ctrlsym.log xe-ctrlsym.out \ + xe-ctrlsym.tex xetests/fn*.* $(omegaware_programs:=.c) \ $(omegaware_programs:=.h) $(omegaware_programs:=.p) \ $(omegaware_programs:=-web2c) ofm2opl.web opl2ofm.web \ ovf2ovp.web ovp2ovf.web omegaware/bad*.* \ @@ -4456,7 +4459,8 @@ uptex_tests = \ uptexdir/uptriptest.test uptexdir/ptriptest.test \ uptexdir/upver.test \ uptexdir/upkcat.test \ - uptexdir/wcfname.test uptexdir/wcfname0.test + uptexdir/wcfname.test uptexdir/wcfname0.test \ + uptexdir/uptex-ofm.test # uppPLtoTF/upTFtoPL upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \ @@ -4520,7 +4524,8 @@ euptex_tests = \ euptexdir/euptex-ctrlsym.test \ euptexdir/eupver.test \ euptexdir/upkcat.test \ - euptexdir/wcfname.test euptexdir/wcfname0.test + euptexdir/wcfname.test euptexdir/wcfname0.test \ + euptexdir/euptex-ofm.test # At the moment, these are the only man pages handled in the @@ -21943,7 +21948,8 @@ uptftopl.web: tie$(EXEEXT) tftopl.web tftopl.ch uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) uptexdir/upver.log uptexdir/upkcat.log \ - uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT) + uptexdir/wcfname.log uptexdir/wcfname0.log \ + uptexdir/uptex-ofm.log: uptex$(EXEEXT) uptexdir/upbibtex.log: upbibtex$(EXEEXT) uptexdir/updvitype.log: updvitype$(EXEEXT) uptexdir/uppltotf.log: uppltotf$(EXEEXT) @@ -21955,6 +21961,7 @@ uptexdir/sample.log: updvitype$(EXEEXT) uptexdir/yokotate.log uptexdir/skipjfmp.log \ uptexdir/newjfm.log uptexdir/uparse.log \ uptexdir/gkhuge.log uptexdir/gk256.log: uppltotf$(EXEEXT) uptftopl$(EXEEXT) + uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: uptrip-clean @@ -21990,7 +21997,9 @@ euptexdir/euptriptest.log euptexdir/eptriptest.log: \ euptexdir/pdfprimitive.log: euptex$(EXEEXT) euptexdir/euptex-ctrlsym.log \ euptexdir/eupver.log euptexdir/upkcat.log \ - euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT) + euptexdir/wcfname.log euptexdir/wcfname0.log \ + euptexdir/euptex-ofm.log: euptex$(EXEEXT) + euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: euptrip-clean diff --git a/source/texk/web2c/am/web.am b/source/texk/web2c/am/web.am index 8ab12e6d7..1b078b6d5 100644 --- a/source/texk/web2c/am/web.am +++ b/source/texk/web2c/am/web.am @@ -240,6 +240,9 @@ DISTCLEANFILES += pooltype.tex ## {pdftexdir,xetexdir,ptexdir,uptexdir}/wcfname.test EXTRA_DIST += tests/fn-generate.perl EXTRA_DIST += tests/fn-utf8.txt tests/fn-euc.txt tests/fn-sjis.txt +## uptexdir/uptex-ofm.test, euptexdir/euptex-ofm.test +EXTRA_DIST += tests/uctt10x.opl tests/uctt10x.ofm +EXTRA_DIST += tests/uctt10x.ovp tests/uctt10x.ovf ## Test data ## diff --git a/source/texk/web2c/euptexdir/am/euptex.am b/source/texk/web2c/euptexdir/am/euptex.am index f961b447f..d12b56273 100644 --- a/source/texk/web2c/euptexdir/am/euptex.am +++ b/source/texk/web2c/euptexdir/am/euptex.am @@ -101,13 +101,15 @@ euptex_tests = \ euptexdir/euptex-ctrlsym.test \ euptexdir/eupver.test \ euptexdir/upkcat.test \ - euptexdir/wcfname.test euptexdir/wcfname0.test + euptexdir/wcfname.test euptexdir/wcfname0.test \ + euptexdir/euptex-ofm.test euptexdir/euptriptest.log euptexdir/eptriptest.log: \ euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) euptexdir/pdfprimitive.log: euptex$(EXEEXT) euptexdir/euptex-ctrlsym.log \ euptexdir/eupver.log euptexdir/upkcat.log \ - euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT) + euptexdir/wcfname.log euptexdir/wcfname0.log \ + euptexdir/euptex-ofm.log: euptex$(EXEEXT) EXTRA_DIST += $(euptex_tests) @@ -125,12 +127,6 @@ EXTRA_DIST += \ euptexdir/eptrip/eptrip.tex \ euptexdir/euptrip/euptrip.diffs \ euptexdir/euptrip/texmf.cnf -euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - $(triptrap_diffs) $@ -.PHONY: euptrip-clean -euptrip-clean: - rm -rf euptripdir -DISTCLEANFILES += euptrip.diffs ## euptexdir/pdfprimitive.test EXTRA_DIST += \ euptexdir/pdfprimitive.test \ @@ -141,5 +137,15 @@ DISTCLEANFILES += pdfprimitive-euptex.* ## euptex-ctrlsym.test EXTRA_DIST += euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex DISTCLEANFILES += eup-ctrlsym.fmt eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex +## euptex-ofm.test +EXTRA_DIST += euptexdir/tests/eup-ofm.tex euptexdir/tests/eup-ofm.log +DISTCLEANFILES += eup-ofm.* + +euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) + $(triptrap_diffs) $@ +.PHONY: euptrip-clean +euptrip-clean: + rm -rf euptripdir +DISTCLEANFILES += euptrip.diffs # (end of euptex.am) diff --git a/source/texk/web2c/euptexdir/eptex.ech b/source/texk/web2c/euptexdir/eptex.ech index a33ecad2b..adab395f0 100644 --- a/source/texk/web2c/euptexdir/eptex.ech +++ b/source/texk/web2c/euptexdir/eptex.ech @@ -619,7 +619,7 @@ font_char_ic_code: begin scan_font_ident; q:=cur_val; end else cur_val:=0; end - else begin scan_ascii_num; + else begin scan_latin_num; if (font_bc[q]<=cur_val)and(font_ec[q]>=cur_val) then begin i:=orig_char_info(q)(qi(cur_val)); case m of @@ -767,7 +767,7 @@ if_font_char_code:begin scan_font_ident; n:=cur_val; b:=(font_bc[n]<=cur_val)and(font_ec[n]>=cur_val) end end - else begin scan_ascii_num; + else begin scan_latin_num; if (font_bc[n]<=cur_val)and(font_ec[n]>=cur_val) then @/ b:=char_exists(orig_char_info(n)(qi(cur_val))) else b:=false; diff --git a/source/texk/web2c/euptexdir/euptex-ofm.test b/source/texk/web2c/euptexdir/euptex-ofm.test new file mode 100755 index 000000000..a4d475270 --- /dev/null +++ b/source/texk/web2c/euptexdir/euptex-ofm.test @@ -0,0 +1,29 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_euptex=$BinDir/euptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +# get same filename in log +rm -f eup-ofm.* +$LN_S $srcdir/euptexdir/tests/eup-ofm.tex ./eup-ofm.tex + +#exit 77 + +$_euptex -ini -etex eup-ofm || exit 1 + +$_euptex -fmt=eup-ofm -interaction=batchmode eup-ofm || : + +sed 1d eup-ofm.log >eup-ofm.out + +diff $srcdir/euptexdir/tests/eup-ofm.log eup-ofm.out || exit 3 + diff --git a/source/texk/web2c/euptexdir/fam256.ch b/source/texk/web2c/euptexdir/fam256.ch index 583c5b8d2..6cdb32153 100644 --- a/source/texk/web2c/euptexdir/fam256.ch +++ b/source/texk/web2c/euptexdir/fam256.ch @@ -1205,7 +1205,10 @@ def_code: begin @; p:=cur_chr; if p=kcat_code_base then - begin scan_char_num; p:=p+kcatcodekey(cur_val) end + begin scan_char_num; p:=p+kcatcodekey(cur_val); + if cur_val>=max_latin_val then m:=not_cjk; end + else if pn) then @@ -1250,7 +1253,9 @@ def_code: begin @; @; p:=cur_chr; cur_val1:=p; - if p=kcat_code_base then begin scan_char_num; p:=p+kcatcodekey(cur_val) end + if p=kcat_code_base then begin scan_char_num; p:=p+kcatcodekey(cur_val); + if cur_val>=max_latin_val then m:=not_cjk; end + else if pn) then @@ -1296,9 +1301,11 @@ def_code: begin %----------------------------------------------- @x else if cur_chr=kcat_code_base then n:=max_char_code +else if cur_chr \box0= +\hbox(0.0+0.0)x5.24998, yoko direction +.\displace 0.0 +.\uctt ^^c6 + +! OK. +l.43 \showbox0 + + +We have "2010. We do not have "2014. [1] ) +Output written on eup-ofm.dvi (1 page, 528 bytes). diff --git a/source/texk/web2c/euptexdir/tests/eup-ofm.tex b/source/texk/web2c/euptexdir/tests/eup-ofm.tex new file mode 100644 index 000000000..99692dc93 --- /dev/null +++ b/source/texk/web2c/euptexdir/tests/eup-ofm.tex @@ -0,0 +1,82 @@ +% Copyright 2024 Japanese TeX Development Community +% You may freely use, modify and/or distribute this file. +% +\ifx\fmtname\undefined + \input basic + \def\fmtname{basic} + \expandafter\dump +\fi +%================== +\begingroup % Just there to minimize tracing output + \tracingmacros=2 + \tracingonline=1 +%---- +\message{cmtt10} +\font\cmtt=cmtt10 +\cmtt +\char"21\char"22\char"23\char"24\char"25 + +\char"30\char"31\char"32\char"33 \char"41\char"42\char"43 \char"64\char"65\char"66 + +0123 ABC def + + +\message{uctt10x} +\font\uctt=uctt10x +\uctt +\char"21\char"22\char"23\char"24\char"25 + +\char"30\char"31\char"32\char"33 \char"41\char"42\char"43 \char"64\char"65\char"66 + +0123 ABC def + + +\kcatcode"C6=14 % latin_ucs: not cjk in ucs code +\catcode"C6=11 \catcode"D8=11 \catcode"DF=11 +\catcode"E6=11 \catcode"F8=11 + +\char"C6\char"D8\char"DF\char"E6\char"F8 + +ÆØßæø + +\setbox0\hbox{【Æ】} +\showbox0 + +\kcatcode"123=14 +\catcode"123=11 \catcode"131=11 \catcode"152=11 +\catcode"153=11 + +\char"123\char"131\char"152\char"153 + +ģıŒœ + +\kcatcode"393=14 +\catcode"393=11 \catcode"394=11 \catcode"398=11 +\catcode"39B=11 \catcode"39E=11 + +\char"393\char"394\char"398\char"39B\char"39E + +ΓΔΘΛΞ + +\kcatcode"2010=14 +\catcode"2010=11 \catcode"2018=11 \catcode"2019=11 + +\char"2010\char"2018\char"2019 + +‐‘’ + +\lccode"C6="E6 +\uccode"E6="C6 +\lccode`Œ=`œ +\uccode`œ=`Œ + +\uppercase{[aeoe æœ]} +\lowercase{[AEOE ÆŒ]} + +\message{We}\iffontchar\font"2010\else\message{do not}\fi\message{have "2010.} +\message{We}\iffontchar\font"2014\else\message{do not}\fi\message{have "2014.} + +%---- +\setbox0=\vbox{} % no dvi output +\endgroup +\end diff --git a/source/texk/web2c/lib/texmfmp.c b/source/texk/web2c/lib/texmfmp.c index 83d1611f8..0a481cd27 100644 --- a/source/texk/web2c/lib/texmfmp.c +++ b/source/texk/web2c/lib/texmfmp.c @@ -1107,6 +1107,9 @@ maininit (int ac, string *av) #else /* !Aleph */ kpse_set_program_enabled (kpse_tfm_format, MAKE_TEX_TFM_BY_DEFAULT, kpse_src_compile); +#if (IS_upTeX) + kpse_set_program_enabled (kpse_ofm_format, false, kpse_src_compile); +#endif #endif /* !Aleph */ kpse_set_program_enabled (kpse_tex_format, MAKE_TEX_TEX_BY_DEFAULT, kpse_src_compile); diff --git a/source/texk/web2c/tests/uctt10x.ofm b/source/texk/web2c/tests/uctt10x.ofm new file mode 100644 index 000000000..b1a43ffaf Binary files /dev/null and b/source/texk/web2c/tests/uctt10x.ofm differ diff --git a/source/texk/web2c/tests/uctt10x.opl b/source/texk/web2c/tests/uctt10x.opl new file mode 100644 index 000000000..bcba68ab7 --- /dev/null +++ b/source/texk/web2c/tests/uctt10x.opl @@ -0,0 +1,555 @@ +(OFMLEVEL H 0) +(FONTDIR TL) +(FAMILY OMEGA SERIF) +(FACE F MRR) +(CODINGSCHEME OMEGA-LGC) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H CC0918A4) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.3) + (STRETCH R 0.15) + (SHRINK R 0.1) + (XHEIGHT R 0.459) + (QUAD R 1.0) + (EXTRASPACE R 0.111112) + ) +(CHARACTER H 21 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 22 + (CHARWD R 0.525) + (CHARHT R 0.622) + (CHARDP R 0.328) + ) +(CHARACTER H 23 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 24 + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 25 + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 26 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 27 + (CHARWD R 0.525) + (CHARHT R 0.622) + (CHARDP R 0.328) + ) +(CHARACTER H 28 + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 29 + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 2A + (CHARWD R 0.525) + (CHARHT R 0.521) + (CHARDP R 0.09) + ) +(CHARACTER H 2B + (CHARWD R 0.525) + (CHARHT R 0.531) + (CHARDP R 0.081) + ) +(CHARACTER H 2C + (CHARWD R 0.525) + (CHARHT R 0.129) + ) +(CHARACTER H 2D + (CHARWD R 0.525) + (CHARHT R 0.341) + (CHARDP R 0.271) + ) +(CHARACTER H 2E + (CHARWD R 0.525) + (CHARHT R 0.129) + ) +(CHARACTER H 2F + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 30 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 31 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 32 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 33 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 34 + (CHARWD R 0.525) + (CHARHT R 0.619) + ) +(CHARACTER H 35 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 36 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 37 + (CHARWD R 0.525) + (CHARHT R 0.627) + ) +(CHARACTER H 38 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 39 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 3A + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 3B + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 3C + (CHARWD R 0.525) + (CHARHT R 0.557) + (CHARDP R 0.056) + ) +(CHARACTER H 3D + (CHARWD R 0.525) + (CHARHT R 0.417) + (CHARDP R 0.196) + ) +(CHARACTER H 3E + (CHARWD R 0.525) + (CHARHT R 0.557) + (CHARDP R 0.056) + ) +(CHARACTER H 3F + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 40 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 41 + (CHARWD R 0.525) + (CHARHT R 0.623) + ) +(CHARACTER H 42 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 43 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 44 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 45 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 46 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 47 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 48 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 49 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4A + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4B + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4C + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4D + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4E + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4F + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 50 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 51 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 52 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 53 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 54 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 55 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 56 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 57 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 58 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 59 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 5A + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 5B + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 5C + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 5D + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 5E + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.468) + ) +(CHARACTER H 5F + (CHARWD R 0.525) + (CHARHT R -0.025) + ) +(CHARACTER H 60 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.479) + ) +(CHARACTER H 61 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 62 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 63 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 64 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 65 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 66 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 67 + (CHARWD R 0.525) + (CHARHT R 0.442) + ) +(CHARACTER H 68 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 69 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 6A + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 6B + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 6C + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 6D + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 6E + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 6F + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 70 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 71 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 72 + (CHARWD R 0.525) + (CHARHT R 0.437) + ) +(CHARACTER H 73 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 74 + (CHARWD R 0.525) + (CHARHT R 0.554) + ) +(CHARACTER H 75 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 76 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 77 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 78 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 79 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 7A + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 7B + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 7C + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 7D + (CHARWD R 0.525) + (CHARHT R 0.694) + ) +(CHARACTER H 7E + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.487) + ) +(CHARACTER H A1 + (CHARWD R 0.525) + (CHARHT R 0.389) + ) +(CHARACTER H A8 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.507) + ) +(CHARACTER H AF + (CHARWD R 0.525) + (CHARHT R 0.577) + (CHARDP R 0.51) + ) +(CHARACTER H B4 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.479) + ) +(CHARACTER H B8 + (CHARWD R 0.525) + (CHARHT R 0.049) + ) +(CHARACTER H BF + (CHARWD R 0.525) + (CHARHT R 0.389) + ) +(CHARACTER H C6 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H D8 + (CHARWD R 0.525) + (CHARHT R 0.698) + ) +(CHARACTER H DF + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H E6 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H F8 + (CHARWD R 0.525) + (CHARHT R 0.573) + ) +(CHARACTER H 123 + (CHARWD R 0.525) + (CHARHT R 0.862) + ) +(CHARACTER H 131 + (CHARWD R 0.525) + (CHARHT R 0.431) + ) +(CHARACTER H 152 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 153 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 2C7 + (CHARWD R 0.525) + (CHARHT R 0.572) + (CHARDP R 0.451) + ) +(CHARACTER H 2D8 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.502) + ) +(CHARACTER H 2DA + (CHARWD R 0.525) + (CHARHT R 0.619) + (CHARDP R 0.499) + ) +(CHARACTER H 393 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 394 + (CHARWD R 0.525) + (CHARHT R 0.623) + ) +(CHARACTER H 398 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 39B + (CHARWD R 0.525) + (CHARHT R 0.623) + ) +(CHARACTER H 39E + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 3A0 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 3A3 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 3A5 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 3A6 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 3A8 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 3A9 + (CHARWD R 0.525) + (CHARHT R 0.622) + ) +(CHARACTER H 3F3 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4D4 + (CHARWD R 0.525) + (CHARHT R 0.611) + ) +(CHARACTER H 4D5 + (CHARWD R 0.525) + (CHARHT R 0.44) + ) +(CHARACTER H 2010 + (CHARWD R 0.525) + (CHARHT R 0.341) + (CHARDP R 0.271) + ) +(CHARACTER H 2018 + (CHARWD R 0.525) + (CHARHT R 0.681) + (CHARDP R 0.368) + ) +(CHARACTER H 2019 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.298) + ) diff --git a/source/texk/web2c/tests/uctt10x.ovf b/source/texk/web2c/tests/uctt10x.ovf new file mode 100644 index 000000000..cb1a4f3b8 Binary files /dev/null and b/source/texk/web2c/tests/uctt10x.ovf differ diff --git a/source/texk/web2c/tests/uctt10x.ovp b/source/texk/web2c/tests/uctt10x.ovp new file mode 100644 index 000000000..24406109d --- /dev/null +++ b/source/texk/web2c/tests/uctt10x.ovp @@ -0,0 +1,1084 @@ +(VTITLE LGC Omega Font) +(OFMLEVEL H 0) +(FONTDIR TL) +(FAMILY OMEGA SERIF) +(FACE F MRR) +(CODINGSCHEME OMEGA-LGC) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H CC0918A4) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.3) + (STRETCH R 0.15) + (SHRINK R 0.1) + (XHEIGHT R 0.459) + (QUAD R 1.0) + (EXTRASPACE R 0.111112) + ) +(MAPFONT D 0 + (FONTNAME cmtt10) + (FONTCHECKSUM H DFEA3C78) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 21 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 21) + ) + ) +(CHARACTER H 22 + (CHARWD R 0.525) + (CHARHT R 0.622) + (CHARDP R 0.328) + (MAP + (SELECTFONT D 0) + (SETCHAR H 22) + ) + ) +(CHARACTER H 23 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 23) + ) + ) +(CHARACTER H 24 + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 24) + ) + ) +(CHARACTER H 25 + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 25) + ) + ) +(CHARACTER H 26 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 26) + ) + ) +(CHARACTER H 27 + (CHARWD R 0.525) + (CHARHT R 0.622) + (CHARDP R 0.328) + (MAP + (SELECTFONT D 0) + (SETCHAR H D) + ) + ) +(CHARACTER H 28 + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 28) + ) + ) +(CHARACTER H 29 + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 29) + ) + ) +(CHARACTER H 2A + (CHARWD R 0.525) + (CHARHT R 0.521) + (CHARDP R 0.09) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2A) + ) + ) +(CHARACTER H 2B + (CHARWD R 0.525) + (CHARHT R 0.531) + (CHARDP R 0.081) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2B) + ) + ) +(CHARACTER H 2C + (CHARWD R 0.525) + (CHARHT R 0.129) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2C) + ) + ) +(CHARACTER H 2D + (CHARWD R 0.525) + (CHARHT R 0.341) + (CHARDP R 0.271) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2D) + ) + ) +(CHARACTER H 2E + (CHARWD R 0.525) + (CHARHT R 0.129) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2E) + ) + ) +(CHARACTER H 2F + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F) + ) + ) +(CHARACTER H 30 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 30) + ) + ) +(CHARACTER H 31 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 31) + ) + ) +(CHARACTER H 32 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 32) + ) + ) +(CHARACTER H 33 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 33) + ) + ) +(CHARACTER H 34 + (CHARWD R 0.525) + (CHARHT R 0.619) + (MAP + (SELECTFONT D 0) + (SETCHAR H 34) + ) + ) +(CHARACTER H 35 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 35) + ) + ) +(CHARACTER H 36 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 36) + ) + ) +(CHARACTER H 37 + (CHARWD R 0.525) + (CHARHT R 0.627) + (MAP + (SELECTFONT D 0) + (SETCHAR H 37) + ) + ) +(CHARACTER H 38 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 38) + ) + ) +(CHARACTER H 39 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 39) + ) + ) +(CHARACTER H 3A + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3A) + ) + ) +(CHARACTER H 3B + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3B) + ) + ) +(CHARACTER H 3C + (CHARWD R 0.525) + (CHARHT R 0.557) + (CHARDP R 0.056) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3C) + ) + ) +(CHARACTER H 3D + (CHARWD R 0.525) + (CHARHT R 0.417) + (CHARDP R 0.196) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3D) + ) + ) +(CHARACTER H 3E + (CHARWD R 0.525) + (CHARHT R 0.557) + (CHARDP R 0.056) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3E) + ) + ) +(CHARACTER H 3F + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3F) + ) + ) +(CHARACTER H 40 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 40) + ) + ) +(CHARACTER H 41 + (CHARWD R 0.525) + (CHARHT R 0.623) + (MAP + (SELECTFONT D 0) + (SETCHAR H 41) + ) + ) +(CHARACTER H 42 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 42) + ) + ) +(CHARACTER H 43 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 43) + ) + ) +(CHARACTER H 44 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 44) + ) + ) +(CHARACTER H 45 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 45) + ) + ) +(CHARACTER H 46 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 46) + ) + ) +(CHARACTER H 47 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 47) + ) + ) +(CHARACTER H 48 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 48) + ) + ) +(CHARACTER H 49 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 49) + ) + ) +(CHARACTER H 4A + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4A) + ) + ) +(CHARACTER H 4B + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4B) + ) + ) +(CHARACTER H 4C + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4C) + ) + ) +(CHARACTER H 4D + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4D) + ) + ) +(CHARACTER H 4E + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4E) + ) + ) +(CHARACTER H 4F + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4F) + ) + ) +(CHARACTER H 50 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 50) + ) + ) +(CHARACTER H 51 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 51) + ) + ) +(CHARACTER H 52 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 52) + ) + ) +(CHARACTER H 53 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 53) + ) + ) +(CHARACTER H 54 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 54) + ) + ) +(CHARACTER H 55 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 55) + ) + ) +(CHARACTER H 56 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 56) + ) + ) +(CHARACTER H 57 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 57) + ) + ) +(CHARACTER H 58 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 58) + ) + ) +(CHARACTER H 59 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 59) + ) + ) +(CHARACTER H 5A + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5A) + ) + ) +(CHARACTER H 5B + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5B) + ) + ) +(CHARACTER H 5C + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5C) + ) + ) +(CHARACTER H 5D + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5D) + ) + ) +(CHARACTER H 5E + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.468) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5E) + ) + ) +(CHARACTER H 5F + (CHARWD R 0.525) + (CHARHT R -0.025) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5F) + ) + ) +(CHARACTER H 60 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.479) + (MAP + (SELECTFONT D 0) + (SETCHAR H 12) + ) + ) +(CHARACTER H 61 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 61) + ) + ) +(CHARACTER H 62 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 62) + ) + ) +(CHARACTER H 63 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 63) + ) + ) +(CHARACTER H 64 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 64) + ) + ) +(CHARACTER H 65 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 65) + ) + ) +(CHARACTER H 66 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 66) + ) + ) +(CHARACTER H 67 + (CHARWD R 0.525) + (CHARHT R 0.442) + (MAP + (SELECTFONT D 0) + (SETCHAR H 67) + ) + ) +(CHARACTER H 68 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 68) + ) + ) +(CHARACTER H 69 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 69) + ) + ) +(CHARACTER H 6A + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6A) + ) + ) +(CHARACTER H 6B + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6B) + ) + ) +(CHARACTER H 6C + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6C) + ) + ) +(CHARACTER H 6D + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6D) + ) + ) +(CHARACTER H 6E + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6E) + ) + ) +(CHARACTER H 6F + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6F) + ) + ) +(CHARACTER H 70 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 70) + ) + ) +(CHARACTER H 71 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 71) + ) + ) +(CHARACTER H 72 + (CHARWD R 0.525) + (CHARHT R 0.437) + (MAP + (SELECTFONT D 0) + (SETCHAR H 72) + ) + ) +(CHARACTER H 73 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 73) + ) + ) +(CHARACTER H 74 + (CHARWD R 0.525) + (CHARHT R 0.554) + (MAP + (SELECTFONT D 0) + (SETCHAR H 74) + ) + ) +(CHARACTER H 75 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 75) + ) + ) +(CHARACTER H 76 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 76) + ) + ) +(CHARACTER H 77 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 77) + ) + ) +(CHARACTER H 78 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 78) + ) + ) +(CHARACTER H 79 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 79) + ) + ) +(CHARACTER H 7A + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7A) + ) + ) +(CHARACTER H 7B + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7B) + ) + ) +(CHARACTER H 7C + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7C) + ) + ) +(CHARACTER H 7D + (CHARWD R 0.525) + (CHARHT R 0.694) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7D) + ) + ) +(CHARACTER H 7E + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.487) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7E) + ) + ) +(CHARACTER H A1 + (CHARWD R 0.525) + (CHARHT R 0.389) + (MAP + (SELECTFONT D 0) + (SETCHAR H E) + ) + ) +(CHARACTER H A8 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.507) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7F) + ) + ) +(CHARACTER H AF + (CHARWD R 0.525) + (CHARHT R 0.577) + (CHARDP R 0.51) + (MAP + (SELECTFONT D 0) + (SETCHAR H 16) + ) + ) +(CHARACTER H B4 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.479) + (MAP + (SELECTFONT D 0) + (SETCHAR H 13) + ) + ) +(CHARACTER H B8 + (CHARWD R 0.525) + (CHARHT R 0.049) + (MAP + (SELECTFONT D 0) + (SETCHAR H 18) + ) + ) +(CHARACTER H BF + (CHARWD R 0.525) + (CHARHT R 0.389) + (MAP + (SELECTFONT D 0) + (SETCHAR H F) + ) + ) +(CHARACTER H C6 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1D) + ) + ) +(CHARACTER H D8 + (CHARWD R 0.525) + (CHARHT R 0.698) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1F) + ) + ) +(CHARACTER H DF + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 19) + ) + ) +(CHARACTER H E6 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1A) + ) + ) +(CHARACTER H F8 + (CHARWD R 0.525) + (CHARHT R 0.573) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1C) + ) + ) +(CHARACTER H 123 + (CHARWD R 0.525) + (CHARHT R 0.862) + (MAP + (PUSH) + (MOVERIGHT R 0.0055) + (MOVEDOWN R -0.181) + (SELECTFONT D 0) + (SETCHAR H 60) + (POP) + (SELECTFONT D 0) + (SETCHAR H 67) + ) + ) +(CHARACTER H 131 + (CHARWD R 0.525) + (CHARHT R 0.431) + (MAP + (SELECTFONT D 0) + (SETCHAR H 10) + ) + ) +(CHARACTER H 152 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1E) + ) + ) +(CHARACTER H 153 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1B) + ) + ) +(CHARACTER H 2C7 + (CHARWD R 0.525) + (CHARHT R 0.572) + (CHARDP R 0.451) + (MAP + (SELECTFONT D 0) + (SETCHAR H 14) + ) + ) +(CHARACTER H 2D8 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.502) + (MAP + (SELECTFONT D 0) + (SETCHAR H 15) + ) + ) +(CHARACTER H 2DA + (CHARWD R 0.525) + (CHARHT R 0.619) + (CHARDP R 0.499) + (MAP + (SELECTFONT D 0) + (SETCHAR H 17) + ) + ) +(CHARACTER H 393 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 0) + ) + ) +(CHARACTER H 394 + (CHARWD R 0.525) + (CHARHT R 0.623) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1) + ) + ) +(CHARACTER H 398 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2) + ) + ) +(CHARACTER H 39B + (CHARWD R 0.525) + (CHARHT R 0.623) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3) + ) + ) +(CHARACTER H 39E + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4) + ) + ) +(CHARACTER H 3A0 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5) + ) + ) +(CHARACTER H 3A3 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6) + ) + ) +(CHARACTER H 3A5 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7) + ) + ) +(CHARACTER H 3A6 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 8) + ) + ) +(CHARACTER H 3A8 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 9) + ) + ) +(CHARACTER H 3A9 + (CHARWD R 0.525) + (CHARHT R 0.622) + (MAP + (SELECTFONT D 0) + (SETCHAR H A) + ) + ) +(CHARACTER H 3F3 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6A) + ) + ) +(CHARACTER H 4D4 + (CHARWD R 0.525) + (CHARHT R 0.611) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1D) + ) + ) +(CHARACTER H 4D5 + (CHARWD R 0.525) + (CHARHT R 0.44) + (MAP + (SELECTFONT D 0) + (SETCHAR H 1A) + ) + ) +(CHARACTER H 2010 + (CHARWD R 0.525) + (CHARHT R 0.341) + (CHARDP R 0.271) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2D) + ) + ) +(CHARACTER H 2018 + (CHARWD R 0.525) + (CHARHT R 0.681) + (CHARDP R 0.368) + (MAP + (SELECTFONT D 0) + (SETCHAR H 60) + ) + ) +(CHARACTER H 2019 + (CHARWD R 0.525) + (CHARHT R 0.611) + (CHARDP R 0.298) + (MAP + (SELECTFONT D 0) + (SETCHAR H 27) + ) + ) diff --git a/source/texk/web2c/uptexdir/am/uptex.am b/source/texk/web2c/uptexdir/am/uptex.am index 1a4ee00d4..895bc5dc8 100644 --- a/source/texk/web2c/uptexdir/am/uptex.am +++ b/source/texk/web2c/uptexdir/am/uptex.am @@ -171,11 +171,13 @@ uptex_tests = \ uptexdir/uptriptest.test uptexdir/ptriptest.test \ uptexdir/upver.test \ uptexdir/upkcat.test \ - uptexdir/wcfname.test uptexdir/wcfname0.test + uptexdir/wcfname.test uptexdir/wcfname0.test \ + uptexdir/uptex-ofm.test uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) uptexdir/upver.log uptexdir/upkcat.log \ - uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT) + uptexdir/wcfname.log uptexdir/wcfname0.log \ + uptexdir/uptex-ofm.log: uptex$(EXEEXT) upweb_tests = \ uptexdir/upbibtex.test \ uptexdir/updvitype.test \ @@ -263,6 +265,10 @@ DISTCLEANFILES += uptests/ygk256*.* DISTCLEANFILES += uptests/xskipjfmp.* ## uptexdir/uptriptest EXTRA_DIST += uptexdir/uptrip/uptrip.diffs uptexdir/uptrip/texmf.cnf +## uptexdir/uptex-ofm.test +EXTRA_DIST += uptexdir/tests/up-ofm.tex uptexdir/tests/up-ofm.log +DISTCLEANFILES += up-ofm.* + uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: uptrip-clean diff --git a/source/texk/web2c/uptexdir/kanji.c b/source/texk/web2c/uptexdir/kanji.c index ddeca5a53..3acfc9d19 100644 --- a/source/texk/web2c/uptexdir/kanji.c +++ b/source/texk/web2c/uptexdir/kanji.c @@ -40,7 +40,7 @@ boolean check_kanji (integer c) boolean is_char_ascii(integer c) { - return (0 <= c && c < 0x100); + return (0 <= c && c < 0x2E80); } boolean is_char_kanji(integer c) diff --git a/source/texk/web2c/uptexdir/tests/up-ofm.log b/source/texk/web2c/uptexdir/tests/up-ofm.log new file mode 100644 index 000000000..b363ff455 --- /dev/null +++ b/source/texk/web2c/uptexdir/tests/up-ofm.log @@ -0,0 +1,15 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**up-ofm +(./up-ofm.tex cmtt10 uctt10x +> \box0= +\hbox(0.0+0.0)x5.24998, yoko direction +.\displace 0.0 +.\uctt ^^c6 + +! OK. +l.43 \showbox0 + + +[1] ) +Output written on up-ofm.dvi (1 page, 528 bytes). diff --git a/source/texk/web2c/uptexdir/tests/up-ofm.tex b/source/texk/web2c/uptexdir/tests/up-ofm.tex new file mode 100644 index 000000000..2dc0789b1 --- /dev/null +++ b/source/texk/web2c/uptexdir/tests/up-ofm.tex @@ -0,0 +1,79 @@ +% Copyright 2024 Japanese TeX Development Community +% You may freely use, modify and/or distribute this file. +% +\ifx\fmtname\undefined + \input basic + \def\fmtname{basic} + \expandafter\dump +\fi +%================== +\begingroup % Just there to minimize tracing output + \tracingmacros=2 + \tracingonline=1 +%---- +\message{cmtt10} +\font\cmtt=cmtt10 +\cmtt +\char"21\char"22\char"23\char"24\char"25 + +\char"30\char"31\char"32\char"33 \char"41\char"42\char"43 \char"64\char"65\char"66 + +0123 ABC def + + +\message{uctt10x} +\font\uctt=uctt10x +\uctt +\char"21\char"22\char"23\char"24\char"25 + +\char"30\char"31\char"32\char"33 \char"41\char"42\char"43 \char"64\char"65\char"66 + +0123 ABC def + + +\kcatcode"C6=14 % latin_ucs: not cjk in ucs code +\catcode"C6=11 \catcode"D8=11 \catcode"DF=11 +\catcode"E6=11 \catcode"F8=11 + +\char"C6\char"D8\char"DF\char"E6\char"F8 + +ÆØßæø + +\setbox0\hbox{【Æ】} +\showbox0 + +\kcatcode"123=14 +\catcode"123=11 \catcode"131=11 \catcode"152=11 +\catcode"153=11 + +\char"123\char"131\char"152\char"153 + +ģıŒœ + +\kcatcode"393=14 +\catcode"393=11 \catcode"394=11 \catcode"398=11 +\catcode"39B=11 \catcode"39E=11 + +\char"393\char"394\char"398\char"39B\char"39E + +ΓΔΘΛΞ + +\kcatcode"2010=14 +\catcode"2010=11 \catcode"2018=11 \catcode"2019=11 + +\char"2010\char"2018\char"2019 + +‐‘’ + +\lccode"C6="E6 +\uccode"E6="C6 +\lccode`Œ=`œ +\uccode`œ=`Œ + +\uppercase{[aeoe æœ]} +\lowercase{[AEOE ÆŒ]} + +%---- +\setbox0=\vbox{} % no dvi output +\endgroup +\end diff --git a/source/texk/web2c/uptexdir/updvitype.ch b/source/texk/web2c/uptexdir/updvitype.ch index 52349a28a..6895af701 100644 --- a/source/texk/web2c/uptexdir/updvitype.ch +++ b/source/texk/web2c/uptexdir/updvitype.ch @@ -50,6 +50,27 @@ for i:=@'177 to 255 do xchr[i]:=i; @d ptex_id_byte=3 {identifies the kind of pTeX \.{DVI} files described here} @z +@x + full_name := kpse_find_tfm (cur_name); + if full_name then begin + tfm_file := fopen (full_name, FOPEN_RBIN_MODE); + end else begin + tfm_file := nil; + end; +@y + full_name := kpse_find_ofm (cur_name); + if full_name then begin + tfm_file := fopen (full_name, FOPEN_RBIN_MODE); + end else begin + full_name := kpse_find_tfm (cur_name); + if full_name then begin + tfm_file := fopen (full_name, FOPEN_RBIN_MODE); + end else begin + tfm_file := nil; + end + end; +@z + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % JFM and pTeX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -58,6 +79,8 @@ for i:=@'177 to 255 do xchr[i]:=i; @y @!width_ptr:0..max_widths; {the number of known character widths} @!fnt_jfm_p:array [0..max_fonts] of boolean; +@!fnt_ofm_p:array [0..max_fonts] of boolean; +@!fnt_ofm_lv:array [0..max_fonts] of integer; @!jfm_char_code:array [0..max_widths] of integer; @!jfm_char_type:array [0..max_widths] of integer; @!jfm_char_font:array [0..max_widths] of integer; @@ -112,23 +135,71 @@ end; @x [35] JFM by K.A. read_tfm_word; lh:=b2*256+b3; +read_tfm_word; font_bc[nf]:=b0*256+b1; font_ec[nf]:=b2*256+b3; +if font_ec[nf]max_widths then + begin print_ln('---not loaded, DVItype needs larger width table'); +@.DVItype needs larger...@> + goto 9998; + end; @y read_tfm_word; lh:=b0*256+b1; if (lh = 11) or (lh = 9) then begin print(' (JFM'); fnt_jfm_p[nf] := true; + fnt_ofm_p[nf] := false; if lh = 9 then print(' tate'); print(')'); nt:=b2*256+b3; read_tfm_word; end +else if (lh = 0) then + begin + nt:=0; + fnt_jfm_p[nf] := false; + fnt_ofm_p[nf] := true; + fnt_ofm_lv[nf] := b2*256+b3; + print(' (OFM level'); + print((fnt_ofm_lv[nf]):1); + print(')'); + end else begin nt:=0; fnt_jfm_p[nf] := false; + fnt_ofm_p[nf] := false; + end; +if fnt_ofm_p[nf] then begin + read_tfm_word; { lf } + read_tfm_word; lh:=((b0*256+b1)*256+b2)*256+b3; + read_tfm_word; font_bc[nf]:=((b0*256+b1)*256+b2)*256+b3; + read_tfm_word; font_ec[nf]:=((b0*256+b1)*256+b2)*256+b3; +end else begin + lh:=b2*256+b3; + read_tfm_word; font_bc[nf]:=b0*256+b1; font_ec[nf]:=b2*256+b3; +end; +if font_ec[nf]max_widths then + begin print_ln('---not loaded, DVItype needs larger width table'); +@.DVItype needs larger...@> + goto 9998; + end; +@z + +@x +read_tfm_word; nw:=b0*256+b1; +if (nw=0)or(nw>256) then goto 9997; +@y +if fnt_ofm_p[nf] then begin + read_tfm_word; nw:=((b0*256+b1)*256+b2)*256+b3; + read_tfm_word; { nh } + if (nw=0)or(nw>65536) then goto 9997; + end +else begin + read_tfm_word; nw:=b0*256+b1; + if (nw=0)or(nw>256) then goto 9997; end; -lh:=b2*256+b3; @z @x [35] JFM by K.A. diff --git a/source/texk/web2c/uptexdir/uptex-m.ch b/source/texk/web2c/uptexdir/uptex-m.ch index f4b7c7272..3b698e481 100644 --- a/source/texk/web2c/uptexdir/uptex-m.ch +++ b/source/texk/web2c/uptexdir/uptex-m.ch @@ -168,6 +168,7 @@ else if (kcode_pos=1)or((kcode_pos>=@'11)and(kcode_pos<=@'12)) @d max_cjk_val=@"1000000 {to separate wchar and kcatcode} @d max_ivs_val=@"4400000 {to separate wchar with ivs and kcatcode} @d max_ucs_val=@"110000 {largest Unicode Scalar Value} +@d max_latin_val=@"2E80 @z @x @@ -220,12 +221,28 @@ else if (kcode_pos=1)or((kcode_pos>=@'11)and(kcode_pos<=@'12)) @y @d enable_cjk_token_code=auto_xspacing_code+1 @d cat_code_base=enable_cjk_token_code+1 - {table of 256 command codes (the ``catcodes'')} -@d kcat_code_base=cat_code_base+256 + {table of max_latin_val command codes (the ``catcodes'')} +@d kcat_code_base=cat_code_base+max_latin_val {table of 512 command codes for the wchar's catcodes } @d auto_xsp_code_base=kcat_code_base+512 {table of 256 auto spacer flag} @z +@x +@d lc_code_base=kansuji_base+10 {table of 256 lowercase mappings} +@d uc_code_base=lc_code_base+256 {table of 256 uppercase mappings} +@d sf_code_base=uc_code_base+256 {table of 256 spacefactor mappings} +@d math_code_base=sf_code_base+256 {table of 256 math mode mappings} +@d char_sub_code_base=math_code_base+256 {table of character substitutions} +@d int_base=char_sub_code_base+256 {beginning of region 5} +@y +@d lc_code_base=kansuji_base+10 {table of max_latin_val lowercase mappings} +@d uc_code_base=lc_code_base+max_latin_val {table of max_latin_val uppercase mappings} +@d sf_code_base=uc_code_base+max_latin_val {table of max_latin_val spacefactor mappings} +@d math_code_base=sf_code_base+max_latin_val {table of 256 math mode mappings} +@d char_sub_code_base=math_code_base+256 {table of character substitutions} +@d int_base=char_sub_code_base+256 {beginning of region 5} +@z + @x @d auto_xspacing==equiv(auto_xspacing_code) @y @@ -245,12 +262,15 @@ eqtb[auto_xspacing_code]:=eqtb[cat_code_base]; eqtb[enable_cjk_token_code]:=eqtb[cat_code_base]; for k:=0 to 255 do begin cat_code(k):=other_char; - math_code(k):=hi(k); sf_code(k):=1000; + math_code(k):=hi(k); auto_xsp_code(k):=0; end; for k:=0 to 511 do begin kcat_code(k):=other_kchar; end; +for k:=0 to max_latin_val-1 do + begin sf_code(k):=1000; + end; @z @x @@ -338,19 +358,19 @@ kchar_num: print_esc("kchar"); @y @d cs_token_flag=@"1FFFFFFF {amount added to the |eqtb| location in a token that stands for a control sequence; is a multiple of~@@"1000000, less~1} -@d max_char_val=@"100 {to separate char and command code} -@d left_brace_token=@"100 {$2^8\cdot|left_brace|$} -@d left_brace_limit=@"200 {$2^8\cdot(|left_brace|+1)$} -@d right_brace_token=@"200 {$2^8\cdot|right_brace|$} -@d right_brace_limit=@"300 {$2^8\cdot(|right_brace|+1)$} -@d math_shift_token=@"300 {$2^8\cdot|math_shift|$} -@d tab_token=@"400 {$2^8\cdot|tab_mark|$} -@d out_param_token=@"500 {$2^8\cdot|out_param|$} -@d space_token=@"A20 {$2^8\cdot|spacer|+|" "|$} -@d letter_token=@"B00 {$2^8\cdot|letter|$} -@d other_token=@"C00 {$2^8\cdot|other_char|$} -@d match_token=@"D00 {$2^8\cdot|match|$} -@d end_match_token=@"E00 {$2^8\cdot|end_match|$} +@d max_char_val=@"10000 {to separate char and command code} +@d left_brace_token=@"10000 {$2^16\cdot|left_brace|$} +@d left_brace_limit=@"20000 {$2^16\cdot(|left_brace|+1)$} +@d right_brace_token=@"20000 {$2^16\cdot|right_brace|$} +@d right_brace_limit=@"30000 {$2^16\cdot(|right_brace|+1)$} +@d math_shift_token=@"30000 {$2^16\cdot|math_shift|$} +@d tab_token=@"40000 {$2^16\cdot|tab_mark|$} +@d out_param_token=@"50000 {$2^16\cdot|out_param|$} +@d space_token=@"A0020 {$2^16\cdot|spacer|+|" "|$} +@d letter_token=@"B0000 {$2^16\cdot|letter|$} +@d other_token=@"C0000 {$2^16\cdot|other_char|$} +@d match_token=@"D0000 {$2^16\cdot|match|$} +@d end_match_token=@"E0000 {$2^16\cdot|end_match|$} @z @x @@ -637,6 +657,16 @@ kchar_given, char_given,math_given: scanned_result(cur_chr)(int_val); @z +@x +else if m255) then + begin print_err("Bad character code"); +@.Bad character code@> + help2("A character number must be between 0 and 255.")@/ + ("I changed this one to zero."); int_error(cur_val); cur_val:=0; + end; +end; +@y +procedure scan_ascii_num; +begin scan_int; +if (cur_val<0)or(cur_val>255) then + begin print_err("Bad character code"); +@.Bad character code@> + help2("A character number must be between 0 and 255.")@/ + ("I changed this one to zero."); int_error(cur_val); cur_val:=0; + end; +end; +procedure scan_latin_num; +begin scan_int; +if not is_char_ascii(cur_val) then + begin print_err("Bad character code"); +@.Bad character code@> + help2("A character number must be between 0 and ""2E7F.")@/ + ("I changed this one to zero."); int_error(cur_val); cur_val:=0; + end; +end; +@z + @x if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {|wchar_token|} @y if (cur_cmd>=kanji)and(cur_cmd<=modifier) then {|wchar_token|} @z +@x +if (cur_val>255)and(cur_cmd=max_latin_val)and(cur_cmd127 then abort; + fget; #:=#*@'400+fbyte; + end +@d read_twentyfourx(#)==begin #:=fbyte; + fget; #:=#*@"100+fbyte; + fget; #:=#+fbyte*@"10000; + end +@d store_four_quarters(#)==begin fget; a:=fbyte; qw.b0:=qi(a); + fget; b:=fbyte; qw.b1:=qi(b); + fget; c:=fbyte; qw.b2:=qi(c); + fget; d:=fbyte; qw.b3:=qi(d); + #:=qw; + end +@y +@d read_sixteen(#)==begin #:=fbyte; + if #>127 then abort; + fget; #:=#*@'400+fbyte; + end +@d read_sixteen_unsigned(#)==begin #:=fbyte; + fget; #:=#*@'400+fbyte; + end +@d read_twentyfourx(#)==begin #:=fbyte; + fget; #:=#*@"100+fbyte; + fget; #:=#+fbyte*@"10000; + end +@d read_thirtytwo(#)==begin #:=fbyte; + if #>127 then abort; + fget; #:=#*@'400+fbyte; + fget; #:=#*@'400+fbyte; + fget; #:=#*@'400+fbyte; + end +@d store_four_quarters(#)==begin + if (ofm_flag<>0) then begin + fget; read_sixteen_unsigned(a); qw.b0:=a; + fget; read_sixteen_unsigned(b); qw.b1:=b; + fget; read_sixteen_unsigned(c); qw.b2:=c; + fget; read_sixteen_unsigned(d); qw.b3:=d; + #:=qw + end + else begin + fget; a:=fbyte; qw.b0:=qi(a); + fget; b:=fbyte; qw.b1:=qi(b); + fget; c:=fbyte; qw.b2:=qi(c); + fget; d:=fbyte; qw.b3:=qi(d); + #:=qw + end + end +@z + +@x +@ @= +begin read_sixteen(lf); +fget; read_sixteen(lh); +@y +@ @= +begin read_sixteen(lf); +fget; read_sixteen(lh); +ofm_flag:=0; +nco:=0; ncw:=0; npc:=0; +nki:=0; nwi:=0; nkf:=0; nwf:=0; nkm:=0; nwm:=0; +nkr:=0; nwr:=0; nkg:=0; nwg:=0; nkp:=0; nwp:=0; +@z + +@x +else if lf=tate_jfm_id then + begin jfm_flag:=dir_tate; nt:=lh; + fget; read_sixteen(lf); + fget; read_sixteen(lh); + end +@y +else if lf=tate_jfm_id then + begin jfm_flag:=dir_tate; nt:=lh; + fget; read_sixteen(lf); + fget; read_sixteen(lh); + end +else if lf=0 then + begin ofm_flag:=1; + font_level:=lh; + jfm_flag:=dir_default; nt:=0; + if (font_level<>0) and (font_level<>1) then abort; + fget; read_thirtytwo(lf); + fget; read_thirtytwo(lh); + end +@z + +@x +else begin jfm_flag:=dir_default; nt:=0; + end; +fget; read_sixteen(bc); +fget; read_sixteen(ec); +if (bc>ec+1)or(ec>255) then abort; +if bc>255 then {|bc=256| and |ec=255|} + begin bc:=1; ec:=0; + end; +fget; read_sixteen(nw); +fget; read_sixteen(nh); +fget; read_sixteen(nd); +fget; read_sixteen(ni); +fget; read_sixteen(nl); +fget; read_sixteen(nk); +fget; read_sixteen(ne); +fget; read_sixteen(np); +@y +else begin jfm_flag:=dir_default; nt:=0; + end; +if ofm_flag<>1 then begin + fget; read_sixteen(bc); + fget; read_sixteen(ec); + if (bc>ec+1)or(ec>255) then abort; + if bc>255 then {|bc=256| and |ec=255|} + begin bc:=1; ec:=0; + end; + fget; read_sixteen(nw); + fget; read_sixteen(nh); + fget; read_sixteen(nd); + fget; read_sixteen(ni); + fget; read_sixteen(nl); + fget; read_sixteen(nk); + fget; read_sixteen(ne); + fget; read_sixteen(np); + end +else begin + fget; read_thirtytwo(bc); + fget; read_thirtytwo(ec); + if (bc>ec+1)or(ec>65535) then abort; + if bc>65535 then {|bc=65536| and |ec=65535|} + begin bc:=1; ec:=0; + end; + fget; read_thirtytwo(nw); + fget; read_thirtytwo(nh); + fget; read_thirtytwo(nd); + fget; read_thirtytwo(ni); + fget; read_thirtytwo(nl); + fget; read_thirtytwo(nk); + fget; read_thirtytwo(ne); + fget; read_thirtytwo(np); + fget; read_thirtytwo(fn_dir); + nlw:=2*nl; + neew:=2*ne; + if font_level=0 then begin + header_length:=14; + ncw:=2*(ec-bc+1); + end + else begin + header_length:=29; + fget; read_thirtytwo(nco); + fget; read_thirtytwo(ncw); + fget; read_thirtytwo(npc); + fget; read_thirtytwo(nki); + fget; read_thirtytwo(nwi); + fget; read_thirtytwo(nkf); + fget; read_thirtytwo(nwf); + fget; read_thirtytwo(nkm); + fget; read_thirtytwo(nwm); + fget; read_thirtytwo(nkr); + fget; read_thirtytwo(nwr); + fget; read_thirtytwo(nkg); + fget; read_thirtytwo(nwg); + fget; read_thirtytwo(nkp); + fget; read_thirtytwo(nwp); + end; +end; +if ofm_flag<>0 then + begin if lf<>header_length+lh+ncw+nw+nh+nd+ni+nlw+nk+neew+np+ + nki+nwi+nkf+nwf+nkm+nwm+nkr+nwr+nkg+nwg+nkp+nwp then abort; + end +else +@z + +@x +@= +if jfm_flag<>dir_default then +@y +@= +if ofm_flag<>0 then begin + if font_level=0 then + lf:=lf-14-lh-(ec-bc+1)-nl-ne + else + lf:=lf-29-lh-ncw+(1+npc)*(ec-bc+1)-nl-ne; + end +else +if jfm_flag<>dir_default then +@z + +@x +ctype_base[f]:=fmem_ptr; +char_base[f]:=ctype_base[f]+nt-bc; +width_base[f]:=char_base[f]+ec+1; +@y +ctype_base[f]:=fmem_ptr; +char_base[f]:=ctype_base[f]+nt-bc; +char_attr_base[f]:=char_base[f]+ec+1; +ivalues_start[f]:=char_attr_base[f]+npc*(ec-bc+1); +fvalues_start[f]:=ivalues_start[f]+nki; +mvalues_start[f]:=fvalues_start[f]+nkf; +rules_start[f]:=mvalues_start[f]+nkm; +glues_start[f]:=rules_start[f]+nkr; +penalties_start[f]:=glues_start[f]+nkg; +ivalues_base[f]:=penalties_start[f]+nkp; +fvalues_base[f]:=ivalues_base[f]+nwi; +mvalues_base[f]:=fvalues_base[f]+nwf; +rules_base[f]:=mvalues_base[f]+nwm; +glues_base[f]:=rules_base[f]+nwr; +penalties_base[f]:=glues_base[f]+nwg; +width_base[f]:=penalties_base[f]+nwp; +@z + +@x +store_four_quarters(font_check[f]); +@y +begin + fget; a:=fbyte; qw.b0:=qi(a); + fget; b:=fbyte; qw.b1:=qi(b); + fget; c:=fbyte; qw.b2:=qi(c); + fget; d:=fbyte; qw.b3:=qi(d); + font_check[f]:=qw; + end; +@z + +@x +@ @= +if jfm_flag<>dir_default then + for k:=ctype_base[f] to ctype_base[f]+nt-1 do + begin + fget; read_twentyfourx(cx); + if jfm_enc=2 then {Unicode TFM} + font_info[k].hh.rh:=toDVI(fromUCS(cx)) + else if jfm_enc=1 then {JIS-encoded TFM} + font_info[k].hh.rh:=toDVI(fromJIS(cx)) + else + font_info[k].hh.rh:=tokanji(cx); {|kchar_code|} + fget; cx:=fbyte; + font_info[k].hh.lhfield:=tonum(cx); {|kchar_type|} + end; +for k:=char_base[f]+bc to width_base[f]-1 do + begin store_four_quarters(font_info[k].qqqq); + if (a>=nw)or(b div @'20>=nh)or(b mod @'20>=nd)or + (c div 4>=ni) then abort; + case c mod 4 of + lig_tag: if d>=nl then abort; + ext_tag: if d>=ne then abort; + list_tag: @; + othercases do_nothing {|no_tag|} + endcases; + end +@y +@ @= +if ofm_flag<>0 then begin +if font_level=1 then begin + ij:=0; + kl:=ivalues_start[f]; + font_counter:=ivalues_base[f]; + while kldir_default then + for k:=ctype_base[f] to ctype_base[f]+nt-1 do + begin + fget; read_twentyfourx(cx); + if jfm_enc=2 then {Unicode TFM} + font_info[k].hh.rh:=toDVI(fromUCS(cx)) + else if jfm_enc=1 then {JIS-encoded TFM} + font_info[k].hh.rh:=toDVI(fromJIS(cx)) + else + font_info[k].hh.rh:=tokanji(cx); {|kchar_code|} + fget; cx:=fbyte; + font_info[k].hh.lhfield:=tonum(cx); {|kchar_type|} + end; +k:=char_base[f]+bc; +while k<=width_base[f]-1 do + begin store_four_quarters(font_info[k].qqqq); + if (a>=nw)or(b div (@'20*(ofm_flag+1))>=nh) + or(b mod (@'20*(ofm_flag+1))>=nd)or + (c div 4*(ofm_flag+1)>=ni) then abort; + case c mod 4*(ofm_flag+1) of + lig_tag: if d>=nl then abort; + ext_tag: if d>=ne then abort; + list_tag: @; + othercases do_nothing {|no_tag|} + endcases; + incr(k); + if font_level=1 then begin + fget; read_sixteen_unsigned(repeat_no); + for ij:=0 to npc-1 do begin + fget; read_sixteen(fparam); + font_info[k_param].int := + font_info[ivalues_start[f]+ij].int + fparam*table_size[ij]; + incr(k_param); + end; + for ij:=1 to extra_char_bytes do fget; + for ij:=1 to repeat_no do begin + for table_counter:=0 to npc-1 do begin + end; + end; + end; + end +@z + +@x +adjust(ctype_base); +adjust(char_base); adjust(width_base); adjust(lig_kern_base); +@y +adjust(char_attr_base); adjust(ivalues_start); adjust(fvalues_start); +adjust(mvalues_start); adjust(rules_start); adjust(glues_start); +adjust(penalties_start); adjust(ivalues_base); adjust(fvalues_base); +adjust(mvalues_base); adjust(rules_base); adjust(glues_base); +adjust(penalties_base); adjust(ctype_base); +adjust(char_base); adjust(width_base); adjust(lig_kern_base); +@z + @x @d set2=129 {typeset a character and move right} @y @@ -840,6 +1426,18 @@ begin @d set4=131 {typeset a character and move right} @z +@x + begin if c>=qi(128) then dvi_out(set1); + dvi_out(qo(c));@/ +@y + begin if c>=qi(@"100) then begin + dvi_out(set2); dvi_out(Hi(c)); dvi_out(Lo(c)); + end + else begin if c>=qi(128) then dvi_out(set1); + dvi_out(qo(c));@/ + end; +@z + @x jc:=KANJI(info(p)); @y @@ -1181,12 +1779,48 @@ kchar_given: begin print_esc("kchar"); print_hex(chr_code); end; @z +@x + if p=kcat_code_base then + begin scan_char_num; p:=p+kcatcodekey(cur_val) end + else begin scan_ascii_num; p:=p+cur_val; end; +@y + if p=kcat_code_base then + begin scan_char_num; p:=p+kcatcodekey(cur_val); + if cur_val>=max_latin_val then m:=not_cjk; end + else if p= if cur_chr=kcat_code_base then m:=kanji else m:=0 + +@ @= +if cur_chr=cat_code_base then n:=invalid_char {1byte |max_char_code|} +else if cur_chr=kcat_code_base then n:=max_char_code @y @ @= if cur_chr=kcat_code_base then m:=latin_ucs else m:=0 + +@ @= +if cur_chr=cat_code_base then n:=invalid_char {1byte |max_char_code|} +else if cur_chr=kcat_code_base then n:=max_char_code +else if cur_chr= t:=info(p); -if (t=0)and(c<256)then check_echar_range:=1 +else if (c>=256)and(c +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_uptex=$BinDir/uptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +# get same filename in log +rm -f up-ofm.* +$LN_S $srcdir/uptexdir/tests/up-ofm.tex ./up-ofm.tex + +#exit 77 + +$_uptex -ini up-ofm || exit 1 + +$_uptex -fmt=up-ofm -interaction=batchmode up-ofm || : + +sed 1d up-ofm.log >up-ofm.out + +diff $srcdir/uptexdir/tests/up-ofm.log up-ofm.out || exit 3 +