diff options
Diffstat (limited to 'Build/source/texk/web2c/omegaware/ovf2ovp.ch')
-rw-r--r-- | Build/source/texk/web2c/omegaware/ovf2ovp.ch | 62 |
1 files changed, 15 insertions, 47 deletions
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'); |