summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/omegafonts/char_routines.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2014-08-16 11:22:48 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2014-08-16 11:22:48 +0000
commita981bfca982db54c356d2f1eb9426ca75efcdebf (patch)
tree620c3f6d178f845c0897edc8f5ed0aad658a134d /Build/source/texk/web2c/omegafonts/char_routines.c
parent9fc908a02f223f2262b33b1cc87ab19b6fe15fef (diff)
texk/web2c/omegafonts: Fixed some minor bugs
git-svn-id: svn://tug.org/texlive/trunk@34948 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/omegafonts/char_routines.c')
-rw-r--r--Build/source/texk/web2c/omegafonts/char_routines.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/Build/source/texk/web2c/omegafonts/char_routines.c b/Build/source/texk/web2c/omegafonts/char_routines.c
index fc8a0ef7a7f..7f3989b33ee 100644
--- a/Build/source/texk/web2c/omegafonts/char_routines.c
+++ b/Build/source/texk/web2c/omegafonts/char_routines.c
@@ -658,7 +658,7 @@ adjust_labels(boolean play_with_starts)
label_ptr = 0;
label_table[0].rr = -1; /* sentinel */
- if (bchar_label != 0) {
+ if (!play_with_starts && (bchar_label < nl)) {
label_ptr = 1;
label_table[1].cc = -1;
label_table[1].rr = bchar_label;
@@ -667,14 +667,25 @@ adjust_labels(boolean play_with_starts)
FOR_ALL_CHARACTERS(
unsigned c = plane*PLANE + index;
if ((c>=bc) && (c<=ec) && (entry->tag == TAG_LIG)) {
+ int r = entry->remainder;
+ if (r < nl) {
+ unsigned s = lig_kern_table[r].entries[0];
+ if ((s < 256) && (s > STOP_FLAG)) {
+ r = 256 * lig_kern_table[r].entries[2] + lig_kern_table[r].entries[3];
+ if (!play_with_starts && (r < nl) && (activity[entry->remainder] == A_UNREACHABLE))
+ activity[entry->remainder] = A_PASS_THROUGH;
+ }
+ }
sort_ptr = label_ptr; /* hole at position sort_ptr+1 */
- while (label_table[sort_ptr].rr > (int)(entry->remainder)) {
+ while (label_table[sort_ptr].rr > r) {
label_table[sort_ptr+1] = label_table[sort_ptr];
sort_ptr--; /* move the hole */
}
label_table[sort_ptr+1].cc = c;
- label_table[sort_ptr+1].rr = entry->remainder;
+ label_table[sort_ptr+1].rr = r;
label_ptr++;
+ if (!play_with_starts)
+ activity[r] = A_ACCESSIBLE;
}
)
if (play_with_starts) {
@@ -706,7 +717,7 @@ adjust_labels(boolean play_with_starts)
}
}
}
- if (bchar_label != 0) {
+ if (bchar_label < nl) {
lig_kern_table[nl-1].entries[2] = (bchar_label + lk_offset) / (max_start + 1);
lig_kern_table[nl-1].entries[3] = (bchar_label + lk_offset) % (max_start + 1);
}