--- orig/contrib/ttf2pk/vplaux.c 2002-11-11 19:10:53.000000000 +0100 +++ new/contrib/ttf2pk/vplaux.c 2002-11-11 19:09:58.000000000 +0100 @@ -374,10 +374,12 @@ if (fnt->uppercase[i] == NULL) /* omit ligatures from smallcap lowercase */ for (nlig = ti->ligs; nlig; nlig = nlig->next) - if (NULL != (asucc = findmappedadobe(nlig->succ, fnt->inencptrs))) - if (NULL != (asub = findmappedadobe(nlig->sub, fnt->inencptrs))) - if (asucc->outcode >= 0) - if (asub->outcode >= 0) + if ((((NULL != (asucc = findmappedadobe(nlig->succ, fnt->inencptrs))) + && (asucc->outcode >= 0)) + || ((strcmp(nlig->succ,"||") == 0) + && (fnt->boundarychar>=0))) + && (NULL != (asub = findmappedadobe(nlig->sub, fnt->inencptrs))) + && (asub->outcode >= 0)) { if (unlabeled) { @@ -388,14 +390,22 @@ fnt->outencptrs, forceoctal)); unlabeled = False; } - for (j = asucc->outcode; j >= 0; j = fnt->nextout[j]) - { - voutln4("(%s %s O %o)", vplligops[nlig->op], - vchar(j, vcharbuf, forceoctal), - (unsigned)asub->outcode); - if (nlig->boundleft) - break; - } + if (asucc != NULL) + for (j = asucc->outcode; j >= 0; j = fnt->nextout[j]) + { + voutln4("(%s %s O %o)", vplligops[nlig->op], + vchar(j, vcharbuf, forceoctal), + (unsigned)asub->outcode); + if (nlig->boundleft) + break; + } + else /* boundary char */ + { + voutln4("(%s %s O %o)", vplligops[nlig->op], + vchar(fnt->boundarychar, vcharbuf, forceoctal), + (unsigned)asub->outcode); + + } } for (nkern = (fnt->uppercase[i] ? fnt->uppercase[i]->kerns : ti->kerns);