diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-11-10 10:27:09 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-11-10 10:27:09 +0000 |
commit | 5e8e9500102800e68c9e7fcac9e85c1668b71a36 (patch) | |
tree | 81d79ac70ffbb127e8063f18c8f55475ca169ee1 /Build/source/texk/web2c/omegaware | |
parent | e6a9c88ada2f11dd61e4c4e39dff84944bed5787 (diff) |
towards TL2010: texk/web2c
git-svn-id: svn://tug.org/texlive/trunk@15964 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/omegaware')
63 files changed, 3860 insertions, 1025 deletions
diff --git a/Build/source/texk/web2c/omegaware/ChangeLog b/Build/source/texk/web2c/omegaware/ChangeLog index d40681925d0..322d35cfd79 100644 --- a/Build/source/texk/web2c/omegaware/ChangeLog +++ b/Build/source/texk/web2c/omegaware/ChangeLog @@ -1,3 +1,36 @@ +2009-09-29 Peter Breitenlohner <peb@mppmu.mpg.de> + + * opl2ofm.web, ovp2ovf.web: Rearrange property name codes to + simplify checking for legal properties. + +2009-09-28 Peter Breitenlohner <peb@mppmu.mpg.de> + + * o*.web, o*.ch: Remove trailing blanks. + +2009-09-26 Peter Breitenlohner <peb@mppmu.mpg.de> + + * ofm2opl.web, opl2ofm.web, ovf2ovp.web, ovp2ovf.web: Bugfix. + Don't forget to output the mvalues. + + * opl2ofm.web, ovp2ovf.web: Bugfix. Check input parameters for + character tables (ivalue & Co), fix table size computation. + Use out_int() for values that might be negative. + +2009-09-24 Peter Breitenlohner <peb@mppmu.mpg.de> + + * odvicopy.test (new): Shell script to test odvicopy. + * odvitype.test (new): Shell script to test odvitype. + * ofonts.test (new): Shell script to test ofm2opl etc. + * tests/ofont* (new): Test data. + * am/omegaware.am: Add new tests and test data. + + * odvicopy.{ch,web}: Correctly identify TFM/OFM files by their + ofm_level, not by being found via TFMFONTS/OFMFONTS. + When assembling VF chracter packets use type of local font. + + * ovf2ovp.ch: Somewhat reorganize, avoiding to move a largish + section of code. + 2009-09-22 Peter Breitenlohner <peb@mppmu.mpg.de> * ovf2ovp.{web,ch}: Bugfix in handling of local fonts with @@ -11,6 +44,13 @@ * ovp2ovf.web: Bugfix in handling of ofm_level=-1. +2009-09-20 Peter Breitenlohner <peb@mppmu.mpg.de> + + * odvicopy.web (load_font), odvitype.web (in_TFM): Bugfix in + handling of ofm_level=1 fonts. + + * odvicopy.ch, odvitype.ch: Avoid compiler warnings. + 2009-09-19 Peter Breitenlohner <peb@mppmu.mpg.de> * opl2ofm.web (get_integer), ovp2ovf.web (get_integer): @@ -45,6 +85,30 @@ * opl2ofm.web, ovp2ovf.web: Accept NATURALFONTDIR as alias for NFONTDIR for compatibility with omegafonts (C) versions. +2009-09-09 Peter Breitenlohner <peb@mppmu.mpg.de> + + * am/omegaware.am, ../am/web.am: Move test data from ../tests/ + to tests. + * level1.test, omfonts.test, specialhex.test: Adjusted. + +2009-09-07 Peter Breitenlohner <peb@mppmu.mpg.de> + + * odvicopy.web: Version 1.6 (September 2009). + Import changes for dvicopy.web updating from V1.5 to V1.6: + Minor cleanup to avoid unused or uninitialized variables + and diagnose impossible cases. + (comp_char): Bugfix, 'o' was used uninitialized. + + * odvicopy.ch (make_name): Eliminate unused variable. + (jump_out, confusion, overflow, bad_tfm, bad_font, bad_dvi): + Declare as noreturn procedures. + + * odvitype.ch (first_par): Diagnose impossible cases. + +2009-09-06 Peter Breitenlohner <peb@mppmu.mpg.de> + + * odvicopy.ch: Declare comment as const_w2c_u_string. + 2009-09-05 Peter Breitenlohner <peb@mppmu.mpg.de> * ovf2ovp.ch (ASCII04 etc.): Declare as const_c_string. @@ -57,6 +121,14 @@ (HEX): Declare as const_c_string. (read_lig_kern): Eliminate unused variables. +2009-09-04 Peter Breitenlohner <peb@mppmu.mpg.de> + + * otangle.ch: Eliminate the unused |end_of_TANGLE| label. + +2009-08-16 Peter Breitenlohner <peb@mppmu.mpg.de> + + * am/omegaware.am: Adapt to web2c-sh. + 2009-07-15 Peter Breitenlohner <peb@mppmu.mpg.de> * specialhex.test (new): Shell script to test specials. diff --git a/Build/source/texk/web2c/omegaware/README b/Build/source/texk/web2c/omegaware/README index 34593ad5ce2..ad3d049fae9 100644 --- a/Build/source/texk/web2c/omegaware/README +++ b/Build/source/texk/web2c/omegaware/README @@ -8,15 +8,11 @@ You may freely use, modify and/or distribute this file. This directory contains a new Web Version 1.12 of the Omega font conversion programs ofm2opl, opl2ofm, ovf2ovp, and ovp2ovf. -After numerous bugfixes and with a slightly modification of one algorithm -the programs are now able to process ofm_level=-1 (TFM/VF) as well as -ofm_level=0,1 (OFM/OVF) files. A virtual font and the local fonts can use +After numerous bugfixes and with a slight modification of one algorithm the +programs are now able to process ofm_level=-1 (TFM/VF) as well as +ofm_level=0,1 (OFM/OVF) files. A virtual font and the local fonts can have any combination of these ofm levels. -For the moment VF/OVF files read by ovf2ovp must have the extension '.ovf', -allowing '.vf' as alternative requires a modification of the Kpathsea -library that will not be present in TL2009. - Note, however, that all this is still somewhat preliminary. In particular the programs still lack the thorough checking of all input data done in TFtoPL&Co and required to diagnose problems with faulty binary files. diff --git a/Build/source/texk/web2c/omegaware/am/omegaware.am b/Build/source/texk/web2c/omegaware/am/omegaware.am index 0709ea1df30..2f12023bc33 100644 --- a/Build/source/texk/web2c/omegaware/am/omegaware.am +++ b/Build/source/texk/web2c/omegaware/am/omegaware.am @@ -23,10 +23,9 @@ ow_tangle = WEBINPUTS=$(srcdir)/omegaware $(buildenv) $(TANGLE) nodist_odvicopy_SOURCES = odvicopy.c odvicopy.h odvicopy.c odvicopy.h: odvicopy-web2c -odvicopy-web2c: $(web2c_depend) odvicopy.p - $(web2c) odvicopy - echo timestamp >$@ - touch odvicopy.c odvicopy.h + @$(web2c) odvicopy +odvicopy-web2c: odvicopy.p $(web2c_depend) + @$(web2c) odvicopy EXTRA_DIST += $(odvicopy_sources) odvicopy_sources = omegaware/odvicopy.web omegaware/odvicopy.ch odvicopy.p: tangle$(EXEEXT) $(odvicopy_sources) @@ -34,10 +33,9 @@ odvicopy.p: tangle$(EXEEXT) $(odvicopy_sources) nodist_odvitype_SOURCES = odvitype.c odvitype.h odvitype.c odvitype.h: odvitype-web2c -odvitype-web2c: $(web2c_depend) odvitype.p - $(web2c) odvitype - echo timestamp >$@ - touch odvitype.c odvitype.h + @$(web2c) odvitype +odvitype-web2c: odvitype.p $(web2c_depend) + @$(web2c) odvitype EXTRA_DIST += $(odvitype_sources) odvitype_sources = omegaware/odvitype.web omegaware/odvitype.ch odvitype.p: tangle$(EXEEXT) $(odvitype_sources) @@ -45,10 +43,9 @@ odvitype.p: tangle$(EXEEXT) $(odvitype_sources) nodist_ofm2opl_SOURCES = ofm2opl.c ofm2opl.h ofm2opl.c ofm2opl.h: ofm2opl-web2c -ofm2opl-web2c: $(web2c_depend) ofm2opl.p - $(web2c) ofm2opl - echo timestamp >$@ - touch ofm2opl.c ofm2opl.h + @$(web2c) ofm2opl +ofm2opl-web2c: ofm2opl.p $(web2c_depend) + @$(web2c) ofm2opl EXTRA_DIST += $(ofm2opl_sources) ofm2opl_sources = omegaware/ofm2opl.web omegaware/ofm2opl.ch ofm2opl.p: tangle$(EXEEXT) $(ofm2opl_sources) @@ -56,10 +53,9 @@ ofm2opl.p: tangle$(EXEEXT) $(ofm2opl_sources) nodist_opl2ofm_SOURCES = opl2ofm.c opl2ofm.h opl2ofm.c opl2ofm.h: opl2ofm-web2c -opl2ofm-web2c: $(web2c_depend) opl2ofm.p - $(web2c) opl2ofm - echo timestamp >$@ - touch opl2ofm.c opl2ofm.h + @$(web2c) opl2ofm +opl2ofm-web2c: opl2ofm.p $(web2c_depend) + @$(web2c) opl2ofm EXTRA_DIST += $(opl2ofm_sources) opl2ofm_sources = omegaware/opl2ofm.web omegaware/opl2ofm.ch opl2ofm.p: tangle$(EXEEXT) $(opl2ofm_sources) @@ -67,10 +63,9 @@ opl2ofm.p: tangle$(EXEEXT) $(opl2ofm_sources) nodist_otangle_SOURCES = otangle.c otangle.h otangle.c otangle.h: otangle-web2c -otangle-web2c: $(web2c_depend) otangle.p - $(web2c) otangle - echo timestamp >$@ - touch otangle.c otangle.h + @$(web2c) otangle +otangle-web2c: otangle.p $(web2c_depend) + @$(web2c) otangle EXTRA_DIST += $(otangle_sources) otangle_sources = omegaware/otangle.web omegaware/otangle.ch otangle.p: tangle$(EXEEXT) $(otangle_sources) @@ -78,10 +73,9 @@ otangle.p: tangle$(EXEEXT) $(otangle_sources) nodist_ovf2ovp_SOURCES = ovf2ovp.c ovf2ovp.h ovf2ovp.c ovf2ovp.h: ovf2ovp-web2c -ovf2ovp-web2c: $(web2c_depend) ovf2ovp.p - $(web2c) ovf2ovp - echo timestamp >$@ - touch ovf2ovp.c ovf2ovp.h + @$(web2c) ovf2ovp +ovf2ovp-web2c: ovf2ovp.p $(web2c_depend) + @$(web2c) ovf2ovp EXTRA_DIST += $(ovf2ovp_sources) ovf2ovp_sources = omegaware/ovf2ovp.web omegaware/ovf2ovp.ch ovf2ovp.p: tangle$(EXEEXT) $(ovf2ovp_sources) @@ -89,10 +83,9 @@ ovf2ovp.p: tangle$(EXEEXT) $(ovf2ovp_sources) nodist_ovp2ovf_SOURCES = ovp2ovf.c ovp2ovf.h ovp2ovf.c ovp2ovf.h: ovp2ovf-web2c -ovp2ovf-web2c: $(web2c_depend) ovp2ovf.p - $(web2c) ovp2ovf - echo timestamp >$@ - touch ovp2ovf.c ovp2ovf.h + @$(web2c) ovp2ovf +ovp2ovf-web2c: ovp2ovf.p $(web2c_depend) + @$(web2c) ovp2ovf EXTRA_DIST += $(ovp2ovf_sources) ovp2ovf_sources = omegaware/ovp2ovf.web omegaware/ovp2ovf.ch ovp2ovf.p: tangle$(EXEEXT) $(ovp2ovf_sources) @@ -100,27 +93,56 @@ ovp2ovf.p: tangle$(EXEEXT) $(ovp2ovf_sources) ## Tests ## -EXTRA_DIST += omegaware/level1.test omegaware/omfonts.test \ +EXTRA_DIST += omegaware/level1.test \ + omegaware/odvicopy.test omegaware/odvitype.test \ + omegaware/ofonts.test omegaware/omfonts.test \ omegaware/otangle.test omegaware/specialhex.test if OTANGLE -TESTS += omegaware/otangle.test +TESTS += omegaware/odvicopy.test omegaware/odvitype.test \ + omegaware/otangle.test if !OMFONTS -TESTS += omegaware/level1.test omegaware/omfonts.test omegaware/specialhex.test +TESTS += omegaware/level1.test omegaware/ofonts.test \ + omegaware/omfonts.test omegaware/specialhex.test endif !OMFONTS endif OTANGLE ## omegaware/level1.test -DISTCLEANFILES += tests/xlevel1.ofm tests/xlevel1.opl +EXTRA_DIST += omegaware/tests/level1.opl +DISTCLEANFILES += omegaware/tests/xlevel1.ofm omegaware/tests/xlevel1.opl +## omegaware/odvicopy.test (and ofonts.test) +EXTRA_DIST += \ + omegaware/tests/ofontd1.dvi omegaware/tests/ofontd1.typ \ + omegaware/tests/ofontd2.dvi omegaware/tests/ofontd2.typ \ + omegaware/tests/ofontd3.dvi omegaware/tests/ofontd3.typ \ + omegaware/tests/ofontr1.vf omegaware/tests/ofontr2.ovf \ + omegaware/tests/ofontr3.ovf omegaware/tests/ofontv4.vf \ + omegaware/tests/ofontv5.ovf omegaware/tests/ofontv6.ovf +DISTCLEANFILES += ofont*vf +## omegaware/odvitype.test (and odvicopy.test, ofonts.test) +EXTRA_DIST += omegaware/tests/ofontd0.dtl omegaware/tests/ofontd0.dvi \ + omegaware/tests/ofontd0.typ omegaware/tests/ofontr0.tfm \ + omegaware/tests/ofontr1.tfm omegaware/tests/ofontr2.ofm \ + omegaware/tests/ofontr3.ofm omegaware/tests/ofontv4.tfm \ + omegaware/tests/ofontv5.ofm omegaware/tests/ofontv6.ofm +DISTCLEANFILES += omegaware/tests/xofont* +## omegaware/ofonts.test +EXTRA_DIST += omegaware/tests/ofontr0.pl \ + omegaware/tests/ofontr1.pl omegaware/tests/ofontr1.vpl \ + omegaware/tests/ofontr2.opl omegaware/tests/ofontr2.ovp \ + omegaware/tests/ofontr3.opl omegaware/tests/ofontr3.ovp \ + omegaware/tests/ofontv4.pl omegaware/tests/ofontv4.vpl \ + omegaware/tests/ofontv5.opl omegaware/tests/ofontv5.ovp \ + omegaware/tests/ofontv6.opl omegaware/tests/ofontv6.ovp ## omegaware/omfonts.test -DISTCLEANFILES += tests/Cherokee.tfm tests/OCherokee.ofm \ - tests/OCherokee.opl tests/OCherokee.ovf \ - tests/xCherokee.pl tests/xOCherokee.ofm \ - tests/xOCherokee.opl tests/xOCherokee.ovp +EXTRA_DIST += omegaware/tests/Cherokee.pl omegaware/tests/OCherokee.ovp +DISTCLEANFILES += omegaware/tests/Cherokee.tfm omegaware/tests/OCherokee.ofm \ + omegaware/tests/OCherokee.opl omegaware/tests/OCherokee.ovf \ + omegaware/tests/xCherokee.* omegaware/tests/xOCherokee.* ## omegaware/otangle.test DISTCLEANFILES += cftest.p ## omegaware/specialhex.test -DISTCLEANFILES += tests/specialhex.ofm tests/specialhex.opl \ - tests/specialhex.ovf tests/xspecialhex.ofm \ - tests/xspecialhex.opl tests/xspecialhex.ovp +EXTRA_DIST += omegaware/tests/specialhex.ovp +DISTCLEANFILES += omegaware/tests/specialhex.ofm omegaware/tests/specialhex.opl \ + omegaware/tests/specialhex.ovf omegaware/tests/xspecialhex.* diff --git a/Build/source/texk/web2c/omegaware/level1.test b/Build/source/texk/web2c/omegaware/level1.test index e88e9a611e1..ed40ebde855 100755 --- a/Build/source/texk/web2c/omegaware/level1.test +++ b/Build/source/texk/web2c/omegaware/level1.test @@ -3,12 +3,14 @@ # Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> # You may freely use, modify and/or distribute this file. -test -d tests || mkdir -p tests +tests=omegaware/tests -./opl2ofm -verbose $srcdir/tests/level1 tests/xlevel1 || exit 1 +test -d $tests || mkdir -p $tests + +./opl2ofm -verbose $srcdir/$tests/level1 $tests/xlevel1 || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./ofm2opl -verbose tests/xlevel1 tests/xlevel1 || exit 1 + ./ofm2opl -verbose $tests/xlevel1 $tests/xlevel1 || exit 1 -diff $srcdir/tests/level1.opl tests/xlevel1.opl || exit 1 +diff $srcdir/$tests/level1.opl $tests/xlevel1.opl || exit 1 diff --git a/Build/source/texk/web2c/omegaware/odvicopy.ch b/Build/source/texk/web2c/omegaware/odvicopy.ch index c502aa52483..7215b186642 100644 --- a/Build/source/texk/web2c/omegaware/odvicopy.ch +++ b/Build/source/texk/web2c/omegaware/odvicopy.ch @@ -32,7 +32,7 @@ procedure initialize; {this procedure gets things started properly} @<Define |parse_arguments|@> procedure initialize; {this procedure gets things started properly} var @<Local variables for initialization@>@/ - begin + begin kpse_set_progname (argv[0]); parse_arguments; print (banner); print_ln (version_string); @@ -111,7 +111,7 @@ procedure initialize; {this procedure gets things started properly} @d last_text_char=255 {ordinal number of the largest element of |text_char|} @z -@x [23] Remove non-local goto +@x [23] Remove non-local goto, declare jump_out as noreturn @d abort(#)==begin print_ln(' ',#,'.'); jump_out; end @@ -131,12 +131,24 @@ end; @<Basic printing procedures@>@; procedure close_files_and_terminate; forward; @# -procedure jump_out; +noreturn procedure jump_out; begin mark_fatal; close_files_and_terminate; uexit(1); end; @z +@x [24] Declare confusion as noreturn +procedure confusion(@!p:pckt_pointer); +@y +noreturn procedure confusion(@!p:pckt_pointer); +@z + +@x [25] Declare overflow as noreturn +procedure overflow(@!p:pckt_pointer;@!n:int_16u); +@y +noreturn procedure overflow(@!p:pckt_pointer;@!n:int_16u); +@z + @x [51] Fix casting problem in C. @d comp_spair(#) == if a<128 then #:=a*256+b @+ else #:=(a-256)*256+b @d comp_upair(#) == #:=a*256+b @@ -193,9 +205,9 @@ To reduce the required changes we simply ignore the parameters given to |make_font_name|. @^system dependencies@> -@d append_to_name(#)== begin +@d append_to_name(#)== begin cur_name[l_cur_name]:=#; - incr(l_cur_name); + incr(l_cur_name); end @d make_font_name_end(#)== make_name @@ -204,7 +216,12 @@ to |make_font_name|. @z % [67] No conversion of filenames in lower case, and initialize and -% terminate for C strings. +% terminate for C strings. Eliminate now unused variable. +@x +@!c:char; {a character to be appended to |cur_name|} +@y +@z + @x cur_loc:=pckt_start[n]; cur_limit:=pckt_start[n+1]; @y @@ -243,7 +260,7 @@ the default \.{TFM} directory, which is a system-dependent place where the \.{TFM} files for standard fonts are kept. The string variable |TFM_default_area| contains the name of this area. @^system dependencies@> - + @d TFM_default_area_name=='TeXfonts:' {change this to the correct name} @d OFM_default_area_name=='TeXfonts:' {change this to the correct name} @d TFM_default_area_name_length=9 {change this to the correct length} @@ -264,6 +281,18 @@ OFM_default_area:=OFM_default_area_name; @ (No initialization to be done. Keep this module to preserve numbering.) @z +@x [94] Declare bad_tfm as noreturn +procedure bad_tfm; +@y +noreturn procedure bad_tfm; +@z + +@x [94] Declare bad_font as noreturn +procedure bad_font; +@y +noreturn procedure bad_font; +@z + @x [96] Open TFM file @<TFM: Open |tfm_file|@>= make_font_name(TFM_default_area_name_length)(TFM_default_area)(tfm_ext); @@ -274,10 +303,6 @@ if eof(tfm_file) then begin if eof(tfm_file) then @^system dependencies@> abort('---not loaded, TFM or OFM file can''t be opened!') - else font_extend(cur_fnt):=true -@.TFM or OFM file can\'t be opened@> - end -else font_extend(cur_fnt):=false @y |TFM_default_area_name_length| and |TFM_default_area| will not be used by |make_font_name|. @@ -289,7 +314,6 @@ if full_name then begin resetbin (tfm_file, full_name); free (cur_name); free (full_name); - font_extend(cur_fnt):=false end else begin make_font_name(OFM_default_area_name_length)(OFM_default_area)(ofm_ext); @@ -298,10 +322,8 @@ else begin resetbin (tfm_file, full_name); free (cur_name); free (full_name); - font_extend(cur_fnt):=true end else abort('---not loaded, TFM or OFM file can''t be opened!') - end @z @x @@ -338,6 +360,13 @@ else #:=(((tfm_b0-intcast(256))*intcast(256)+tfm_b1) (((tfm_b0*intcast(256)+tfm_b1)*intcast(256)+tfm_b2)*intcast(256)+tfm_b3) @z +@x [103] Avoid compiler warnings +read_tfm_word; tfm_b01(first_two); +@y +nco:=0; extra_words:=0; +read_tfm_word; tfm_b01(first_two); +@z + @x [109] Declare full_name. @!dvi_loc:int_32; {where we are about to look, in |dvi_file|} @y @@ -345,6 +374,12 @@ else #:=(((tfm_b0-intcast(256))*intcast(256)+tfm_b1) @!full_name: ^char; @z +@x [109] Declare bad_dvi as noreturn +procedure bad_dvi; +@y +noreturn procedure bad_dvi; +@z + @x [111] Fix up opening the binary files @ To prepare |dvi_file| for input, we |reset| it. @@ -393,7 +428,7 @@ the default \.{VF} directory, which is a system-dependent place where the \.{VF} files for standard fonts are kept. The string variable |VF_default_area| contains the name of this area. @^system dependencies@> - + @d VF_default_area_name=='TeXvfonts:' {change this to the correct name} @d VF_default_area_name_length=10 {change this to the correct length} @d OVF_default_area_name=='TeXvfonts:' {change this to the correct name} @@ -410,7 +445,7 @@ OVF_default_area:=OVF_default_area_name; @ If no font directory has been specified, \.{\title} is supposed to use the default \.{VF} directory, which is a system-dependent place where the \.{VF} files for standard fonts are kept. - + Actually, under UNIX the standard area is defined in an external file \.{site.h}. And the users have a path searched for fonts, by setting the \.{VFFONTS} environment variable. @@ -442,7 +477,7 @@ if full_name then begin end else begin make_font_name(OVF_default_area_name_length)(OVF_default_area)(ovf_ext); - full_name := kpse_find_ovf (cur_name); + full_name := kpse_find_ovf (cur_name); if full_name then begin resetbin (vf_file, full_name); free (cur_name); @@ -542,7 +577,7 @@ rewrite(out_file); {prepares to write packed bytes to |out_file|} @x [250] String declaration. @!comment:packed array[1..comm_length] of char; {preamble comment prefix} @y -@!comment:^char; {preamble comment prefix} +@!comment:const_w2c_u_string; {preamble comment prefix} @z @x [251] Output the string from 0 to len-1, not 1 to len. @@ -598,13 +633,13 @@ begin end else if argument_is ('magnification') then begin out_mag := atou (optarg); - + end else if argument_is ('max-pages') then begin max_pages := atou (optarg); - + end else if argument_is ('page-start') then begin @<Determine the desired |start_count| values from |optarg|@>; - + end; {Else it was a flag; |getopt| has already done the assignment.} until getopt_return_val = -1; @@ -614,17 +649,17 @@ begin dvi_file := make_binary_file (stdin); out_file := make_binary_file (stdout); term_out := stderr; - + end else if optind + 1 = argc then begin resetbin (dvi_file, extend_filename (cmdline (optind), 'dvi')); out_file := make_binary_file (stdout); term_out := stderr; - + end else if optind + 2 = argc then begin resetbin (dvi_file, extend_filename (cmdline (optind), 'dvi')); rewritebin (out_file, extend_filename (cmdline (optind + 1), 'dvi')); term_out := stdout; - + end else begin write_ln (stderr, 'odvicopy: Need at most two file arguments.'); usage ('odvicopy'); @@ -682,7 +717,7 @@ long_options[current_option].flag := 0; long_options[current_option].val := 0; incr (current_option); -@ Parsing the starting page specification is a bit complicated. +@ Parsing the starting page specification is a bit complicated. (This is the same as in \.{DVItype}.) @<Determine the desired |start_count|...@> = @@ -692,7 +727,7 @@ while optarg[m] do begin if optarg[m] = "*" then begin start_there[k] := false; incr (m); - + end else if optarg[m] = "." then begin incr (k); if k >= 10 then begin @@ -700,7 +735,7 @@ while optarg[m] do begin uexit (1); end; incr (m); - + end else begin start_count[k] := strtol (optarg + m, address_of (end_num), 10); if end_num = optarg + m then begin diff --git a/Build/source/texk/web2c/omegaware/odvicopy.test b/Build/source/texk/web2c/omegaware/odvicopy.test new file mode 100755 index 00000000000..9b836657c25 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/odvicopy.test @@ -0,0 +1,56 @@ +#! /bin/sh + +# Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +# You may freely use, modify and/or distribute this file. + +tests=omegaware/tests + +test -d $tests || mkdir -p $tests + +# First a straight copy +# +rm -f ofont*vf + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + OVFFONTS=. \ + ./odvicopy $srcdir/$tests/ofontd0 $tests/xofontd1 || exit 1 + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + ./odvitype $tests/xofontd1 | sed '1s/ (.*)$//' >$tests/xofontd1.typ || exit 1 + +diff $srcdir/$tests/ofontd1.typ $tests/xofontd1.typ || exit 1 + +# Next with VF/OVF files for ofontv[4-6] +# +cp $srcdir/$tests/ofontv*vf . + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + OVFFONTS=. \ + ./odvicopy $tests/xofontd1 $tests/xofontd2 || exit 1 + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + ./odvitype $tests/xofontd2 | sed '1s/ (.*)$//' >$tests/xofontd2.typ || exit 1 + +diff $srcdir/$tests/ofontd2.typ $tests/xofontd2.typ || exit 1 + +# Finally with OVF files for ofontr[1-3] and ofontv[4-6] +# +cp $srcdir/$tests/ofontr*vf . + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + OVFFONTS=. \ + ./odvicopy $srcdir/$tests/ofontd0 $tests/xofontd3 || exit 1 + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + ./odvitype $tests/xofontd3 | sed '1s/ (.*)$//' >$tests/xofontd3.typ || exit 1 + +diff $srcdir/$tests/ofontd3.typ $tests/xofontd3.typ || exit 1 + +exit 0 + diff --git a/Build/source/texk/web2c/omegaware/odvicopy.web b/Build/source/texk/web2c/omegaware/odvicopy.web index cda08cc427f..a1bb27e5c78 100644 --- a/Build/source/texk/web2c/omegaware/odvicopy.web +++ b/Build/source/texk/web2c/omegaware/odvicopy.web @@ -1,5 +1,5 @@ % odvicopy.web: Omega version of file dvicopy.web -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -23,6 +23,8 @@ % don't load fonts that are never used (August 25, 1992). % Version 1.4 fixed a typo (March 28, 1995). % Version 1.5 avoided cur_name_length identifier conflict (October 15, 1995). +% Version 1.6 minor cleanup: avoid unused or uninitialized variables, +% diagnose impossible cases (September 2009). % Here is TeX material that gets inserted after \input webmac \def\hang{\hangindent 3em\indent\ignorespaces} @@ -48,7 +50,7 @@ 1994,97 John Plaice and Yannis Haralambous} \centerline{Distributed under terms of GNU General Public License} \vskip 15pt - \centerline{(Version 1.5, March 1997)} + \centerline{(Version 1.6, September 2009)} \vfill} \def\botofcontents{\vfill \centerline{\hsize 5in\baselineskip9pt @@ -111,12 +113,12 @@ References to \.{DVIcopy} also apply to \.{ODVIcopy}. The |banner| and |preamble_comment| strings defined here should be changed whenever \.{ODVIcopy} gets modified. -@d banner=='This is ODVIcopy, Version 1.5' {printed when the program starts} +@d banner=='This is ODVIcopy, Version 1.6' {printed when the program starts} @d title=='ODVIcopy' {the name of this program, used in some messages} @d copyright== - '(C) 1990,95 P. Breitenlohner, 1994,97 J. Plaice and Y. Haralambous' + '(C) 1990,2009 P. Breitenlohner, 1994,98 J. Plaice and Y. Haralambous' @# -@d preamble_comment=='ODVIcopy 1.5 output from ' +@d preamble_comment=='ODVIcopy 1.6 output from ' @d comm_length=25 {length of |preamble_comment|} @d from_length=6 {length of its |' from '| part} @@ -1116,10 +1118,10 @@ or, if |upd=false|, a |put| command. var o:eight_bits; {|set1| or |put1|} begin @d comp_char(#) == +o:=dvi_char_cmd[upd]; {|set1| or |put1|} if (res>=0) and (res<@"100) then begin if (not upd)or(res>127)or(ext<>0) then - begin o:=dvi_char_cmd[upd]; {|set1| or |put1|} - if ext<0 then Incr(ext)(@"1000000); + begin if ext<0 then Incr(ext)(@"1000000); if ext=0 then #(o) @+ else @; begin if ext<@"100 then #(o+1) @+ else @; begin if ext<@"10000 then #(o+2) @+ else @; @@ -1639,8 +1641,8 @@ label found,exit; var p,@!q:pckt_pointer; {current and next packet} @!f:eight_bits; {a flag byte} @!e:int_24; {extension for a packet} -begin @<Locate a character packet and |goto found| if found@>; -if font_packet(cur_fnt)(cur_res)=invalid_packet then +begin q:=font_packet(cur_fnt)(cur_res); +if q=invalid_packet then begin if pckt_m_msg<10 then {stop telling after first 10 times} begin print_ln('---missing character packet for character ',cur_res:1, @.missing character packet...@> @@ -1650,6 +1652,7 @@ if font_packet(cur_fnt)(cur_res)=invalid_packet then end; find_packet:=false; return; end; +@<Locate a character packet and |goto found| if found@>; if pckt_s_msg<10 then {stop telling after first 10 times} begin print_ln('---substituted character packet with extension ', @.substituted character packet...@> @@ -1663,9 +1666,7 @@ found: cur_pckt:=p; cur_type:=f; find_packet:=true; exit: end; @ @<Locate a character packet and |goto found| if found@>= -q:=font_packet(cur_fnt)(cur_res); -while q<>invalid_packet do - begin p:=q; q:=invalid_packet; +repeat p:=q; q:=invalid_packet; cur_loc:=pckt_start[p]; cur_limit:=pckt_start[p+1]; if p=empty_packet then begin e:=0; f:=0; @@ -1675,13 +1676,13 @@ while q<>invalid_packet do 0: e:=0; 1: e:=pckt_ubyte; 2: e:=pckt_upair; - 3: e:=pckt_strio; - end; {there are no other cases} + othercases e:=pckt_strio; {|f div ext_flag = 3|} + endcases; if (f mod ext_flag)>=chain_flag then q:=pckt_upair; f:=f mod chain_flag; end; if e=cur_ext then goto found; - end +until q=invalid_packet @ The |start_packet| procedure is used to create the header bytes of a character packet for the character with residue~|cur_res| and @@ -1696,7 +1697,8 @@ var p,@!q:pckt_pointer; {current and next packet} @!e:int_32; {extension for a packet} @!cur_loc: byte_pointer; {current location in a packet} @!cur_limit: byte_pointer; {start of next packet} -begin @<Locate a character packet and |goto found| if found@>; +begin q:=font_packet(cur_fnt)(cur_res); +if q<>invalid_packet then @<Locate a character packet...@>; q:=font_packet(cur_fnt)(cur_res); pckt_dup:=false; goto not_found; found: pckt_dup:=true; pckt_prev:=p; not_found: pckt_ext:=cur_ext; pckt_res:=cur_res; pckt_room(6); @@ -1798,7 +1800,8 @@ case font_type(cur_fnt) of defined_font: confusion(str_fonts); loaded_font: bad_tfm; @<Cases for |bad_font|@>@;@/ - end; {there are no other cases} + othercases abort('internal error'); + endcases; end; @ To prepare |tfm_file| for input we |reset| it. @@ -1812,10 +1815,8 @@ if eof(tfm_file) then begin if eof(tfm_file) then @^system dependencies@> abort('---not loaded, TFM or OFM file can''t be opened!') - else font_extend(cur_fnt):=true @.TFM or OFM file can\'t be opened@> end -else font_extend(cur_fnt):=false @ It turns out to be convenient to read four bytes at a time, when we are inputting from \.{TFM} files. The input goes into global variables @@ -1999,13 +2000,14 @@ read_tfm_word; if first_two<>0 then tfm_width:=tfm_b0 else begin if # then read_tfm_word; - tfm_b01(tfm_width); + tfm_width:=tfm_b0*256+tfm_b1; end end @<TFM: Read past the header data@>= read_tfm_word; tfm_b01(first_two); if (first_two<>0) then begin + font_extend(cur_fnt):=false; ofm_level:=-1; tfm_b23(lh); read_tfm_word; tfm_b01(bc); tfm_b23(ec); @@ -2027,6 +2029,7 @@ if (first_two<>0) then begin end end else begin + font_extend(cur_fnt):=true; tfm_b23(ofm_level); read_tfm_word; tfm_b03(lf); read_tfm_word; tfm_b03(lh); @@ -2044,7 +2047,7 @@ else begin end; if ofm_level=1 then begin read_tfm_word; - nco:=(((tfm_b0*256+tfm_b1)*256+tfm_b2)*256+tfm_b3) div 2; + nco:=((tfm_b0*256+tfm_b1)*256+tfm_b2)*256+tfm_b3; read_tfm_word; read_tfm_word; extra_words:=(((tfm_b0*256+tfm_b1)*256+tfm_b2)*256+tfm_b3) div 2; for l:=1 to 12 do @@ -2093,7 +2096,7 @@ else begin if ec>=max_chars-font_chars(cur_fnt) then overflow(str_chars,max_chars); font_ec(cur_fnt):=ec; l:=bc; - while l<ec do begin + while l<=ec do begin read_tfm_word; tfm_width:=tfm_b0*256+tfm_b1; char_widths[n_chars]:=tfm_width; incr(n_chars); @@ -2102,7 +2105,7 @@ else begin for j:=l+1 to lprime do begin char_widths[n_chars]:=tfm_width; incr(n_chars); end; - l:=lprime; + l:=lprime+1; for j:=1 to extra_words do read_tfm_word; end; @@ -2529,19 +2532,15 @@ if cur_cmd<set1 then end else begin cur_res:=#; cur_upd:=(cur_cmd<put1); Decr(cur_cmd)(dvi_char_cmd[cur_upd]); - if font_extend(cur_fnt) then - begin - cur_ext:=0; - while cur_cmd>0 do - begin - cur_res:=cur_res*256+#; decr(cur_cmd); - end + if (cur_cmd=3)and(cur_res>127) then cur_res:=cur_res-128; + while cur_cmd>0 do + begin cur_ext:=cur_ext*256+cur_res; cur_res:=#; decr(cur_cmd); + end; + set_cur_char_tail +@d set_cur_char_tail(#)== + if font_extend(#) then + begin cur_res:=256*cur_ext+cur_res; cur_ext:=0; end - else - while cur_cmd>0 do - begin if cur_cmd=3 then if cur_res>127 then cur_ext:=-1; - cur_ext:=cur_ext*256+cur_res; cur_res:=#; decr(cur_cmd); - end; end; end @@ -2549,7 +2548,7 @@ end begin repeat cur_cmd:=dvi_ubyte; until cur_cmd<>nop; {skip over |nop|s} case dvi_par[cur_cmd] of -char_par: set_cur_char(dvi_ubyte); +char_par: set_cur_char(dvi_ubyte)(cur_fnt); no_par: do_nothing; dim1_par: cur_parm:=dvi_sbyte; num1_par: cur_parm:=dvi_ubyte; @@ -2793,7 +2792,6 @@ begin x:=vf_squad; if x<=0 then bad_font @+ else vf_pquad:=x; end; @# function vf_fixp:int_31; {result must be positive} -var x:int_32; {accumulator} begin vf_byte(tfm_b0); vf_byte(tfm_b1); vf_byte(tfm_b2); vf_byte(tfm_b3); Incr(vf_loc)(4);@/ if tfm_b0>0 then bad_font; @@ -2817,7 +2815,7 @@ set_cur_wp_end begin cur_cmd:=vf_ubyte; case dvi_par[cur_cmd] of char_par: - begin set_cur_char(vf_ubyte); set_cur_wp(vf_cur_fnt)(bad_font); + begin set_cur_char(vf_ubyte)(vf_cur_fnt); set_cur_wp(vf_cur_fnt)(bad_font); end; no_par: do_nothing; dim1_par: cur_parm:=vf_fix1; @@ -2834,7 +2832,8 @@ rule_par: cur_upd:=(cur_cmd=set_rule); end; fnt_par:cur_parm:=cur_cmd-fnt_num_0; -end; {there are no other cases} +othercases abort('internal error'); +endcases; cur_class:=dvi_cl[cur_cmd]; end; @@ -2907,8 +2906,7 @@ font type is changed to |vf_font_type|. @p function do_vf:boolean; {read a \.{VF} file} label reswitch,done,not_found,exit; -var temp_int:int_32; {integer for temporary variables} -@!temp_byte:int_8u; {byte for temporary variables} +var temp_byte:int_8u; {byte for temporary variables} @!k:byte_pointer; {index into |byte_mem|} @!l:int_15; {general purpose variable} @!save_ext:int_24; {used to save |cur_ext|} @@ -3058,12 +3056,12 @@ begin if cur_cmd<long_char then begin vf_limit:=cur_cmd; cur_ext:=0; cur_res:=vf_ubyte; vf_wp:=check_width(vf_fix3u); end -else if font_extend(cur_fnt) then - begin vf_limit:=vf_uquad; - cur_ext:=0; cur_res:=vf_squad; vf_wp:=check_width(vf_fix4); - end else begin vf_limit:=vf_uquad; - cur_ext:=vf_strio; cur_res:=vf_ubyte; vf_wp:=check_width(vf_fix4); + cur_ext:=vf_strio; cur_res:=vf_ubyte; + if font_extend(cur_fnt) then + begin cur_res:=256*cur_ext+cur_res; cur_ext:=0; + end; + vf_wp:=check_width(vf_fix4); end; Incr(vf_limit)(vf_loc); vf_push_loc[0]:=byte_ptr; vf_last_end[0]:=byte_ptr; @@ -3107,7 +3105,8 @@ reswitch:case cur_class of fnt_cl: vf_font; fnt_def_cl: bad_font; invalid_cl: if cur_cmd<>nop then bad_font; - end; {there are no other cases} + othercases abort('internal error'); + endcases; if vf_loc<vf_limit then vf_first_par else if last_pop then goto done else begin cur_class:=pop_cl; last_pop:=true; {final |pop|} @@ -3150,7 +3149,8 @@ else case cur_class of char_cl: move_zero:=(not cur_upd)or(vf_cur_fnt<>vf_fnt); rule_cl: move_zero:=not cur_upd; xxx_cl: move_zero:=true; -end; {there are no other cases} +othercases abort('internal error'); +endcases; if move_zero then begin decr(byte_ptr); decr(vf_ptr); end; @@ -3319,7 +3319,7 @@ processed. @<Set init...@>= n_opt:=0; {change this to indicate the presence of command line options} k_opt:=0; {just in case} - + @ The |input_ln| routine waits for the user to type a line at his or her terminal; then it puts ASCII-code equivalents for the characters on that line into the |byte_mem| array as a temporary string. \PASCAL's @@ -3894,10 +3894,11 @@ and draw boxes or leave blank spaces in the output. @p procedure do_font;@/ label done;@/ +var p:char_pointer; {index into |char_widths| and |char_pixels|} @<OUT: Declare additional local variables for |do_font|@>@; -@!p:char_pointer; {index into |char_widths| and |char_pixels|} begin @!debug if font_type(cur_fnt)=defined_font then confusion(str_fonts); gubed@; +p:=0; {such that |p| is used} @!device for p:=font_chars(cur_fnt)+font_bc(cur_fnt) to font_chars(cur_fnt)+font_ec(cur_fnt) do char_pixels[p]:=h_pixel_round(widths[char_widths[p]]); @@ -3926,7 +3927,7 @@ first parameter (if any) and |cur_class| to the command class. @p procedure pckt_first_par; begin cur_cmd:=pckt_ubyte; case dvi_par[cur_cmd] of -char_par: set_cur_char(pckt_ubyte); +char_par: set_cur_char(pckt_ubyte)(cur_fnt); no_par: do_nothing; dim1_par: cur_parm:=pckt_sbyte; num1_par: cur_parm:=pckt_ubyte; @@ -3940,7 +3941,8 @@ rule_par: cur_upd:=(cur_cmd=set_rule); end; fnt_par:cur_parm:=cur_cmd-fnt_num_0; -end; {there are no other cases} +othercases abort('internal error'); +endcases; cur_class:=dvi_cl[cur_cmd]; end; @@ -4211,7 +4213,8 @@ loop begin fnt_cl: dvi_font; fnt_def_cl: dvi_do_font(random_reading); invalid_cl: goto done; - end; {there are no other cases} + othercases abort('internal error'); + endcases; dvi_first_par; {get the next command} end @@ -4590,7 +4593,6 @@ out_four(cur_v_dimen); out_four(cur_h_dimen); the variable |@!p| is already declared. @<OUT: Declare additional local variables for |do_font|@>= -var @ And here is the device dependent code for |do_font|; if the \.{VF} file for a font could not be found, we simply assume this must be a real font. diff --git a/Build/source/texk/web2c/omegaware/odvitype.ch b/Build/source/texk/web2c/omegaware/odvitype.ch index c62e7bb17e0..be75e4196f7 100644 --- a/Build/source/texk/web2c/omegaware/odvitype.ch +++ b/Build/source/texk/web2c/omegaware/odvitype.ch @@ -1,5 +1,5 @@ % odvitype.ch: web2c changes for file odvitype.web -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -199,6 +199,14 @@ begin end; @z +@x [35] Avoid compiler warnings +read_tfm_word; +@y +nco:=0; extra_words:=0; +read_tfm_word; +@z + + @x [35] Make 16-bit TFM calculations work. if (b0*256+b1)<>0 then begin {TFM file} ofm_level:=-1; @@ -533,6 +541,15 @@ end; cur_name[r] := 0; {Append null byte for C.} @z +@x [75] Diagnose impossible cases. +sixty_four_cases(fnt_num_0): first_par:=o-fnt_num_0; +end; +@y +sixty_four_cases(fnt_num_0): first_par:=o-fnt_num_0; +othercases abort('internal error'); +endcases; +@z + @x [80] (major,minor) optionally show opcode @d show(#)==begin flush_text; showing:=true; print(a:1,': ',#); end @@ -608,26 +625,26 @@ begin end else if argument_is ('version') then begin print_version_and_exit (banner, nil, 'J. Plaice, Y. Haralambous, D.E. Knuth', nil); - + end else if argument_is ('output-level') then begin out_mode := atou (optarg); if (out_mode = 0) or (out_mode > 4) then begin write_ln (stderr, 'Value for --output-level must be >= 1 and <= 4.'); uexit (1); end; - + end else if argument_is ('page-start') then begin @<Determine the desired |start_count| values from |optarg|@>; - + end else if argument_is ('max-pages') then begin max_pages := atou (optarg); - + end else if argument_is ('dpi') then begin resolution := atof (optarg); - + end else if argument_is ('magnification') then begin new_mag := atou (optarg); - + end; {Else it was a flag; |getopt| has already done the assignment.} until getopt_return_val = -1; @@ -680,7 +697,7 @@ long_options[current_option].flag := 0; long_options[current_option].val := 0; incr (current_option); -@ Parsing the starting page specification is a bit complicated. +@ Parsing the starting page specification is a bit complicated. @<Determine the desired |start_count|...@> = k := 0; {which \.{\\count} register we're on} @@ -689,7 +706,7 @@ while optarg[m] do begin if optarg[m] = "*" then begin start_there[k] := false; incr (m); - + end else if optarg[m] = "." then begin incr (k); if k >= 10 then begin @@ -697,7 +714,7 @@ while optarg[m] do begin uexit (1); end; incr (m); - + end else begin start_count[k] := strtol (optarg + m, address_of (end_num), 10); if end_num = optarg + m then begin diff --git a/Build/source/texk/web2c/omegaware/odvitype.test b/Build/source/texk/web2c/omegaware/odvitype.test new file mode 100755 index 00000000000..37f272a1daa --- /dev/null +++ b/Build/source/texk/web2c/omegaware/odvitype.test @@ -0,0 +1,15 @@ +#! /bin/sh + +# Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +# You may freely use, modify and/or distribute this file. + +tests=omegaware/tests + +test -d $tests || mkdir -p $tests + +TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=$srcdir/$tests \ + ./odvitype $srcdir/$tests/ofontd0 | sed '1s/ (.*)$//' >$tests/xofontd0.typ || exit 1 + +diff $srcdir/$tests/ofontd0.typ $tests/xofontd0.typ || exit 1 + diff --git a/Build/source/texk/web2c/omegaware/odvitype.web b/Build/source/texk/web2c/omegaware/odvitype.web index ef5136bb3f2..2fa9c6d0711 100644 --- a/Build/source/texk/web2c/omegaware/odvitype.web +++ b/Build/source/texk/web2c/omegaware/odvitype.web @@ -1,5 +1,5 @@ % odvitype.web: Omega version of file dvitype.web -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -1163,8 +1163,8 @@ else begin if width_ptr+font_ec[nf]-font_bc[nf]+1>max_widths then begin print_ln('---not loaded, ODVItype needs larger width table'); @.ODVItype needs larger...@> - goto 9998; - end; + goto 9998; + end; wp:=width_ptr+font_ec[nf]-font_bc[nf]+1; read_tfm_word; nw:=((b0*256+b1)*256+b2)*256+b3; if (nw=0)or(nw>65536) then goto 9997; @@ -1173,7 +1173,7 @@ else begin read_tfm_word; end; if ofm_level=1 then begin - read_tfm_word; nco:=(((b0*256+b1)*256+b2)*256+b3) div 2; + read_tfm_word; nco:=((b0*256+b1)*256+b2)*256+b3; read_tfm_word; read_tfm_word; extra_words:=(((b0*256+b1)*256+b2)*256+b3) div 2; for k:=1 to 12 do @@ -1225,14 +1225,14 @@ case ofm_level of kprime:=k+(b0*256+b1); for j:=k+1 to kprime do width[j]:=width[k]; - k:=kprime; + k:=kprime+1; for j:=1 to extra_words do read_tfm_word; end end end; end; - + @ The most important part of |in_TFM| is the width computation, which involves multiplying the relative widths in the \.{TFM} file by the @@ -2268,7 +2268,7 @@ while true do end; @<Skip until finding |eop|@>; bop_seen:=false; - end; + end; 9999:end; @ @<Skip until finding |eop|@>= diff --git a/Build/source/texk/web2c/omegaware/ofm2opl.ch b/Build/source/texk/web2c/omegaware/ofm2opl.ch index 0ec25dd3792..d9a586bfcd8 100644 --- a/Build/source/texk/web2c/omegaware/ofm2opl.ch +++ b/Build/source/texk/web2c/omegaware/ofm2opl.ch @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -6,7 +6,7 @@ % applies only to the changes to the original tftopl.ch. % % tftopl.ch for C compilation with web2c. -% +% % 04/04/83 (PC) Original version, made to work with version 1.0 of TFtoPL, % released with version 0.96 of TeX in February, 1983. % 04/16/83 (PC) Brought up to version 1.0 released with version 0.97 of TeX @@ -190,7 +190,7 @@ MBL_string:=' MBL'; RI_string:=' RI '; RCE_string:=' RCE'; @z % [38] How we output the character code depends on |charcode_format|. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x begin if font_type>vanilla then out_hex_char(c) @@ -212,7 +212,7 @@ else out_hex_char(c); @z % [39] Don't output the face code as an integer. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x out(MBL_string[1+(b mod 3)]); out(RI_string[1+s]); @@ -230,7 +230,7 @@ f:=((tfm[k+1] mod 16)*intcast(@'400)+tfm[k+2])*@'400+tfm[k+3]; @z % [78] No progress reports unless verbose. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x incr(chars_on_line); end; @@ -259,17 +259,17 @@ f:=((tfm[k+1] mod 16)*intcast(@'400)+tfm[k+2])*@'400+tfm[k+3]; % [89] Change the name of the variable `class', since AIX 3.1's <math.h> % defines a function by that name. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @d pending=4 {$f(x,y)$ is being evaluated} @y @d pending=4 {$f(x,y)$ is being evaluated} -@d class == class_var +@d class == class_var @z % [90] Change name of the function `f'. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x r:=f(r,(hash[r]-1)div xmax_char,(hash[r]-1)mod xmax_char); @y @@ -284,8 +284,8 @@ f:=((tfm[k+1] mod 16)*intcast(@'400)+tfm[k+2])*@'400+tfm[k+3]; @p function f(@!h,@!x,@!y:index):index; forward;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} @y -@p -ifdef('notdef') +@p +ifdef('notdef') function f_fn(@!h,@!x,@!y:index):index; begin end;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} endif('notdef') @@ -297,11 +297,11 @@ else eval:=f_fn(h,x,y); @z % [95] The real definition of f. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @p function f; @y -@p function f_fn(@!h,@!x,@!y:index):index; +@p function f_fn(@!h,@!x,@!y:index):index; @z @x f:=lig_z[h]; @@ -310,7 +310,7 @@ f_fn:=lig_z[h]; @z % [99] No final newline unless verbose. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x do_characters; print_ln('.');@/ @y diff --git a/Build/source/texk/web2c/omegaware/ofm2opl.web b/Build/source/texk/web2c/omegaware/ofm2opl.web index 8f4cc3fd963..1dd7039ba01 100644 --- a/Build/source/texk/web2c/omegaware/ofm2opl.web +++ b/Build/source/texk/web2c/omegaware/ofm2opl.web @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -64,7 +64,7 @@ if \TeX\ or $\Omega$ complains that a \.{TFM} or an \.{OFM} file is ``bad,'' this program will pinpoint the source or sources of badness. A \.{PL} or \.{OPL} file output by this program can be edited with a normal text editor, and the result can be converted back to \.{TFM} -or \.{OFM} format using the companion program \.{OPLtoOFM}. +or \.{OFM} format using the companion program \.{OPL2OFM}. The first \.{TFtoPL} program was designed by Leo Guibas in the summer of 1978. Contributions by Frank Liang, Doug Wyatt, and Lyle Ramshaw @@ -125,11 +125,11 @@ reduce \.{TFtoPL}'s capacity. @!hash_size=130003; {preferably a prime number, a bit larger than the number of character pairs in lig/kern steps} @!hash_mult=16007; {another prime} -@!max_char=65535; {the largest character number in a font} -@!xmax_char=65536; {|max_char|+1} -@!xxmax_char=65537;{|max_char|+2} +@!max_char=65535; {the largest character number in a font} +@!xmax_char=65536; {|max_char|+1} +@!xxmax_char=65537;{|max_char|+2} @!xmax_label=80001;{must be greater than |max_lig_steps|} -@!mem_size=262152; {|max_char|*4+8} +@!mem_size=262152; {|max_char|*4+8} @ Here are some macros for common programming idioms. @@ -139,7 +139,7 @@ reduce \.{TFtoPL}'s capacity. @* Font metric data. The following description of \.{TFM} files is not sufficient for -\.{OFM} files. The additional documentation necessary for the +\.{OFM} files. The additional documentation necessary for the \.{OFM} files can be found in another file, such as the $\Omega$ change files. @@ -585,7 +585,7 @@ else begin 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); @@ -664,7 +664,7 @@ integer; @!bytes_per_entry:integer; @ @<Compute the base addresses@>= -begin +begin ivalues_start:=header_length+lh; fvalues_start:=ivalues_start+nki; mvalues_start:=fvalues_start+nkf; @@ -688,7 +688,7 @@ else if ofm_level=0 then begin for i:=bc to ec do begin char_start[i]:=4*char_base+8*(i-bc); end; - end + end else begin char_ptr:=4*char_base; i:=bc; @@ -794,7 +794,7 @@ end; procedure set_no_ctag(c:char_type); begin if not (ofm_level=1) then - tfm[char_info(c)+5] := + tfm[char_info(c)+5] := tfm[char_info(c)+5] div 8 * 8 + tfm[char_info(c)+5] mod 4; end; @@ -1443,10 +1443,10 @@ if nki>0 then begin @ @<Check and output the $i$th ivalue table@>= begin -left; out('FONTIVALUE'); out_hex_number(i); out_ln; +left; out('FONTIVALUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('IVALUE'); out_hex_number(j); out_ln; + left; out('IVALUE'); out_hex_number(j); out_ln; value:=256*tfm[base_counter+2]+tfm[base_counter+3]; left; out('IVALUEVAL'); out_hex_number(value); right; right; @@ -1486,10 +1486,10 @@ if nkm>0 then begin @ @<Check and output the $i$th mvalue table@>= begin -left; out('FONTMVALUE'); out_hex_number(i); out_ln; +left; out('FONTMVALUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('MVALUE'); out_hex_number(j); out_ln; + left; out('MVALUE'); out_hex_number(j); out_ln; left; out('MVALUEVAL'); out_fix(base_counter); right; right; base_counter:=base_counter+4; @@ -1508,10 +1508,10 @@ if nkr>0 then @ @<Check and output the $i$th rule table@>= begin -left; out('FONTRULE'); out_hex_number(i); out_ln; +left; out('FONTRULE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('RULE'); out_hex_number(j); out_ln; + left; out('RULE'); out_hex_number(j); out_ln; left; out('RULEWD'); out_fix(base_counter); right; left; out('RULEHT'); out_fix(base_counter+4); right; left; out('RULEDP'); out_fix(base_counter+8); right; @@ -1535,17 +1535,17 @@ if nkg>0 then begin @ @<Check and output the $i$th glue table@>= begin -left; out('FONTGLUE'); out_hex_number(i); out_ln; +left; out('FONTGLUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('GLUE'); out_hex_number(j); out_ln; + left; out('GLUE'); out_hex_number(j); out_ln; glue_subtype:=tfm[base_counter] div 16; glue_argument_kind:=tfm[base_counter] mod 16; glue_stretch_order:=tfm[base_counter+1] div 16; glue_shrink_order:=tfm[base_counter+1] mod 16; glue_argument:=tfm[base_counter+2]*256+tfm[base_counter+3]; left; - out('GLUETYPE'); + out('GLUETYPE'); case glue_subtype of 0: out(' H 0'); 1: out(' H 1'); @@ -1556,13 +1556,13 @@ for j:=0 to number_entries-1 do begin case glue_argument_kind of 1: begin left; out('GLUERULE'); out_hex_number(glue_argument); right; - end; + end; 2: begin left; out('GLUECHAR'); out_hex_number(glue_argument); right; - end; + end; end; left; - out('GLUESTRETCHORDER'); + out('GLUESTRETCHORDER'); case glue_stretch_order of 0: out(' H 0'); 1: out(' H 1'); @@ -1572,7 +1572,7 @@ for j:=0 to number_entries-1 do begin end; right; left; - out('GLUESHRINKORDER'); + out('GLUESHRINKORDER'); case glue_shrink_order of 0: out(' H 0'); 1: out(' H 1'); @@ -1597,20 +1597,20 @@ if nkp>0 then begin base_counter:=penalties_base*4; for i:=0 to nkp-1 do @<Check and output the $i$th penalty table@>; end; - + @ @<Check and output the $i$th penalty table@>= -begin -left; out('FONTPENALTY'); out_hex_number(i); out_ln; -number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; -for j:=0 to number_entries-1 do begin +begin +left; out('FONTPENALTY'); out_hex_number(i); out_ln; +number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; +for j:=0 to number_entries-1 do begin left; out('PENALTY'); out_hex_number(j); out_ln; - value:=256*tfm[base_counter+2]+tfm[base_counter+3]; - left; out('PENALTYVAL'); out_hex_number(value); right; - right; - base_counter:=base_counter+4; - end; + value:=256*tfm[base_counter+2]+tfm[base_counter+3]; + left; out('PENALTYVAL'); out_hex_number(value); right; + right; + base_counter:=base_counter+4; + end; right; -start_counter:=start_counter+4; +start_counter:=start_counter+4; end; @ We need to check the range of all the remaining |fix_word| values, @@ -1959,14 +1959,17 @@ if width_index(c)>0 then begin else if i<(nki+nkf) then begin out('CHARFVALUE'); out_hex_number(i-nki); end - else if i<(nki+nkf+nkr) then begin - out('CHARRULE'); out_hex_number(i-nki-nkf); + else if i<(nki+nkf+nkm) then begin + out('CHARMVALUE'); out_hex_number(i-nki-nkf); + end + else if i<(nki+nkf+nkm+nkr) then begin + out('CHARRULE'); out_hex_number(i-nki-nkf-nkm); end - else if i<(nki+nkf+nkr+nkg) then begin - out('CHARGLUE'); out_hex_number(i-nki-nkf-nkr); + else if i<(nki+nkf+nkm+nkr+nkg) then begin + out('CHARGLUE'); out_hex_number(i-nki-nkf-nkm-nkr); end - else if i<(nki+nkf+nkr+nkg+nkp) then begin - out('CHARPENALTY'); out_hex_number(i-nki-nkf-nkr-nkg); + else if i<(nki+nkf+nkm+nkr+nkg+nkp) then begin + out('CHARPENALTY'); out_hex_number(i-nki-nkf-nkm-nkr-nkg); end; out_hex_number(char_param(c,i)); right; @@ -2272,7 +2275,7 @@ both_z: begin class[h]:=pending; lig_z[h]:=eval(eval(x,lig_z[h]),y); end; pending: begin x_lig_cycle:=x; y_lig_cycle:=y; lig_z[h]:=xxmax_char; class[h]:=simple; - end; {the value |xxmax_char| will break all cycles, + end; {the value |xxmax_char| will break all cycles, since it's not in |hash|} end; {there are no other cases} f:=lig_z[h]; diff --git a/Build/source/texk/web2c/omegaware/ofonts.test b/Build/source/texk/web2c/omegaware/ofonts.test new file mode 100755 index 00000000000..9cdad045234 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/ofonts.test @@ -0,0 +1,60 @@ +#! /bin/sh + +# Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +# You may freely use, modify and/or distribute this file. + +tests=omegaware/tests + +test -d $tests || mkdir -p $tests + +VPL='ofontr1 ofontv4' +OVP='ofontr2 ofontr3 ofontv5 ofontv6' + +for f in $VPL; do + ./opl2ofm -verbose $srcdir/$tests/$f.pl $tests/x$f.tfm || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + ./ofm2opl -verbose $tests/x$f.tfm $tests/x$f.pl || exit 1 + diff $srcdir/$tests/$f.pl $tests/x$f.pl || exit 1 +done + +for f in $OVP; do + ./opl2ofm -verbose $srcdir/$tests/$f $tests/x$f || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + ./ofm2opl -verbose $tests/x$f $tests/x$f || exit 1 + diff $srcdir/$tests/$f.opl $tests/x$f.opl || exit 1 +done + +rm -rf $tests/xofont* + +for f in ofontr0; do + ./opl2ofm -verbose $srcdir/$tests/$f.pl $tests/x$f.tfm || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + ./ofm2opl -verbose $tests/x$f.tfm $tests/x$f.pl || exit 1 + diff $srcdir/$tests/$f.pl $tests/x$f.pl || exit 1 +done + +for f in $VPL; do + ./ovp2ovf -verbose $srcdir/$tests/$f.vpl $tests/x$f.vf $tests/x$f.tfm || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + ./ofm2opl -verbose $tests/x$f.tfm $tests/x$f.pl || exit 1 + diff $srcdir/$tests/$f.pl $tests/x$f.pl || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=.:$srcdir/$tests \ + ./ovf2ovp -verbose $tests/x$f.vf $tests/x$f.tfm $tests/x$f.vpl || exit 1 + diff $srcdir/$tests/$f.vpl $tests/x$f.vpl || exit 1 +done + +for f in $OVP; do + ./ovp2ovf -verbose $srcdir/$tests/$f $tests/x$f $tests/x$f || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + ./ofm2opl -verbose $tests/x$f $tests/x$f || exit 1 + diff $srcdir/$tests/$f.opl $tests/x$f.opl || exit 1 + TEXMFCNF=$srcdir/../kpathsea \ + OFMFONTS=.:$srcdir/$tests \ + ./ovf2ovp -verbose $tests/x$f $tests/x$f $tests/x$f || exit 1 + diff $srcdir/$tests/$f.ovp $tests/x$f.ovp || exit 1 +done + +exit 0 + + diff --git a/Build/source/texk/web2c/omegaware/omfonts.test b/Build/source/texk/web2c/omegaware/omfonts.test index 4bf1e48fa4e..38fafef64a2 100755 --- a/Build/source/texk/web2c/omegaware/omfonts.test +++ b/Build/source/texk/web2c/omegaware/omfonts.test @@ -3,32 +3,34 @@ # Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> # You may freely use, modify and/or distribute this file. -test -d tests || mkdir -p tests +tests=omegaware/tests -./pltotf $srcdir/tests/Cherokee tests/Cherokee || exit 1 +test -d $tests || mkdir -p $tests + +./pltotf $srcdir/$tests/Cherokee $tests/Cherokee || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./tftopl tests/Cherokee tests/xCherokee || exit 1 + ./tftopl $tests/Cherokee $tests/xCherokee || exit 1 -diff $srcdir/tests/Cherokee.pl tests/xCherokee.pl || exit 1 +diff $srcdir/$tests/Cherokee.pl $tests/xCherokee.pl || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - OFMFONTS=./tests \ - ./ovp2ovf -verbose $srcdir/tests/OCherokee tests/OCherokee tests/OCherokee || exit 1 + OFMFONTS=./$tests \ + ./ovp2ovf -verbose $srcdir/$tests/OCherokee $tests/OCherokee $tests/OCherokee || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./ofm2opl -verbose tests/OCherokee tests/OCherokee || exit 1 + ./ofm2opl -verbose $tests/OCherokee $tests/OCherokee || exit 1 -./opl2ofm -verbose tests/OCherokee tests/xOCherokee || exit 1 +./opl2ofm -verbose $tests/OCherokee $tests/xOCherokee || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./ofm2opl -verbose tests/xOCherokee tests/xOCherokee || exit 1 + ./ofm2opl -verbose $tests/xOCherokee $tests/xOCherokee || exit 1 -diff tests/OCherokee.opl tests/xOCherokee.opl || exit 1 +diff $tests/OCherokee.opl $tests/xOCherokee.opl || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - OFMFONTS=.:./tests \ - ./ovf2ovp -verbose tests/OCherokee tests/OCherokee tests/xOCherokee || exit 1 + OFMFONTS=.:./$tests \ + ./ovf2ovp -verbose $tests/OCherokee $tests/OCherokee $tests/xOCherokee || exit 1 -diff $srcdir/tests/OCherokee.ovp tests/xOCherokee.ovp || exit 1 +diff $srcdir/$tests/OCherokee.ovp $tests/xOCherokee.ovp || exit 1 diff --git a/Build/source/texk/web2c/omegaware/opl2ofm.ch b/Build/source/texk/web2c/omegaware/opl2ofm.ch index 6fee355c5e4..ff626c22e37 100644 --- a/Build/source/texk/web2c/omegaware/opl2ofm.ch +++ b/Build/source/texk/web2c/omegaware/opl2ofm.ch @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -151,7 +151,7 @@ MBL_string:=' MBL'; RI_string:=' RI '; RCE_string:=' RCE'; % [118] Change the name of the variable `class', since AIX 3.1's <math.h> % defines a function by that name. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @d pending=4 {$f(x,y)$ is being evaluated} @y @@ -162,24 +162,24 @@ MBL_string:=' MBL'; RI_string:=' RI '; RCE_string:=' RCE'; % [123] web2c can't handle these mutually recursive procedures. % But let's do a fake definition of f here, so that it gets into web2c's % symbol table... -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @p function f(@!h,@!x,@!y:indx):indx; forward;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} @y -@p -ifdef('notdef') +@p +ifdef('notdef') function f(@!h,@!x,@!y:indx):indx; begin end;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} endif('notdef') @z % [124] ... and then really define it now. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @p function f; @y -@p function f(@!h,@!x,@!y:indx):indx; +@p function f(@!h,@!x,@!y:indx):indx; @z @x [127] Fix up output of bytes. @@ -230,7 +230,7 @@ var @!krn_ptr:0..max_kerns; {an index into |kern|} @y @z -@x [147?] Be quiet unless verbose. +@x [147?] Be quiet unless verbose. read_input; print('.');@/ @y read_input; @@ -286,7 +286,7 @@ begin write_ln (stderr, 'opl2ofm: Need one or two file arguments.'); usage ('opl2ofm'); end; - + pl_name := extend_filename (cmdline (optind), 'opl'); {If an explicit output filename isn't given, construct it from |pl_name|.} @@ -327,7 +327,7 @@ long_options[current_option].flag := address_of (verbose); long_options[current_option].val := 1; incr (current_option); -@ +@ @<Glob...@> = @!verbose: c_int_type; diff --git a/Build/source/texk/web2c/omegaware/opl2ofm.web b/Build/source/texk/web2c/omegaware/opl2ofm.web index d249ce6e3f7..3b3be4ad807 100644 --- a/Build/source/texk/web2c/omegaware/opl2ofm.web +++ b/Build/source/texk/web2c/omegaware/opl2ofm.web @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -77,11 +77,11 @@ in 1989. Extensions to handle extended font metric files (``\.{OFM}'') were added by John Plaice in December 1995 and January 1996, resulting in the -new program \.{OPLtoOFM}. In the following documentation, all unchanged +new program \.{OPL2OFM}. In the following documentation, all unchanged references to the \.{PLtoTF} program and to \.{TFM} and \.{PL} files also -apply to the \.{OPLtoOFM} program and to \.{OFM} and \.{OPL} files. +apply to the \.{OPL2OFM} program and to \.{OFM} and \.{OPL} files. -The |banner| string defined here should be changed whenever \.{OPLtoOFM} +The |banner| string defined here should be changed whenever \.{OPL2OFM} gets modified. @d banner=='This is OPL2OFM, Version 1.12' @@ -128,15 +128,15 @@ reduce \.{PLtoTF}'s capacity. @!hash_mult=16007; {another prime} @!tfm_size=2000000; {maximum length of |tfm| data, in bytes} @!lig_size=800000; {maximum length of |lig_kern| program, in words} -@!max_char=65535; {the largest character number in a font} -@!xmax_char=65536; {|max_char|+1} -@!xxmax_char=65537;{|max_char|+2} -@!xxxmax_char=65538;{|max_char|+3} -@!mem_size=262144; {|max_char|*4+8} -@!max_width=65535; {the largest character width number} -@!max_height=255; {the largest character height number} -@!max_depth=255; {the largest character depth number} -@!max_italic=255; {the largest character italic correction number} +@!max_char=65535; {the largest character number in a font} +@!xmax_char=65536; {|max_char|+1} +@!xxmax_char=65537;{|max_char|+2} +@!xxxmax_char=65538;{|max_char|+3} +@!mem_size=262144; {|max_char|*4+8} +@!max_width=65535; {the largest character width number} +@!max_height=255; {the largest character height number} +@!max_depth=255; {the largest character depth number} +@!max_italic=255; {the largest character italic correction number} @ Here are some macros for common programming idioms. @@ -865,6 +865,7 @@ dictionary is kept in |equiv[k]|. The numeric |equiv| codes are given symbolic meanings by the following definitions. @d comment_code=0 +@#{property names at the outer level} @d check_sum_code=1 @d design_size_code=2 @d design_units_code=3 @@ -876,10 +877,20 @@ symbolic meanings by the following definitions. @d font_dimen_code=9 @d lig_table_code=10 @d boundary_char_code=11 -@d font_dir_code=14 -@d n_font_dir_code=15 -@d character_code=16 +@d character_code=14 +@d font_dir_code=15 +@d n_font_dir_code=16 +@d ofm_level_code=17 +@d font_rule_code=18 +@d font_glue_code=19 +@d font_penalty_code=20 +@d font_mvalue_code=21 +@d font_fvalue_code=22 +@d font_ivalue_code=23 +@d char_repeat_code=24 +@#{property names in a FONTDIMEN list} @d parameter_code=30 +@#{property names in a CHARACTER list} @d char_info_code=70 @d width=1 @d height=2 @@ -928,27 +939,31 @@ symbolic meanings by the following definitions. @d sec_mid_vert_code=char_info_code+sec_mid_vert @d sec_base_slant_code=char_info_code+sec_base_slant @d next_larger_code=100 -@d var_char_code=102 +@d char_ivalue_code=111 +@d char_fvalue_code=112 +@d char_mvalue_code=113 +@d char_rule_code=114 +@d char_glue_code=115 +@d char_penalty_code=116 +@d var_char_code=117 +@#{property names in a LIGTABLE list} @d label_code=130 @d stop_code=131 @d skip_code=132 @d krn_code=133 @d lig_code=134 -@d ofm_level_code=140 -@d char_repeat_code=150 -@d char_ivalue_code=151 -@d char_fvalue_code=152 -@d char_mvalue_code=153 -@d char_rule_code=154 -@d char_glue_code=155 -@d char_penalty_code=156 -@d font_rule_code=160 -@d rule_code=161 +@d clabel_code=150 +@d cpen_code=151 +@d cglue_code=152 +@d cpenglue_code=153 +@d ckrn_code=154 +@#{property names in a FONTRULE list} +@d rule_code=161 @d rule_width_code=162 @d rule_height_code=163 @d rule_depth_code=164 -@d font_glue_code=170 -@d glue_code=171 +@#{property names in a FONTGLUE list} +@d glue_code=171 @d glue_type_code=172 @d glue_stretch_order_code=173 @d glue_shrink_order_code=174 @@ -957,41 +972,18 @@ symbolic meanings by the following definitions. @d glue_shrink_code=177 @d glue_char_code=178 @d glue_rule_code=179 -@d order_unit_code=181 -@d order_fi_code=182 -@d order_fil_code=183 -@d order_fill_code=184 -@d order_filll_code=185 -@d type_normal_code=186 -@d type_aleaders_code=187 -@d type_cleaders_code=188 -@d type_xleaders_code=189 -@d font_penalty_code=190 -@d penalty_code=191 +@#{property names in a FONTPENALTY list} +@d penalty_code=191 @d penalty_val_code=192 -@d font_mvalue_code=200 -@d mvalue_code=201 -@d mvalue_val_code=202 -@d font_fvalue_code=210 -@d fvalue_code=211 -@d fvalue_val_code=212 -@d font_ivalue_code=220 -@d ivalue_code=221 -@d ivalue_val_code=222 -@d clabel_code=231 -@d cpen_code=232 -@d cglue_code=233 -@d cpenglue_code=234 -@d ckrn_code=235 -@d TL_dir_code=240 -@d LT_dir_code=241 -@d TR_dir_code=242 -@d LB_dir_code=243 -@d BL_dir_code=244 -@d RT_dir_code=245 -@d BR_dir_code=246 -@d RB_dir_code=247 - +@#{property names in a FONTMVALUE list} +@d mvalue_code=193 +@d mvalue_val_code=194 +@#{property names in a FONTFVALUE list} +@d fvalue_code=195 +@d fvalue_val_code=196 +@#{property names in a FONTIVALUE list} +@d ivalue_code=197 +@d ivalue_val_code=198 @<Glo...@>= @!equiv:array[0..max_name_index] of byte; @@ -1157,15 +1149,6 @@ load8("G")("L")("U")("E")("C")("H")("A")("R")(glue_char_code);@/ load6("G")("L")("U")("E")("W")("D")(glue_width_code);@/ load11("G")("L")("U")("E")("S")("T")("R")("E")("T")("C")("H")(glue_stretch_code);@/ load10("G")("L")("U")("E")("S")("H")("R")("I")("N")("K")(glue_shrink_code);@/ -load4("U")("N")("I")("T")(order_unit_code);@/ -load2("F")("I")(order_fi_code);@/ -load3("F")("I")("L")(order_fil_code);@/ -load4("F")("I")("L")("L")(order_fill_code);@/ -load5("F")("I")("L")("L")("L")(order_filll_code);@/ -load6("N")("O")("R")("M")("A")("L")(type_normal_code);@/ -load8("A")("L")("E")("A")("D")("E")("R")("S")(type_aleaders_code);@/ -load8("C")("L")("E")("A")("D")("E")("R")("S")(type_cleaders_code);@/ -load8("X")("L")("E")("A")("D")("E")("R")("S")(type_xleaders_code);@/ load11("F")("O")("N")("T")("P")("E")("N")("A")("L")("T")("Y")(font_penalty_code);@/ load7("P")("E")("N")("A")("L")("T")("Y")(penalty_code);@/ load10("P")("E")("N")("A")("L")("T")("Y")("V")("A")("L")(penalty_val_code);@/ @@ -1178,14 +1161,6 @@ load9("F")("V")("A")("L")("U")("E")("V")("A")("L")(fvalue_val_code);@/ load10("F")("O")("N")("T")("I")("V")("A")("L")("U")("E")(font_ivalue_code);@/ load6("I")("V")("A")("L")("U")("E")(ivalue_code);@/ load9("I")("V")("A")("L")("U")("E")("V")("A")("L")(ivalue_val_code);@/ -load2("T")("L")(TL_dir_code); -load2("L")("T")(LT_dir_code); -load2("T")("R")(TR_dir_code); -load2("L")("B")(LB_dir_code); -load2("B")("L")(BL_dir_code); -load2("R")("T")(RT_dir_code); -load2("B")("R")(BR_dir_code); -load2("R")("B")(RB_dir_code); @ @<Enter the parameter names@>= load5("S")("L")("A")("N")("T")(parameter_code+1);@/ @@ -1787,9 +1762,7 @@ might arise. @<Read a font property value@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code<110) and (cur_code>character_code) then - flush_error('This property name doesn''t belong on the outer level') -else if (cur_code>=110) and ((cur_code mod 10)<>0) then +else if cur_code>char_repeat_code then flush_error('This property name doesn''t belong on the outer level') @.This property name doesn't belong...@> else begin @<Read the font property value specified by |cur_code|@>; @@ -1964,7 +1937,10 @@ end @ @<Read a ligature/kern command@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code>=label_code) and (cur_code<=(lig_code+11)) then begin +else if (cur_code<label_code)or(cur_code>ckrn_code) then + flush_error('This property name doesn''t belong in a LIGTABLE list') +@.This property name doesn't belong...@> +else begin case cur_code of label_code:@<Read a label step@>; stop_code:@<Read a stop step@>; @@ -1972,21 +1948,14 @@ else if (cur_code>=label_code) and (cur_code<=(lig_code+11)) then begin krn_code:@<Read a kerning step@>; lig_code,lig_code+1,lig_code+2,lig_code+3,lig_code+5, lig_code+6,lig_code+7,lig_code+11:@<Read a ligature step@>; - end; {there are no other cases |>=label_code|} - finish_the_property; -end -else if (cur_code>=clabel_code) and (cur_code<=cpenglue_code) then begin - case cur_code of clabel_code:@<Read an extended label step@>; cpen_code:@<Read an extended penalty step@>; cglue_code:@<Read an extended glue step@>; cpenglue_code:@<Read an extended penalty/glue step@>; ckrn_code:@<Read an extended kern step@>; - end; {there are no other cases |>=label_code|} + end; {there are no other cases |>=label_code| and |<=ckrn_code|} finish_the_property; -end -else flush_error('This property name doesn''t belong in a LIGTABLE list'); -@.This property name doesn't belong...@> + end; end @ When a character is about to be tagged, we call the following @@ -2157,27 +2126,27 @@ else incr(nl); lk_step_ended:=true; end -@ @<Read an extended kern step@>= +@ @<Read an extended kern step@>= begin lig_kern[nl].b0:=256; lig_kern[nl].b1:=get_byte; lig_kern[nl].b2:=20; -kern[nk]:=get_fix; krn_ptr:=0; -while kern[krn_ptr]<>kern[nk] do incr(krn_ptr); +kern[nk]:=get_fix; krn_ptr:=0; +while kern[krn_ptr]<>kern[nk] do incr(krn_ptr); if krn_ptr=nk then begin - if nk<max_kerns then incr(nk) + if nk<max_kerns then incr(nk) else begin err_print('Sorry, too many different kerns for me to handle'); -@.Sorry, too many different kerns...@> - decr(krn_ptr); - end; - end; -if krn_ptr>65535 then - err_print('Sorry, too many different kerns for me to handle'); +@.Sorry, too many different kerns...@> + decr(krn_ptr); + end; + end; +if krn_ptr>65535 then + err_print('Sorry, too many different kerns for me to handle'); lig_kern[nl].b3:=krn_ptr; -if nl>=max_lig_steps-1 then - err_print('Sorry, LIGTABLE too long for me to handle') -@.Sorry, LIGTABLE too long...@> -else incr(nl); -lk_step_ended:=true; +if nl>=max_lig_steps-1 then + err_print('Sorry, LIGTABLE too long for me to handle') +@.Sorry, LIGTABLE too long...@> +else incr(nl); +lk_step_ended:=true; end @ @<Globals...@>= @@ -2297,7 +2266,7 @@ for c:=(cprime+1) to (cprime+crange) do begin char_ht[c]:=char_ht[cprime]; char_dp[c]:=char_dp[cprime]; char_ic[c]:=char_ic[cprime]; - for tab:=0 to (nki+nkf+nkr+nkg+nkp-1) do begin + for tab:=0 to (nki+nkf+nkm+nkr+nkg+nkp-1) do begin char_table[c,tab]:= char_table[cprime,tab]; end; end; @@ -2317,13 +2286,28 @@ for c:=0 to max_char do for ch_table:=0 to char_param_tables do char_table[c,ch_table]:=0; -@ @<Read a character property@>= +@ @d get_char_table_entry(#)== + begin ch_table:=get_integer; + if (ch_table<0)or(ch_table>=#) then + flush_error('Character property index out of range') +@.Character property index...@> + else begin get_char_table_entry_end +@d get_char_table_entry_end(#)== + ch_table:=ch_table+#; + if ch_table>char_param_tables then + flush_error('Character property exceeds table size') +@.Character property exceeds...@> + else begin + if ch_table>npc then npc:=ch_table; + char_table[c,ch_table]:=get_integer; + end; + end; + end + +@<Read a character property@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code<char_wd_code)or - ((cur_code>var_char_code)and - ((cur_code<char_ivalue_code)or(cur_code>char_penalty_code))) -then +else if (cur_code<char_wd_code)or(cur_code>var_char_code) then flush_error('This property name doesn''t belong in a CHARACTER list') @.This property name doesn't belong...@> else begin @@ -2332,65 +2316,35 @@ else begin char_ht_code:char_ht[c]:=sort_in(height,get_fix); char_dp_code:char_dp[c]:=sort_in(depth,get_fix); char_ic_code:char_ic[c]:=sort_in(italic,get_fix); - sec_width_code:temp_value:=get_fix; - sec_height_code:temp_value:=get_fix; - sec_depth_code:temp_value:=get_fix; - sec_italic_code:temp_value:=get_fix; - accent_code:temp_value:=get_fix; - prim_top_axis_code:temp_value:=get_fix; - prim_top_axis_bis_code:temp_value:=get_fix; - prim_bot_axis_code:temp_value:=get_fix; - prim_bot_axis_bis_code:temp_value:=get_fix; - prim_mid_hor_code:temp_value:=get_fix; - prim_mid_vert_code:temp_value:=get_fix; - prim_base_slant_code:temp_value:=get_fix; - sec_top_axis_code:temp_value:=get_fix; - sec_top_axis_bis_code:temp_value:=get_fix; - sec_bot_axis_code:temp_value:=get_fix; - sec_bot_axis_bis_code:temp_value:=get_fix; - sec_mid_hor_code:temp_value:=get_fix; - sec_mid_vert_code:temp_value:=get_fix; + sec_width_code, + sec_height_code, + sec_depth_code, + sec_italic_code, + accent_code, + prim_top_axis_code, + prim_top_axis_bis_code, + prim_bot_axis_code, + prim_bot_axis_bis_code, + prim_mid_hor_code, + prim_mid_vert_code, + prim_base_slant_code, + sec_top_axis_code, + sec_top_axis_bis_code, + sec_bot_axis_code, + sec_bot_axis_bis_code, + sec_mid_hor_code, + sec_mid_vert_code, sec_base_slant_code:temp_value:=get_fix; next_larger_code:begin check_tag(c); char_tag[c]:=list_tag; char_remainder[c]:=get_byte; end; var_char_code:@<Read an extensible recipe for |c|@>; - char_ivalue_code: begin - ch_table:=get_integer; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkci then nkci:=ch_table; - end; - char_fvalue_code: begin - ch_table:=get_integer+nki; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcf then nkcf:=ch_table; - end; - char_mvalue_code: begin - ch_table:=get_integer+nki+nkf; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcm then nkcm:=ch_table; - end; - char_rule_code: begin - ch_table:=get_integer+nki+nkf+nkm; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcr then nkcr:=ch_table; - end; - char_glue_code: begin - ch_table:=get_integer+nki+nkf+nkm+nkr; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcg then nkcg:=ch_table; - end; - char_penalty_code: begin - ch_table:=get_integer+nki+nkf+nkm+nkr+nkg; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcp then nkcp:=ch_table; - end; + char_ivalue_code: get_char_table_entry(nki)(0); + char_fvalue_code: get_char_table_entry(nkf)(nki); + char_mvalue_code: get_char_table_entry(nkm)(nki+nkf); + char_rule_code: get_char_table_entry(nkr)(nki+nkf+nkm); + char_glue_code: get_char_table_entry(nkg)(nki+nkf+nkm+nkr); + char_penalty_code: get_char_table_entry(nkp)(nki+nkf+nkm+nkr+nkg); end;@/ finish_the_property; end; @@ -2438,22 +2392,22 @@ which prints a progress report as the file is being read. {strings for output in the user's external character set} @!MBL_string,@!RI_string,@!RCE_string:packed array [1..3] of char; {handy string constants for |face| codes} - + @ @<Set init...@>= ASCII_04:=' !"#$%&''()*+,-./0123456789:;<=>?';@/ ASCII_10:='@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_';@/ ASCII_14:='`abcdefghijklmnopqrstuvwxyz{|}~ ';@/ HEX:='0123456789ABCDEF';@/ MBL_string:='MBL'; RI_string:='RI '; RCE_string:='RCE'; - + @ The array |dig| will hold a sequence of digits to be output. - + @<Glob...@>= @!dig:array[0..32] of integer; @ Here, in fact, are two procedures that output |dig[j-1]|$\,\ldots\,$|dig[0]|, given $j>0$. - + @p procedure out_digs(j:integer); {outputs |j| digits} begin repeat decr(j); out(HEX[1+dig[j]]); until j=0; @@ -2467,11 +2421,11 @@ end; @ The |print_number| procedure indicates how |print_digs| can be used. This procedure can print in octal, decimal or hex notation. - + @d print_hex(#)==print_number(#,16) @d print_octal(#)==print_number(#,8) @d print_decimal(#)==print_number(#,10) - + @p procedure print_number(c:integer; form:integer); {prints value of |c|} var j:0..32; {index into |dig|} begin @@ -2845,6 +2799,18 @@ First of all, it is convenient to have an abbreviation for output to the @d out(#)==write(tfm_file,#) +@p procedure out_int(@!x:integer); {output a possibly negative value} +begin if x<0 then begin + x:=x+@"40000000; + x:=x+@"40000000; + out((x div @"1000000)+@"80); + end +else out(x div @"1000000); +out((x mod @"1000000) div @"10000); +out((x mod @"10000) div @"100); +out(x mod @"100); +end; + @ The general plan for producing \.{TFM} files is long but simple: @<Do the font metric output@>= @@ -2874,6 +2840,9 @@ and the total number of words in the \.{TFM} file (|lf|). @!temp_width:fix_word; {width being used to compute a check sum} @!ncw,@!nco,@!npc:integer; +@ @<Set init...@>= +npc:=-1; + @ It might turn out that no characters exist at all. But \.{PLtoTF} keeps going and writes the \.{TFM} anyway. In this case |ec| will be~0 and |bc| will be~1. @@ -3020,18 +2989,7 @@ end @<Compute the character info size@>= if ofm_level=1 then begin ncw:=0; - if nkcp>-1 then - npc:=nki+nkf+nkr+nkg+nkcp+1 - else if nkcg>-1 then - npc:=nki+nkf+nkr+nkcg+1 - else if nkcr>-1 then - npc:=nki+nkf+nkcr+1 - else if nkcf>-1 then - npc:=nki+nkcf+1 - else if nkci>-1 then - npc:=nkci+1 - else - npc:=0; + incr(npc); needed_space:=(12+npc*2) div 4; extra_bytes:=(needed_space*4) - (10+npc*2); for c:=bc to ec do begin @@ -3521,7 +3479,6 @@ end; @!rules:array[rule_array_type,rule_entry_type] of rule_node; @!npr:array[rule_array_type] of integer; @!nkr:integer; -@!nkcr:integer; @!nwr:integer; @!r_array:integer; @!r_number:integer; @@ -3532,7 +3489,6 @@ for r_array := 0 to rule_arrays do begin @<Null out the rule@>; end; nkr:=-1; -nkcr:=-1; @ @<Read font rule list@>= begin @@ -3554,28 +3510,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a rule@>= + +@ @<Read a rule@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>rule_code then - flush_error('This property name doesn''t belong in a RULE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>rule_code then + flush_error('This property name doesn''t belong in a FONTRULE list') else begin r_number:=get_integer; - if r_number>rule_entries then - flush_error('This RULE index is too big for my present table size') + if r_number>rule_entries then + flush_error('This RULE index is too big for my present table size') else if r_number<0 then flush_error('This RULE index is negative') else begin while npr[r_array]<r_number do begin incr(npr[r_array]); @<Null out the rule@>; - end; + end; @<Read all of a rule's values@>; - finish_the_property; + finish_the_property; end; - end; -end + end; +end @ @<Null out the rule@>= begin @@ -3598,15 +3554,20 @@ end @ @<Read a single rule value@>= begin get_name; -case cur_code of - rule_width_code: - rules[r_array,r_number].rn_width:=get_fix; - rule_height_code: - rules[r_array,r_number].rn_height:=get_fix; - rule_depth_code: - rules[r_array,r_number].rn_depth:=get_fix; +if cur_code=comment_code then skip_to_end_of_item +else if (cur_code<rule_width_code)or(cur_code>rule_depth_code) then + flush_error('This property name doesn''t belong in a RULE list') +else begin + case cur_code of + rule_width_code: + rules[r_array,r_number].rn_width:=get_fix; + rule_height_code: + rules[r_array,r_number].rn_height:=get_fix; + rule_depth_code: + rules[r_array,r_number].rn_depth:=get_fix; + end; + finish_the_property; end; -finish_the_property; end @ @<Header information for rules@>= @@ -3640,7 +3601,7 @@ end @!glue_arrays=arrays_per_kind; @!glue_entries=entries_per_array; -@ +@ @d t_normal==0 @d t_aleaders==1 @d t_cleaders==2 @@ -3675,7 +3636,6 @@ end; @!glues:array[glue_array_type,glue_entry_type] of glue_node; @!npg:array[glue_array_type] of integer; @!nkg:integer; -@!nkcg:integer; @!nwg:integer; @!g_array:integer; @!g_byte:integer; @@ -3688,7 +3648,6 @@ begin @<Null out the glue@>; end; nkg:=-1; -nkcg:=-1; @ @<Read font glue list@>= begin @@ -3710,28 +3669,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a glue@>= + +@ @<Read a glue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>glue_code then - flush_error('This property name doesn''t belong in a GLUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>glue_code then + flush_error('This property name doesn''t belong in a FONTGLUE list') else begin g_number:=get_integer; - if g_number>glue_entries then - flush_error('This GLUE index is too big for my present table size') + if g_number>glue_entries then + flush_error('This GLUE index is too big for my present table size') else if g_number<0 then flush_error('This GLUE index is negative') else begin while npg[g_array]<g_number do begin incr(npg[g_array]); @<Null out the glue@>; - end; + end; @<Read all of a glue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the glue@>= begin @@ -3759,44 +3718,49 @@ end @ @<Read a single glue value@>= begin get_name; -case cur_code of - glue_width_code: - glues[g_array,g_number].gn_width:=get_fix; - glue_stretch_code: - glues[g_array,g_number].gn_stretch:=get_fix; - glue_shrink_code: - glues[g_array,g_number].gn_shrink:=get_fix; - glue_type_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>3) then begin - g_byte:=0; +if cur_code=comment_code then skip_to_end_of_item +else if (cur_code<glue_type_code)or(cur_code>glue_rule_code) then + flush_error('This property name doesn''t belong in a GLUE list') +else begin + case cur_code of + glue_width_code: + glues[g_array,g_number].gn_width:=get_fix; + glue_stretch_code: + glues[g_array,g_number].gn_stretch:=get_fix; + glue_shrink_code: + glues[g_array,g_number].gn_shrink:=get_fix; + glue_type_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>3) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_type:=g_byte; end; - glues[g_array,g_number].gn_type:=g_byte; - end; - glue_stretch_order_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>4) then begin - g_byte:=0; + glue_stretch_order_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>4) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_stretch_order:=g_byte; end; - glues[g_array,g_number].gn_stretch_order:=g_byte; - end; - glue_shrink_order_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>4) then begin - g_byte:=0; + glue_shrink_order_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>4) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_shrink_order:=g_byte; + end; + glue_char_code: begin + glues[g_array,g_number].gn_argument:=get_integer; + glues[g_array,g_number].gn_arg_type:=g_char; + end; + glue_rule_code: begin + glues[g_array,g_number].gn_argument:=get_integer; + glues[g_array,g_number].gn_arg_type:=g_rule; end; - glues[g_array,g_number].gn_shrink_order:=g_byte; - end; - glue_char_code: begin - glues[g_array,g_number].gn_argument:=get_integer; - glues[g_array,g_number].gn_arg_type:=g_char; - end; - glue_rule_code: begin - glues[g_array,g_number].gn_argument:=get_integer; - glues[g_array,g_number].gn_arg_type:=g_rule; end; + finish_the_property; end; -finish_the_property; end @ @<Header information for glues@>= @@ -3852,7 +3816,6 @@ end; @!penalties:array[penalty_array_type,penalty_entry_type] of penalty_node; @!npp:array[penalty_array_type] of integer; @!nkp:integer; -@!nkcp:integer; @!nwp:integer; @!p_array:integer; @!p_number:integer; @@ -3863,7 +3826,6 @@ for p_array := 0 to penalty_arrays do begin @<Null out the penalty@>; end; nkp:=-1; -nkcp:=-1; @ @<Read font penalty list@>= begin @@ -3885,28 +3847,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a penalty@>= + +@ @<Read a penalty@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>penalty_code then - flush_error('This property name doesn''t belong in a PENALTY list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>penalty_code then + flush_error('This property name doesn''t belong in a FONTPENALTY list') else begin p_number:=get_integer; - if p_number>penalty_entries then - flush_error('This PENALTY index is too big for my present table size') + if p_number>penalty_entries then + flush_error('This PENALTY index is too big for my present table size') else if p_number<0 then flush_error('This PENALTY index is negative') else begin while npp[p_array]<p_number do begin incr(npp[p_array]); @<Null out the penalty@>; - end; + end; @<Read all of a penalty's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the penalty@>= begin @@ -3927,11 +3889,13 @@ end @ @<Read a single penalty value@>= begin get_name; -case cur_code of - penalty_val_code: - penalties[p_array,p_number].pn_val:=get_integer; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>penalty_val_code then + flush_error('This property name doesn''t belong in a PENALTY list') +else begin + penalties[p_array,p_number].pn_val:=get_integer; + finish_the_property; end; -finish_the_property; end @ @<Header information for penalties@>= @@ -3948,7 +3912,7 @@ end begin for p_array:= 0 to nkp-1 do for p_number:=0 to npp[p_array]-1 do begin - out_integer(penalties[p_array,p_number].pn_val); + out_int(penalties[p_array,p_number].pn_val); end; end @@ -3975,7 +3939,6 @@ end; @!mvalues:array[mvalue_array_type,mvalue_entry_type] of mvalue_node; @!npm:array[mvalue_array_type] of integer; @!nkm:integer; -@!nkcm:integer; @!nwm:integer; @!m_array:integer; @!m_number:integer; @@ -3986,7 +3949,6 @@ for m_array := 0 to mvalue_arrays do begin @<Null out the mvalue@>; end; nkm:=-1; -nkcm:=-1; @ @<Read font mvalue list@>= begin @@ -4008,28 +3970,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an mvalue@>= + +@ @<Read an mvalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>mvalue_code then - flush_error('This property name doesn''t belong in an MVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>mvalue_code then + flush_error('This property name doesn''t belong in an FONTMVALUE list') else begin m_number:=get_integer; - if m_number>mvalue_entries then - flush_error('This MVALUE index is too big for my present table size') + if m_number>mvalue_entries then + flush_error('This MVALUE index is too big for my present table size') else if m_number<0 then flush_error('This MVALUE index is negative') else begin while npm[m_array]<m_number do begin incr(npm[m_array]); @<Null out the mvalue@>; - end; + end; @<Read all of an mvalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the mvalue@>= begin @@ -4050,11 +4012,13 @@ end @ @<Read a single mvalue value@>= begin get_name; -case cur_code of - mvalue_val_code: - mvalues[m_array,m_number].fn_val:=get_fix; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>mvalue_val_code then + flush_error('This property name doesn''t belong in a MVALUE list') +else begin + mvalues[m_array,m_number].fn_val:=get_fix; + finish_the_property; end; -finish_the_property; end @ @<Header information for mvalues@>= @@ -4098,7 +4062,6 @@ end; @!fvalues:array[fvalue_array_type,fvalue_entry_type] of fvalue_node; @!npf:array[fvalue_array_type] of integer; @!nkf:integer; -@!nkcf:integer; @!nwf:integer; @!f_array:integer; @!f_number:integer; @@ -4109,7 +4072,6 @@ for f_array := 0 to fvalue_arrays do begin @<Null out the fvalue@>; end; nkf:=-1; -nkcf:=-1; @ @<Read font fvalue list@>= begin @@ -4131,28 +4093,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an fvalue@>= + +@ @<Read an fvalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>fvalue_code then - flush_error('This property name doesn''t belong in an FVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>fvalue_code then + flush_error('This property name doesn''t belong in an FONTFVALUE list') else begin f_number:=get_integer; - if f_number>fvalue_entries then - flush_error('This FVALUE index is too big for my present table size') + if f_number>fvalue_entries then + flush_error('This FVALUE index is too big for my present table size') else if f_number<0 then flush_error('This FVALUE index is negative') else begin while npf[f_array]<f_number do begin incr(npf[f_array]); @<Null out the fvalue@>; - end; + end; @<Read all of an fvalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the fvalue@>= begin @@ -4173,11 +4135,13 @@ end @ @<Read a single fvalue value@>= begin get_name; -case cur_code of - fvalue_val_code: - fvalues[f_array,f_number].fn_val:=get_fix; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>fvalue_val_code then + flush_error('This property name doesn''t belong in a FVALUE list') +else begin + fvalues[f_array,f_number].fn_val:=get_fix; + finish_the_property; end; -finish_the_property; end @ @<Header information for fvalues@>= @@ -4222,7 +4186,6 @@ end; @!npi:array[ivalue_array_type] of integer; @!font_i_array:boolean; @!nki:integer; -@!nkci:integer; @!nwi:integer; @!i_array:integer; @!i_number:integer; @@ -4233,7 +4196,6 @@ for i_array := 0 to ivalue_arrays do begin @<Null out the ivalue@>; end; nki:=-1; -nkci:=-1; @ @<Read font ivalue list@>= begin @@ -4255,28 +4217,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an ivalue@>= + +@ @<Read an ivalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>ivalue_code then - flush_error('This property name doesn''t belong in an IVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>ivalue_code then + flush_error('This property name doesn''t belong in an FONTIVALUE list') else begin i_number:=get_integer; - if i_number>ivalue_entries then - flush_error('This IVALUE index is too big for my present table size') + if i_number>ivalue_entries then + flush_error('This IVALUE index is too big for my present table size') else if i_number<0 then flush_error('This IVALUE index is negative') else begin while npi[i_array]<i_number do begin incr(npi[i_array]); @<Null out the ivalue@>; - end; + end; @<Read all of an ivalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the ivalue@>= begin @@ -4297,11 +4259,13 @@ end @ @<Read a single ivalue value@>= begin get_name; -case cur_code of - ivalue_val_code: - ivalues[i_array,i_number].in_val:=get_integer; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>ivalue_val_code then + flush_error('This property name doesn''t belong in a IVALUE list') +else begin + ivalues[i_array,i_number].in_val:=get_integer; + finish_the_property; end; -finish_the_property; end @ @<Header information for ivalues@>= @@ -4318,7 +4282,7 @@ end begin for i_array:= 0 to nki-1 do for i_number:=0 to npi[i_array]-1 do begin - out_integer(ivalues[i_array,i_number].in_val); + out_int(ivalues[i_array,i_number].in_val); end; end diff --git a/Build/source/texk/web2c/omegaware/otangle.ch b/Build/source/texk/web2c/omegaware/otangle.ch index ec6437a3a6a..8fc89c42d15 100644 --- a/Build/source/texk/web2c/omegaware/otangle.ch +++ b/Build/source/texk/web2c/omegaware/otangle.ch @@ -1,5 +1,5 @@ % otangle.ch: web2c changes to file tangle.ch -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -52,6 +52,16 @@ \def\title{TANGLE changes for C} @z +@x [2] Eliminate the |end_of_TANGLE| label. +@d end_of_TANGLE = 9999 {go here to wrap it up} + +@y +@z +@x +label end_of_TANGLE; {go here to finish} +@y +@z + @x [?] Define and call parse_arguments. procedure initialize; var @<Local variables for initialization@>@/ @@ -97,7 +107,7 @@ procedure initialize; % [??] The text_char type is used as an array index into xord. The % default type `char' produces signed integers, which are bad array % indices in C. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x @d text_char == char {the data type of characters in text files} @y @@ -185,7 +195,7 @@ begin goto end_of_TANGLE; end; @y @d jump_out==uexit(1) -@d fatal_error(#)==begin new_line; write(stderr, #); +@d fatal_error(#)==begin new_line; write(stderr, #); error; mark_fatal; uexit(1); end @z @@ -208,7 +218,7 @@ end; @x [63] Remove conversion to uppercase begin if c>="a" then c:=c-@'40; {merge lowercase with uppercase} @y - begin + begin @z @x [64] Delayed pool file opening. @@ -370,6 +380,11 @@ print (banner); {print a ``banner line''} print_ln (version_string); @z +@x Eliminate the |end_of_TANGLE| label. +end_of_TANGLE: +@y +@z + @x @<Print the job |history|@>; @y @@ -408,7 +423,7 @@ begin address_of (option_index)); if getopt_return_val = -1 then begin {End of arguments; we exit the loop below.} ; - + end else if getopt_return_val = "?" then begin usage ('otangle'); @@ -427,13 +442,13 @@ begin write_ln (stderr, 'otangle: Need one or two file arguments.'); usage ('otangle'); end; - + {Supply |".web"| and |".ch"| extensions if necessary.} web_name := extend_filename (cmdline (optind), 'web'); if optind + 2 = argc then begin chg_name := extend_filename (cmdline (optind + 1), 'ch'); end; - + {Change |".web"| to |".p"| and use the current directory.} pascal_name := basename_change_suffix (web_name, '.web', '.p'); end; diff --git a/Build/source/texk/web2c/omegaware/otangle.test b/Build/source/texk/web2c/omegaware/otangle.test index edc0fcf3759..5bccef12ad0 100755 --- a/Build/source/texk/web2c/omegaware/otangle.test +++ b/Build/source/texk/web2c/omegaware/otangle.test @@ -4,7 +4,7 @@ # You may freely use, modify and/or distribute this file. TEXMFCNF=$srcdir/../kpathsea WEBINPUTS=$srcdir/cftests \ - ./otangle cftest cftest || exit 1 + ./otangle cftest cftest || exit 1 diff cftest.p $srcdir/cftests/ocftest.p || exit 1 diff --git a/Build/source/texk/web2c/omegaware/otangle.web b/Build/source/texk/web2c/omegaware/otangle.web index 4bd5a028ee2..02cf54e2c86 100644 --- a/Build/source/texk/web2c/omegaware/otangle.web +++ b/Build/source/texk/web2c/omegaware/otangle.web @@ -1,5 +1,5 @@ % otangle.web: Omega version of file tangle.web -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % diff --git a/Build/source/texk/web2c/omegaware/ovf2ovp.ch b/Build/source/texk/web2c/omegaware/ovf2ovp.ch index 2e40680f093..ee8adc26d57 100644 --- a/Build/source/texk/web2c/omegaware/ovf2ovp.ch +++ b/Build/source/texk/web2c/omegaware/ovf2ovp.ch @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -354,8 +354,8 @@ f:=((tfm[k+1] mod 16)*intcast(@'400)+tfm[k+2])*@'400+tfm[k+3]; @p function f(@!h,@!x,@!y:index):index; forward;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} @y -@p -ifdef('notdef') +@p +ifdef('notdef') function lig_f(@!h,@!x,@!y:index):index; begin end;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} endif('notdef') @@ -382,32 +382,11 @@ lig_f:=lig_z[h]; @x [124] Some cc's can't handle 136 case labels. o:=vf[vf_ptr]; incr(vf_ptr); case o of - @<Cases of \.{DVI} instructions that can appear in character packets@>@; @y o:=vf[vf_ptr]; incr(vf_ptr); if (o<=set1+3)or((o>=put1)and(o<=put1+3)) then -begin if o>=set1 then - if o>=put1 then c:=get_bytes(o-put1+1,false) - else c:=get_bytes(o-set1+1,false) - else c:=o; - if (c<0)or(c>65535) then - bad_vf('Character ',c:1,' is out of range and will be ignored') - else if f=font_ptr then - bad_vf('Character ',c:1,' in undeclared font will be ignored') -@.Character...will be ignored@> - else begin vc[font_chars[f+1]-1]:=c; {store |c| in the ``hole'' we left} - k:=font_chars[f];@+while vc[k]<>c do incr(k); - if k=font_chars[f+1]-1 then - bad_vf('Character ',c:1,' in font ',f:1,' will be ignored') - else begin if o>=put1 then out('(PUSH)'); - left; out('SETCHAR'); out_char(c); - if o>=put1 then out(')(POP'); - right; - end; - end; - end + @<Special cases of \.{DVI} instructions to typeset characters@>@; else case o of - @<Cases of \.{DVI} instructions that can appear in character packets@> @z @x [125] `signed' is a reserved word in ANSI C. @@ -423,34 +402,23 @@ begin if o>=set1 then begin write_ln(stderr, 'Stack overflow!'); uexit(1); @z -@x [129] This code moved outside the case statement +@x [129] This block of code moved outside the case statement. @ Before we typeset a character we make sure that it exists. @<Cases...@>= sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64), four_cases(set1),four_cases(put1):begin if o>=set1 then - if o>=put1 then c:=get_bytes(o-put1+1,false) - else c:=get_bytes(o-set1+1,false) - else c:=o; - if (c<0)or(c>65535) then - bad_vf('Character ',c:1,' is out of range and will be ignored') - else if f=font_ptr then - bad_vf('Character ',c:1,' in undeclared font will be ignored') -@.Character...will be ignored@> - else begin vc[font_chars[f+1]-1]:=c; {store |c| in the ``hole'' we left} - k:=font_chars[f];@+while vc[k]<>c do incr(k); - if k=font_chars[f+1]-1 then - bad_vf('Character ',c:1,' in font ',f:1,' will be ignored') - else begin if o>=put1 then out('(PUSH)'); - left; out('SETCHAR'); out_char(c); - if o>=put1 then out(')(POP'); - right; - end; - end; - end; @y @ Before we typeset a character we make sure that it exists. -(These cases moved outside the case statement, section 124.) + +@<Special cases...@>= +begin if o>=set1 then +@z + +@x [129] End of block of code moved outside the case statement. + end; +@y + end @z @x [132] Eliminate the |final_end| and |exit| labels. @@ -549,7 +517,7 @@ begin {Now |optind| is the index of first non-option on the command line. We must have one two three remaining arguments.} - if (optind + 1 <> argc) and (optind + 2 <> argc) + if (optind + 1 <> argc) and (optind + 2 <> argc) and (optind + 3 <> argc) then begin write_ln (stderr, 'ovf2ovp: Need one to three file arguments.'); usage ('ovf2ovp'); diff --git a/Build/source/texk/web2c/omegaware/ovf2ovp.web b/Build/source/texk/web2c/omegaware/ovf2ovp.web index edc2c5c8b39..589271cd5ec 100644 --- a/Build/source/texk/web2c/omegaware/ovf2ovp.web +++ b/Build/source/texk/web2c/omegaware/ovf2ovp.web @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -160,7 +160,7 @@ purposes, when fonts designed for one output device are unavailable on another. @ A \.{VF} file is organized as a stream of 8-bit bytes, using conventions borrowed from \.{DVI} and \.{PK} files. Thus, a device driver that knows about \.{DVI} and \.{PK} format will already -contain most of the mechanisms necessary to process \.{VF} files. +contain most of the mechanisms necessary to process \.{VF} files. We shall assume that \.{DVI} format is understood; the conventions in the \.{DVI} documentation (see, for example, {\sl \TeX: The Program}, part 31) are adopted here to define \.{VF} format. @@ -204,7 +204,7 @@ is a |fix_word| relative to the design size of the virtual font. Thus if the local font is to be used at the same size as the design size of the virtual font itself, |s| will be the integer value $2^{20}$. The value of |s| must be positive and less than -$2^{24}$ (thus less than 16 when considered as a |fix_word|). +$2^{24}$ (thus less than 16 when considered as a |fix_word|). The dimension~|d| is a |fix_word| in units of printer's points; hence it is identical to the design size found in the corresponding \.{TFM} file. @@ -615,7 +615,7 @@ bytes, |tfm[0..(4*lf-1)]|. @!xxchar_type=0..65537; @!xxxchar_type=0..65538; -@ +@ @<Glob...@>= @!tfm:array [-1000..tfm_size] of byte; {the input data all goes here} {the negative addresses avoid range checks for invalid characters} @@ -730,7 +730,7 @@ else begin 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); @@ -809,7 +809,7 @@ integer; @!bytes_per_entry:integer; @ @<Compute the base addresses@>= -begin +begin ivalues_start:=header_length+lh; fvalues_start:=ivalues_start+nki; mvalues_start:=fvalues_start+nkf; @@ -833,7 +833,7 @@ else if ofm_level=0 then begin for i:=bc to ec do begin char_start[i]:=4*char_base+8*(i-bc); end; - end + end else begin char_ptr:=4*char_base; i:=bc; @@ -939,7 +939,7 @@ end; procedure set_no_ctag(c:char_type); begin if not (ofm_level=1) then - tfm[char_info(c)+5] := + tfm[char_info(c)+5] := tfm[char_info(c)+5] div 8 * 8 + tfm[char_info(c)+5] mod 4; end; @@ -1263,7 +1263,7 @@ else begin read_tfm_word; font_bc:=((b0*256+b1)*256+b2)*256+b3; read_tfm_word; font_ec:=((b0*256+b1)*256+b2)*256+b3; if font_ec<font_bc then font_bc:=font_ec+1; - read_tfm_word; + read_tfm_word; for k:=1 to 8 do begin read_tfm_word; end; @@ -1983,10 +1983,10 @@ if nki>0 then begin @ @<Check and output the $i$th ivalue table@>= begin -left; out('FONTIVALUE'); out_hex_number(i); out_ln; +left; out('FONTIVALUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('IVALUE'); out_hex_number(j); out_ln; + left; out('IVALUE'); out_hex_number(j); out_ln; value:=256*tfm[base_counter+2]+tfm[base_counter+3]; left; out('IVALUEVAL'); out_hex_number(value); right; right; @@ -2005,10 +2005,10 @@ if nkf>0 then begin @ @<Check and output the $i$th fvalue table@>= begin -left; out('FONTFVALUE'); out_hex_number(i); out_ln; +left; out('FONTFVALUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('FVALUE'); out_hex_number(j); out_ln; + left; out('FVALUE'); out_hex_number(j); out_ln; left; out('FVALUEVAL'); out_fix(base_counter); right; right; base_counter:=base_counter+4; @@ -2026,10 +2026,10 @@ if nkm>0 then begin @ @<Check and output the $i$th mvalue table@>= begin -left; out('FONTMVALUE'); out_hex_number(i); out_ln; +left; out('FONTMVALUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('MVALUE'); out_hex_number(j); out_ln; + left; out('MVALUE'); out_hex_number(j); out_ln; left; out('MVALUEVAL'); out_fix(base_counter); right; right; base_counter:=base_counter+4; @@ -2047,10 +2047,10 @@ if nkr>0 then begin @ @<Check and output the $i$th rule table@>= begin -left; out('FONTRULE'); out_hex_number(i); out_ln; +left; out('FONTRULE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('RULE'); out_hex_number(j); out_ln; + left; out('RULE'); out_hex_number(j); out_ln; left; out('RULEWD'); out_fix(base_counter); right; left; out('RULEHT'); out_fix(base_counter+4); right; left; out('RULEDP'); out_fix(base_counter+8); right; @@ -2074,17 +2074,17 @@ if nkg>0 then begin @ @<Check and output the $i$th glue table@>= begin -left; out('FONTGLUE'); out_hex_number(i); out_ln; +left; out('FONTGLUE'); out_hex_number(i); out_ln; number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; for j:=0 to number_entries-1 do begin - left; out('GLUE'); out_hex_number(j); out_ln; + left; out('GLUE'); out_hex_number(j); out_ln; glue_subtype:=tfm[base_counter] div 16; glue_argument_kind:=tfm[base_counter] mod 16; glue_stretch_order:=tfm[base_counter+1] div 16; glue_shrink_order:=tfm[base_counter+1] mod 16; glue_argument:=tfm[base_counter+2]*256+tfm[base_counter+3]; left; - out('GLUETYPE'); + out('GLUETYPE'); case glue_subtype of 0: out(' H 0'); 1: out(' H 1'); @@ -2095,13 +2095,13 @@ for j:=0 to number_entries-1 do begin case glue_argument_kind of 1: begin left; out('GLUERULE'); out_hex_number(glue_argument); right; - end; + end; 2: begin left; out('GLUECHAR'); out_hex_number(glue_argument); right; - end; + end; end; left; - out('GLUESTRETCHORDER'); + out('GLUESTRETCHORDER'); case glue_stretch_order of 0: out(' H 0'); 1: out(' H 1'); @@ -2111,7 +2111,7 @@ for j:=0 to number_entries-1 do begin end; right; left; - out('GLUESHRINKORDER'); + out('GLUESHRINKORDER'); case glue_shrink_order of 0: out(' H 0'); 1: out(' H 1'); @@ -2136,20 +2136,20 @@ if nkp>0 then begin base_counter:=penalties_base*4; for i:=0 to nkp-1 do @<Check and output the $i$th penalty table@>; end; - + @ @<Check and output the $i$th penalty table@>= -begin -left; out('FONTPENALTY'); out_hex_number(i); out_ln; -number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; -for j:=0 to number_entries-1 do begin +begin +left; out('FONTPENALTY'); out_hex_number(i); out_ln; +number_entries:=256*tfm[start_counter+2]+tfm[start_counter+3]; +for j:=0 to number_entries-1 do begin left; out('PENALTY'); out_hex_number(j); out_ln; - value:=256*tfm[base_counter+2]+tfm[base_counter+3]; - left; out('PENALTYVAL'); out_hex_number(value); right; - right; - base_counter:=base_counter+4; - end; + value:=256*tfm[base_counter+2]+tfm[base_counter+3]; + left; out('PENALTYVAL'); out_hex_number(value); right; + right; + base_counter:=base_counter+4; + end; right; -start_counter:=start_counter+4; +start_counter:=start_counter+4; end; @ We need to check the range of all the remaining |fix_word| values, @@ -2491,14 +2491,17 @@ while (c<=ec) do begin else if i<(nki+nkf) then begin out('CHARFVALUE'); out_hex_number(i-nki); end - else if i<(nki+nkf+nkr) then begin - out('CHARRULE'); out_hex_number(i-nki-nkf); + else if i<(nki+nkf+nkm) then begin + out('CHARMVALUE'); out_hex_number(i-nki-nkf); end - else if i<(nki+nkf+nkr+nkg) then begin - out('CHARGLUE'); out_hex_number(i-nki-nkf-nkr); + else if i<(nki+nkf+nkm+nkr) then begin + out('CHARRULE'); out_hex_number(i-nki-nkf-nkm); end - else if i<(nki+nkf+nkr+nkg+nkp) then begin - out('CHARPENALTY'); out_hex_number(i-nki-nkf-nkr-nkg); + else if i<(nki+nkf+nkm+nkr+nkg) then begin + out('CHARGLUE'); out_hex_number(i-nki-nkf-nkm-nkr); + end + else if i<(nki+nkf+nkm+nkr+nkg+nkp) then begin + out('CHARPENALTY'); out_hex_number(i-nki-nkf-nkm-nkr-nkg); end; out_hex_number(char_param(c,i)); right; @@ -2809,7 +2812,7 @@ both_z: begin class[h]:=pending; lig_z[h]:=eval(eval(x,lig_z[h]),y); end; pending: begin x_lig_cycle:=x; y_lig_cycle:=y; lig_z[h]:=xxmax_char; class[h]:=simple; - end; {the value |xxmax_char| will break all cycles, + end; {the value |xxmax_char| will break all cycles, since it's not in |hash|} end; {there are no other cases} f:=lig_z[h]; @@ -2973,7 +2976,7 @@ push:begin if top=max_stack then incr(top); wstack[top]:=wstack[top-1]; xstack[top]:=xstack[top-1]; ystack[top]:=ystack[top-1]; zstack[top]:=zstack[top-1]; out('(PUSH)'); out_ln; - end; + end; pop:if top=0 then bad_vf('More pops than pushes!') @.More pops than pushes@> else begin decr(top); out('(POP)'); out_ln; diff --git a/Build/source/texk/web2c/omegaware/ovp2ovf.ch b/Build/source/texk/web2c/omegaware/ovp2ovf.ch index 503a32fef37..d96af15c18c 100644 --- a/Build/source/texk/web2c/omegaware/ovp2ovf.ch +++ b/Build/source/texk/web2c/omegaware/ovp2ovf.ch @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -91,7 +91,7 @@ rewritebin (tfm_file, tfm_name); % [89] `index' is not a good choice for an identifier on Unix systems. % Neither is `class', on AIX. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x |k|th element of its list. @y @@ -134,8 +134,8 @@ HEX:=' 0123456789ABCDEF';@/ @p function f(@!h,@!x,@!y:indx):indx; forward;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} @y -@p -ifdef('notdef') +@p +ifdef('notdef') function f(@!h,@!x,@!y:indx):indx; begin end;@t\2@> {compute $f$ for arguments known to be in |hash[h]|} endif('notdef') @@ -144,7 +144,7 @@ endif('notdef') @x [153] Finish fixing up f. @p function f; @y -@p function f(@!h,@!x,@!y:indx):indx; +@p function f(@!h,@!x,@!y:indx):indx; @z @x [156] Change TFM-byte output to fix ranges. @@ -183,7 +183,7 @@ begin if fabs(x/design_units)>=16.0 then begin % [141] char_remainder[c] is unsigned, and label_table[sort_ptr].rr % might be -1, and if -1 is coerced to being unsigned, it will be bigger % than anything else. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @x while label_table[sort_ptr].rr>char_remainder[c] do begin @y @@ -202,7 +202,7 @@ var @!krn_ptr:0..max_kerns; {an index into |kern|} @y @z -@x [181?] Be quiet unless verbose. +@x [181?] Be quiet unless verbose. read_input; print_ln('.');@/ @y read_input; @@ -238,7 +238,7 @@ begin address_of (option_index)); if getopt_return_val = -1 then begin {End of arguments; we exit the loop below.} ; - + end else if getopt_return_val = "?" then begin usage ('ovp2ovf'); {|getopt| has already given an error message.} @@ -254,7 +254,7 @@ begin {Now |optind| is the index of first non-option on the command line. We must have one to three remaining arguments.} - if (optind + 1 <> argc) and (optind + 2 <> argc) + if (optind + 1 <> argc) and (optind + 2 <> argc) and (optind + 3 <> argc) then begin write_ln (stderr, 'ovp2ovf: Need one to three file arguments.'); usage ('ovp2ovf'); diff --git a/Build/source/texk/web2c/omegaware/ovp2ovf.web b/Build/source/texk/web2c/omegaware/ovp2ovf.web index 69c1ded4d6b..5591ce52d88 100644 --- a/Build/source/texk/web2c/omegaware/ovp2ovf.web +++ b/Build/source/texk/web2c/omegaware/ovp2ovf.web @@ -1,4 +1,4 @@ -% +% % This file is part of the Omega project, which % is based in the web2c distribution of TeX. % @@ -1057,7 +1057,7 @@ var k:0..longest_name; {index into |cur_name|} @!cur_hash_reset:boolean; begin @<Compute the hash code, |cur_hash|, for |cur_name|@>; not_found:=true; -cur_hash_reset:=false; +cur_hash_reset:=false; while not_found do begin if (cur_hash=0) and (cur_hash_reset) then not_found:=false @@ -1075,7 +1075,7 @@ while not_found do begin for k:=1 to name_length do if dictionary[j+k-1]<>cur_name[k] then not_found:=true; end - end + end end end; name_ptr:=nhash[cur_hash]; @@ -1091,6 +1091,7 @@ dictionary is kept in |equiv[k]|. The numeric |equiv| codes are given symbolic meanings by the following definitions. @d comment_code=0 +@#{property names at the outer level} @d check_sum_code=1 @d design_size_code=2 @d design_units_code=3 @@ -1104,15 +1105,20 @@ symbolic meanings by the following definitions. @d boundary_char_code=11 @d virtual_title_code=12 @d map_font_code=13 -@d font_dir_code=14 -@d n_font_dir_code=15 -@d character_code=16 -@d font_name_code=21 -@d font_area_code=22 -@d font_checksum_code=23 -@d font_at_code=24 -@d font_dsize_code=25 +@d character_code=14 +@d font_dir_code=15 +@d n_font_dir_code=16 +@d ofm_level_code=17 +@d font_rule_code=18 +@d font_glue_code=19 +@d font_penalty_code=20 +@d font_mvalue_code=21 +@d font_fvalue_code=22 +@d font_ivalue_code=23 +@d char_repeat_code=24 +@#{property names in a FONTDIMEN list} @d parameter_code=30 +@#{property names in a CHARACTER list} @d char_info_code=70 @d width=1 @d height=2 @@ -1162,36 +1168,31 @@ symbolic meanings by the following definitions. @d sec_base_slant_code=char_info_code+sec_base_slant @d next_larger_code=100 @d map_code=101 -@d var_char_code=102 -@d select_font_code=110 -@d set_char_code=111 -@d set_rule_code=112 -@d move_right_code=113 -@d move_down_code=115 -@d push_code=117 -@d pop_code=118 -@d special_code=119 -@d special_hex_code=120 +@d char_ivalue_code=111 +@d char_fvalue_code=112 +@d char_mvalue_code=113 +@d char_rule_code=114 +@d char_glue_code=115 +@d char_penalty_code=116 +@d var_char_code=117 +@#{property names in a LIGTABLE list} @d label_code=130 @d stop_code=131 @d skip_code=132 @d krn_code=133 @d lig_code=134 -@d ofm_level_code=140 -@d char_repeat_code=150 -@d char_ivalue_code=151 -@d char_fvalue_code=152 -@d char_mvalue_code=153 -@d char_rule_code=154 -@d char_glue_code=155 -@d char_penalty_code=156 -@d font_rule_code=160 -@d rule_code=161 +@d clabel_code=150 +@d cpen_code=151 +@d cglue_code=152 +@d cpenglue_code=153 +@d ckrn_code=154 +@#{property names in a FONTRULE list} +@d rule_code=161 @d rule_width_code=162 @d rule_height_code=163 @d rule_depth_code=164 -@d font_glue_code=170 -@d glue_code=171 +@#{property names in a FONTGLUE list} +@d glue_code=171 @d glue_type_code=172 @d glue_stretch_order_code=173 @d glue_shrink_order_code=174 @@ -1200,40 +1201,34 @@ symbolic meanings by the following definitions. @d glue_shrink_code=177 @d glue_char_code=178 @d glue_rule_code=179 -@d order_unit_code=181 -@d order_fi_code=182 -@d order_fil_code=183 -@d order_fill_code=184 -@d order_filll_code=185 -@d type_normal_code=186 -@d type_aleaders_code=187 -@d type_cleaders_code=188 -@d type_xleaders_code=189 -@d font_penalty_code=190 -@d penalty_code=191 +@#{property names in a FONTPENALTY list} +@d penalty_code=191 @d penalty_val_code=192 -@d font_mvalue_code=200 -@d mvalue_code=201 -@d mvalue_val_code=202 -@d font_fvalue_code=210 -@d fvalue_code=211 -@d fvalue_val_code=212 -@d font_ivalue_code=220 -@d ivalue_code=221 -@d ivalue_val_code=222 -@d clabel_code=231 -@d cpen_code=232 -@d cglue_code=233 -@d cpenglue_code=234 -@d ckrn_code=235 -@d TL_dir_code=240 -@d LT_dir_code=241 -@d TR_dir_code=242 -@d LB_dir_code=243 -@d BL_dir_code=244 -@d RT_dir_code=245 -@d BR_dir_code=246 -@d RB_dir_code=247 +@#{property names in a FONTMVALUE list} +@d mvalue_code=193 +@d mvalue_val_code=194 +@#{property names in a FONTFVALUE list} +@d fvalue_code=195 +@d fvalue_val_code=196 +@#{property names in a FONTIVALUE list} +@d ivalue_code=197 +@d ivalue_val_code=198 +@#{property names in a MAPFONT list} +@d font_name_code=200 +@d font_area_code=201 +@d font_checksum_code=202 +@d font_at_code=203 +@d font_dsize_code=204 +@#{property names in a MAP list} +@d select_font_code=210 +@d set_char_code=211 +@d set_rule_code=212 +@d move_right_code=213 +@d move_down_code=215 +@d push_code=217 +@d pop_code=218 +@d special_code=219 +@d special_hex_code=220 @<Glo...@>= @!equiv:array[0..max_name_index] of byte; @@ -1400,15 +1395,6 @@ load8("G")("L")("U")("E")("C")("H")("A")("R")(glue_char_code);@/ load6("G")("L")("U")("E")("W")("D")(glue_width_code);@/ load11("G")("L")("U")("E")("S")("T")("R")("E")("T")("C")("H")(glue_stretch_code);@/ load10("G")("L")("U")("E")("S")("H")("R")("I")("N")("K")(glue_shrink_code);@/ -load4("U")("N")("I")("T")(order_unit_code);@/ -load2("F")("I")(order_fi_code);@/ -load3("F")("I")("L")(order_fil_code);@/ -load4("F")("I")("L")("L")(order_fill_code);@/ -load5("F")("I")("L")("L")("L")(order_filll_code);@/ -load6("N")("O")("R")("M")("A")("L")(type_normal_code);@/ -load8("A")("L")("E")("A")("D")("E")("R")("S")(type_aleaders_code);@/ -load8("C")("L")("E")("A")("D")("E")("R")("S")(type_cleaders_code);@/ -load8("X")("L")("E")("A")("D")("E")("R")("S")(type_xleaders_code);@/ load11("F")("O")("N")("T")("P")("E")("N")("A")("L")("T")("Y")(font_penalty_code);@/ load7("P")("E")("N")("A")("L")("T")("Y")(penalty_code);@/ load10("P")("E")("N")("A")("L")("T")("Y")("V")("A")("L")(penalty_val_code);@/ @@ -1421,14 +1407,6 @@ load9("F")("V")("A")("L")("U")("E")("V")("A")("L")(fvalue_val_code);@/ load10("F")("O")("N")("T")("I")("V")("A")("L")("U")("E")(font_ivalue_code);@/ load6("I")("V")("A")("L")("U")("E")(ivalue_code);@/ load9("I")("V")("A")("L")("U")("E")("V")("A")("L")(ivalue_val_code);@/ -load2("T")("L")(TL_dir_code); -load2("L")("T")(LT_dir_code); -load2("T")("R")(TR_dir_code); -load2("L")("B")(LB_dir_code); -load2("B")("L")(BL_dir_code); -load2("R")("T")(RT_dir_code); -load2("B")("R")(BR_dir_code); -load2("R")("B")(RB_dir_code); @ \.{VPL} files may contain the following in addition to the \.{PL} names. @@ -2081,9 +2059,7 @@ might arise. @<Read a font property value@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code<110) and (cur_code>character_code) then - flush_error('This property name doesn''t belong on the outer level') -else if (cur_code>=110) and ((cur_code mod 10)<>0) then +else if cur_code>char_repeat_code then flush_error('This property name doesn''t belong on the outer level') @.This property name doesn't belong...@> else begin @@ -2335,7 +2311,10 @@ end @ @<Read a ligature/kern command@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code>=label_code) and (cur_code<=(lig_code+11)) then begin +else if (cur_code<label_code)or(cur_code>ckrn_code) then + flush_error('This property name doesn''t belong in a LIGTABLE list') +@.This property name doesn't belong...@> +else begin case cur_code of label_code:@<Read a label step@>; stop_code:@<Read a stop step@>; @@ -2343,21 +2322,14 @@ else if (cur_code>=label_code) and (cur_code<=(lig_code+11)) then begin krn_code:@<Read a kerning step@>; lig_code,lig_code+1,lig_code+2,lig_code+3,lig_code+5,lig_code+6, lig_code+7,lig_code+11:@<Read a ligature step@>; - end; {there are no other cases |>=label_code|} - finish_the_property; - end -else if (cur_code>=clabel_code) and (cur_code<=cpenglue_code) then begin - case cur_code of clabel_code:@<Read an extended label step@>; cpen_code:@<Read an extended penalty step@>; cglue_code:@<Read an extended glue step@>; cpenglue_code:@<Read an extended penalty/glue step@>; ckrn_code:@<Read an extended kern step@>; - end; {there are no other cases |>=label_code|} + end; {there are no other cases |>=label_code| and |<=ckrn_code|} finish_the_property; - end -else flush_error('This property name doesn''t belong in a LIGTABLE list'); -@.This property name doesn't belong...@> + end; end @ When a character is about to be tagged, we call the following @@ -2445,11 +2417,11 @@ if krn_ptr=nk then begin decr(krn_ptr); end; end; -if ofm_level=-1 then begin +if ofm_level=-1 then begin lig_kern[nl].b2:=kern_flag+(krn_ptr div 256); lig_kern[nl].b3:=krn_ptr mod 256; - end -else begin + end +else begin lig_kern[nl].b2:=kern_flag+(krn_ptr div 65536); lig_kern[nl].b3:=krn_ptr mod 65536; end; @@ -2592,9 +2564,9 @@ if max_ivalue_category>0 then begin end; end; end; - end; - end; - end; + end; + end; + end; end @ @<Global...@>= @@ -2610,7 +2582,7 @@ that is used most, the processing of individual character data. begin if not tables_read then begin @<Compute the new header information for OFM files@>; - tables_read:=true; + tables_read:=true; end; c:=get_byte; {read the character code that is being specified} @<Print |c| in hex notation@>; @@ -2668,7 +2640,7 @@ for c:=(cprime+1) to (cprime+crange) do begin char_ht[c]:=char_ht[cprime]; char_dp[c]:=char_dp[cprime]; char_ic[c]:=char_ic[cprime]; - for tab:=0 to (nki+nkf+nkr+nkg+nkp-1) do begin + for tab:=0 to (nki+nkf+nkm+nkr+nkg+nkp-1) do begin char_table[c,tab]:= char_table[cprime,tab]; end; end; @@ -2688,13 +2660,28 @@ for c:=0 to max_char do for ch_table:=0 to char_param_tables do char_table[c,ch_table]:=0; -@ @<Read a character property@>= +@ @d get_char_table_entry(#)== + begin ch_table:=get_integer; + if (ch_table<0)or(ch_table>=#) then + flush_error('Character property index out of range') +@.Character property index...@> + else begin get_char_table_entry_end +@d get_char_table_entry_end(#)== + ch_table:=ch_table+#; + if ch_table>char_param_tables then + flush_error('Character property exceeds table size') +@.Character property exceeds...@> + else begin + if ch_table>npc then npc:=ch_table; + char_table[c,ch_table]:=get_integer; + end; + end; + end + +@<Read a character property@>= begin get_name; if cur_code=comment_code then skip_to_end_of_item -else if (cur_code<char_wd_code) or - ((cur_code>var_char_code) and not - ((cur_code>=char_ivalue_code) and (cur_code<=char_penalty_code))) - then +else if (cur_code<char_wd_code)or(cur_code>var_char_code) then flush_error('This property name doesn''t belong in a CHARACTER list') @.This property name doesn't belong...@> else begin @@ -2703,66 +2690,36 @@ else begin char_ht_code:char_ht[c]:=sort_in(height,get_fix); char_dp_code:char_dp[c]:=sort_in(depth,get_fix); char_ic_code:char_ic[c]:=sort_in(italic,get_fix); - sec_width_code:temp_value:=get_fix; - sec_height_code:temp_value:=get_fix; - sec_depth_code:temp_value:=get_fix; - sec_italic_code:temp_value:=get_fix; - accent_code:temp_value:=get_fix; - prim_top_axis_code:temp_value:=get_fix; - prim_top_axis_bis_code:temp_value:=get_fix; - prim_bot_axis_code:temp_value:=get_fix; - prim_bot_axis_bis_code:temp_value:=get_fix; - prim_mid_hor_code:temp_value:=get_fix; - prim_mid_vert_code:temp_value:=get_fix; - prim_base_slant_code:temp_value:=get_fix; - sec_top_axis_code:temp_value:=get_fix; - sec_top_axis_bis_code:temp_value:=get_fix; - sec_bot_axis_code:temp_value:=get_fix; - sec_bot_axis_bis_code:temp_value:=get_fix; - sec_mid_hor_code:temp_value:=get_fix; - sec_mid_vert_code:temp_value:=get_fix; + sec_width_code, + sec_height_code, + sec_depth_code, + sec_italic_code, + accent_code, + prim_top_axis_code, + prim_top_axis_bis_code, + prim_bot_axis_code, + prim_bot_axis_bis_code, + prim_mid_hor_code, + prim_mid_vert_code, + prim_base_slant_code, + sec_top_axis_code, + sec_top_axis_bis_code, + sec_bot_axis_code, + sec_bot_axis_bis_code, + sec_mid_hor_code, + sec_mid_vert_code, sec_base_slant_code:temp_value:=get_fix; next_larger_code:begin check_tag(c); char_tag[c]:=list_tag; char_remainder[c]:=get_byte; end; map_code:read_packet(c); var_char_code:@<Read an extensible recipe for |c|@>; - char_ivalue_code: begin - ch_table:=get_integer; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkci then nkci:=ch_table; - end; - char_fvalue_code: begin - ch_table:=get_integer+nki; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcf then nkcf:=ch_table; - end; - char_mvalue_code: begin - ch_table:=get_integer+nki+nkf; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcm then nkcm:=ch_table; - end; - char_rule_code: begin - ch_table:=get_integer+nki+nkf+nkm; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcr then nkcr:=ch_table; - end; - char_glue_code: begin - ch_table:=get_integer+nki+nkf+nkm+nkr; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcg then nkcg:=ch_table; - end; - char_penalty_code: begin - ch_table:=get_integer+nki+nkf+nkm+nkr+nkg; - ch_entry:=get_integer; - char_table[c,ch_table]:=ch_entry; - if ch_table>nkcp then nkcp:=ch_table; - end; + char_ivalue_code: get_char_table_entry(nki)(0); + char_fvalue_code: get_char_table_entry(nkf)(nki); + char_mvalue_code: get_char_table_entry(nkm)(nki+nkf); + char_rule_code: get_char_table_entry(nkr)(nki+nkf+nkm); + char_glue_code: get_char_table_entry(nkg)(nki+nkf+nkm+nkr); + char_penalty_code: get_char_table_entry(nkp)(nki+nkf+nkm+nkr+nkg); end;@/ finish_the_property; end; @@ -2808,18 +2765,18 @@ which prints a progress report as the file is being read. @ @<Glob...@>= @!HEX: packed array [1..32] of char; - + @ @<Set init...@>= HEX:='0123456789ABCDEF';@/ - + @ The array |dig| will hold a sequence of digits to be output. - + @<Glob...@>= @!dig:array[0..32] of integer; - + @ Here, in fact, are two procedures that output |dig[j-1]|$\,\ldots\,$|dig[0]|, given $j>0$. - + @p procedure out_digs(j:integer); {outputs |j| digits} begin repeat decr(j); out(HEX[1+dig[j]]); until j=0; @@ -2829,10 +2786,10 @@ procedure print_digs(j:integer); {prints |j| digits} begin repeat decr(j); print(HEX[1+dig[j]]); until j=0; end; - + @ The |print_number| procedure indicates how |print_digs| can be used. This procedure can print in octal, decimal or hex notation. - + @d print_hex(#)==print_number(#,16) @d print_octal(#)==print_number(#,8) @d print_decimal(#)==print_number(#,10) @@ -3235,7 +3192,7 @@ case ofm_level of -1: begin top_width:=255; top_depth:=15; top_height:=15; top_italic:=63; end; - 0: begin + 0: begin top_width:=65535; top_depth:=255; top_height:=255; top_italic:=255; end; 1: begin @@ -3504,6 +3461,9 @@ and the total number of words in the \.{TFM} file (|lf|). @!temp_width:fix_word; {width being used to compute a check sum} @!ncw,@!nco,@!npc:integer; +@ @<Set init...@>= +npc:=-1; + @ It might turn out that no characters exist at all. But \.{VPtoVF} keeps going and writes the \.{TFM} anyway. In this case |ec| will be~0 and |bc| will be~1. @@ -3650,18 +3610,7 @@ end @<Compute the character info size@>= if ofm_level=1 then begin ncw:=0; - if nkcp>-1 then - npc:=nki+nkf+nkr+nkg+nkcp+1 - else if nkcg>-1 then - npc:=nki+nkf+nkr+nkcg+1 - else if nkcr>-1 then - npc:=nki+nkf+nkcr+1 - else if nkcf>-1 then - npc:=nki+nkcf+1 - else if nkci>-1 then - npc:=nkci+1 - else - npc:=0; + incr(npc); needed_space:=(12+npc*2) div 4; extra_bytes:=(needed_space*4) - (10+npc*2); for c:=bc to ec do begin @@ -3687,7 +3636,7 @@ if ofm_level=1 then begin end; ncw:=ncw+needed_space; end; - end; + end; end; @ The next block contains packed |char_info|. @@ -3712,7 +3661,7 @@ case ofm_level of out(index[char_ht[c]]); out(index[char_dp[c]]); out(index[char_ic[c]]); out(char_tag[c]); out(char_remainder[c] div 256); out(char_remainder[c] mod 256); - end; + end; 1: begin if c=char_original[c] then begin out(index[char_wd[c]] div 256); out(index[char_wd[c]] mod 256); @@ -3721,18 +3670,18 @@ case ofm_level of tab:=char_tag[c]; if char_extended_tag[c] then begin tab:=5; - end; + end; out(tab); out(char_remainder[c] div 256); out(char_remainder[c] mod 256); out_size(char_repeats[c]); for tab:=0 to npc-1 do begin out(char_table[c,tab] div 256); out(char_table[c,tab] mod 256); - end; + end; for tab:=1 to extra_bytes do begin out(0); - end; - end; - end; + end; + end; + end; end; @ When a scaled quantity is output, we may need to divide it by |design_units|. @@ -3825,7 +3774,7 @@ for c:=bc to ec do if char_tag[c]=lig_tag then begin @ @<Find the minimum |lk_offset| and adjust all remainders@>= begin sort_ptr:=label_ptr; {the largest unallocated label} -if ofm_level=-1 then begin +if ofm_level=-1 then begin if label_table[sort_ptr].rr+lk_offset > 255 then begin lk_offset:=0; extra_loc_needed:=false; {location 0 can do double duty} repeat char_remainder[label_table[sort_ptr].cc]:=lk_offset; @@ -3836,8 +3785,8 @@ if ofm_level=-1 then begin until lk_offset+label_table[sort_ptr].rr<256; {N.B.: |lk_offset=256| satisfies this when |sort_ptr=0|} end; - end -else begin + end +else begin if label_table[sort_ptr].rr+lk_offset > 65535 then begin lk_offset:=0; extra_loc_needed:=false; {location 0 can do double duty} repeat char_remainder[label_table[sort_ptr].cc]:=lk_offset; @@ -3896,7 +3845,7 @@ else begin out_size((t+lk_offset) div 256); out_size((t+lk_offset) mod 256); repeat decr(label_ptr); until label_table[label_ptr].rr<t; - end; + end; if nl>0 then for lig_ptr:=0 to nl-1 do begin out_size(lig_kern[lig_ptr].b0); out_size(lig_kern[lig_ptr].b1); @@ -4171,7 +4120,7 @@ case cur_char of end; while cur_char<>")" do get_next; if font_dir = -1 then begin - flush_error('FONTDIR must be valid direction, -- TR assumed'); + flush_error('FONTDIR must be valid direction, -- TL assumed'); font_dir:=0; end; end @@ -4201,7 +4150,7 @@ case cur_char of end; while cur_char<>")" do get_next; if font_dir = -1 then begin - flush_error('NFONTDIR must be valid direction, -- TR assumed'); + flush_error('NFONTDIR must be valid direction, -- TL assumed'); font_dir:=8; end; end @@ -4231,7 +4180,6 @@ end; @!rules:array[rule_array_type,rule_entry_type] of rule_node; @!npr:array[rule_array_type] of integer; @!nkr:integer; -@!nkcr:integer; @!nwr:integer; @!r_array:integer; @!r_number:integer; @@ -4242,7 +4190,6 @@ for r_array := 0 to rule_arrays do begin @<Null out the rule@>; end; nkr:=-1; -nkcr:=-1; @ @<Read font rule list@>= begin @@ -4264,28 +4211,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a rule@>= + +@ @<Read a rule@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>rule_code then - flush_error('This property name doesn''t belong in a RULE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>rule_code then + flush_error('This property name doesn''t belong in a FONTRULE list') else begin r_number:=get_integer; - if r_number>rule_entries then - flush_error('This RULE index is too big for my present table size') + if r_number>rule_entries then + flush_error('This RULE index is too big for my present table size') else if r_number<0 then flush_error('This RULE index is negative') else begin while npr[r_array]<r_number do begin incr(npr[r_array]); @<Null out the rule@>; - end; + end; @<Read all of a rule's values@>; - finish_the_property; + finish_the_property; end; - end; -end + end; +end @ @<Null out the rule@>= begin @@ -4308,15 +4255,20 @@ end @ @<Read a single rule value@>= begin get_name; -case cur_code of - rule_width_code: - rules[r_array,r_number].rn_width:=get_fix; - rule_height_code: - rules[r_array,r_number].rn_height:=get_fix; - rule_depth_code: - rules[r_array,r_number].rn_depth:=get_fix; - end; -finish_the_property; +if cur_code=comment_code then skip_to_end_of_item +else if (cur_code<rule_width_code)or(cur_code>rule_depth_code) then + flush_error('This property name doesn''t belong in a RULE list') +else begin + case cur_code of + rule_width_code: + rules[r_array,r_number].rn_width:=get_fix; + rule_height_code: + rules[r_array,r_number].rn_height:=get_fix; + rule_depth_code: + rules[r_array,r_number].rn_depth:=get_fix; + end; + finish_the_property; + end; end @ @<Header information for rules@>= @@ -4350,7 +4302,7 @@ end @!glue_arrays=arrays_per_kind; @!glue_entries=entries_per_array; -@ +@ @d t_normal==0 @d t_aleaders==1 @d t_cleaders==2 @@ -4385,7 +4337,6 @@ end; @!glues:array[glue_array_type,glue_entry_type] of glue_node; @!npg:array[glue_array_type] of integer; @!nkg:integer; -@!nkcg:integer; @!nwg:integer; @!g_array:integer; @!g_byte:integer; @@ -4398,7 +4349,6 @@ begin @<Null out the glue@>; end; nkg:=-1; -nkcg:=-1; @ @<Read font glue list@>= begin @@ -4420,28 +4370,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a glue@>= + +@ @<Read a glue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>glue_code then - flush_error('This property name doesn''t belong in a GLUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>glue_code then + flush_error('This property name doesn''t belong in a FONTGLUE list') else begin g_number:=get_integer; - if g_number>glue_entries then - flush_error('This GLUE index is too big for my present table size') + if g_number>glue_entries then + flush_error('This GLUE index is too big for my present table size') else if g_number<0 then flush_error('This GLUE index is negative') else begin while npg[g_array]<g_number do begin incr(npg[g_array]); @<Null out the glue@>; - end; + end; @<Read all of a glue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the glue@>= begin @@ -4469,44 +4419,49 @@ end @ @<Read a single glue value@>= begin get_name; -case cur_code of - glue_width_code: - glues[g_array,g_number].gn_width:=get_fix; - glue_stretch_code: - glues[g_array,g_number].gn_stretch:=get_fix; - glue_shrink_code: - glues[g_array,g_number].gn_shrink:=get_fix; - glue_type_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>3) then begin - g_byte:=0; +if cur_code=comment_code then skip_to_end_of_item +else if (cur_code<glue_type_code)or(cur_code>glue_rule_code) then + flush_error('This property name doesn''t belong in a GLUE list') +else begin + case cur_code of + glue_width_code: + glues[g_array,g_number].gn_width:=get_fix; + glue_stretch_code: + glues[g_array,g_number].gn_stretch:=get_fix; + glue_shrink_code: + glues[g_array,g_number].gn_shrink:=get_fix; + glue_type_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>3) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_type:=g_byte; end; - glues[g_array,g_number].gn_type:=g_byte; - end; - glue_stretch_order_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>4) then begin - g_byte:=0; + glue_stretch_order_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>4) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_stretch_order:=g_byte; end; - glues[g_array,g_number].gn_stretch_order:=g_byte; - end; - glue_shrink_order_code: begin - g_byte:=get_integer; - if (g_byte<0) or (g_byte>4) then begin - g_byte:=0; + glue_shrink_order_code: begin + g_byte:=get_integer; + if (g_byte<0) or (g_byte>4) then begin + g_byte:=0; + end; + glues[g_array,g_number].gn_shrink_order:=g_byte; + end; + glue_char_code: begin + glues[g_array,g_number].gn_argument:=get_integer; + glues[g_array,g_number].gn_arg_type:=g_char; + end; + glue_rule_code: begin + glues[g_array,g_number].gn_argument:=get_integer; + glues[g_array,g_number].gn_arg_type:=g_rule; end; - glues[g_array,g_number].gn_shrink_order:=g_byte; - end; - glue_char_code: begin - glues[g_array,g_number].gn_argument:=get_integer; - glues[g_array,g_number].gn_arg_type:=g_char; - end; - glue_rule_code: begin - glues[g_array,g_number].gn_argument:=get_integer; - glues[g_array,g_number].gn_arg_type:=g_rule; end; + finish_the_property; end; -finish_the_property; end @ @<Header information for glues@>= @@ -4562,7 +4517,6 @@ end; @!penalties:array[penalty_array_type,penalty_entry_type] of penalty_node; @!npp:array[penalty_array_type] of integer; @!nkp:integer; -@!nkcp:integer; @!nwp:integer; @!p_array:integer; @!p_number:integer; @@ -4573,7 +4527,6 @@ for p_array := 0 to penalty_arrays do begin @<Null out the penalty@>; end; nkp:=-1; -nkcp:=-1; @ @<Read font penalty list@>= begin @@ -4595,28 +4548,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read a penalty@>= + +@ @<Read a penalty@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>penalty_code then - flush_error('This property name doesn''t belong in a PENALTY list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>penalty_code then + flush_error('This property name doesn''t belong in a FONTPENALTY list') else begin p_number:=get_integer; - if p_number>penalty_entries then - flush_error('This PENALTY index is too big for my present table size') + if p_number>penalty_entries then + flush_error('This PENALTY index is too big for my present table size') else if p_number<0 then flush_error('This PENALTY index is negative') else begin while npp[p_array]<p_number do begin incr(npp[p_array]); @<Null out the penalty@>; - end; + end; @<Read all of a penalty's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the penalty@>= begin @@ -4637,11 +4590,13 @@ end @ @<Read a single penalty value@>= begin get_name; -case cur_code of - penalty_val_code: - penalties[p_array,p_number].pn_val:=get_integer; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>penalty_val_code then + flush_error('This property name doesn''t belong in a PENALTY list') +else begin + penalties[p_array,p_number].pn_val:=get_integer; + finish_the_property; end; -finish_the_property; end @ @<Header information for penalties@>= @@ -4658,7 +4613,7 @@ end begin for p_array:= 0 to nkp-1 do for p_number:=0 to npp[p_array]-1 do begin - out_integer(penalties[p_array,p_number].pn_val); + out_int(penalties[p_array,p_number].pn_val); end; end @@ -4685,7 +4640,6 @@ end; @!mvalues:array[mvalue_array_type,mvalue_entry_type] of mvalue_node; @!npm:array[mvalue_array_type] of integer; @!nkm:integer; -@!nkcm:integer; @!nwm:integer; @!m_array:integer; @!m_number:integer; @@ -4696,7 +4650,6 @@ for m_array := 0 to mvalue_arrays do begin @<Null out the mvalue@>; end; nkm:=-1; -nkcm:=-1; @ @<Read font mvalue list@>= begin @@ -4718,28 +4671,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an mvalue@>= + +@ @<Read an mvalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>mvalue_code then - flush_error('This property name doesn''t belong in an MVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>mvalue_code then + flush_error('This property name doesn''t belong in an FONTMVALUE list') else begin m_number:=get_integer; - if m_number>mvalue_entries then - flush_error('This MVALUE index is too big for my present table size') + if m_number>mvalue_entries then + flush_error('This MVALUE index is too big for my present table size') else if m_number<0 then flush_error('This MVALUE index is negative') else begin while npm[m_array]<m_number do begin incr(npm[m_array]); @<Null out the mvalue@>; - end; + end; @<Read all of an mvalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the mvalue@>= begin @@ -4760,11 +4713,13 @@ end @ @<Read a single mvalue value@>= begin get_name; -case cur_code of - mvalue_val_code: - mvalues[m_array,m_number].fn_val:=get_fix; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>mvalue_val_code then + flush_error('This property name doesn''t belong in a MVALUE list') +else begin + mvalues[m_array,m_number].fn_val:=get_fix; + finish_the_property; end; -finish_the_property; end @ @<Header information for mvalues@>= @@ -4808,7 +4763,6 @@ end; @!fvalues:array[fvalue_array_type,fvalue_entry_type] of fvalue_node; @!npf:array[fvalue_array_type] of integer; @!nkf:integer; -@!nkcf:integer; @!nwf:integer; @!f_array:integer; @!f_number:integer; @@ -4819,7 +4773,6 @@ for f_array := 0 to fvalue_arrays do begin @<Null out the fvalue@>; end; nkf:=-1; -nkcf:=-1; @ @<Read font fvalue list@>= begin @@ -4841,28 +4794,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an fvalue@>= + +@ @<Read an fvalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>fvalue_code then - flush_error('This property name doesn''t belong in an FVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>fvalue_code then + flush_error('This property name doesn''t belong in an FONTFVALUE list') else begin f_number:=get_integer; - if f_number>fvalue_entries then - flush_error('This FVALUE index is too big for my present table size') + if f_number>fvalue_entries then + flush_error('This FVALUE index is too big for my present table size') else if f_number<0 then flush_error('This FVALUE index is negative') else begin while npf[f_array]<f_number do begin incr(npf[f_array]); @<Null out the fvalue@>; - end; + end; @<Read all of an fvalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the fvalue@>= begin @@ -4883,11 +4836,13 @@ end @ @<Read a single fvalue value@>= begin get_name; -case cur_code of - fvalue_val_code: - fvalues[f_array,f_number].fn_val:=get_fix; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>fvalue_val_code then + flush_error('This property name doesn''t belong in a FVALUE list') +else begin + fvalues[f_array,f_number].fn_val:=get_fix; + finish_the_property; end; -finish_the_property; end @ @<Header information for fvalues@>= @@ -4932,7 +4887,6 @@ end; @!npi:array[ivalue_array_type] of integer; @!font_i_array:boolean; @!nki:integer; -@!nkci:integer; @!nwi:integer; @!i_array:integer; @!i_number:integer; @@ -4943,7 +4897,6 @@ for i_array := 0 to ivalue_arrays do begin @<Null out the ivalue@>; end; nki:=-1; -nkci:=-1; @ @<Read font ivalue list@>= begin @@ -4965,28 +4918,28 @@ else begin finish_inner_property_list; end; end - -@ @<Read an ivalue@>= + +@ @<Read an ivalue@>= begin -get_name; -if cur_code=comment_code then skip_to_end_of_item -else if cur_code<>ivalue_code then - flush_error('This property name doesn''t belong in an IVALUE list') +get_name; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>ivalue_code then + flush_error('This property name doesn''t belong in an FONTIVALUE list') else begin i_number:=get_integer; - if i_number>ivalue_entries then - flush_error('This IVALUE index is too big for my present table size') + if i_number>ivalue_entries then + flush_error('This IVALUE index is too big for my present table size') else if i_number<0 then flush_error('This IVALUE index is negative') else begin while npi[i_array]<i_number do begin incr(npi[i_array]); @<Null out the ivalue@>; - end; + end; @<Read all of an ivalue's values@>; - finish_the_property; - end; - end; -end + finish_the_property; + end; + end; +end @ @<Null out the ivalue@>= begin @@ -5007,11 +4960,13 @@ end @ @<Read a single ivalue value@>= begin get_name; -case cur_code of - ivalue_val_code: - ivalues[i_array,i_number].in_val:=get_integer; +if cur_code=comment_code then skip_to_end_of_item +else if cur_code<>ivalue_val_code then + flush_error('This property name doesn''t belong in a IVALUE list') +else begin + ivalues[i_array,i_number].in_val:=get_integer; + finish_the_property; end; -finish_the_property; end @ @<Header information for ivalues@>= @@ -5028,7 +4983,7 @@ end begin for i_array:= 0 to nki-1 do for i_number:=0 to npi[i_array]-1 do begin - out_integer(ivalues[i_array,i_number].in_val); + out_int(ivalues[i_array,i_number].in_val); end; end diff --git a/Build/source/texk/web2c/omegaware/specialhex.test b/Build/source/texk/web2c/omegaware/specialhex.test index 44cc82fbe2d..98af481f0db 100755 --- a/Build/source/texk/web2c/omegaware/specialhex.test +++ b/Build/source/texk/web2c/omegaware/specialhex.test @@ -3,25 +3,27 @@ # Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> # You may freely use, modify and/or distribute this file. -test -d tests || mkdir -p tests +tests=omegaware/tests + +test -d $tests || mkdir -p $tests TEXMFCNF=$srcdir/../kpathsea \ - OFMFONTS=./tests \ - ./ovp2ovf -verbose $srcdir/tests/specialhex tests/specialhex tests/specialhex || exit 1 + OFMFONTS=./$tests \ + ./ovp2ovf -verbose $srcdir/$tests/specialhex $tests/specialhex $tests/specialhex || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./ofm2opl -verbose tests/specialhex tests/specialhex || exit 1 + ./ofm2opl -verbose $tests/specialhex $tests/specialhex || exit 1 -./opl2ofm -verbose tests/specialhex tests/xspecialhex || exit 1 +./opl2ofm -verbose $tests/specialhex $tests/xspecialhex || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - ./ofm2opl -verbose tests/xspecialhex tests/xspecialhex || exit 1 + ./ofm2opl -verbose $tests/xspecialhex $tests/xspecialhex || exit 1 -diff tests/specialhex.opl tests/xspecialhex.opl || exit 1 +diff $tests/specialhex.opl $tests/xspecialhex.opl || exit 1 TEXMFCNF=$srcdir/../kpathsea \ - OFMFONTS=.:./tests \ - ./ovf2ovp -verbose tests/specialhex tests/specialhex tests/xspecialhex || exit 1 + OFMFONTS=.:./$tests \ + ./ovf2ovp -verbose $tests/specialhex $tests/specialhex $tests/xspecialhex || exit 1 -diff $srcdir/tests/specialhex.ovp tests/xspecialhex.ovp || exit 1 +diff $srcdir/$tests/specialhex.ovp $tests/xspecialhex.ovp || exit 1 diff --git a/Build/source/texk/web2c/omegaware/tests/Cherokee.pl b/Build/source/texk/web2c/omegaware/tests/Cherokee.pl new file mode 100644 index 00000000000..30394d07004 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/Cherokee.pl @@ -0,0 +1,420 @@ +(FAMILY TEX-CHEROKEE8R) +(FACE F MRR) +(CODINGSCHEME TEXBASE1ENCODING) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM O 35372474052) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.5) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.8) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER O 36 + (CHARWD R 0.728) + (CHARHT R 0.7865) + ) +(CHARACTER O 37 + (CHARWD R 0.12) + (CHARHT R 0.793) + ) +(CHARACTER O 40 + (CHARWD R 0.5) + ) +(CHARACTER O 41 + (CHARWD R 0.665) + (CHARHT R 0.7995) + ) +(CHARACTER O 42 + (CHARWD R 0.285) + (CHARHT R 0.7955) + ) +(CHARACTER O 43 + (CHARWD R 0.672) + (CHARHT R 0.7995) + ) +(CHARACTER O 44 + (CHARWD R 0.477) + (CHARHT R 0.7995) + ) +(CHARACTER O 45 + (CHARWD R 1.044) + (CHARHT R 0.7975) + ) +(CHARACTER O 46 + (CHARWD R 1.132) + (CHARHT R 0.8065) + (CHARDP R 0.002) + ) +(CHARACTER O 50 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + ) +(CHARACTER O 51 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + ) +(CHARACTER O 52 + (CHARWD R 0.774) + (CHARHT R 0.7975) + ) +(CHARACTER O 53 + (CHARWD R 1.0) + (CHARHT R 0.7995) + ) +(CHARACTER O 54 + (CHARWD R 0.25) + (CHARHT R 0.098) + (CHARDP R 0.167) + ) +(CHARACTER O 55 + (CHARWD R 0.546) + (CHARHT R 0.7995) + ) +(CHARACTER O 56 + (CHARWD R 0.25) + (CHARHT R 0.095) + (CHARDP R 0.014) + ) +(CHARACTER O 57 + (CHARWD R 0.795) + (CHARHT R 0.7955) + ) +(CHARACTER C 0 + (CHARWD R 0.904) + (CHARHT R 0.7995) + ) +(CHARACTER C 1 + (CHARWD R 1.98) + (CHARHT R 0.575) + (CHARDP R 0.014) + ) +(CHARACTER C 2 + (CHARWD R 1.724) + (CHARHT R 0.601) + ) +(CHARACTER C 3 + (CHARWD R 1.247) + (CHARHT R 0.598) + ) +(CHARACTER C 4 + (CHARWD R 1.084) + (CHARHT R 0.7955) + ) +(CHARACTER C 5 + (CHARWD R 0.936) + (CHARHT R 0.7995) + ) +(CHARACTER C 6 + (CHARWD R 0.764) + (CHARHT R 0.7975) + ) +(CHARACTER C 7 + (CHARWD R 0.728) + (CHARHT R 0.8035) + (CHARDP R 0.004) + ) +(CHARACTER C 8 + (CHARWD R 0.84) + (CHARHT R 0.7995) + ) +(CHARACTER C 9 + (CHARWD R 0.934) + (CHARHT R 0.7995) + (CHARDP R 0.003) + ) +(CHARACTER O 72 + (CHARWD R 0.816) + (CHARHT R 0.7995) + ) +(CHARACTER O 73 + (CHARWD R 0.988) + (CHARHT R 0.7995) + ) +(CHARACTER O 74 + (CHARWD R 0.972) + (CHARHT R 0.7995) + ) +(CHARACTER O 75 + (CHARWD R 0.924) + (CHARHT R 0.8015) + ) +(CHARACTER O 76 + (CHARWD R 0.675) + (CHARHT R 0.7995) + ) +(CHARACTER O 77 + (CHARWD R 1.297) + (CHARHT R 0.8065) + ) +(CHARACTER O 100 + (CHARWD R 0.891) + (CHARHT R 0.8015) + ) +(CHARACTER C A + (CHARWD R 0.753) + (CHARHT R 0.7995) + ) +(CHARACTER C B + (CHARWD R 0.567) + (CHARHT R 0.7995) + (CHARDP R 0.135) + ) +(CHARACTER C C + (CHARWD R 0.666) + (CHARHT R 0.7995) + ) +(CHARACTER C D + (CHARWD R 0.603) + (CHARHT R 0.7995) + ) +(CHARACTER C E + (CHARWD R 0.723) + (CHARHT R 0.8035) + ) +(CHARACTER C F + (CHARWD R 0.759) + (CHARHT R 0.8035) + ) +(CHARACTER C G + (CHARWD R 0.762) + (CHARHT R 0.7995) + ) +(CHARACTER C H + (CHARWD R 0.882) + (CHARHT R 0.8035) + ) +(CHARACTER C I + (CHARWD R 0.831) + (CHARHT R 0.7995) + ) +(CHARACTER C J + (CHARWD R 0.576) + (CHARHT R 0.7995) + ) +(CHARACTER C K + (CHARWD R 0.657) + (CHARHT R 0.7995) + ) +(CHARACTER C L + (CHARWD R 0.534) + (CHARHT R 0.8015) + ) +(CHARACTER C M + (CHARWD R 0.879) + (CHARHT R 0.7995) + ) +(CHARACTER C N + (CHARWD R 0.747) + (CHARHT R 0.7995) + ) +(CHARACTER C O + (CHARWD R 0.948) + (CHARHT R 0.7995) + ) +(CHARACTER C P + (CHARWD R 0.954) + (CHARHT R 0.788) + ) +(CHARACTER C Q + (CHARWD R 0.732) + (CHARHT R 0.8015) + ) +(CHARACTER C R + (CHARWD R 0.72) + (CHARHT R 0.7995) + ) +(CHARACTER C S + (CHARWD R 0.558) + (CHARHT R 0.7995) + ) +(CHARACTER C T + (CHARWD R 0.654) + (CHARHT R 0.7955) + (CHARDP R 0.005) + ) +(CHARACTER C U + (CHARWD R 0.705) + (CHARHT R 0.7975) + ) +(CHARACTER C V + (CHARWD R 0.729) + (CHARHT R 0.7995) + ) +(CHARACTER C W + (CHARWD R 0.852) + (CHARHT R 0.7955) + (CHARDP R 0.004) + ) +(CHARACTER C X + (CHARWD R 0.633) + (CHARHT R 0.8015) + ) +(CHARACTER C Y + (CHARWD R 0.759) + (CHARHT R 0.7955) + ) +(CHARACTER C Z + (CHARWD R 0.66) + (CHARHT R 0.7995) + ) +(CHARACTER O 133 + (CHARWD R 0.576) + (CHARHT R 0.7975) + ) +(CHARACTER O 134 + (CHARWD R 0.69) + (CHARHT R 0.7975) + ) +(CHARACTER O 135 + (CHARWD R 0.663) + (CHARHT R 0.7995) + ) +(CHARACTER O 136 + (CHARWD R 0.647) + (CHARHT R 0.7975) + ) +(CHARACTER O 137 + (CHARWD R 0.552) + (CHARHT R 0.7995) + (CHARDP R 0.002) + ) +(CHARACTER C a + (CHARWD R 0.756) + (CHARHT R 0.7995) + ) +(CHARACTER C b + (CHARWD R 0.639) + (CHARHT R 0.7995) + ) +(CHARACTER C c + (CHARWD R 0.594) + (CHARHT R 0.8015) + (CHARDP R 0.006) + ) +(CHARACTER C d + (CHARWD R 0.672) + (CHARHT R 0.7975) + ) +(CHARACTER C e + (CHARWD R 0.81) + (CHARHT R 0.7975) + (CHARDP R 0.005) + ) +(CHARACTER C f + (CHARWD R 0.834) + (CHARHT R 0.7995) + (CHARDP R 0.001) + ) +(CHARACTER C g + (CHARWD R 0.777) + (CHARHT R 0.7995) + ) +(CHARACTER C h + (CHARWD R 0.702) + (CHARHT R 0.7995) + (CHARDP R 0.002) + ) +(CHARACTER C i + (CHARWD R 0.579) + (CHARHT R 0.7995) + ) +(CHARACTER C j + (CHARWD R 0.612) + (CHARHT R 0.7995) + (CHARDP R 0.007) + ) +(CHARACTER C k + (CHARWD R 0.708) + (CHARHT R 0.7975) + ) +(CHARACTER C l + (CHARWD R 0.651) + (CHARHT R 0.7995) + ) +(CHARACTER C m + (CHARWD R 0.963) + (CHARHT R 0.7995) + ) +(CHARACTER C n + (CHARWD R 0.747) + (CHARHT R 0.7955) + ) +(CHARACTER C o + (CHARWD R 0.735) + (CHARHT R 0.7995) + ) +(CHARACTER C p + (CHARWD R 0.978) + (CHARHT R 0.7995) + ) +(CHARACTER C q + (CHARWD R 0.714) + (CHARHT R 0.788) + ) +(CHARACTER C r + (CHARWD R 0.918) + (CHARHT R 0.7995) + ) +(CHARACTER C s + (CHARWD R 0.957) + (CHARHT R 0.7865) + (CHARDP R 0.003) + ) +(CHARACTER C t + (CHARWD R 0.969) + (CHARHT R 0.8065) + ) +(CHARACTER C u + (CHARWD R 0.792) + (CHARHT R 0.7995) + ) +(CHARACTER C v + (CHARWD R 0.444) + (CHARHT R 0.7995) + ) +(CHARACTER C w + (CHARWD R 0.966) + (CHARHT R 0.7975) + ) +(CHARACTER C x + (CHARWD R 0.729) + (CHARHT R 0.7995) + ) +(CHARACTER C y + (CHARWD R 0.897) + (CHARHT R 0.8015) + ) +(CHARACTER C z + (CHARWD R 0.726) + (CHARHT R 0.7995) + ) +(CHARACTER O 173 + (CHARWD R 0.858) + (CHARHT R 0.8015) + ) +(CHARACTER O 174 + (CHARWD R 0.609) + (CHARHT R 0.7995) + (CHARDP R 0.004) + ) +(CHARACTER O 175 + (CHARWD R 0.711) + (CHARHT R 0.7995) + (CHARDP R 0.001) + ) +(CHARACTER O 176 + (CHARWD R 1.032) + (CHARHT R 0.8015) + ) +(CHARACTER O 255 + (CHARWD R 0.546) + (CHARHT R 0.7995) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/OCherokee.ovp b/Build/source/texk/web2c/omegaware/tests/OCherokee.ovp new file mode 100644 index 00000000000..0b7986434ea --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/OCherokee.ovp @@ -0,0 +1,790 @@ +(VTITLE ) +(OFMLEVEL H 0) +(FONTDIR TL) +(FAMILY CHEROKEE) +(FACE F MRR) +(CODINGSCHEME SHIFTED CHEROKEE TEX) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H 5EDB811F) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.5) + (STRETCH R 0.3) + (SHRINK R 0.1) + (XHEIGHT R 0.8) + (QUAD R 1.0) + ) +(MAPFONT D 0 + (FONTNAME Cherokee) + (FONTCHECKSUM H EBEA782A) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(LIGTABLE + (LABEL H 13D9) + (KRN H 13AA R -0.23) + (KRN H 13AF R -0.2) + (LABEL H 13E4) + (KRN H 13AA R -0.2) + (KRN H 13AF R -0.21) + (LABEL H 13A2) + (KRN H 13AA R -0.1) + (KRN H 13AF R -0.1) + (KRN H 13A5 R -0.1) + (STOP) + ) +(CHARACTER H 22 + (CHARWD R 0.554) + (CHARHT R 0.7955) + (MAP + (SELECTFONT D 0) + (SETCHAR H 22) + ) + ) +(CHARACTER H 28 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + (MAP + (SELECTFONT D 0) + (SETCHAR H 28) + ) + ) +(CHARACTER H 29 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + (MAP + (SELECTFONT D 0) + (SETCHAR H 29) + ) + ) +(CHARACTER H 2C + (CHARWD R 0.25) + (CHARHT R 0.098) + (CHARDP R 0.167) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2C) + ) + ) +(CHARACTER H 2E + (CHARWD R 0.25) + (CHARHT R 0.095) + (CHARDP R 0.014) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2E) + ) + ) +(CHARACTER H 13A0 + (CHARWD R 0.756) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 61) + ) + ) +(CHARACTER H 13A1 + (CHARWD R 0.934) + (CHARHT R 0.7995) + (CHARDP R 0.003) + (MAP + (SELECTFONT D 0) + (SETCHAR H 39) + ) + ) +(CHARACTER H 13A2 + (CHARWD R 0.579) + (CHARHT R 0.7995) + (COMMENT + (KRN H 13AA R -0.1) + (KRN H 13AF R -0.1) + (KRN H 13A5 R -0.1) + ) + (MAP + (SELECTFONT D 0) + (SETCHAR H 69) + ) + ) +(CHARACTER H 13A3 + (CHARWD R 0.735) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6F) + ) + ) +(CHARACTER H 13A4 + (CHARWD R 0.792) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 75) + ) + ) +(CHARACTER H 13A5 + (CHARWD R 0.966) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 76) + ) + ) +(CHARACTER H 13A6 + (CHARWD R 0.777) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 67) + ) + ) +(CHARACTER H 13A7 + (CHARWD R 0.657) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4B) + ) + ) +(CHARACTER H 13A8 + (CHARWD R 0.639) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 62) + ) + ) +(CHARACTER H 13A9 + (CHARWD R 0.834) + (CHARHT R 0.7995) + (CHARDP R 0.001) + (MAP + (SELECTFONT D 0) + (SETCHAR H 66) + ) + ) +(CHARACTER H 13AA + (CHARWD R 0.714) + (CHARHT R 0.788) + (MAP + (SELECTFONT D 0) + (SETCHAR H 71) + ) + ) +(CHARACTER H 13AB + (CHARWD R 0.576) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4A) + ) + ) +(CHARACTER H 13AC + (CHARWD R 0.726) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7A) + ) + ) +(CHARACTER H 13AD + (CHARWD R 0.705) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 55) + ) + ) +(CHARACTER H 13AE + (CHARWD R 0.534) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4C) + ) + ) +(CHARACTER H 13AF + (CHARWD R 0.702) + (CHARHT R 0.7995) + (CHARDP R 0.002) + (MAP + (SELECTFONT D 0) + (SETCHAR H 68) + ) + ) +(CHARACTER H 13B0 + (CHARWD R 0.477) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 24) + ) + ) +(CHARACTER H 13B1 + (CHARWD R 0.665) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 21) + ) + ) +(CHARACTER H 13B2 + (CHARWD R 0.882) + (CHARHT R 0.8035) + (MAP + (SELECTFONT D 0) + (SETCHAR H 48) + ) + ) +(CHARACTER H 13B3 + (CHARWD R 0.966) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 77) + ) + ) +(CHARACTER H 13B4 + (CHARWD R 0.675) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3E) + ) + ) +(CHARACTER H 13B5 + (CHARWD R 0.651) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6C) + ) + ) +(CHARACTER H 13B6 + (CHARWD R 0.663) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5D) + ) + ) +(CHARACTER H 13B7 + (CHARWD R 0.879) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4D) + ) + ) +(CHARACTER H 13B8 + (CHARWD R 0.708) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6B) + ) + ) +(CHARACTER H 13B9 + (CHARWD R 1.044) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 25) + ) + ) +(CHARACTER H 13BA + (CHARWD R 0.774) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2A) + ) + ) +(CHARACTER H 13BB + (CHARWD R 0.747) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4E) + ) + ) +(CHARACTER H 13BC + (CHARWD R 0.552) + (CHARHT R 0.7995) + (CHARDP R 0.002) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5F) + ) + ) +(CHARACTER H 13BD + (CHARWD R 1.0) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2B) + ) + ) +(CHARACTER H 13BE + (CHARWD R 0.747) + (CHARHT R 0.7955) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6E) + ) + ) +(CHARACTER H 13BF + (CHARWD R 0.546) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2D) + ) + ) +(CHARACTER H 13C1 + (CHARWD R 0.978) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 70) + ) + ) +(CHARACTER H 13C2 + (CHARWD R 0.795) + (CHARHT R 0.7955) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F) + ) + ) +(CHARACTER H 13C3 + (CHARWD R 0.66) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5A) + ) + ) +(CHARACTER H 13C4 + (CHARWD R 0.904) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 30) + ) + ) +(CHARACTER H 13C5 + (CHARWD R 0.963) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6D) + ) + ) +(CHARACTER H 13C6 + (CHARWD R 0.732) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 51) + ) + ) +(CHARACTER H 13C7 + (CHARWD R 0.891) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 40) + ) + ) +(CHARACTER H 13C8 + (CHARWD R 0.759) + (CHARHT R 0.8035) + (MAP + (SELECTFONT D 0) + (SETCHAR H 46) + ) + ) +(CHARACTER H 13C9 + (CHARWD R 1.297) + (CHARHT R 0.8065) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3F) + ) + ) +(CHARACTER H 13CA + (CHARWD R 1.032) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7E) + ) + ) +(CHARACTER H 13CB + (CHARWD R 0.728) + (CHARHT R 0.8035) + (CHARDP R 0.004) + (MAP + (SELECTFONT D 0) + (SETCHAR H 37) + ) + ) +(CHARACTER H 13CC + (CHARWD R 0.753) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 41) + ) + ) +(CHARACTER H 13CD + (CHARWD R 0.957) + (CHARHT R 0.7865) + (CHARDP R 0.003) + (MAP + (SELECTFONT D 0) + (SETCHAR H 73) + ) + ) +(CHARACTER H 13CE + (CHARWD R 0.558) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 53) + ) + ) +(CHARACTER H 13CF + (CHARWD R 0.72) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 52) + ) + ) +(CHARACTER H 13D0 + (CHARWD R 0.603) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 44) + ) + ) +(CHARACTER H 13D1 + (CHARWD R 0.858) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7B) + ) + ) +(CHARACTER H 13D2 + (CHARWD R 0.81) + (CHARHT R 0.7975) + (CHARDP R 0.005) + (MAP + (SELECTFONT D 0) + (SETCHAR H 65) + ) + ) +(CHARACTER H 13D3 + (CHARWD R 0.594) + (CHARHT R 0.8015) + (CHARDP R 0.006) + (MAP + (SELECTFONT D 0) + (SETCHAR H 63) + ) + ) +(CHARACTER H 13D4 + (CHARWD R 0.969) + (CHARHT R 0.8065) + (MAP + (SELECTFONT D 0) + (SETCHAR H 74) + ) + ) +(CHARACTER H 13D5 + (CHARWD R 0.576) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5B) + ) + ) +(CHARACTER H 13D6 + (CHARWD R 0.84) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 38) + ) + ) +(CHARACTER H 13D7 + (CHARWD R 0.672) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 64) + ) + ) +(CHARACTER H 13D8 + (CHARWD R 0.654) + (CHARHT R 0.7955) + (CHARDP R 0.005) + (MAP + (SELECTFONT D 0) + (SETCHAR H 54) + ) + ) +(CHARACTER H 13D9 + (CHARWD R 0.984) + (CHARHT R 0.7955) + (COMMENT + (KRN H 13AA R -0.23) + (KRN H 13AF R -0.2) + (KRN H 13AA R -0.2) + (KRN H 13AF R -0.21) + (KRN H 13AA R -0.1) + (KRN H 13AF R -0.1) + (KRN H 13A5 R -0.1) + ) + (MAP + (SELECTFONT D 0) + (SETCHAR H 34) + ) + ) +(CHARACTER H 13DA + (CHARWD R 0.612) + (CHARHT R 0.7995) + (CHARDP R 0.007) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6A) + ) + ) +(CHARACTER H 13DB + (CHARWD R 0.918) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 72) + ) + ) +(CHARACTER H 13DC + (CHARWD R 0.764) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 36) + ) + ) +(CHARACTER H 13DD + (CHARWD R 0.647) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5E) + ) + ) +(CHARACTER H 13DE + (CHARWD R 0.729) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 56) + ) + ) +(CHARACTER H 13DF + (CHARWD R 0.666) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 43) + ) + ) +(CHARACTER H 13E0 + (CHARWD R 0.816) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3A) + ) + ) +(CHARACTER H 13E1 + (CHARWD R 1.132) + (CHARHT R 0.8065) + (CHARDP R 0.002) + (MAP + (SELECTFONT D 0) + (SETCHAR H 26) + ) + ) +(CHARACTER H 13E2 + (CHARWD R 0.972) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3C) + ) + ) +(CHARACTER H 13E3 + (CHARWD R 0.723) + (CHARHT R 0.8035) + (MAP + (SELECTFONT D 0) + (SETCHAR H 45) + ) + ) +(CHARACTER H 13E4 + (CHARWD R 0.711) + (CHARHT R 0.7995) + (CHARDP R 0.001) + (COMMENT + (KRN H 13AA R -0.2) + (KRN H 13AF R -0.21) + (KRN H 13AA R -0.1) + (KRN H 13AF R -0.1) + (KRN H 13A5 R -0.1) + ) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7D) + ) + ) +(CHARACTER H 13E5 + (CHARWD R 0.762) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 47) + ) + ) +(CHARACTER H 13E6 + (CHARWD R 0.936) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 35) + ) + ) +(CHARACTER H 13E7 + (CHARWD R 0.672) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 23) + ) + ) +(CHARACTER H 13E8 + (CHARWD R 0.988) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3B) + ) + ) +(CHARACTER H 13E9 + (CHARWD R 0.69) + (CHARHT R 0.7975) + (MAP + (SELECTFONT D 0) + (SETCHAR H 5C) + ) + ) +(CHARACTER H 13EA + (CHARWD R 0.954) + (CHARHT R 0.788) + (MAP + (SELECTFONT D 0) + (SETCHAR H 50) + ) + ) +(CHARACTER H 13EB + (CHARWD R 0.852) + (CHARHT R 0.7955) + (CHARDP R 0.004) + (MAP + (SELECTFONT D 0) + (SETCHAR H 57) + ) + ) +(CHARACTER H 13EC + (CHARWD R 0.948) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 4F) + ) + ) +(CHARACTER H 13ED + (CHARWD R 0.633) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 58) + ) + ) +(CHARACTER H 13EE + (CHARWD R 0.609) + (CHARHT R 0.7995) + (CHARDP R 0.004) + (MAP + (SELECTFONT D 0) + (SETCHAR H 7C) + ) + ) +(CHARACTER H 13EF + (CHARWD R 0.897) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 79) + ) + ) +(CHARACTER H 13F0 + (CHARWD R 0.567) + (CHARHT R 0.7995) + (CHARDP R 0.135) + (MAP + (SELECTFONT D 0) + (SETCHAR H 42) + ) + ) +(CHARACTER H 13F1 + (CHARWD R 0.831) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 49) + ) + ) +(CHARACTER H 13F2 + (CHARWD R 0.759) + (CHARHT R 0.7955) + (MAP + (SELECTFONT D 0) + (SETCHAR H 59) + ) + ) +(CHARACTER H 13F3 + (CHARWD R 0.924) + (CHARHT R 0.8015) + (MAP + (SELECTFONT D 0) + (SETCHAR H 3D) + ) + ) +(CHARACTER H 13F4 + (CHARWD R 0.729) + (CHARHT R 0.7995) + (MAP + (SELECTFONT D 0) + (SETCHAR H 78) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/level1.opl b/Build/source/texk/web2c/omegaware/tests/level1.opl new file mode 100644 index 00000000000..6705727511f --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/level1.opl @@ -0,0 +1,24 @@ +(OFMLEVEL H 1) +(FONTDIR TL) +(FAMILY UNSPECIFIED) +(FACE F MRR) +(CODINGSCHEME UNICODE) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H 0) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.0) + (STRETCH R 0.0) + (SHRINK R 0.0) + (XHEIGHT R 1.0) + (QUAD R 1.0) + (EXTRASPACE R 0.0) + ) +(CHARREPEAT H 1 H FFFE + (CHARWD R 1.0) + (CHARHT R 0.9) + (CHARDP R 0.1) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd0.dtl b/Build/source/texk/web2c/omegaware/tests/ofontd0.dtl new file mode 100644 index 00000000000..dd415fb5e10 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd0.dtl @@ -0,0 +1,64 @@ +variety sequences-6 +pre 2 25400000 473628672 1000 35 'Manufactured for testing 2009.09.24' +bop 1 0 0 0 0 0 0 0 0 0 -1 +[ +fd1 0 1354163677 655360 655360 0 7 '' 'ofontr0' +fn0 +(ABCDEF) +] +d3 6662197 +[ +fd1 10 1135106544 655360 655360 0 7 '' 'ofontr1' +fn10 +\7F +s1 128 +fd1 20 14405335053 655360 655360 0 7 '' 'ofontr2' +fn20 +s2 383 +s2 384 +fd1 30 22120330423 655360 655360 0 7 '' 'ofontr3' +fn30 +s2 639 +s2 640 +] +d3 6662197 +[ +fd1 40 30131506673 655360 655360 0 7 '' 'ofontv4' +fn40 +(|}~) +s1 129 +s1 130 +s1 131 +] +d3 6662197 +[ +fd1 50 11232015645 655360 655360 0 7 '' 'ofontv5' +fn50 +s2 380 +s2 381 +s2 382 +s2 385 +s2 386 +s2 387 +] +d3 6662197 +[ +fd1 60 5563561512 655360 655360 0 7 '' 'ofontv6' +fn60 +s2 636 +s2 637 +s2 638 +s2 641 +s2 642 +s2 643 +] +eop +post 50 25400000 473628672 1000 47514830 29838620 1 1 +fd1 0 1354163677 655360 655360 0 7 '' 'ofontr0' +fd1 10 1135106544 655360 655360 0 7 '' 'ofontr1' +fd1 20 14405335053 655360 655360 0 7 '' 'ofontr2' +fd1 30 22120330423 655360 655360 0 7 '' 'ofontr3' +fd1 40 30131506673 655360 655360 0 7 '' 'ofontv4' +fd1 50 11232015645 655360 655360 0 7 '' 'ofontv5' +fd1 60 5563561512 655360 655360 0 7 '' 'ofontv6' +post_post 356 2 223 223 223 223 diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd0.dvi b/Build/source/texk/web2c/omegaware/tests/ofontd0.dvi Binary files differnew file mode 100644 index 00000000000..d27eb9c3cd8 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd0.dvi diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd0.typ b/Build/source/texk/web2c/omegaware/tests/ofontd0.typ new file mode 100644 index 00000000000..1c4cace75be --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd0.typ @@ -0,0 +1,91 @@ +This is ODVItype, Version 1.5 +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +'Manufactured for testing 2009.09.24' +Postamble starts at byte 356. +maxv=47514830, maxh=29838620, maxstackdepth=1, totalpages=1 +Font 0: ofontr0---loaded at size 655360 DVI units +Font 10: ofontr1---loaded at size 655360 DVI units +Font 20: ofontr2---loaded at size 655360 DVI units +Font 30: ofontr3---loaded at size 655360 DVI units +Font 40: ofontv4---loaded at size 655360 DVI units +Font 50: ofontv5---loaded at size 655360 DVI units +Font 60: ofontv6---loaded at size 655360 DVI units + +50: beginning of page 1 +95: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +96: fntdef1 0: ofontr0 +119: fntnum0 current font is ofontr0 +120: setchar65 h:=0+524288=524288, hh:=33 +121: setchar66 h:=524288+589823=1114111, hh:=70 +122: setchar67 h:=1114111+524288=1638399, hh:=103 +123: setchar68 h:=1638399+458751=2097150, hh:=132 +124: setchar69 h:=2097150+393216=2490366, hh:=157 +125: setchar70 h:=2490366+458751=2949117, hh:=186 +[ABCDEF] +126: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +127: down3 6662197 v:=0+6662197=6662197, vv:=422 +131: push +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +132: fntdef1 10: ofontr1 +155: fntnum10 current font is ofontr1 +156: setchar127 h:=0+524288=524288, hh:=33 +157: set1 128 h:=524288+589823=1114111, hh:=70 +159: fntdef1 20: ofontr2 +182: fntnum20 current font is ofontr2 +183: set2 383 h:=1114111+524288=1638399, hh:=103 +186: set2 384 h:=1638399+458751=2097150, hh:=132 +189: fntdef1 30: ofontr3 +212: fntnum30 current font is ofontr3 +213: set2 639 h:=2097150+393216=2490366, hh:=157 +216: set2 640 h:=2490366+458751=2949117, hh:=186 +219: pop +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +220: down3 6662197 v:=6662197+6662197=13324394, vv:=844 +224: push +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +225: fntdef1 40: ofontv4 +248: fntnum40 current font is ofontv4 +249: setchar124 h:=0+524288=524288, hh:=33 +250: setchar125 h:=524288+524288=1048576, hh:=66 +251: setchar126 h:=1048576+393216=1441792, hh:=91 +[|}~] +252: set1 129 h:=1441792+589823=2031615, hh:=128 +254: set1 130 h:=2031615+458751=2490366, hh:=157 +256: set1 131 h:=2490366+458751=2949117, hh:=186 +258: pop +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +259: down3 6662197 v:=13324394+6662197=19986591, vv:=1266 +263: push +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +264: fntdef1 50: ofontv5 +287: fntnum50 current font is ofontv5 +288: set2 380 h:=0+524288=524288, hh:=33 +291: set2 381 h:=524288+393216=917504, hh:=58 +294: set2 382 h:=917504+524288=1441792, hh:=91 +297: set2 385 h:=1441792+458751=1900543, hh:=120 +300: set2 386 h:=1900543+458751=2359294, hh:=149 +303: set2 387 h:=2359294+589823=2949117, hh:=186 +306: pop +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +307: down3 6662197 v:=19986591+6662197=26648788, vv:=1688 +311: push +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +312: fntdef1 60: ofontv6 +335: fntnum60 current font is ofontv6 +336: set2 636 h:=0+393216=393216, hh:=25 +339: set2 637 h:=393216+524288=917504, hh:=58 +342: set2 638 h:=917504+524288=1441792, hh:=91 +345: set2 641 h:=1441792+458751=1900543, hh:=120 +348: set2 642 h:=1900543+589823=2490366, hh:=157 +351: set2 643 h:=2490366+458751=2949117, hh:=186 +354: pop +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +355: eop diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd1.dvi b/Build/source/texk/web2c/omegaware/tests/ofontd1.dvi Binary files differnew file mode 100644 index 00000000000..b495012735f --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd1.dvi diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd1.typ b/Build/source/texk/web2c/omegaware/tests/ofontd1.typ new file mode 100644 index 00000000000..f876992025c --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd1.typ @@ -0,0 +1,91 @@ +This is ODVItype, Version 1.5 +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +'ODVIcopy 1.6 output from Manufactured for testing 2009.09.24' +Postamble starts at byte 381. +maxv=26648788, maxh=2949117, maxstackdepth=1, totalpages=1 +Font 6: ofontv6---loaded at size 655360 DVI units +Font 5: ofontv5---loaded at size 655360 DVI units +Font 4: ofontv4---loaded at size 655360 DVI units +Font 3: ofontr3---loaded at size 655360 DVI units +Font 2: ofontr2---loaded at size 655360 DVI units +Font 1: ofontr1---loaded at size 655360 DVI units +Font 0: ofontr0---loaded at size 655360 DVI units + +75: beginning of page 1 +120: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +121: fntdef1 0: ofontr0 +144: fntnum0 current font is ofontr0 +145: setchar65 h:=0+524288=524288, hh:=33 +146: setchar66 h:=524288+589823=1114111, hh:=70 +147: setchar67 h:=1114111+524288=1638399, hh:=103 +148: setchar68 h:=1638399+458751=2097150, hh:=132 +149: setchar69 h:=2097150+393216=2490366, hh:=157 +150: setchar70 h:=2490366+458751=2949117, hh:=186 +[ABCDEF] +151: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +152: down3 6662197 v:=0+6662197=6662197, vv:=422 +156: push +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +157: fntdef1 1: ofontr1 +180: fntnum1 current font is ofontr1 +181: setchar127 h:=0+524288=524288, hh:=33 +182: set1 128 h:=524288+589823=1114111, hh:=70 +184: fntdef1 2: ofontr2 +207: fntnum2 current font is ofontr2 +208: set2 383 h:=1114111+524288=1638399, hh:=103 +211: set2 384 h:=1638399+458751=2097150, hh:=132 +214: fntdef1 3: ofontr3 +237: fntnum3 current font is ofontr3 +238: set2 639 h:=2097150+393216=2490366, hh:=157 +241: set2 640 h:=2490366+458751=2949117, hh:=186 +244: pop +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +245: down3 6662197 v:=6662197+6662197=13324394, vv:=844 +249: push +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +250: fntdef1 4: ofontv4 +273: fntnum4 current font is ofontv4 +274: setchar124 h:=0+524288=524288, hh:=33 +275: setchar125 h:=524288+524288=1048576, hh:=66 +276: setchar126 h:=1048576+393216=1441792, hh:=91 +[|}~] +277: set1 129 h:=1441792+589823=2031615, hh:=128 +279: set1 130 h:=2031615+458751=2490366, hh:=157 +281: set1 131 h:=2490366+458751=2949117, hh:=186 +283: pop +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +284: down3 6662197 v:=13324394+6662197=19986591, vv:=1266 +288: push +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +289: fntdef1 5: ofontv5 +312: fntnum5 current font is ofontv5 +313: set2 380 h:=0+524288=524288, hh:=33 +316: set2 381 h:=524288+393216=917504, hh:=58 +319: set2 382 h:=917504+524288=1441792, hh:=91 +322: set2 385 h:=1441792+458751=1900543, hh:=120 +325: set2 386 h:=1900543+458751=2359294, hh:=149 +328: set2 387 h:=2359294+589823=2949117, hh:=186 +331: pop +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +332: down3 6662197 v:=19986591+6662197=26648788, vv:=1688 +336: push +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +337: fntdef1 6: ofontv6 +360: fntnum6 current font is ofontv6 +361: set2 636 h:=0+393216=393216, hh:=25 +364: set2 637 h:=393216+524288=917504, hh:=58 +367: set2 638 h:=917504+524288=1441792, hh:=91 +370: set2 641 h:=1441792+458751=1900543, hh:=120 +373: set2 642 h:=1900543+589823=2490366, hh:=157 +376: set2 643 h:=2490366+458751=2949117, hh:=186 +379: pop +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +380: eop diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd2.dvi b/Build/source/texk/web2c/omegaware/tests/ofontd2.dvi Binary files differnew file mode 100644 index 00000000000..2727f7404f0 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd2.dvi diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd2.typ b/Build/source/texk/web2c/omegaware/tests/ofontd2.typ new file mode 100644 index 00000000000..685bf68876c --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd2.typ @@ -0,0 +1,99 @@ +This is ODVItype, Version 1.5 +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +'ODVIcopy 1.6 output from Manufactured for testing 2009.09.24' +Postamble starts at byte 327. +maxv=26648788, maxh=2949117, maxstackdepth=1, totalpages=1 +Font 3: ofontr3---loaded at size 655360 DVI units +Font 2: ofontr2---loaded at size 655360 DVI units +Font 1: ofontr1---loaded at size 655360 DVI units +Font 0: ofontr0---loaded at size 655360 DVI units + +75: beginning of page 1 +120: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +121: fntdef1 0: ofontr0 +144: fntnum0 current font is ofontr0 +145: setchar65 h:=0+524288=524288, hh:=33 +146: setchar66 h:=524288+589823=1114111, hh:=70 +147: setchar67 h:=1114111+524288=1638399, hh:=103 +148: setchar68 h:=1638399+458751=2097150, hh:=132 +149: setchar69 h:=2097150+393216=2490366, hh:=157 +150: setchar70 h:=2490366+458751=2949117, hh:=186 +[ABCDEF] +151: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +152: down3 6662197 v:=0+6662197=6662197, vv:=422 +156: push +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +157: fntdef1 1: ofontr1 +180: fntnum1 current font is ofontr1 +181: setchar127 h:=0+524288=524288, hh:=33 +182: set1 128 h:=524288+589823=1114111, hh:=70 +184: fntdef1 2: ofontr2 +207: fntnum2 current font is ofontr2 +208: set2 383 h:=1114111+524288=1638399, hh:=103 +211: set2 384 h:=1638399+458751=2097150, hh:=132 +214: fntdef1 3: ofontr3 +237: fntnum3 current font is ofontr3 +238: set2 639 h:=2097150+393216=2490366, hh:=157 +241: set2 640 h:=2490366+458751=2949117, hh:=186 +244: pop +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +245: down3 6662197 v:=6662197+6662197=13324394, vv:=844 +249: push +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +250: fntnum1 current font is ofontr1 +251: setchar127 h:=0+524288=524288, hh:=33 +252: fntnum2 current font is ofontr2 +253: set2 383 h:=524288+524288=1048576, hh:=66 +256: fntnum3 current font is ofontr3 +257: set2 639 h:=1048576+393216=1441792, hh:=91 +260: fntnum1 current font is ofontr1 +261: set1 128 h:=1441792+589823=2031615, hh:=128 +263: fntnum2 current font is ofontr2 +264: set2 384 h:=2031615+458751=2490366, hh:=157 +267: fntnum3 current font is ofontr3 +268: set2 640 h:=2490366+458751=2949117, hh:=186 +271: pop +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +272: down3 6662197 v:=13324394+6662197=19986591, vv:=1266 +276: push +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +277: fntnum2 current font is ofontr2 +278: set2 383 h:=0+524288=524288, hh:=33 +281: fntnum3 current font is ofontr3 +282: set2 639 h:=524288+393216=917504, hh:=58 +285: fntnum1 current font is ofontr1 +286: setchar127 h:=917504+524288=1441792, hh:=91 +287: fntnum2 current font is ofontr2 +288: set2 384 h:=1441792+458751=1900543, hh:=120 +291: fntnum3 current font is ofontr3 +292: set2 640 h:=1900543+458751=2359294, hh:=149 +295: fntnum1 current font is ofontr1 +296: set1 128 h:=2359294+589823=2949117, hh:=186 +298: pop +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +299: down3 6662197 v:=19986591+6662197=26648788, vv:=1688 +303: push +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +304: fntnum3 current font is ofontr3 +305: set2 639 h:=0+393216=393216, hh:=25 +308: fntnum1 current font is ofontr1 +309: setchar127 h:=393216+524288=917504, hh:=58 +310: fntnum2 current font is ofontr2 +311: set2 383 h:=917504+524288=1441792, hh:=91 +314: fntnum3 current font is ofontr3 +315: set2 640 h:=1441792+458751=1900543, hh:=120 +318: fntnum1 current font is ofontr1 +319: set1 128 h:=1900543+589823=2490366, hh:=157 +321: fntnum2 current font is ofontr2 +322: set2 384 h:=2490366+458751=2949117, hh:=186 +325: pop +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +326: eop diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd3.dvi b/Build/source/texk/web2c/omegaware/tests/ofontd3.dvi Binary files differnew file mode 100644 index 00000000000..d9f4ebbfc65 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd3.dvi diff --git a/Build/source/texk/web2c/omegaware/tests/ofontd3.typ b/Build/source/texk/web2c/omegaware/tests/ofontd3.typ new file mode 100644 index 00000000000..41059dbca58 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontd3.typ @@ -0,0 +1,76 @@ +This is ODVItype, Version 1.5 +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +'ODVIcopy 1.6 output from Manufactured for testing 2009.09.24' +Postamble starts at byte 201. +maxv=26648788, maxh=2949117, maxstackdepth=1, totalpages=1 +Font 0: ofontr0---loaded at size 655360 DVI units + +75: beginning of page 1 +120: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +121: fntdef1 0: ofontr0 +144: fntnum0 current font is ofontr0 +145: setchar65 h:=0+524288=524288, hh:=33 +146: setchar66 h:=524288+589823=1114111, hh:=70 +147: setchar67 h:=1114111+524288=1638399, hh:=103 +148: setchar68 h:=1638399+458751=2097150, hh:=132 +149: setchar69 h:=2097150+393216=2490366, hh:=157 +150: setchar70 h:=2490366+458751=2949117, hh:=186 +[ABCDEF] +151: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +152: down3 6662197 v:=0+6662197=6662197, vv:=422 +156: push +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +157: setchar65 h:=0+524288=524288, hh:=33 +158: setchar66 h:=524288+589823=1114111, hh:=70 +159: setchar67 h:=1114111+524288=1638399, hh:=103 +160: setchar68 h:=1638399+458751=2097150, hh:=132 +161: setchar69 h:=2097150+393216=2490366, hh:=157 +162: setchar70 h:=2490366+458751=2949117, hh:=186 +[ABCDEF] +163: pop +level 0:(h=0,v=6662197,w=0,x=0,y=0,z=0,hh=0,vv=422) +164: down3 6662197 v:=6662197+6662197=13324394, vv:=844 +168: push +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +169: setchar65 h:=0+524288=524288, hh:=33 +170: setchar67 h:=524288+524288=1048576, hh:=66 +171: setchar69 h:=1048576+393216=1441792, hh:=91 +172: setchar66 h:=1441792+589823=2031615, hh:=128 +173: setchar68 h:=2031615+458751=2490366, hh:=157 +174: setchar70 h:=2490366+458751=2949117, hh:=186 +[ACEBDF] +175: pop +level 0:(h=0,v=13324394,w=0,x=0,y=0,z=0,hh=0,vv=844) +176: down3 6662197 v:=13324394+6662197=19986591, vv:=1266 +180: push +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +181: setchar67 h:=0+524288=524288, hh:=33 +182: setchar69 h:=524288+393216=917504, hh:=58 +183: setchar65 h:=917504+524288=1441792, hh:=91 +184: setchar68 h:=1441792+458751=1900543, hh:=120 +185: setchar70 h:=1900543+458751=2359294, hh:=149 +186: setchar66 h:=2359294+589823=2949117, hh:=186 +[CEADFB] +187: pop +level 0:(h=0,v=19986591,w=0,x=0,y=0,z=0,hh=0,vv=1266) +188: down3 6662197 v:=19986591+6662197=26648788, vv:=1688 +192: push +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +193: setchar69 h:=0+393216=393216, hh:=25 +194: setchar65 h:=393216+524288=917504, hh:=58 +195: setchar67 h:=917504+524288=1441792, hh:=91 +196: setchar70 h:=1441792+458751=1900543, hh:=120 +197: setchar66 h:=1900543+589823=2490366, hh:=157 +198: setchar68 h:=2490366+458751=2949117, hh:=186 +[EACFBD] +199: pop +level 0:(h=0,v=26648788,w=0,x=0,y=0,z=0,hh=0,vv=1688) +200: eop diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr0.pl b/Build/source/texk/web2c/omegaware/tests/ofontr0.pl new file mode 100644 index 00000000000..0cf4c883ccb --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr0.pl @@ -0,0 +1,47 @@ +(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 BB0E7BF) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER H 41 + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 42 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 43 + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + ) +(CHARACTER H 44 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 45 + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 46 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr0.tfm b/Build/source/texk/web2c/omegaware/tests/ofontr0.tfm Binary files differnew file mode 100644 index 00000000000..b97fc990d2f --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr0.tfm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr1.pl b/Build/source/texk/web2c/omegaware/tests/ofontr1.pl new file mode 100644 index 00000000000..fb77c215a38 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr1.pl @@ -0,0 +1,27 @@ +(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 9748D64) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER H 7F + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 80 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr1.tfm b/Build/source/texk/web2c/omegaware/tests/ofontr1.tfm Binary files differnew file mode 100644 index 00000000000..f2ec7a5048e --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr1.tfm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr1.vf b/Build/source/texk/web2c/omegaware/tests/ofontr1.vf Binary files differnew file mode 100644 index 00000000000..ae1d5380233 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr1.vf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr1.vpl b/Build/source/texk/web2c/omegaware/tests/ofontr1.vpl new file mode 100644 index 00000000000..9e043344a21 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr1.vpl @@ -0,0 +1,40 @@ +(VTITLE Mapping ofontr1 to ofontr0) +(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 9748D64) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(MAPFONT D 0 + (FONTNAME ofontr0) + (FONTCHECKSUM H BB0E7BF) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 7F + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SETCHAR H 41) + ) + ) +(CHARACTER H 80 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SETCHAR H 42) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr2.ofm b/Build/source/texk/web2c/omegaware/tests/ofontr2.ofm Binary files differnew file mode 100644 index 00000000000..3173dce0866 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr2.ofm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr2.opl b/Build/source/texk/web2c/omegaware/tests/ofontr2.opl new file mode 100644 index 00000000000..1e64c09e5a4 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr2.opl @@ -0,0 +1,29 @@ +(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 6415BA2B) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER H 17F + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + ) +(CHARACTER H 180 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr2.ovf b/Build/source/texk/web2c/omegaware/tests/ofontr2.ovf Binary files differnew file mode 100644 index 00000000000..71e89e6dea2 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr2.ovf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr2.ovp b/Build/source/texk/web2c/omegaware/tests/ofontr2.ovp new file mode 100644 index 00000000000..46aa33dab95 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr2.ovp @@ -0,0 +1,42 @@ +(VTITLE Mapping ofontr2 to ofontr0) +(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 6415BA2B) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(MAPFONT D 0 + (FONTNAME ofontr0) + (FONTCHECKSUM H BB0E7BF) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 17F + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + (MAP + (SETCHAR H 43) + ) + ) +(CHARACTER H 180 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SETCHAR H 44) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr3.ofm b/Build/source/texk/web2c/omegaware/tests/ofontr3.ofm Binary files differnew file mode 100644 index 00000000000..afac8883721 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr3.ofm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr3.opl b/Build/source/texk/web2c/omegaware/tests/ofontr3.opl new file mode 100644 index 00000000000..8b443718418 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr3.opl @@ -0,0 +1,101 @@ +(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 9141B113) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(FONTIVALUE H 0 + (IVALUE H 0 + (IVALUEVAL H 3210) + ) + (IVALUE H 1 + (IVALUEVAL H FEDC) + ) + ) +(FONTFVALUE H 0 + (FVALUE H 0 + (FVALUEVAL R 0.1) + ) + (FVALUE H 1 + (FVALUEVAL R 0.2) + ) + ) +(FONTMVALUE H 0 + (MVALUE H 0 + (MVALUEVAL R 0.3) + ) + (MVALUE H 1 + (MVALUEVAL R 0.4) + ) + ) +(FONTRULE H 0 + (RULE H 0 + (RULEWD R 1.1) + (RULEHT R 2.1) + (RULEDP R 0.1) + ) + (RULE H 1 + (RULEWD R 1.2) + (RULEHT R 2.2) + (RULEDP R 0.2) + ) + ) +(FONTGLUE H 0 + (GLUE H 0 + (GLUETYPE H 0) + (GLUESTRETCHORDER H 0) + (GLUESHRINKORDER H 4) + (GLUEWD R 1.1) + (GLUESTRETCH R 2.1) + (GLUESHRINK R 0.1) + ) + (GLUE H 1 + (GLUETYPE H 2) + (GLUERULE H 3210) + (GLUESTRETCHORDER H 4) + (GLUESHRINKORDER H 0) + (GLUEWD R 1.2) + (GLUESTRETCH R 2.2) + (GLUESHRINK R 0.2) + ) + (GLUE H 2 + (GLUETYPE H 3) + (GLUECHAR H FEDC) + (GLUESTRETCHORDER H 1) + (GLUESHRINKORDER H 2) + (GLUEWD R 1.3) + (GLUESTRETCH R 2.3) + (GLUESHRINK R 0.3) + ) + ) +(FONTPENALTY H 0 + (PENALTY H 0 + (PENALTYVAL H 7654) + ) + (PENALTY H 1 + (PENALTYVAL H BA98) + ) + ) +(CHARACTER H 27F + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 280 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr3.ovf b/Build/source/texk/web2c/omegaware/tests/ofontr3.ovf Binary files differnew file mode 100644 index 00000000000..eb80b32d803 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr3.ovf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontr3.ovp b/Build/source/texk/web2c/omegaware/tests/ofontr3.ovp new file mode 100644 index 00000000000..191818f99f9 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontr3.ovp @@ -0,0 +1,114 @@ +(VTITLE Mapping ofontr3 to ofontr0) +(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 9141B113) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(FONTIVALUE H 0 + (IVALUE H 0 + (IVALUEVAL H 3210) + ) + (IVALUE H 1 + (IVALUEVAL H FEDC) + ) + ) +(FONTFVALUE H 0 + (FVALUE H 0 + (FVALUEVAL R 0.1) + ) + (FVALUE H 1 + (FVALUEVAL R 0.2) + ) + ) +(FONTMVALUE H 0 + (MVALUE H 0 + (MVALUEVAL R 0.3) + ) + (MVALUE H 1 + (MVALUEVAL R 0.4) + ) + ) +(FONTRULE H 0 + (RULE H 0 + (RULEWD R 1.1) + (RULEHT R 2.1) + (RULEDP R 0.1) + ) + (RULE H 1 + (RULEWD R 1.2) + (RULEHT R 2.2) + (RULEDP R 0.2) + ) + ) +(FONTGLUE H 0 + (GLUE H 0 + (GLUETYPE H 0) + (GLUESTRETCHORDER H 0) + (GLUESHRINKORDER H 4) + (GLUEWD R 1.1) + (GLUESTRETCH R 2.1) + (GLUESHRINK R 0.1) + ) + (GLUE H 1 + (GLUETYPE H 2) + (GLUERULE H 3210) + (GLUESTRETCHORDER H 4) + (GLUESHRINKORDER H 0) + (GLUEWD R 1.2) + (GLUESTRETCH R 2.2) + (GLUESHRINK R 0.2) + ) + (GLUE H 2 + (GLUETYPE H 3) + (GLUECHAR H FEDC) + (GLUESTRETCHORDER H 1) + (GLUESHRINKORDER H 2) + (GLUEWD R 1.3) + (GLUESTRETCH R 2.3) + (GLUESHRINK R 0.3) + ) + ) +(FONTPENALTY H 0 + (PENALTY H 0 + (PENALTYVAL H 7654) + ) + (PENALTY H 1 + (PENALTYVAL H BA98) + ) + ) +(MAPFONT D 0 + (FONTNAME ofontr0) + (FONTCHECKSUM H BB0E7BF) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 27F + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SETCHAR H 45) + ) + ) +(CHARACTER H 280 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + (MAP + (SETCHAR H 46) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv4.pl b/Build/source/texk/web2c/omegaware/tests/ofontv4.pl new file mode 100644 index 00000000000..c3f18f3e40d --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv4.pl @@ -0,0 +1,47 @@ +(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 C1668DBB) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER H 7C + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 7D + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + ) +(CHARACTER H 7E + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 81 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 82 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 83 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv4.tfm b/Build/source/texk/web2c/omegaware/tests/ofontv4.tfm Binary files differnew file mode 100644 index 00000000000..602d89a6b62 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv4.tfm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv4.vf b/Build/source/texk/web2c/omegaware/tests/ofontv4.vf Binary files differnew file mode 100644 index 00000000000..d5f5dfc1728 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv4.vf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv4.vpl b/Build/source/texk/web2c/omegaware/tests/ofontv4.vpl new file mode 100644 index 00000000000..c77d8be3d94 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv4.vpl @@ -0,0 +1,88 @@ +(VTITLE Mapping ofontv4 to ofontr1+ofontr2+ofontr3) +(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 C1668DBB) +(SEVENBITSAFEFLAG TRUE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(MAPFONT D 0 + (FONTNAME ofontr1) + (FONTCHECKSUM H 9748D64) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME ofontr2) + (FONTCHECKSUM H 6415BA2B) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME ofontr3) + (FONTCHECKSUM H 9141B113) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 7C + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SETCHAR H 7F) + ) + ) +(CHARACTER H 7D + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + (MAP + (SELECTFONT D 1) + (SETCHAR H 17F) + ) + ) +(CHARACTER H 7E + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SELECTFONT D 2) + (SETCHAR H 27F) + ) + ) +(CHARACTER H 81 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SETCHAR H 80) + ) + ) +(CHARACTER H 82 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SELECTFONT D 1) + (SETCHAR H 180) + ) + ) +(CHARACTER H 83 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + (MAP + (SELECTFONT D 2) + (SETCHAR H 280) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv5.ofm b/Build/source/texk/web2c/omegaware/tests/ofontv5.ofm Binary files differnew file mode 100644 index 00000000000..34bf1fb4f7a --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv5.ofm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv5.opl b/Build/source/texk/web2c/omegaware/tests/ofontv5.opl new file mode 100644 index 00000000000..625e1371cc2 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv5.opl @@ -0,0 +1,49 @@ +(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 4A681BA5) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(CHARACTER H 17C + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + ) +(CHARACTER H 17D + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 17E + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 181 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 182 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + ) +(CHARACTER H 183 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv5.ovf b/Build/source/texk/web2c/omegaware/tests/ofontv5.ovf Binary files differnew file mode 100644 index 00000000000..ced7ecc1ec3 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv5.ovf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv5.ovp b/Build/source/texk/web2c/omegaware/tests/ofontv5.ovp new file mode 100644 index 00000000000..a2e96f943c2 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv5.ovp @@ -0,0 +1,90 @@ +(VTITLE Mapping ofontv5 to ofontr2+ofontr3+ofontr1) +(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 4A681BA5) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(MAPFONT D 0 + (FONTNAME ofontr2) + (FONTCHECKSUM H 6415BA2B) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME ofontr3) + (FONTCHECKSUM H 9141B113) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME ofontr1) + (FONTCHECKSUM H 9748D64) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 17C + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + (MAP + (SETCHAR H 17F) + ) + ) +(CHARACTER H 17D + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SELECTFONT D 1) + (SETCHAR H 27F) + ) + ) +(CHARACTER H 17E + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SELECTFONT D 2) + (SETCHAR H 7F) + ) + ) +(CHARACTER H 181 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SETCHAR H 180) + ) + ) +(CHARACTER H 182 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + (MAP + (SELECTFONT D 1) + (SETCHAR H 280) + ) + ) +(CHARACTER H 183 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SELECTFONT D 2) + (SETCHAR H 80) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv6.ofm b/Build/source/texk/web2c/omegaware/tests/ofontv6.ofm Binary files differnew file mode 100644 index 00000000000..3ebb415ae30 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv6.ofm diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv6.opl b/Build/source/texk/web2c/omegaware/tests/ofontv6.opl new file mode 100644 index 00000000000..ea8112b1e4f --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv6.opl @@ -0,0 +1,121 @@ +(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 2DCEE34A) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(FONTIVALUE H 0 + (IVALUE H 0 + (IVALUEVAL H 3210) + ) + (IVALUE H 1 + (IVALUEVAL H FEDC) + ) + ) +(FONTFVALUE H 0 + (FVALUE H 0 + (FVALUEVAL R 0.1) + ) + (FVALUE H 1 + (FVALUEVAL R 0.2) + ) + ) +(FONTMVALUE H 0 + (MVALUE H 0 + (MVALUEVAL R 0.3) + ) + (MVALUE H 1 + (MVALUEVAL R 0.4) + ) + ) +(FONTRULE H 0 + (RULE H 0 + (RULEWD R 1.1) + (RULEHT R 2.1) + (RULEDP R 0.1) + ) + (RULE H 1 + (RULEWD R 1.2) + (RULEHT R 2.2) + (RULEDP R 0.2) + ) + ) +(FONTGLUE H 0 + (GLUE H 0 + (GLUETYPE H 0) + (GLUESTRETCHORDER H 0) + (GLUESHRINKORDER H 4) + (GLUEWD R 1.1) + (GLUESTRETCH R 2.1) + (GLUESHRINK R 0.1) + ) + (GLUE H 1 + (GLUETYPE H 2) + (GLUERULE H 3210) + (GLUESTRETCHORDER H 4) + (GLUESHRINKORDER H 0) + (GLUEWD R 1.2) + (GLUESTRETCH R 2.2) + (GLUESHRINK R 0.2) + ) + (GLUE H 2 + (GLUETYPE H 3) + (GLUECHAR H FEDC) + (GLUESTRETCHORDER H 1) + (GLUESHRINKORDER H 2) + (GLUEWD R 1.3) + (GLUESTRETCH R 2.3) + (GLUESHRINK R 0.3) + ) + ) +(FONTPENALTY H 0 + (PENALTY H 0 + (PENALTYVAL H 7654) + ) + (PENALTY H 1 + (PENALTYVAL H BA98) + ) + ) +(CHARACTER H 27C + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 27D + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + ) +(CHARACTER H 27E + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + ) +(CHARACTER H 281 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + ) +(CHARACTER H 282 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) +(CHARACTER H 283 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv6.ovf b/Build/source/texk/web2c/omegaware/tests/ofontv6.ovf Binary files differnew file mode 100644 index 00000000000..2044f5c2b73 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv6.ovf diff --git a/Build/source/texk/web2c/omegaware/tests/ofontv6.ovp b/Build/source/texk/web2c/omegaware/tests/ofontv6.ovp new file mode 100644 index 00000000000..e36f45b83e2 --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/ofontv6.ovp @@ -0,0 +1,162 @@ +(VTITLE Mapping ofontv6 to ofontr3+ofontr1+ofontr2) +(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 2DCEE34A) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.25) + (STRETCH R 0.2) + (SHRINK R 0.1) + (XHEIGHT R 0.45) + (QUAD R 1.0) + (EXTRASPACE R 0.111) + ) +(FONTIVALUE H 0 + (IVALUE H 0 + (IVALUEVAL H 3210) + ) + (IVALUE H 1 + (IVALUEVAL H FEDC) + ) + ) +(FONTFVALUE H 0 + (FVALUE H 0 + (FVALUEVAL R 0.1) + ) + (FVALUE H 1 + (FVALUEVAL R 0.2) + ) + ) +(FONTMVALUE H 0 + (MVALUE H 0 + (MVALUEVAL R 0.3) + ) + (MVALUE H 1 + (MVALUEVAL R 0.4) + ) + ) +(FONTRULE H 0 + (RULE H 0 + (RULEWD R 1.1) + (RULEHT R 2.1) + (RULEDP R 0.1) + ) + (RULE H 1 + (RULEWD R 1.2) + (RULEHT R 2.2) + (RULEDP R 0.2) + ) + ) +(FONTGLUE H 0 + (GLUE H 0 + (GLUETYPE H 0) + (GLUESTRETCHORDER H 0) + (GLUESHRINKORDER H 4) + (GLUEWD R 1.1) + (GLUESTRETCH R 2.1) + (GLUESHRINK R 0.1) + ) + (GLUE H 1 + (GLUETYPE H 2) + (GLUERULE H 3210) + (GLUESTRETCHORDER H 4) + (GLUESHRINKORDER H 0) + (GLUEWD R 1.2) + (GLUESTRETCH R 2.2) + (GLUESHRINK R 0.2) + ) + (GLUE H 2 + (GLUETYPE H 3) + (GLUECHAR H FEDC) + (GLUESTRETCHORDER H 1) + (GLUESHRINKORDER H 2) + (GLUEWD R 1.3) + (GLUESTRETCH R 2.3) + (GLUESHRINK R 0.3) + ) + ) +(FONTPENALTY H 0 + (PENALTY H 0 + (PENALTYVAL H 7654) + ) + (PENALTY H 1 + (PENALTYVAL H BA98) + ) + ) +(MAPFONT D 0 + (FONTNAME ofontr3) + (FONTCHECKSUM H 9141B113) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME ofontr1) + (FONTCHECKSUM H 9748D64) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME ofontr2) + (FONTCHECKSUM H 6415BA2B) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H 27C + (CHARWD R 0.6) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SETCHAR H 27F) + ) + ) +(CHARACTER H 27D + (CHARWD R 0.8) + (CHARHT R 1.1) + (CHARDP R 0.1) + (MAP + (SELECTFONT D 1) + (SETCHAR H 7F) + ) + ) +(CHARACTER H 27E + (CHARWD R 0.8) + (CHARHT R 1.2) + (CHARDP R 0.2) + (MAP + (SELECTFONT D 2) + (SETCHAR H 17F) + ) + ) +(CHARACTER H 281 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.1) + (MAP + (SETCHAR H 280) + ) + ) +(CHARACTER H 282 + (CHARWD R 0.9) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SELECTFONT D 1) + (SETCHAR H 80) + ) + ) +(CHARACTER H 283 + (CHARWD R 0.7) + (CHARHT R 0.9) + (CHARIC R 0.2) + (MAP + (SELECTFONT D 2) + (SETCHAR H 180) + ) + ) diff --git a/Build/source/texk/web2c/omegaware/tests/specialhex.ovp b/Build/source/texk/web2c/omegaware/tests/specialhex.ovp new file mode 100644 index 00000000000..03a3bcf299f --- /dev/null +++ b/Build/source/texk/web2c/omegaware/tests/specialhex.ovp @@ -0,0 +1,34 @@ +(VTITLE Test SPECIALHEX handling) +(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 22286392) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.5) + (STRETCH R 0.3) + (SHRINK R 0.1) + (XHEIGHT R 0.8) + (QUAD R 1.0) + ) +(CHARACTER H 22 + (CHARWD R 0.554) + (CHARHT R 0.7955) + (MAP + (SPECIAL a special string) + ) + ) +(CHARACTER H 28 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + (MAP + (SPECIALHEX 01234567 89ABCDEF) + ) + ) |