diff options
author | Jonathan Kew <jfkthame@googlemail.com> | 2008-05-08 13:28:50 +0000 |
---|---|---|
committer | Jonathan Kew <jfkthame@googlemail.com> | 2008-05-08 13:28:50 +0000 |
commit | 151f5e5cae3fca2c5d0e491407c0fe3a30a9b51e (patch) | |
tree | f6e77ab0cdbd9bc43d3c47f8854b24b19016eac5 /Build/source/texk/web2c/xetexdir/xetex.ch | |
parent | 9a180498bb6fa5da4c6a89525815ea5939cf0842 (diff) |
update xetex to 0.998.2-dev, svn r.670
git-svn-id: svn://tug.org/texlive/trunk@7938 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/xetex.ch')
-rw-r--r-- | Build/source/texk/web2c/xetexdir/xetex.ch | 98 |
1 files changed, 96 insertions, 2 deletions
diff --git a/Build/source/texk/web2c/xetexdir/xetex.ch b/Build/source/texk/web2c/xetexdir/xetex.ch index 934c7123832..da084242e35 100644 --- a/Build/source/texk/web2c/xetexdir/xetex.ch +++ b/Build/source/texk/web2c/xetexdir/xetex.ch @@ -64,8 +64,8 @@ authorization from SIL International. @d eTeX_version_string=='-2.2' {current \eTeX\ version} @d XeTeX_version=0 -@d XeTeX_revision==".998.1" -@d XeTeX_version_string=='-0.998.1' {current \XeTeX\ version} +@d XeTeX_revision==".998" +@d XeTeX_version_string=='-0.998.2-dev' {current \XeTeX\ version} @z @x @@ -3418,11 +3418,20 @@ file_opened:=false; if not b_open_in(tfm_file) then abort; file_opened:=true @y +check_for_tfm_font_mapping; if b_open_in(tfm_file) then begin file_opened:=true @z @x +fmem_ptr:=fmem_ptr+lf; font_ptr:=f; g:=f; goto done +@y +fmem_ptr:=fmem_ptr+lf; font_ptr:=f; g:=f; +font_mapping[f]:=load_tfm_font_mapping; +goto done +@z + +@x @ When \TeX\ wants to typeset a character that doesn't exist, the character node is not created; thus the output routine can assume that characters exist when it sees them. The following procedure @@ -3553,6 +3562,13 @@ procedure dvi_font_def(@!f:internal_font_number); @z @x +var k:pool_pointer; {index into |str_pool|} +@y +var k:pool_pointer; {index into |str_pool|} +l:integer; {length of name without mapping option} +@z + +@x begin if f<=256+font_base then @y begin if is_native_font(f) then dvi_native_font_def(f) else @@ -3560,10 +3576,24 @@ begin if f<=256+font_base then @z @x +dvi_out(length(font_name[f])); @<Output the font name whose internal number is |f|@>; @y +if font_mapping[f]<>nil then begin + l:=0; + k:=str_start_macro(font_name[f]); + while (l=0) and (k<str_start_macro(font_name[f]+1)) do begin + if so(str_pool[k]) = ":" then l:=k-str_start_macro(font_name[f]); + incr(k); + end; + dvi_out(l); + for k:=str_start_macro(font_name[f]) to str_start_macro(font_name[f])+l-1 do + dvi_out(so(str_pool[k])); +end else begin +dvi_out(length(font_name[f])); @<Output the font name whose internal number is |f|@>; end; +end; @z @x @@ -3734,6 +3764,13 @@ while (q <> null) and (not is_char_node(q)) and (type(q) = disc_node) do @z @x + repeat f:=font(p); c:=character(p); +@y + repeat f:=font(p); c:=character(p); + if (p<>lig_trick) and (font_mapping[f]<>nil) then c:=apply_tfm_font_mapping(font_mapping[f],c); +@z + +@x @p procedure vlist_out; {output a |vlist_node| box} @y @p procedure vlist_out; {output a |vlist_node| box} @@ -3922,6 +3959,12 @@ label reswitch, common_ending, exit, restart; @z @x +p:=lig_trick; goto reswitch; +@y +p:=lig_trick; ligature_present:=true; goto reswitch; +@z + +@x @d vpack(#)==vpackage(#,max_dimen) {special case of unconstrained depth} @y @d vpack(#)==vpackage(#,max_dimen) {special case of unconstrained depth} @@ -4871,6 +4914,13 @@ label done,done1,done2,done3,done4,done5,done6,continue, restart; @z @x + ligature_node: begin f:=font(lig_char(v));@/ +@y + ligature_node: begin f:=font(lig_char(v));@/ + ligature_present:=true; +@z + +@x othercases confusion("disc1") @y whatsit_node: @@ -4884,6 +4934,13 @@ label done,done1,done2,done3,done4,done5,done6,continue, restart; @z @x + ligature_node: begin f:=font(lig_char(s)); +@y + ligature_node: begin f:=font(lig_char(s)); + ligature_present:=true; +@z + +@x othercases confusion("disc2") @y whatsit_node: @@ -4903,6 +4960,20 @@ label done,done1,done2,done3,done4,done5,done6,continue, restart; @z @x +ligature_node: begin f:=font(lig_char(cur_p)); +@y +ligature_node: begin f:=font(lig_char(cur_p)); + ligature_present:=true; +@z + +@x + ligature_node: begin f:=font(lig_char(s)); +@y + ligature_node: begin f:=font(lig_char(s)); + ligature_present:=true; +@z + +@x othercases confusion("disc3") @y whatsit_node: @@ -4916,6 +4987,13 @@ label done,done1,done2,done3,done4,done5,done6,continue, restart; @z @x + ligature_node: begin f:=font(lig_char(s)); +@y + ligature_node: begin f:=font(lig_char(s)); + ligature_present:=true; +@z + +@x othercases confusion("disc4") @y whatsit_node: @@ -8417,6 +8495,22 @@ end; @z @x +begin result:=c; {return |c| unless it does not exist in the font} +@y +begin if (not ligature_present) and (font_mapping[f]<>nil) then + c:=apply_tfm_font_mapping(font_mapping[f],c); +result:=c; {return |c| unless it does not exist in the font} +@z + +@x +begin if not mltex_enabled_p then +@y +begin if (not ligature_present) and (font_mapping[f]<>nil) then + c:=apply_tfm_font_mapping(font_mapping[f],c); +if not mltex_enabled_p then +@z + +@x effective_char_info:=null_character; exit:end; @y |