home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume20 / pfb2ps / part01 next >
Text File  |  1991-05-22  |  5KB  |  181 lines

  1. Newsgroups: comp.sources.misc
  2. From: Erik Wallin <d87-ewa@nada.kth.se>
  3. Subject:  v20i006:  pfb2ps - conversion of binary encoded postscript files (.PFB), Part01/01
  4. Message-ID: <1991May22.034633.16498@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 24e60090c26305f5b3869be1f20a803e
  6. Date: Wed, 22 May 1991 03:46:33 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Erik Wallin <d87-ewa@nada.kth.se>
  10. Posting-number: Volume 20, Issue 6
  11. Archive-name: pfb2ps/part01
  12.  
  13. I received so many requests for this utility when I mentioned it in
  14. comp.fonts that I decided to post the source here instead of mailing
  15. it to everyone.
  16.  
  17. This a filter for converting postscript files encoded in a special
  18. binary format used on PCs. (Called .PFB files.) The output will be an
  19. ASCII text file that can be transferred to other systems or downloaded
  20. to a printer.
  21.  
  22. The README describes how to obtain information about the binary format.
  23.  
  24.  Erik Wallin <d87-ewa@nada.kth.se>
  25.  
  26. ----------------- Cut here ---------------------------
  27. : This is a shar archive.  Extract with sh, not csh.
  28. : This archive ends with exit, so do not worry about trailing junk.
  29. echo 'Extracting README'
  30. sed 's/^X//' > README << '+ END-OF-FILE README'
  31. Xpfb2ps - filter for converting postscript fonts encoded as .PFB on a
  32. XPC to plain ASCII.
  33. X
  34. XThis program is a simple conversion program based on information found
  35. Xin a document called "Supporting downloadable Postscript fonts" by
  36. XAdobe. It will convert a .PFB file (binary format for storing
  37. XPostscript files on a PC) to plain ASCII.
  38. X
  39. XThe document mentioned above can be be obtained from Adobe's
  40. Xfileserver. To get started send a mail, containing the single word help,
  41. Xto <ps-file-server@adobe.com>. To get the document send
  42. X"send Documents supportingfonts.ps". The document is also called
  43. XTechnical note #5040.
  44. X
  45. X
  46. XUSE
  47. X
  48. XTo use the program just pipe the .PFB file into pfb2ps. The plain text
  49. Xrepresentation will be output on stdout.
  50. X
  51. XFor exapmle
  52. X
  53. X    pfb2ps <melior.pfb >melior.ps
  54. X
  55. XThere is no conversion of CR/LF in pfb2ps. Therefore you might have to
  56. Xsubstitute LF for CR if you move a file from PC to Unix.
  57. X
  58. X
  59. XCOMPILING
  60. X
  61. XThere is no makefile since the program is only one file. Just compile
  62. Xit with your favorite C-compiler.
  63. X
  64. X
  65. XAUTHOR
  66. X
  67. XErik Wallin, student since 1987 at Computer Science and Engineering,
  68. XRoyal Institute of Technology, Stockholm, Sweden
  69. XInternet:  d87-ewa@nada.kth.se
  70. + END-OF-FILE README
  71. chmod 'u=rw,g=r,o=r' 'README'
  72. echo '    -rw-r--r--  1 d87-ewa      1178 May 15 16:10 README        (as sent)'
  73. echo -n '    '
  74. /bin/ls -l README
  75. echo 'Extracting pfb2ps.c'
  76. sed 's/^X//' > pfb2ps.c << '+ END-OF-FILE pfb2ps.c'
  77. X/* pfb2ps.c - Copyright 1991-05-12 Erik Wallin, d87-ewa@nada.kth.se.
  78. X   This program may be distributed freely, modified or included in
  79. X   other free programs long as this copyright notice is still
  80. X   included.
  81. X
  82. Xpfb2ps is a filter for converting postscript fonts stored in a binary
  83. Xformat used by PC-programs. (.PFM files) The output will be a plain
  84. Xtext file.
  85. X
  86. XNote that you have to pipe the .PFM file into pfb2ps. 
  87. X
  88. X    pfb2ps <xxx.pfb >xxx.ps
  89. X*/
  90. X#include <stdio.h>
  91. X#include <malloc.h>
  92. X
  93. X#define HEX_PER_LINE 32
  94. X
  95. Xint getlen()
  96. X{
  97. X  int c1,c2,c3,c4;
  98. X  c1 = getchar();
  99. X  c2 = getchar();
  100. X  c3 = getchar();
  101. X  c4 = getchar();
  102. X  return c1 + (256 * (c2 + 256 * (c3 + 256 * c4)));
  103. X}
  104. X
  105. X
  106. Xvoid main ()
  107. X{
  108. X int t, l, i;
  109. X unsigned char *buf;
  110. X
  111. X while(!feof(stdin))
  112. X   {
  113. X     if (getchar() != 128)
  114. X       {
  115. X     fprintf(stderr, "Magic number (128) not found or no input on stdin.\n");
  116. X     exit (-1);
  117. X       }
  118. X     t = getchar();
  119. X     fprintf(stderr, "Type: %d, ", t);
  120. X     switch (t) {
  121. X     case 1:
  122. X       l = getlen();
  123. X       fprintf(stderr, " plain text, length %d\n", l);
  124. X       buf = (void *) malloc(l);
  125. X       if (fread(buf, sizeof(unsigned char), l, stdin) != l)
  126. X     {
  127. X       fprintf(stderr, "Wrong length of ascii field: %d or could not read file.\n", l);
  128. X       exit (-1);
  129. X     }
  130. X       if (fwrite(buf, sizeof(unsigned char), l, stdout) != l)
  131. X     {
  132. X       fprintf(stderr, "Could not write stdout.\n");
  133. X       exit (-1);
  134. X     }
  135. X       free(buf);
  136. X       break;
  137. X     case 2:
  138. X       l = getlen();
  139. X       fprintf(stderr, " binary data, length %d\n", l);
  140. X       buf = (void *) malloc(l);
  141. X       if (fread(buf, sizeof(unsigned char), l, stdin) != l)
  142. X     {
  143. X       fprintf(stderr, "Wrong length of binary field: %d or could not read file.\n", l);
  144. X       exit (-1);
  145. X     }
  146. X       for(i = 0;i < l ;i++)
  147. X     {
  148. X       printf("%2.2X", buf[i]);
  149. X       if (!((i+1) % HEX_PER_LINE))
  150. X         printf("\n");
  151. X     }
  152. X       printf("\n");
  153. X       free(buf);
  154. X       break;
  155. X     case 3:
  156. X       fprintf(stderr, "End of file\n");
  157. X       exit(0);
  158. X       break;
  159. X     default:
  160. X       {
  161. X     fprintf(stderr, "Unknown field type: %d\n", t);
  162. X     exit(-1);
  163. X       }
  164. X     }
  165. X   }
  166. X}
  167. + END-OF-FILE pfb2ps.c
  168. chmod 'u=rw,g=r,o=r' 'pfb2ps.c'
  169. echo '    -rw-r--r--  1 d87-ewa      2076 May 15 16:16 pfb2ps.c        (as sent)'
  170. echo -n '    '
  171. /bin/ls -l pfb2ps.c
  172. exit 0
  173. ----------------- Cut here ---------------------------
  174.  
  175. exit 0 # Just in case...
  176. -- 
  177. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  178. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  179. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  180. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  181.