From 6dc0e38210bb5d23f33d43fa66832c8c38d54d4a Mon Sep 17 00:00:00 2001 From: Hironobu Yamashita Date: Fri, 2 Feb 2018 13:17:22 +0000 Subject: makejvf: support SKIP property in GLUEKERN git-svn-id: svn://tug.org/texlive/trunk@46519 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/makejvf/tfmread.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'Build/source/texk/makejvf/tfmread.c') diff --git a/Build/source/texk/makejvf/tfmread.c b/Build/source/texk/makejvf/tfmread.c index 5459b2c8aca..5d4748fed20 100644 --- a/Build/source/texk/makejvf/tfmread.c +++ b/Build/source/texk/makejvf/tfmread.c @@ -28,12 +28,14 @@ int jfmread(int kcode) rightamount = 0; if (w != zw && ctype > 0) { /* get natural length of JFM glue between and */ - tag = char_info[ctype*4+2] % 4; + tag = char_info[0*4+2] % 4; if (tag == 1) { gk_ind = char_info[0*4+3]; /* remainder for */ - if (glue_kern[gk_ind*4] == 254) /* support for large gluekern table */ + if (glue_kern[gk_ind*4] > 128) /* huge gluekern table rearranged */ gk_ind = upair(&glue_kern[gk_ind*4+2]); for (i = 0 ; i < nl-gk_ind ; i++) { + /* if rearrangement already handled ... */ + if (glue_kern[gk_ind*4] > 128) break; /* ... skip loop */ if (glue_kern[(gk_ind+i)*4+1] == ctype) { if (glue_kern[(gk_ind+i)*4+2] >= 128) { gk2_ind = glue_kern[(gk_ind+i)*4+3]; @@ -45,17 +47,21 @@ int jfmread(int kcode) } break; } - if (glue_kern[(gk_ind+i)*4] >= 128) + if (glue_kern[(gk_ind+i)*4] >= 128) /* end of program */ break; + else /* SKIP */ + i += glue_kern[(gk_ind+i)*4]; } } /* get natural length of JFM glue between and */ tag = char_info[ctype*4+2] % 4; if (tag == 1) { gk_ind = char_info[ctype*4+3]; /* remainder for */ - if (glue_kern[gk_ind*4] == 254) /* support for large gluekern table */ + if (glue_kern[gk_ind*4] > 128) /* huge gluekern table rearranged */ gk_ind = upair(&glue_kern[gk_ind*4+2]); for (i = 0 ; i < nl-gk_ind ; i++) { + /* if rearrangement already handled ... */ + if (glue_kern[gk_ind*4] > 128) break; /* ... skip loop */ if (glue_kern[(gk_ind+i)*4+1] == 0) { if (glue_kern[(gk_ind+i)*4+2] >= 128) { gk2_ind = glue_kern[(gk_ind+i)*4+3]; @@ -67,8 +73,10 @@ int jfmread(int kcode) } break; } - if (glue_kern[(gk_ind+i)*4] >= 128) + if (glue_kern[(gk_ind+i)*4] >= 128) /* end of program */ break; + else /* SKIP */ + i += glue_kern[(gk_ind+i)*4]; } } if (abs(zw - ll - w - rr) <= 1) /* allow round-off error */ -- cgit v1.2.3