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/ofm2opl.web | |
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/ofm2opl.web')
-rw-r--r-- | Build/source/texk/web2c/omegaware/ofm2opl.web | 87 |
1 files changed, 45 insertions, 42 deletions
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]; |