rohrpost

A commandline mail client to change the world as we see it.
git clone git://r-36.net/rohrpost
Log | Files | Refs | README | LICENSE

+seE6sT20M2YtEVGE8p (95125B)


      1 Return-Path: <ysato@etl.go.jp>
      2 Received: from thumper.bellcore.com by greenbush.bellcore.com (4.1/4.7)
      3 	id <AA08508> for nsb; Thu, 18 Jun 92 07:05:20 EDT
      4 Received: from etlpost.etl.go.jp ([192.31.197.33]) by thumper.bellcore.com (4.1/4.7)
      5 	id <AA27316> for nsb@greenbush; Thu, 18 Jun 92 07:04:45 EDT
      6 Received: from etlpom.etl.go.jp by etlpost.etl.go.jp (5.67+1.6W/2.7W)
      7 	id AA29286; Thu, 18 Jun 92 20:04:04 JST
      8 Received: by etlpom.etl.go.jp (4.1/6.4J.6-ETLpom.MASTER)
      9 	id AA17361; Thu, 18 Jun 92 20:03:55 JST
     10 Received: by etlibs.etl.go.jp (4.1/6.4J.6-ETL.SLAVE)
     11 	id AA29968; Thu, 18 Jun 92 20:03:47 JST
     12 Date: Thu, 18 Jun 92 20:03:47 JST
     13 Return-Path: <ysato@etl.go.jp>
     14 Mime-Version: 1.0
     15 Content-Type: multipart/mixed; boundary="=="
     16 To: nsb@thumper.bellcore.com
     17 Cc: rhys@cs.uq.oz.au
     18 Subject: Re: multi-bytes richtext
     19 From: ysato@etl.go.jp (Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=)
     20 Organization: Electrotechnical Laboratory, Tsukuba Science City
     21 Message-Id: <gFrys.ysato@etl.go.jp>
     22 References: <gAe+o.ysato@etl.go.jp> <gAfnd.ysato@etl.go.jp> 
     23 	<1451@~/Mail/drafts> <gFqTf.ysato@etl.go.jp> 
     24 	<ceDpgPa0M2Yt8Gvww6@thumper.bellcore.com>
     25 
     26 --==
     27 
     28 I'm sending a copy of this message to the author of richlex.c,
     29 wishing my small change to richlex.c may be adopted. 
     30 
     31 In message <ceDpgPa0M2Yt8Gvww6@thumper.bellcore.com> on 06/18/92(00:32:43)
     32 you Nathaniel Borenstein <nsb@thumper.bellcore.com> wrote:
     33  |Can you
     34  |possibly send me an example of multibyte richtext that works with your
     35  |modified code (as well as one that doesn't) so that I can try it out and
     36  |see?   
     37 
     38 Ok, I enclosed a picture which shows how the old and new version of 
     39 richtext process a sample data in Japanese (JIS).
     40 
     41 --==
     42 Content-Type: image/gif
     43 Content-Transfer-Encoding: base64
     44 Content-Description: richtext for multibyte charset text
     45 
     46 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
    836 --==
    837 
    838  |In particular, I notice that you call "extended_command" only in the
    839  |"default" case of a switch statement that sorts on first letters, so I
    840  |can tell that it only happens for keywords that start with other
    841  |letters, but I can't tell which keywords -- in other words, at a quick
    842  |glance it isn't obvious what your code expects in  its datastream.  I'd
    843  |be very interested in seeing that!
    844 
    845 My code expects the input is a stream of multi national character
    846 set switched by ISO-2022, that is "ESC $ X" for switch to two byte
    847 characterset and "ESC $ X" for switch to one byte character set.
    848 
    849  |Note that MIME defines things like
    850  |<iso-8859-1> some text </iso-8859-1> 
    851  |but doesn't say anything similar about non-8859 character sets.  In
    852  |particular, people were worried about the implications of multibyte
    853  |character sets 
    854 
    855 Even if multibyte character sets are ignored by them, column calculation
    856 which is able to cope with propotional fonts could be necessary.
    857 If richtext cope with propotional fonts, it makes easier to handle
    858 multibyte character sets...
    859 
    860  |-- what if one of the octets corresponds to the ascii
    861  |"<"?  I'd like to know how you handle this!  -- Nathaniel
    862 
    863 ISO-2022-JP is a implication of US-ASCII and JISx208, so "<"s is
    864 passed to richtext as is when the context is US-ASCII, but
    865 translated to "<lt>" when the context is JISx208.  This switching
    866 is found in ISO2022Getc().
    867 
    868 As I found some problems in richtext.c I send yesterday, I enclose a
    869 refined richtext.c.  Also I inserted a hook into RICHLEX.c to 
    870 treat extended SINGLETONs.
    871 
    872 
    873 In message <gFqTf.ysato@etl.go.jp> on 06/18/92(00:13:50) I wrote:
    874  |In message <gAe+o.ysato@etl.go.jp> on 06/02/92(06:33:20) I wrote:
    875  | |That is I want to use your richtext.c for the ISO-2022-JP.
    876  | |I need several extensions for richtext.c to do this.
    877  | |
    878  | |First, I need a way to extended command. For example, by defininng
    879  | |a variable like int (*RichtextCommand)();
    880  | |
    881  | |Second, I need a way to avoid two-bytes codes (like ISO-2022-JP)
    882  | |to be splitted at a odd position on the end of line.
    883  | |
    884  | |Lastly, I wish to catch all of output characters from richtext.c
    885  | |by hooking a single function, for example by defining a variable
    886  | |like int (*RichtextPutc)();
    887  | |
    888  | |With this functions, I can smoothly make richtext for ISO-2022.
    889  | |I will be very happy if you would think about my above requirements.
    890  |
    891  |I did this extension tonight.  Outline of changes are:
    892  |
    893  | - extended the element of OutputBuf from CHAR to INT.
    894  | - inserted hooks into richtext.c at initialization, getc, command, and putc
    895  | - outputc() assembles a multi-bytes character and puts it to realoutputc()
    896  | - multi-bytes character is treated in realoutputc()
    897 
    898 and today,
    899    - inserted a hook into richtext.c to find a extra folding point
    900    - inserted a hook into richtext.c to calculate line position
    901    - inserted a hook into richlex.c at SINGLETON checking.
    902 
    903  |Based on these extention, I wrote a richtext driver for ISO-2022-JP.
    904  |It seems work well on the whole, except in some special caces.
    905  |The problem seems originated from a strange behavior of richtext
    906  |which will try strange justification on some input patterns.
    907 
    908 This is caused because FlushOut() function does not try to find
    909 alternative folding point when it cannot find any space character.
    910 Since languages like Japanese does not explicitly separate words
    911 with space character, such a situation is very ordinary.
    912 A sentence can folded at any places, except that some characters
    913 (like phrase or sentence delimiter) should not be at the top of line.
    914 I inserted a hook at FlushOut() to find user defined extra folding point.
    915 
    916 --
    917 Yutaka Sato <ysato@etl.go.jp>
    918 Information Base Section
    919 ELECTROTECHNICAL LABORATORY
    920 1-1-4 Umezono, Tsukuba, Ibaraki, 305 Japan
    921 
    922 --==
    923 Content-Type: application/octet-stream
    924 Content-Transfer-Encoding: quoted-printable
    925 Content-Description: experimental richtext.c with multibyte extension
    926 
    927 /*
    928 Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore)
    929 
    930 Permission to use, copy, modify, and distribute this material =
    931 
    932 for any purpose and without fee is hereby granted, provided =
    933 
    934 that the above copyright notice and this permission notice =
    935 
    936 appear in all copies, and that the name of Bellcore not be =
    937 
    938 used in advertising or publicity pertaining to this =
    939 
    940 material without the specific, prior written permission =
    941 
    942 of an authorized representative of Bellcore.  BELLCORE =
    943 
    944 MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY =
    945 
    946 OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS", =
    947 
    948 WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
    949 */
    950 
    951 #include <stdio.h>
    952 #include <ctype.h>
    953 #include <signal.h>
    954 #include "richlex.h"
    955 
    956 extern char *getenv();
    957 #ifdef AMIGA
    958 extern char *strchr();
    959 #endif
    960 
    961 int (*RichtextGetc)();
    962 int (*RichtextPutc)();
    963 int (*RichtextCommand)();
    964 int (*RichtextInitialize)();
    965 int (*RichtextLineposition)();
    966 int (*RichtextFoldingpoint)();
    967 
    968 int linepos =3D 0, inspace =3D 0, leftmargin =3D 0, rightmargin, biggerte=
    969 xt=3D0;
    970 int workingleft =3D 0, workingright, inexcerpt =3D 0, insignature =3D 0;
    971 int termcolumns=3D80, termrows=3D23;
    972 int controlputc();
    973 
    974 /* A common problem, in justifying text, is figuring out how to format a =
    975 
    976    line when part of it wants to be left-justified, part right-justified,=
    977  =
    978 
    979    and part centered, or some combination thereof.  There is no perfect =
    980 
    981    solution to this problem, so this program takes an incredibly cheesy =
    982 
    983    but simple way out:  voting.  For each character on the line, a point
    984    is added to the "center" score if it is supposed to be centered, and =
    985 
    986    so on.  If it is inside TWO "center" environments, two points are adde=
    987 d.
    988    This may be the world's first implementation of justification by votin=
    989 g...
    990 */
    991 
    992 int centerenv=3D0, leftjustenv=3D0, rightjustenv=3D0;
    993 int centerct=3D0, leftjustct=3D0, rightjustct=3D0;
    994 int UsePager =3D 0;
    995 int linesused =3D 0;
    996 int JustSawCmd=3D0;
    997 int JustCorrect =3D 0;		/* Non-zero to just correct and not format */
    998 static char MoveRight[10];
    999 static char standoutbuf[50], standendbuf[50], StartUnderline[50], StopUnd=
   1000 erline[50];
   1001 static char KS[50], KE[50], BoldOn[50], BoldOff[50];
   1002 
   1003 #ifndef AMIGA
   1004 #ifndef __MSDOS__
   1005 #define TPUTS_OK
   1006 #endif
   1007 #endif
   1008 #ifndef TPUTS_OK
   1009 tputs(char *s, int n, int ((*func)(char)));
   1010 #endif
   1011 
   1012 void
   1013 cleanup(signum)
   1014 int signum;
   1015 {
   1016     FinalizeTerminal();
   1017 #if defined(AMIGA) || defined(__MSDOS__)
   1018     exit(signum);
   1019 #else
   1020     signal(signum, SIG_DFL);
   1021     kill(getpid(), signum);
   1022 #endif
   1023 }
   1024 
   1025 InitSignals() {
   1026     signal(SIGINT, cleanup);
   1027 #if !defined(AMIGA)
   1028 #if !defined(__MSDOS__)
   1029     signal(SIGILL, cleanup);
   1030     signal(SIGTRAP, cleanup);
   1031     signal(SIGIOT, cleanup);
   1032     signal(SIGEMT, cleanup);
   1033     signal(SIGFPE, cleanup);
   1034     signal(SIGBUS, cleanup);
   1035     signal(SIGSEGV, cleanup);
   1036     signal(SIGTERM, cleanup);
   1037 #ifdef SIGXCPU
   1038     signal(SIGXCPU, cleanup);
   1039 #endif
   1040 #endif
   1041 #endif
   1042 }
   1043 
   1044 nomemabort() {
   1045     fprintf(stderr, "richtext: Out of memory\n");
   1046     FinalizeTerminal();
   1047 #ifdef AMIGA
   1048     exit(20);
   1049 #else
   1050     exit(-1);
   1051 #endif
   1052 }
   1053 
   1054 main(argc, argv)
   1055 int argc;
   1056 char **argv;
   1057 {
   1058     int c, i, standout=3D0, underline=3D0, bold=3D0, atstart, negated,
   1059     ForceTermcap=3D0, ForcePlain=3D0, NotTtyEnv =3D 0, FakeTerminal;
   1060     char token[MAX_TOKEN_SIZE], *tok, *nottty;
   1061     char tbuf[1024], *term, *dum;
   1062     FILE *InputFP =3D stdin, *tmpfp;
   1063 #ifdef __MSDOS__
   1064     int ansi =3D 0;
   1065 #endif
   1066 
   1067     if( RichtextInitialize )
   1068 	(*RichtextInitialize)();
   1069     InitSignals();
   1070     dum =3D (char *) getenv("MM_USEPAGER");
   1071     if (dum && atoi(dum)) ++UsePager;
   1072     for (i=3D1; i< argc; ++i) {
   1073         if (!strcmp(argv[i], "-p")) {
   1074             ++UsePager;
   1075         } else if (!strcmp(argv[i],"-c")) {
   1076             /* Only perform correction: don't format */
   1077             JustCorrect =3D 1;
   1078         } else if (!strcmp(argv[i], "-f")) {
   1079             /* Force termcap usage */
   1080             ForceTermcap =3D 1;
   1081         } else if (!strcmp(argv[i], "-t")) {
   1082             /* Force plain text */
   1083             ForcePlain =3D 1;
   1084         } else if (!strcmp(argv[i],"-n")) {
   1085             /* Disable the richtext correction routines */
   1086             CorrectionEnabled =3D 0;
   1087 #ifdef __MSDOS__
   1088         } else if (!strcmp(argv[i], "-a")) {
   1089             ansi =3D !ansi;
   1090 #endif
   1091         } else {
   1092             /* open for input */
   1093             tmpfp =3D fopen(argv[i], "r");
   1094             if (tmpfp) InputFP =3D tmpfp;
   1095         }
   1096     }
   1097 #ifdef AMIGA
   1098     /* THIS IS THE AMIGA TERMINAL INITIALIZATION CODE */
   1099     nottty =3D (char *) getenv("MM_NOTTTY");
   1100     if (nottty) NotTtyEnv =3D atoi(nottty);
   1101     if (!isatty(0) || !isatty(1) || NotTtyEnv) {
   1102         UsePager =3D 0;   /* Disable pager if I/O has been redirected or =
   1103 we're under a window-oriented mail reader */
   1104     }
   1105     KS[0] =3D 0;
   1106     KE[0] =3D 0;
   1107     if ((!ForcePlain && isatty(1)) || ForceTermcap) {
   1108         FakeTerminal =3D 0;
   1109         strcpy(standoutbuf, "\x9b\x37m");   /* Enter standout (highlighte=
   1110 d) mode */
   1111         strcpy(standendbuf, "\x9b\x30m");   /* Exit standout mode */
   1112         strcpy(BoldOn,      "\x9b\x31m");   /* Enter bold mode */
   1113         strcpy(BoldOff,     "\x9b\x30m");   /* Exit bold mode */
   1114         strcpy(StartUnderline,"\x9b\x34m"); /* Enter underline mode */
   1115         strcpy(StopUnderline,"\x9b\x30m");  /* Exit underline mode */
   1116         strcpy(MoveRight, " ");
   1117     } else {
   1118         FakeTerminal =3D 1;
   1119         strcpy(BoldOn, "*");
   1120         strcpy(BoldOff, "*");
   1121         strcpy(standoutbuf, "_");
   1122         strcpy(standendbuf, "_");
   1123         strcpy(StartUnderline, "_");
   1124         strcpy(StopUnderline, "_");
   1125         strcpy(MoveRight, " ");
   1126     }
   1127 #else
   1128 #ifdef __MSDOS__
   1129     /* THIS IS THE DOS TERMINAL INITIALIZATION CODE */
   1130     FakeTerminal =3D 1;
   1131     termcolumns =3D 80;
   1132     termrows =3D 23;
   1133     strcpy(MoveRight, " ");
   1134     if (!ansi) {
   1135         KS[0] =3D NULL;
   1136         KE[0] =3D NULL;
   1137         strcpy(BoldOn, "*");
   1138         strcpy(BoldOff, "*");
   1139         strcpy(standoutbuf, "_");
   1140         strcpy(standendbuf, "_");
   1141         strcpy(StartUnderline, "_");
   1142         strcpy(StopUnderline, "_");
   1143     } else {
   1144         strcpy(KS, "\x01B[37m");  /* White text (reset) */
   1145         strcpy(KE, "\x01B[37m");  /* White text (reset) */
   1146         strcpy(BoldOn, "\x01B[1m");   /* Bold text */
   1147         strcpy(BoldOff, "\x01B[0m");   /* End bold text (normal) */
   1148         strcpy(StartUnderline, "\x01B[31m");  /* Underline (red text) */
   1149         strcpy(StopUnderline, "\x01B[37m");   /* Underline end (white) */=
   1150 
   1151         /* The following should probably be something else, for italic */=
   1152 
   1153         strcpy(standoutbuf, "\x01B[31m"); =
   1154 
   1155         strcpy(standendbuf, "\x01B[37m"); =
   1156 
   1157     }
   1158 #else
   1159     /* THIS IS THE UNIX TERMINAL INITIALIZATION CODE */
   1160     nottty =3D (char *) getenv("MM_NOTTTY");
   1161     if (nottty) NotTtyEnv =3D atoi(nottty);
   1162     if (!isatty(0) || !isatty(1) || NotTtyEnv) {
   1163         UsePager =3D 0;   /* Disable pager if I/O has been redirected or =
   1164 we're under a window-oriented mail reader */
   1165     }
   1166     if ((!ForcePlain && (isatty(1) || isatty(0))) || ForceTermcap) {
   1167         term =3D (char *) getenv("TERM");
   1168     } else {
   1169         term =3D NULL;
   1170     }
   1171     if (term && tgetent(tbuf, term) !=3D 1) {
   1172         term =3D NULL;
   1173     }
   1174     if (term) {
   1175         dum =3D KS;
   1176         if (tgetstr("ks", &dum)) *dum =3D NULL; else KS[0] =3D '\0';
   1177         dum =3D KE;
   1178         if (tgetstr("ke", &dum)) *dum =3D NULL; else KE[0] =3D '\0';
   1179         dum =3D standoutbuf;
   1180         if (tgetstr("so", &dum)) *dum =3D NULL; else standoutbuf[0] =3D '=
   1181 \0';
   1182         dum =3D standendbuf;
   1183         if (tgetstr("se", &dum)) *dum =3D NULL; else standendbuf[0] =3D '=
   1184 \0';
   1185         dum =3D BoldOn;
   1186         if (tgetstr("md", &dum)) *dum =3D NULL; else strcpy(BoldOn, stand=
   1187 outbuf);
   1188         dum =3D BoldOff;
   1189         if (tgetstr("me", &dum)) *dum =3D NULL; else strcpy(BoldOff, stan=
   1190 dendbuf);
   1191         dum =3D StartUnderline;
   1192         if (tgetstr("us", &dum)) *dum =3D NULL; else StartUnderline[0] =3D=
   1193  '\0';
   1194         dum =3D StopUnderline;
   1195         if (tgetstr("ue", &dum)) *dum =3D NULL; else StopUnderline[0] =3D=
   1196  '\0';
   1197         dum =3D MoveRight;
   1198         if (tgetstr("nd", &dum)) *dum =3D NULL; else {
   1199             MoveRight[0] =3D ' ';
   1200             MoveRight[1] =3D '\0';
   1201         }
   1202         /* Some TERMCAP entries have REALLY screwed up "nd" fields, sigh.=
   1203 =2E. */
   1204         if (!strcmp(MoveRight, "\014")) strcpy(MoveRight, " ");
   1205         termcolumns =3D tgetnum("co");
   1206         if (termcolumns <=3D 0) termcolumns =3D 80;
   1207         termrows =3D tgetnum("li");
   1208         if (termrows <=3D 0) termrows =3D 23;
   1209         FakeTerminal=3D0;
   1210     } else {
   1211         KS[0] =3D NULL;
   1212         KE[0] =3D NULL;
   1213         FakeTerminal =3D 1;
   1214         strcpy(BoldOn, "*");
   1215         strcpy(BoldOff, "*");
   1216         strcpy(standoutbuf, "_");
   1217         strcpy(standendbuf, "_");
   1218         strcpy(StartUnderline, "_");
   1219         strcpy(StopUnderline, "_");
   1220         strcpy(MoveRight, " ");
   1221         termcolumns =3D 80;
   1222         termrows =3D 23;
   1223     }
   1224 #endif
   1225 #endif
   1226     /* Check for the LINES & COLUMNS hack */
   1227     dum =3D getenv("LINES");
   1228     if (dum && ((i=3Datoi(dum)) > 0)) termrows =3D i;
   1229     dum =3D getenv("COLUMNS");
   1230     if (dum && ((i=3Datoi(dum)) > 0)) termcolumns =3D i;
   1231     richtextreset();
   1232     if (JustCorrect) {
   1233         richtextcorrect(InputFP,stdout);
   1234         exit(0);
   1235     }
   1236     FPUTS(KS, stdout);
   1237     rightmargin =3D workingright =3D termcolumns - 1;
   1238     while((c =3D richtextlex(InputFP,token)) !=3D EOF) {
   1239         if (c =3D=3D RICHTEXT_COMMAND || c =3D=3D RICHTEXT_NEG_COMMAND) {=
   1240  =
   1241 
   1242             negated =3D (c =3D=3D RICHTEXT_NEG_COMMAND);
   1243             tok =3D token;
   1244             switch(tok[0]) {
   1245                 case 'b':
   1246                     if (!strcmp(tok, "bold")) {
   1247                         if (negated) {
   1248                             --bold;
   1249                             if (bold <=3D 0) controloutput(BoldOff, 0);
   1250                         } else {
   1251                             ++bold;
   1252                         }
   1253                         ResetTerminalCodes(FakeTerminal, standout, underl=
   1254 ine,
   1255                                             bold, standoutbuf, standendbu=
   1256 f, 0,
   1257                                             StartUnderline, StopUnderline=
   1258 , 0, BoldOn,
   1259                                             BoldOff, 1);
   1260                     } else if (!strcmp(tok, "bigger")) {
   1261                         if (negated) --biggertext; else ++biggertext;
   1262                     }
   1263                     break;
   1264                 case 'c':
   1265                     if (!strcmp(tok, "center")) {
   1266                         if (negated) --centerenv; else ++centerenv;
   1267                     } else if (!strcmp(tok, "comment")) {
   1268                         int commct=3D1;
   1269                         while (commct > 0) {
   1270                             while ((c =3D getc(InputFP)) !=3D '<' =
   1271 
   1272                                     && c !=3D EOF) ;
   1273                             if (c =3D=3D EOF) break;
   1274                             for (i=3D0; (c =3D getc(InputFP)) !=3D '>' =
   1275 
   1276                               && c !=3D EOF; ++i) {
   1277                                 token[i] =3D isupper(c) ? =
   1278 
   1279                                   tolower(c) : c;
   1280                             }
   1281                             if (c=3D=3D EOF) break;
   1282                             token[i] =3D 0;
   1283                             if (!strcmp(token, "/comment")) --commct;
   1284                             if (!strcmp(token, "comment")) ++commct;
   1285                         }
   1286                     }
   1287                     break;
   1288                 case 'e':
   1289                     if (!strcmp(tok, "excerpt")) {
   1290                         atstart =3D !(linepos > workingleft);
   1291                         if (negated) {
   1292                             leftmargin -=3D 4;
   1293                             rightmargin +=3D 4;
   1294                             --inexcerpt;
   1295                         } else {
   1296                             leftmargin +=3D 4;
   1297                             rightmargin -=3D 4;
   1298                             ++inexcerpt;
   1299                         }
   1300                         MakeWorkingMargins();
   1301                         if (!atstart) outputc('\n');
   1302                     }
   1303                     break;
   1304                 case 'f':
   1305                     if (!strcmp(tok, "flushleft")) {
   1306                         if (negated) --leftjustenv; else ++leftjustenv;
   1307                     } else if (!strcmp(tok, "flushright")) {
   1308                         if (negated) --rightjustenv; else ++rightjustenv;=
   1309 
   1310                     }
   1311                     break;
   1312                 case 'i':
   1313                     if (!strcmp(tok, "italic")) {
   1314                         if (negated) {
   1315                             --standout;
   1316                             if (standout <=3D 0) controloutput(standendbu=
   1317 f, 0);
   1318                         } else {
   1319                             ++standout;
   1320                         }
   1321                         ResetTerminalCodes(FakeTerminal, standout, underl=
   1322 ine, bold,
   1323                                             standoutbuf, standendbuf, 1, =
   1324 StartUnderline,
   1325                                             StopUnderline, 0, BoldOn, Bol=
   1326 dOff, 0);
   1327                     } else if (!strcmp(tok, "indent")) {
   1328                         if (negated) {
   1329                             leftmargin -=3D 4;
   1330                         } else {
   1331                             leftmargin +=3D 4;
   1332                         }
   1333                     } else if (!strcmp(tok, "indentright")) {
   1334                         if (negated) {
   1335                             rightmargin +=3D 4;
   1336                         } else {
   1337                             rightmargin -=3D 4;
   1338                         }
   1339                     }
   1340                     MakeWorkingMargins();
   1341                     break;
   1342                 case 'l':
   1343                     if (!strcmp(tok, "lt")) {
   1344                         outputc('<');
   1345                     }
   1346                     break;
   1347                 case 'n':
   1348                     if (!strcmp(tok, "nl")) {
   1349                         outputc('\n');
   1350                     } else if (!strcmp(tok, "np")) {
   1351                         outputc('\n');
   1352                         outputc('\014');
   1353                     }
   1354                     break;
   1355                 case 'u':
   1356                     if (!strcmp(tok, "underline")) {
   1357                         if (negated) {
   1358                             --underline;
   1359                             if (underline <=3D 0) controloutput(StopUnder=
   1360 line,0);
   1361                         } else {
   1362                             ++underline;
   1363                         }
   1364                         ResetTerminalCodes(FakeTerminal, standout, underl=
   1365 ine, bold,
   1366                                             standoutbuf, standendbuf, 0, =
   1367 StartUnderline,
   1368                                             StopUnderline, 1, BoldOn, Bol=
   1369 dOff, 0);
   1370                     }
   1371                     break;
   1372                 case 'o':
   1373                     if (!strcmp(tok, "outdent")) {
   1374                         if (negated) {
   1375                             leftmargin +=3D 4;
   1376                         } else {
   1377                             leftmargin -=3D 4;
   1378                         }
   1379                     } else if (!strcmp(tok, "outdentright")) {
   1380                         if (negated) {
   1381                             rightmargin -=3D 4;
   1382                         } else {
   1383                             rightmargin +=3D 4;
   1384                         }
   1385                     }
   1386                     MakeWorkingMargins();
   1387                     break;                    =
   1388 
   1389                 case 'p':
   1390                     if (!strcmp(tok, "paragraph")) {
   1391                         if (negated) outputc('\n');
   1392                         outputc('\n');
   1393                     }
   1394                     break;
   1395                 case 's':
   1396                     if (!strcmp(tok, "signature")) {
   1397                         atstart =3D !(linepos > workingleft);
   1398                         if (negated) {
   1399                             leftmargin -=3D 4;
   1400                             rightmargin +=3D 4;
   1401                             --insignature;
   1402                         } else {
   1403                             leftmargin +=3D 4;
   1404                             rightmargin -=3D 4;
   1405                             ++insignature;
   1406                         }
   1407                         MakeWorkingMargins();
   1408                         if (!atstart) outputc('\n');
   1409                     }
   1410                     break;
   1411                 default:
   1412 		    extended_command(tok,negated);
   1413                     break;
   1414             }
   1415             JustSawCmd =3D 1;
   1416         } else if (c =3D=3D '\n') {
   1417             if (linepos > 0 && !inspace) {
   1418                 outputc(' ');
   1419             }
   1420             JustSawCmd =3D 0;
   1421         } else {
   1422             outputc(c);
   1423             JustSawCmd =3D 0;
   1424         }
   1425     }
   1426     if (term) { /* cleanup a bit for insurance */
   1427         controloutput(standendbuf, 0);
   1428         controloutput(StopUnderline, 0);
   1429     }
   1430     outputc('\n'); /* for good measure */
   1431     FPUTS(KE, stdout);
   1432     fflush(stdout);
   1433     if (UsePager) {
   1434         Pause();
   1435     }
   1436     exit(0);
   1437 }
   1438 
   1439 static int OutputBuf[1000] =3D {0};
   1440 static int PendingOutput =3D 0, PendingControls =3D 0;
   1441 static int IsControlOutput[1000];
   1442 
   1443 controlputc(c)
   1444 char c;
   1445 {
   1446     IsControlOutput[PendingOutput] =3D 1;
   1447     OutputBuf[PendingOutput++] =3D c;
   1448     ++PendingControls;
   1449 }
   1450 
   1451 immediate_controlputc(c)
   1452 char c;
   1453 {
   1454     (*RichtextPutc)(c, stdout);
   1455 }
   1456 
   1457 controloutput(s, immediate)
   1458 char *s;
   1459 int immediate;
   1460 {
   1461     tputs(s, 1, immediate ? immediate_controlputc : controlputc);
   1462 }
   1463 
   1464 FlushOut() {
   1465     int i, j, x;
   1466     int NewOutputBuf[1000], *s;
   1467     int NewPendingControls=3D0, *NewIsControlOutput, NewPendingOutput =3D=
   1468  0;
   1469 
   1470     NewIsControlOutput =3D (int *)malloc(1000*sizeof(int));
   1471     if (!NewIsControlOutput) nomemabort();
   1472     OutputBuf[PendingOutput] =3D 0;
   1473     if (linepos >=3D workingright) {
   1474         for (i=3D0, j=3D0; j<workingright && i < PendingOutput; ++i) {
   1475             if (!IsControlOutput[i]) ++j;
   1476         }
   1477         if ((workingleft+4) < (x=3Dfolding_point(OutputBuf,IsControlOutpu=
   1478 t,i)))
   1479             i =3D x;
   1480         else
   1481             while (i > workingleft + 4) {
   1482                 if (!IsControlOutput[i]
   1483                      && isspace((unsigned char) OutputBuf[i])) {
   1484                     break;
   1485                 }
   1486                 --i;
   1487             }
   1488         for (j=3D0; i<PendingOutput; ++j, ++i) {
   1489             NewOutputBuf[j] =3D OutputBuf[i];
   1490             NewIsControlOutput[j] =3D IsControlOutput[i];
   1491             ++NewPendingOutput;
   1492             if (NewIsControlOutput[j]) ++NewPendingControls;
   1493         }
   1494         PendingOutput -=3D NewPendingOutput;
   1495         PendingControls -=3D NewPendingControls;
   1496         OutputBuf[PendingOutput++] =3D '\n';
   1497         OutputBuf[PendingOutput] =3D 0;
   1498     }
   1499     if ((rightjustct > leftjustct)
   1500          && (rightjustct > centerct)
   1501          && (rightjustct > 0)) {
   1502         /* right justified */
   1503         i =3D termcolumns - calc_column(OutputBuf,PendingOutput) - 1
   1504             + PendingControls;
   1505         for (j=3D0; j<i; ++j)  {
   1506             controloutput(MoveRight, 1);
   1507         }
   1508         fputsmovingright(OutputBuf, stdout);
   1509         ++linesused;
   1510     } else if ((leftjustct > centerct)
   1511                 && (leftjustct > 0)) {
   1512         /* left justified */
   1513         for (s=3DOutputBuf; *s && isspace((unsigned char) *s); ++s) {;}
   1514         fputsmovingright(s, stdout);
   1515         ++linesused;
   1516     } else if (centerct > 0) {
   1517         /* centered */
   1518         i =3D (termcolumns - calc_column(OutputBuf,PendingOutput) - 1
   1519 	     + PendingControls) / 2;
   1520         for (j=3D0; j<i; ++j) {
   1521             controloutput(MoveRight, 1);
   1522         }
   1523         fputsmovingright(OutputBuf, stdout);
   1524         ++linesused;
   1525     } else {
   1526         /* Leave indentation (margins) as-is */
   1527         fputsmovingright(OutputBuf, stdout);
   1528         ++linesused;
   1529     }
   1530     if (linesused >=3D termrows && UsePager) Pause();
   1531     rightjustct =3D leftjustct =3D centerct =3D 0; /* not quite right for=
   1532  wrapping, sigh... */
   1533     PendingOutput =3D PendingControls =3D linepos =3D 0;
   1534     inspace =3D 1;
   1535     j =3D (isspace((unsigned char) NewOutputBuf[0])) ? 1 : 0;
   1536     for ( ; j<NewPendingOutput; ++j) {
   1537         if (NewIsControlOutput[j]) {
   1538             IsControlOutput[PendingOutput] =3D 1;
   1539             OutputBuf[PendingOutput++] =3D NewOutputBuf[j];
   1540             ++PendingControls;
   1541         } else {
   1542             realoutputc(NewOutputBuf[j], 1);
   1543         }
   1544     }
   1545     free((char *)NewIsControlOutput);
   1546 }
   1547 
   1548 int RichtextCharcodeLength =3D 1;
   1549 outputc(c)
   1550 char c;
   1551 {
   1552     if( RichtextCharcodeLength =3D=3D 1 )
   1553          realoutputc(c, 0);
   1554     else multibyte_realoutputc(c);
   1555 }
   1556 
   1557 realoutputc(c, alreadyformatted)
   1558 int c;
   1559 int alreadyformatted;
   1560 {
   1561     int i, newinspace;
   1562 
   1563     if (c =3D=3D '\n') {
   1564         IsControlOutput[PendingOutput] =3D 0;
   1565         OutputBuf[PendingOutput++] =3D '\n';
   1566         FlushOut();
   1567     } else if (c =3D=3D '\t') {
   1568         int tabpos =3D (linepos + 8) / 8;
   1569         if (tabpos >=3D workingright) {
   1570             IsControlOutput[PendingOutput] =3D 0;
   1571             OutputBuf[PendingOutput++] =3D '\n';
   1572             FlushOut();
   1573         } else {
   1574             int spaces =3D (8*tabpos) - linepos;
   1575             while (spaces-->0) {
   1576                 IsControlOutput[PendingOutput] =3D 0;
   1577                 OutputBuf[PendingOutput++] =3D ' ';
   1578                 ++linepos;
   1579             }
   1580         }
   1581     } else {
   1582         newinspace =3D isspace((unsigned char) c);
   1583         if (!inspace || !newinspace || !JustSawCmd) {
   1584             if (linepos =3D=3D 0) {
   1585                 int i =3D workingleft;
   1586                 if (inexcerpt) {
   1587                     IsControlOutput[PendingOutput] =3D 0;
   1588                     OutputBuf[PendingOutput++] =3D '>';
   1589                     --i;
   1590                 }
   1591                 if (insignature) {
   1592                     IsControlOutput[PendingOutput] =3D 0;
   1593                     OutputBuf[PendingOutput++] =3D '+';
   1594                     --i;
   1595                 }
   1596                 while (i-->0) {
   1597                     IsControlOutput[PendingOutput] =3D 0;
   1598                     OutputBuf[PendingOutput++] =3D ' ';
   1599                 }
   1600                 linepos =3D workingleft;
   1601             }
   1602             if (!alreadyformatted && biggertext && !(inspace && newinspac=
   1603 e)) {
   1604                 IsControlOutput[PendingOutput] =3D 0;
   1605                 OutputBuf[PendingOutput++] =3D '_';
   1606                 ++linepos;
   1607             }
   1608             inspace =3D newinspace;
   1609 	    linepos +=3D charlen(c);
   1610             IsControlOutput[PendingOutput] =3D 0;
   1611             OutputBuf[PendingOutput++] =3D c;
   1612             leftjustct +=3D leftjustenv;
   1613             rightjustct +=3D rightjustenv;
   1614             centerct +=3D centerenv;
   1615             if (c =3D=3D '\014') inspace =3D 1;
   1616             if (linepos >=3D workingright) FlushOut();
   1617         }
   1618     }
   1619 }
   1620 
   1621 MakeWorkingMargins() {
   1622     int oldworkingleft=3Dworkingleft, i;
   1623 
   1624     workingleft =3D leftmargin;
   1625     workingright =3D rightmargin;
   1626     if (workingleft < 0) workingleft =3D 0;
   1627     if (workingright < 0) workingright =3D 0;
   1628     if (workingright > (termcolumns - 1)) workingright =3D (termcolumns -=
   1629  1);
   1630     if (workingleft > (workingright - 8)) workingleft =3D workingright -8=
   1631 ;
   1632     if (linepos =3D=3D oldworkingleft) {
   1633         for (i=3Dworkingleft-oldworkingleft; i > 0; --i) outputc(' ');
   1634     }
   1635 }
   1636 
   1637 Pause()
   1638 {
   1639     int	c;
   1640 
   1641     (void) fputs("Press RETURN to continue (or 'q' to quit): ", stdout);
   1642     c =3D getc(stdin);
   1643     if (c =3D=3D 'q' || c =3D=3D 'Q') exit();
   1644     linesused =3D 0;
   1645 }
   1646 
   1647 /* Leading spaces should be output as MoveRight, to avoid =
   1648 
   1649    having margins that are underlined or reverse video */
   1650 
   1651 fputsmovingright(s, fp)
   1652 int *s;
   1653 FILE *fp;
   1654 {
   1655     int inmargin=3D1;
   1656     if (!s) return;
   1657     while (*s) {
   1658         if (inmargin && *s =3D=3D ' ') {
   1659             controloutput(MoveRight, 1);
   1660         } else {
   1661 	    if (inmargin) inmargin =3D 0;
   1662 	    (*RichtextPutc)(*s,fp);
   1663 	}
   1664         ++s;
   1665     }
   1666 }
   1667 
   1668 ResetTerminalCodes(FakeTerminal, standout, underline, bold, standoutbuf, =
   1669 standendbuf,
   1670                     modifiedstandout, StartUnderline, StopUnderline, modi=
   1671 fiedunderline,
   1672                     BoldOn, BoldOff, modifiedbold)
   1673 char *standoutbuf, *standendbuf, *StartUnderline, *StopUnderline,
   1674     *BoldOn, *BoldOff;
   1675 {
   1676     /* We always turn back on the appropriate terminal modes, because
   1677       on some terminals one thing turns off all of them */
   1678     if (standout >=3D 1) {
   1679         if (FakeTerminal) {
   1680             if (modifiedstandout && standout =3D=3D 1) outputstr(standout=
   1681 buf);
   1682         } else controloutput(standoutbuf, 0);
   1683     }
   1684     if (bold >=3D 1) {
   1685         if (FakeTerminal) {
   1686             if (modifiedbold && bold =3D=3D 1) outputstr(BoldOn);
   1687         } else controloutput(BoldOn, 0);
   1688     }
   1689     if (underline >=3D 1) {
   1690         if (FakeTerminal) {
   1691             if (modifiedunderline && underline =3D=3D 1) outputstr(StartU=
   1692 nderline);
   1693         } else controloutput(StartUnderline, 0);
   1694     }
   1695 }
   1696 
   1697 FinalizeTerminal() {
   1698     tputs(standendbuf, 1, immediate_controlputc);
   1699     tputs(BoldOff, 1, immediate_controlputc);
   1700     tputs(StopUnderline, 1, immediate_controlputc);
   1701     fputs(KE, stdout);
   1702 }
   1703 
   1704 outputstr(s)
   1705 char *s;
   1706 {
   1707     while (*s) outputc(*s++);
   1708 }
   1709 
   1710 #ifndef TPUTS_OK
   1711 tputs(s, n, func)
   1712 char *s;
   1713 int n;
   1714 int (*func)();
   1715 {
   1716     if (s) {
   1717         while (*s) {
   1718             func(*s);
   1719             ++s;
   1720         }
   1721     }
   1722     return (0);
   1723 }
   1724 #endif
   1725 
   1726 /*#######################################################################=
   1727 ####
   1728  *	Experimental extention to handle multibyte character sets.
   1729  *		92-06-18	Yutaka Sato <ysato@etl.go.jp>
   1730  */
   1731 
   1732 static extended_command(tok,negated)
   1733 char *tok;
   1734 int negated;
   1735 {
   1736     if( RichtextCommand )
   1737 	(*RichtextCommand)(tok,negated);
   1738 }
   1739 
   1740 static folding_point(line,ctls,i)
   1741 int *line,*ctls,i;
   1742 {
   1743     if( RichtextFoldingpoint )
   1744 	return (*RichtextFoldingpoint)(line,ctls,i);
   1745     return 0;
   1746 }
   1747 
   1748 static charlen(ch)
   1749 int ch;
   1750 {
   1751     if(ch & 0xFF000000)	return 4;
   1752     if(ch & 0xFF0000)	return 3;
   1753     if(ch & 0xFF00  )	return 2;
   1754     else		return 1;
   1755 }
   1756         =
   1757 
   1758 static int PendingCharacter =3D 0;
   1759 static int PendingLength =3D 0;
   1760 static multibyte_realoutputc(c)
   1761 {
   1762     PendingCharacter =3D (PendingCharacter << 8) | c;
   1763     if( ++PendingLength =3D=3D RichtextCharcodeLength ){
   1764     	realoutputc(PendingCharacter, 0);
   1765         PendingCharacter =3D 0;
   1766 	PendingLength =3D 0;
   1767     }
   1768 }
   1769 
   1770 static calc_column(buf,pos)
   1771 int *buf,pos;
   1772 {   int *s,col;
   1773 
   1774     if( RichtextLineposition )
   1775 	return (*RichtextLineposition)(buf,pos);
   1776     return pos;
   1777 }
   1778 
   1779 static FPUTS(s,fp)
   1780 unsigned char *s;
   1781 FILE *fp;
   1782 {
   1783     while(*s) (*RichtextPutc)(*s++,fp);
   1784 }
   1785 
   1786 /*#######################################################################=
   1787 ####
   1788  *
   1789  *	Richtext driver for ISO-2022
   1790  *		92-06-18	Yutaka Sato <ysato@etl.go.jp>
   1791  *
   1792  *	This is lodging in richtext.c for easy experiment.
   1793  */
   1794 
   1795 extern int (*RichtextInitialize)();
   1796 extern int (*RichtextGetc)();
   1797 extern int (*RichtextSingleton)();
   1798 extern int (*RichtextCommand)();
   1799 extern int (*RichtextLineposition)();
   1800 extern int (*RichtextFoldingpoint)();
   1801 extern int (*RichtextPutc)();
   1802 
   1803 extern int ISO2022Getc();
   1804 extern int ISO2022Singleton();
   1805 extern int ISO2022Command();
   1806 extern int ISO2022Lineposition();
   1807 extern int ISO2022Foldingpoint();
   1808 extern int ISO2022Putc();
   1809 
   1810 static int OutCharlen =3D 1;
   1811 static int OutPrevChar;
   1812 static int DoLiteralize =3D 0;
   1813 static char pushback_buff[20];
   1814 static int swto1B =3D 'B';
   1815 static int swto2B =3D 'B';
   1816 
   1817 static ISO2022Initialize(){
   1818 	RichtextGetc	     =3D ISO2022Getc;
   1819 	RichtextSingleton    =3D ISO2022Singleton;
   1820 	RichtextCommand      =3D ISO2022Command;
   1821 	RichtextLineposition =3D ISO2022Lineposition;
   1822 	RichtextFoldingpoint =3D ISO2022Foldingpoint;
   1823 	RichtextPutc	     =3D ISO2022Putc;
   1824 	DoLiteralize =3D 0;
   1825 }
   1826 int (*RichtextInitialize)() =3D ISO2022Initialize;
   1827 
   1828 static char xcharsw_prefix[] =3D "xiso2022-";
   1829 static int  xcharsw_leng =3D sizeof(xcharsw_prefix) - 1;
   1830 
   1831 static ISO2022Command(token,negated)
   1832 	char *token;
   1833 {	int len,swchar;
   1834 
   1835 	if( strncmp(token,xcharsw_prefix,xcharsw_leng) =3D=3D 0 ){
   1836 	    if( token[xcharsw_leng] && token[xcharsw_leng+1]=3D=3D'-' ){
   1837 		sscanf(token+xcharsw_leng+2,"%x",&swchar);
   1838 		if( swchar <=3D ' ' || 0x7F <=3Dswchar )
   1839 			return;
   1840 		switch( token[xcharsw_leng] ){
   1841 			case '2':
   1842 				controloutput("\033$",0);
   1843 				controlputc(swchar);
   1844 				swto2B =3D swchar;
   1845 				RichtextCharcodeLength =3D 2;
   1846 				break;
   1847 			case '1':
   1848 				RichtextCharcodeLength =3D 1;
   1849 				controloutput("\033(",0);
   1850 				controlputc(swchar);
   1851 				swto1B =3D swchar;
   1852 				break;
   1853 		}
   1854 	    }
   1855 	}
   1856 }
   1857 
   1858 ISO2022Singleton(token)
   1859 	char *token;
   1860 {
   1861 	return !strncmp(token,xcharsw_prefix,xcharsw_leng);
   1862 }
   1863 ISO2022Getc(in)
   1864 	FILE *in;
   1865 {	int ch,nch;
   1866 
   1867 GETCH:
   1868 	if( ch =3D *pushback_buff )
   1869 		strcpy(pushback_buff,pushback_buff+1);
   1870 	else{
   1871 		ch =3D fgetc(in);
   1872 		if(ch =3D=3D '<' && DoLiteralize )
   1873 			strcat(pushback_buff,"lt>");
   1874 		else
   1875 		if(ch =3D=3D 033){
   1876 			ch =3D fgetc(in);
   1877 			if(ch =3D=3D '$' || ch =3D=3D '('){
   1878 				nch =3D fgetc(in);
   1879 				if( ch =3D=3D '$' ){
   1880 					sprintf(pushback_buff,"<%s2-%x>",
   1881 						xcharsw_prefix,nch);
   1882 					DoLiteralize =3D 1;
   1883 				}else{
   1884 					sprintf(pushback_buff,"<%s1-%x>",
   1885 						xcharsw_prefix,nch);
   1886 					DoLiteralize =3D 0;
   1887 				}
   1888 				goto GETCH;
   1889 			}else{
   1890 				ungetc(ch,in);
   1891 				ch =3D 033;
   1892 			}
   1893 		}
   1894 	}
   1895 	return ch;
   1896 }
   1897 
   1898 ISO2022Putc( ch, fp )
   1899 	int ch;
   1900 	FILE *fp;
   1901 {
   1902 	if( ch & 0xFF00 ){
   1903 		putc(ch  >>  8, fp);
   1904 		putc(ch & 0xFF, fp);
   1905 	}else{
   1906 		if( OutPrevChar =3D=3D 033 ){
   1907 			if( ch =3D=3D '$' ) OutCharlen =3D 2; else
   1908 			if( ch =3D=3D '(' ) OutCharlen =3D 1;
   1909 		}
   1910 		if( ch =3D=3D '\n' && OutCharlen =3D=3D 2 )
   1911 			fprintf(fp,"\033(%c\n\033$%c",swto1B,swto2B);
   1912 		else	putc(ch, fp);
   1913 	}
   1914 	OutPrevChar =3D ch;
   1915 }
   1916 
   1917 ISO2022Foldingpoint(line,ctls,pos)
   1918 	int *line,*ctls,pos;
   1919 {	int i;
   1920 
   1921 	for( i =3D pos; 0 < i; i-- )
   1922 		if( ctls[i] =3D=3D 0 )
   1923 			if( line[i] & 0xFF00 )
   1924 				return i;
   1925 	return 0;
   1926 }
   1927 
   1928 ISO2022Lineposition(line,pos)
   1929 	int *line,pos;
   1930 {	int *s,col;
   1931 
   1932 	col =3D 0;
   1933 	for(s =3D line; *s; s++)
   1934 		col +=3D *s & 0xFF00 ? 2 : 1;
   1935 	return col;
   1936 }
   1937 --==
   1938 Content-Type: application/octet-stream
   1939 Content-Description: richlex.c with a hook to extended SINGLETONs
   1940 
   1941 *** richlex.c.orig	Thu Jun 18 17:32:24 1992
   1942 --- richlex.c	Thu Jun 18 17:33:30 1992
   1943 ***************
   1944 *** 46,51 ****
   1945 --- 46,52 ----
   1946   
   1947   int (*RichtextGetc) () = fgetc;	/* Function to call to get characters */
   1948   int (*RichtextPutc) () = fputc; /* Function to call to put characters */
   1949 + int (*RichtextSingleton)()=0;	/* Function to check extended singletons */
   1950   
   1951   #define	RGET(f)		((*RichtextGetc)(f))
   1952   #define	RPUT(c,f)	((*RichtextPutc)(c,f))
   1953 ***************
   1954 *** 92,97 ****
   1955 --- 93,101 ----
   1956    */
   1957   static richtextsingle()
   1958   {
   1959 +     if( RichtextSingleton && (*RichtextSingleton)(NextToken) )
   1960 + 	return 1;
   1961 + 
   1962       return (!strcmp(NextToken,"nl") ||
   1963   	    !strcmp(NextToken,"lt") ||
   1964   	    !strcmp(NextToken,"np"));
   1965 
   1966 --==
   1967 Content-Type: application/octet-stream; charset=ISO-2022-JP
   1968 Content-Description: sample data for multibyte richtext
   1969 
   1970 The followings is a sentence written in Roman characters in <bold>JIS-X0208
   1971 </bold> which could not be properly processed with original richtext.
   1972 <nl>
   1973 <nl>
   1974 <center>$@#T#h#i#s!!#i#s!!#a!!#s#e#n#t#e#n#c#e!!#w#r#i#t#t#e#n!!#i#n(J<nl>
   1975 $@#R#o#m#a#n!!#c#h#a#r#a#c#t#e#r#s(J $@#i#n!!(J<underline>$@#J#I#S!]#X#2#0#2(J</underline>$@!%(J
   1976 </center><nl>
   1977 
   1978 $@#O#r#i#g#i#n#a#l!!#v#e#r#s#i#o#n!!#o#f!!#r#i#c#h#t#e#x#t!!#d#e#s#t#r#o#y(J
   1979  the $@#s#e#n#t#e#n#c#e!%$3$NJ8>O$O#J#I#S%3!<%ICf$N%m!<%^;z5-9f$G=q$+(J
   1980 $@$l$F$$$^$9!#8E$$(Jrichtext$@$G$O$3$l$r@5$7$/=hM}$G$-$^$;$s!#(JEven in  ASCII
   1981 sentences, a long word will cause a strange folding like this.
   1982 This-is-an-example-which-causes-a-strange-folding-in-richtext.=================================
   1983 <nl><nl>
   1984 <center>
   1985 This is an example of <bold>bold</bold> and <underline>underline
   1986 </underline> represented in the<nl>
   1987 <bold>richtext</bold> format of <italic><bold>MIME</bold></italic>.
   1988 <nl><nl>
   1989 $@$3$l$O!"(J<bold><italic>$@#M#I#M#E(J</italic></bold>$@$N(J<bold>richtext</bold>
   1990 $@7A<0$r;H$C$F!"(J<nl>
   1991 <underline>$@$3$N$h$&$J2<@~(J</underline>$@$d(J<bold>$@B@;z(J</bold>$@$rI=8=$7$?Nc$G$9!#(J
   1992 <nl><nl>
   1993 </center>
   1994 --Yutaka
   1995 --==--
   1996