Japanese euc file to postscript language converter
日本語EUCを含んだ文書をポストスクリプト言語に変換するフィルターです
自分で使うためエラーチェックは一切行っておりません
今時ポストスクリプトプリンタで文書を印刷する必要性は薄れているでしょうが
私は自分で書いた文書を印刷するためにまだ使っています
ご使用の際はソースコードを御覧下さい
大城貴紀
/* a2psj - A program that converts japanese text to postscript language */
/* print 66 lines a page */
/* for A4 paper only */
/* font size is 10 point */
/* kanji code is euc */
/* written by Takanori Oshiro */
/* 2018/10/31 Bug fix about undisplay of () */
/* 2018/11/1 Bug fix about undisplay of \ */
#include <stdio.h>
#define MAXLINE 66
#define BUFSIZE 8192
int main(void){
int nline = 0; /* current line number */
int c;
char kanji[BUFSIZE]; /* buffer for kanji code */
int i;
printf("%%!PS-Adobe-3.0 EPSF-3.0\n");
printf("%%Definition of mm\n");
printf("/mm {2.834645669 mul} def\n");
printf("/verticalPosition 297 mm 20 mm sub def\n"); /* head and foot margin 20 mm */
printf("/horizontalPosition 25 mm def\n"); /* left margin 25 mm */
printf("/newline {/verticalPosition verticalPosition 3.89393939 mm sub def\n");
printf("\thorizontalPosition verticalPosition moveto } def\n");
printf("/putStr { findfont 10 scalefont setfont show } def\n");
printf("horizontalPosition verticalPosition moveto\n");
while((c = getchar()) != EOF){
if( c == '\n'){
printf("newline\n");
nline++;
if(nline == MAXLINE){
printf("showpage\n");
printf("/verticalPosition 297 mm 20 mm sub def\n");
printf("horizontalPosition verticalPosition moveto\n");
nline = 0;
}
} else if(c == '(' || c == ')'){
printf("(\\%c) /Times-Roman putStr\n",c);
} else if(c == '\\'){
printf("(\\\\) /Times-Roman putStr\n");
} else if(c < 0x80)
printf("(%c) /Times-Roman putStr\n",c);
else {
i = 0;
kanji[i++] = c;
while((c = getchar()) >= 0x80){
kanji[i++] = c;
}
kanji[i] = '\0';
printf("(%s) /Ryumin-Light-EUC-H putStr\n",kanji);
ungetc(c,stdin);
}
}
printf("showpage\n");
return 0;
}
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735