summaryrefslogtreecommitdiff
path: root/Build/source/texk/makejvf/tfmread.c
diff options
context:
space:
mode:
authorHironobu Yamashita <h.y.acetaminophen@gmail.com>2018-02-02 13:17:22 +0000
committerHironobu Yamashita <h.y.acetaminophen@gmail.com>2018-02-02 13:17:22 +0000
commit6dc0e38210bb5d23f33d43fa66832c8c38d54d4a (patch)
tree166ddd97bb5d2b46d9f9109785140052338e2615 /Build/source/texk/makejvf/tfmread.c
parent9f7307579d809c7eca4c350e128045715a77303c (diff)
makejvf: support SKIP property in GLUEKERN
git-svn-id: svn://tug.org/texlive/trunk@46519 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/makejvf/tfmread.c')
-rw-r--r--Build/source/texk/makejvf/tfmread.c18
1 files changed, 13 insertions, 5 deletions
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 <type0> and <type of kcode> */
- 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 <type0> */
- 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 <type of kcode> and <type0> */
tag = char_info[ctype*4+2] % 4;
if (tag == 1) {
gk_ind = char_info[ctype*4+3]; /* remainder for <type of kcode> */
- 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 */