summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/xetexdir/xetex.ch
diff options
context:
space:
mode:
authorJonathan Kew <jfkthame@googlemail.com>2008-05-08 13:28:50 +0000
committerJonathan Kew <jfkthame@googlemail.com>2008-05-08 13:28:50 +0000
commit151f5e5cae3fca2c5d0e491407c0fe3a30a9b51e (patch)
treef6e77ab0cdbd9bc43d3c47f8854b24b19016eac5 /Build/source/texk/web2c/xetexdir/xetex.ch
parent9a180498bb6fa5da4c6a89525815ea5939cf0842 (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.ch98
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