Пример #1
0
 private void putkerntab() throws IOException {
   if (kernpairs == 0) return;
   in.seek(kernpairs);
   int count = in.readUnsignedShortLE();
   int nzero = 0;
   int kerns[] = new int[count * 3];
   for (int k = 0; k < kerns.length; ) {
     kerns[k++] = in.read();
     kerns[k++] = in.read();
     if ((kerns[k++] = in.readShortLE()) != 0) ++nzero;
   }
   if (nzero == 0) return;
   out.print("StartKernData\nStartKernPairs");
   outval(nzero);
   out.print('\n');
   for (int k = 0; k < kerns.length; k += 3) {
     if (kerns[k + 2] != 0) {
       out.print("KPX ");
       out.print(WinChars[kerns[k]]);
       out.print(' ');
       out.print(WinChars[kerns[k + 1]]);
       outval(kerns[k + 2]);
       out.print('\n');
     }
   }
   /* Put out trailer */
   out.print("EndKernPairs\nEndKernData\n");
 }
Пример #2
0
  private void putchartab() throws IOException {
    int count = lastchar - firstchar + 1;
    int ctabs[] = new int[count];
    in.seek(chartab);
    for (int k = 0; k < count; ++k) ctabs[k] = in.readUnsignedShortLE();
    int back[] = new int[256];
    if (charset == 0) {
      for (int i = firstchar; i <= lastchar; ++i) {
        if (Win2PSStd[i] != 0) back[Win2PSStd[i]] = i;
      }
    }
    /* Put out the header */
    out.print("StartCharMetrics");
    outval(count);
    out.print('\n');

    /* Put out all encoded chars */
    if (charset != 0) {
      /*
       * If the charset is not the Windows standard, just put out
       * unnamed entries.
       */
      for (int i = firstchar; i <= lastchar; i++) {
        if (ctabs[i - firstchar] != 0) {
          outchar(i, ctabs[i - firstchar], null);
        }
      }
    } else {
      for (int i = 0; i < 256; i++) {
        int j = back[i];
        if (j != 0) {
          outchar(i, ctabs[j - firstchar], WinChars[j]);
          ctabs[j - firstchar] = 0;
        }
      }
      /* Put out all non-encoded chars */
      for (int i = firstchar; i <= lastchar; i++) {
        if (ctabs[i - firstchar] != 0) {
          outchar(-1, ctabs[i - firstchar], WinChars[i]);
        }
      }
    }
    /* Put out the trailer */
    out.print("EndCharMetrics\n");
  }