+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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 142 4Ws+4QQa2+hN5ttm5tIX5s7a5qMWim3u5p2e4q1OhabuNJbO6bpE5zRwz698TLjOxsRNOLq7 143 53t2y2Qs7IMeGoPe5HxOyGuny48u0PZr4MyeBVxtb7NuhK5O66ze3Niup9ve4aMuii3+sN8+ 144 3uG+sOOO6Uct4Zxe3bVdteUe4lx+7XJ+N7YeOQp+5wMt5IDe4Meuw7kM5d2cy5Hs3wT/3ws9 145 zlbcvotOJjoe6eNMy5Juyb5Raq1tpTY7piUI1hWf8eqt6gZX8RS+2hj/kl9Ok2mN2XbtcyQO 146 4pW95S7f8iS+4kHLpHBV79sb6NKM58c9zb2c/sY8T+jwbbt+HsuerCi2i8q73OtvPMrQnuiI 147 PYy5jpyETekgXfWZbPO4N/Skdc8Lzs+5PfBQ3vUAD8RAHuQ/X+gIny5FH8c7zuRLtux5Tldt 148 L+AOR/VWf/dPjPUurID9vUXzi8FA/2YFjiSCj9VuJvS7jvQGX2VYzCz53OiNr89WDcY6Ivlb 149 jOT6V8X//c4RXxd2j/egT8J6v9Okv/dTHtmZSxiRluWhL2mjX/p7ARqyP/ueCwXTbrjTzZfz 150 rtKtrzWvD/vArwa3X7jvHmjdHmS7j/eHZt8crHDvjdy2/wXMD/f60vmdDP3kifqoW/y9s6No 151 vto6yfq0bdkWe+Xf/g/+L+3qK57WUQnyV1/SNT74ht352G849T+695/k+NJIzmv65PO8EGDk 152 pNUknPXm3X8wFEeyNL8gyNKOxdyVdeF49VL1PTWYjnPfK5cYbnDC1rDIUy6JOGjLmAQ6ac5d 153 Vrvldr0mQFgcHhzMZ3FqDFCv3e9xAD6ny+l3vLud5/f9fz1AwcE6uz1CPjvEwzlGxDzHRzZF 154 yUbKSsw4i02KL89P0FAQKKwno6KZKo4erKvSEJ9WVKumpJrV2tMpW5SlIFbcV9Fh4mJjDbiy 155 M7OwyEOcyUtAUulENWg4qLvIPtJmZ229a25qSWxxuXNCdXHz8eo/9rh07kk8b3RD8Mzx/uzw 156 /Hr1og20BM+bPD2cFB5j2LBhKl63kJiiGCxIRYwlLuJiciMKxxGkQIrYKIQaLZJHHK5k2VJE 157 smXM7LWbp+/Nv5s2cwo8V20PvG+PGPlc47ONo2f+eCoCx3QdU2kngd47anRpGqtBi568WTRn 158 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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