%!PS-Adobe-2.0 %%Version: 0.1 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3.2 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /show {{//show} 0 get exec} bind def % so later references don't bind /widthshow {{//widthshow} 0 get exec} bind def /stringwidth {{//stringwidth} 0 get exec} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale addmetrics 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /addmetrics { /Symbol /S null Sdefs cf /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newencoding exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall newencoding type /arraytype eq {newdict /Encoding newencoding put} if newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark % % Encoding vector and redefinition of findfont for the ISO Latin1 standard. % The 18 characters missing from ROM based fonts on older printers are noted % below. % /ISOLatin1Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar % missing /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree % missing /plusminus % missing /twosuperior % missing /threesuperior % missing /acute /mu % missing /paragraph /periodcentered /cedilla /onesuperior % missing /ordmasculine /guillemotright /onequarter % missing /onehalf % missing /threequarters % missing /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth % missing /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply % missing /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute % missing /Thorn % missing /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth % missing /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide % missing /oslash /ugrave /uacute /ucircumflex /udieresis /yacute % missing /thorn % missing /ydieresis ] def /NewFontDirectory FontDirectory maxlength dict def % % Apparently no guarantee findfont is defined in systemdict so the obvious % % systemdict /findfont get exec % % can generate an error. So far the only exception is a VT600 (version 48.0). % userdict /@RealFindfont known not { userdict begin /@RealFindfont systemdict begin /findfont load end def end } if /findfont { dup NewFontDirectory exch known not { dup %dup systemdict /findfont get exec % not always in systemdict dup userdict /@RealFindfont get exec dup /Encoding get StandardEncoding eq { dup length dict begin {1 index /FID ne {def}{pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /DummyFontName exch definefont } if NewFontDirectory 3 1 roll put } if NewFontDirectory exch get } bind def %%Patch from lp %%EndPatch from lp setup /build_X263a{ pop gsave currentpoint translate 7.44 7.68 scale ptsize dup scale 31 32 true [31 0 0 -32 2 31] {< 0007c000 007ff800 01c00600 03000180 060000c0 08000060 18000030 30000018 20000008 4000000c 40183004 c0183006 80183002 80000002 80000002 80000002 860000c2 8e0000e2 8e0000e2 9a0001e2 c3000186 41800304 41c0060c 60f01c08 303ff818 101fe030 08000060 040000c0 03000180 01c00700 007cfc00 000fe000 >} imagemask grestore } def %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 12 /LucidaSans-Demi f (Hello) 2521 1230 w (World) 2881 1230 w (or) 2814 1380 w 12 /LucidaSansUnicode03 f (\232\261\273\267\274\255\301\261) 2377 1530 w 12 /LucidaSansUnicode00 f 12 /LucidaSansUnicode03 f (\272\314\303\274\265) 3024 1530 w 12 /LucidaSans-Demi f (or) 2814 1680 w save 2438 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore save 2564 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore save 2690 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore save 2816 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore save 2942 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore save 3069 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore save 3195 1830 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore 10 /LucidaSans-Italic f (Rob Pike) 2674 2070 w (Ken Thompson) 2523 2190 w (rob,ken@plan9.att.com) 2313 2430 w (ABSTRACT) 2626 2870 w 10 /LucidaSansUnicode00 f (Plan) 1330 3130 w (9) 1572 3130 w (from) 1676 3130 w (Bell) 1949 3130 w (Labs) 2162 3130 w (has) 2425 3130 w (recently) 2634 3130 w (been) 3059 3130 w (converted) 3337 3130 w (from) 3857 3130 w (ASCII) 4131 3130 w (to) 4423 3130 w (an) 4563 3130 w (ASCII-compatible) 1080 3250 w (variant) 1962 3250 w (of) 2329 3250 w (the) 2463 3250 w (Unicode) 2654 3250 w (Standard,) 3081 3250 w (a) 3579 3250 w (16-bit) 3670 3250 w (character) 4019 3250 w (set.) 4504 3250 w (In) 1080 3370 w (this) 1208 3370 w (paper) 1424 3370 w (we) 1739 3370 w (explain) 1909 3370 w (the) 2301 3370 w (reasons) 2493 3370 w (for) 2907 3370 w (the) 3083 3370 w (change,) 3275 3370 w (describe) 3692 3370 w (the) 4139 3370 w (charac\255) 4332 3370 w (ter) 1080 3490 w (set) 1252 3490 w (and) 1434 3490 w (representation) 1652 3490 w (we) 2397 3490 w (chose,) 2568 3490 w (and) 2919 3490 w (present) 3136 3490 w (the) 3539 3490 w (programming) 3731 3490 w (mod\255) 4430 3490 w (els) 1080 3610 w (and) 1251 3610 w (software) 1467 3610 w (changes) 1918 3610 w (that) 2353 3610 w (support) 2580 3610 w (the) 2994 3610 w (new) 3185 3610 w (text) 3416 3610 w (format.) 3643 3610 w (Although) 4067 3610 w (we) 4547 3610 w (stopped) 1080 3730 w (short of full internationalization) 1507 3730 w 10 /LucidaSansUnicode20 f (\024) 3055 3730 w 10 /LucidaSansUnicode00 f (for example, system error mes\255) 3155 3730 w (sages) 1080 3850 w (are) 1394 3850 w (in) 1585 3850 w (Unixese,) 1715 3850 w (not) 2170 3850 w (Japanese) 2369 3850 w 10 /LucidaSansUnicode20 f (\024) 2798 3850 w 10 /LucidaSansUnicode00 f (we) 2898 3850 w (believe) 3070 3850 w (Plan) 3450 3850 w (9) 3690 3850 w (is) 3792 3850 w (the) 3911 3850 w (first) 4105 3850 w (system) 4340 3850 w (to) 1080 3970 w (treat) 1230 3970 w (the) 1508 3970 w (representation) 1715 3970 w (of) 2474 3970 w (all) 2624 3970 w (major) 2789 3970 w (languages) 3121 3970 w (on) 3667 3970 w (a) 3841 3970 w (uniform,) 3947 3970 w (equal) 4415 3970 w (footing throughout all its software.) 1080 4090 w 10 /LucidaSans-Demi f (Introduction) 720 4450 w 10 /LucidaSansUnicode00 f (The) 970 4606 w (world) 1201 4606 w (is) 1522 4606 w (multilingual) 1652 4606 w (but) 2281 4606 w (most) 2494 4606 w (computer) 2787 4606 w (systems) 3302 4606 w (are) 3744 4606 w (based) 3947 4606 w (on) 4286 4606 w (English) 4460 4606 w (and) 4860 4606 w (ASCII.) 720 4726 w (The) 1071 4726 w (first) 1289 4726 w (release) 1521 4726 w (of) 1902 4726 w (Plan) 2037 4726 w (9) 2275 4726 w ([Pike90],) 2375 4726 w (a) 2833 4726 w (new) 2924 4726 w (distributed) 3155 4726 w (operating) 3722 4726 w (system) 4224 4726 w (from) 4600 4726 w (Bell) 4868 4726 w (Laboratories,) 720 4846 w (seemed) 1398 4846 w (a) 1816 4846 w (good) 1914 4846 w (occasion) 2204 4846 w (to) 2669 4846 w (correct) 2811 4846 w (this) 3193 4846 w (chauvinism.) 3416 4846 w (It) 4070 4846 w (is) 4180 4846 w (easier) 4304 4846 w (to) 4636 4846 w (make) 4778 4846 w (such deep changes when building new systems than by refitting old ones.) 720 4966 w (The) 970 5122 w (ANSI) 1192 5122 w (C) 1459 5122 w (standard) 1569 5122 w ([ANSIC]) 2037 5122 w (contains) 2439 5122 w (some) 2888 5122 w (guidance) 3190 5122 w (on) 3671 5122 w (the) 3835 5122 w (matter) 4031 5122 w (of) 4391 5122 w 10 /LucidaSansUnicode20 f (\030) 4530 5122 w 10 /LucidaSansUnicode00 f (wide) 4562 5122 w 10 /LucidaSansUnicode20 f (\031) 4787 5122 w 10 /LucidaSansUnicode00 f (and) 4860 5122 w 10 /LucidaSansUnicode20 f (\030) 720 5242 w 10 /LucidaSansUnicode00 f (multi-byte) 752 5242 w 10 /LucidaSansUnicode20 f (\031) 1268 5242 w 10 /LucidaSansUnicode00 f (characters) 1333 5242 w (but) 1866 5242 w (falls) 2061 5242 w (far short of solving the myriad associated problems.) 2295 5242 w (We) 4898 5242 w (could) 720 5362 w (find) 1031 5362 w (no) 1267 5362 w (literature) 1435 5362 w (on) 1923 5362 w (how) 2091 5362 w (to) 2336 5362 w (convert) 2479 5362 w (a) 2884 5362 w 10 /LucidaSans-Italic f (system) 2985 5362 w 10 /LucidaSansUnicode00 f (to) 3368 5362 w (larger) 3512 5362 w (character) 3842 5362 w (sets,) 4337 5362 w (although) 4610 5362 w (some) 720 5482 w (individual) 1020 5482 w 10 /LucidaSans-Italic f (programs) 1532 5482 w 10 /LucidaSansUnicode00 f (had) 2049 5482 w (been) 2268 5482 w (converted.) 2544 5482 w (This) 3126 5482 w (paper) 3370 5482 w (reports) 3687 5482 w (what) 4076 5482 w (we) 4346 5482 w (discovered) 4517 5482 w (as we explored the problem of representing multilingual text at all levels of an operating) 720 5602 w (system,) 720 5722 w (from) 1131 5722 w (the) 1402 5722 w (file) 1595 5722 w (system) 1784 5722 w (and) 2162 5722 w (kernel) 2380 5722 w (through) 2720 5722 w (the) 3145 5722 w (applications) 3338 5722 w (and) 3961 5722 w (up) 4179 5722 w (to) 4342 5722 w (the) 4478 5722 w (window) 4671 5722 w (system and display.) 720 5842 w (Plan) 970 5998 w (9) 1216 5998 w (has) 1324 5998 w (not) 1537 5998 w (been) 1742 5998 w 10 /LucidaSansUnicode20 f (\030) 2024 5998 w 10 /LucidaSansUnicode00 f (internationalized) 2056 5998 w 10 /LucidaSansUnicode20 f (\031) 2876 5998 w 10 /LucidaSansUnicode00 f (:) 2908 5998 w (its) 2985 5998 w (manuals) 3147 5998 w (are) 3599 5998 w (in) 3796 5998 w (English,) 3932 5998 w (its) 4358 5998 w (error) 4521 5998 w (mes\255) 4807 5998 w (sages) 720 6118 w (are) 1030 6118 w (in) 1217 6118 w (English,) 1343 6118 w (and) 1759 6118 w (it) 1974 6118 w (can) 2075 6118 w (display) 2278 6118 w (text) 2655 6118 w (that) 2881 6118 w (goes) 3107 6118 w (from) 3372 6118 w (left) 3639 6118 w (to) 3833 6118 w (right) 3966 6118 w (only.) 4232 6118 w (But) 4535 6118 w (before) 4726 6118 w (we) 720 6238 w (can) 898 6238 w (address) 1111 6238 w (these) 1536 6238 w (other) 1843 6238 w (problems,) 2145 6238 w (we) 2679 6238 w (need) 2858 6238 w (to) 3141 6238 w (handle,) 3285 6238 w (uniformly) 3690 6238 w (and) 4202 6238 w (comfortably,) 4428 6238 w (the) 720 6358 w (textual) 910 6358 w (representation) 1282 6358 w (of) 2024 6358 w (all) 2157 6358 w (the) 2305 6358 w (major) 2495 6358 w (written) 2810 6358 w (languages.) 3184 6358 w (That) 3777 6358 w (subproblem) 4029 6358 w (is) 4646 6358 w (richer) 4760 6358 w (than we had anticipated.) 720 6478 w 8 /S1 f (__________________) 720 6880 w 8 /LucidaSansUnicode00 f (Originally) 720 6980 w (appeared,) 1119 6980 w (in) 1532 6980 w (a) 1631 6980 w (slightly) 1701 6980 w (different) 2009 6980 w (form,) 2372 6980 w (in) 2611 6980 w 8 /LucidaSans-Italic f (Proc.) 2711 6980 w (of) 2934 6980 w (the) 3037 6980 w (Winter) 3186 6980 w (1993) 3467 6980 w (USENIX) 3694 6980 w (Conf.,) 3996 6980 w 8 /LucidaSansUnicode00 f (pp.) 4255 6980 w (43-50,) 4408 6980 w (San) 720 7080 w (Diego) 883 7080 w cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 /LucidaSansUnicode00 f (\255 2 \255) 2783 480 w 10 /LucidaSans-Demi f (Standards) 720 840 w 10 /LucidaSansUnicode00 f (Our) 970 996 w (first) 1185 996 w (step) 1414 996 w (was) 1655 996 w (to) 1872 996 w (select) 2004 996 w (a) 2318 996 w (standard.) 2407 996 w (At) 2932 996 w (the) 3072 996 w (time) 3261 996 w (\(January) 3510 996 w (1992\),) 3935 996 w (there) 4286 996 w (were) 4572 996 w (only) 4836 996 w (two) 720 1116 w (viable) 959 1116 w (options:) 1307 1116 w (ISO) 1767 1116 w (10646) 1992 1116 w ([ISO10646]) 2371 1116 w (and) 2977 1116 w (Unicode) 3221 1116 w ([Unicode].) 3676 1116 w (The) 4260 1116 w (documents) 4504 1116 w (describing both proposals were still in the draft stage.) 720 1236 w (The) 970 1392 w (draft) 1185 1392 w (of) 1452 1392 w (ISO) 1584 1392 w (10646) 1779 1392 w (was) 2128 1392 w (not) 2345 1392 w (very) 2539 1392 w (attractive) 2774 1392 w (to) 3258 1392 w (us.) 3390 1392 w (It) 3601 1392 w (defined) 3701 1392 w (a) 4102 1392 w (sparse) 4192 1392 w (set) 4544 1392 w (of) 4723 1392 w (32-) 4856 1392 w (bit) 720 1512 w (characters,) 899 1512 w (which) 1481 1512 w (would) 1812 1512 w (be) 2153 1512 w (hard) 2321 1512 w (to) 2591 1512 w (implement) 2738 1512 w (and) 3305 1512 w (have) 3534 1512 w (punitive) 3808 1512 w (storage) 4247 1512 w (require\255) 4659 1512 w (ments.) 720 1632 w (Also,) 1123 1632 w (the) 1405 1632 w (draft) 1600 1632 w (attempted) 1873 1632 w (to) 2410 1632 w (mollify) 2548 1632 w (national) 2918 1632 w (interests) 3349 1632 w (by) 3810 1632 w (allocating) 3966 1632 w (16-bit) 4477 1632 w (sub\255) 4831 1632 w (spaces) 720 1752 w (to) 1081 1752 w (national) 1213 1752 w (committees) 1637 1752 w (to) 2235 1752 w (partition) 2367 1752 w (individually.) 2815 1752 w (The) 3467 1752 w (suggested) 3682 1752 w (mode) 4216 1752 w (of) 4523 1752 w (use) 4655 1752 w (was) 4857 1752 w (to) 720 1872 w 10 /LucidaSansUnicode20 f (\030\030) 858 1872 w 10 /LucidaSansUnicode00 f (flip) 922 1872 w 10 /LucidaSansUnicode20 f (\031\031) 1080 1872 w 10 /LucidaSansUnicode00 f (between) 1184 1872 w (separate) 1631 1872 w (national) 2085 1872 w (standards) 2515 1872 w (to) 3033 1872 w (implement) 3171 1872 w (the) 3729 1872 w (international) 3925 1872 w (standard.) 4581 1872 w (This) 720 1992 w (did) 963 1992 w (not) 1156 1992 w (strike) 1354 1992 w (us) 1664 1992 w (as) 1815 1992 w (a) 1959 1992 w (sound) 2052 1992 w (basis) 2389 1992 w (for) 2676 1992 w (a) 2853 1992 w (character) 2946 1992 w (set.) 3433 1992 w (As) 3678 1992 w (well,) 3835 1992 w (transmitting) 4095 1992 w (32-bit) 4727 1992 w (values) 720 2112 w (in) 1067 2112 w (a) 1200 2112 w (byte) 1297 2112 w (stream,) 1547 2112 w (such) 1954 2112 w (as) 2222 2112 w (in) 2370 2112 w (pipes,) 2503 2112 w (would) 2839 2112 w (be) 3173 2112 w (expensive) 3334 2112 w (and) 3862 2112 w (hard) 4085 2112 w (to) 4349 2112 w (implement.) 4490 2112 w (Since) 720 2232 w (the) 1012 2232 w (standard) 1207 2232 w (does) 1674 2232 w (not) 1945 2232 w (define) 2145 2232 w (a) 2488 2232 w (byte) 2582 2232 w (order) 2829 2232 w (for) 3130 2232 w (such) 3308 2232 w (transmission,) 3573 2232 w (the) 4266 2232 w (byte) 4460 2232 w (stream) 4707 2232 w (would also have to carry state to enable the values to be recovered.) 720 2352 w (The) 970 2508 w (Unicode) 1188 2508 w (Standard) 1616 2508 w (is) 2083 2508 w (a) 2200 2508 w (proposal) 2292 2508 w (by) 2753 2508 w (a) 2906 2508 w (consortium) 2999 2508 w (of) 3585 2508 w (mostly) 3721 2508 w (American) 4082 2508 w (computer) 4576 2508 w (companies) 720 2628 w (formed) 1285 2628 w (to) 1680 2628 w (protest) 1822 2628 w (the) 2212 2628 w (technical) 2411 2628 w (failings) 2887 2628 w (of) 3284 2628 w (ISO) 3425 2628 w (10646.) 3629 2628 w (It) 4051 2628 w (defines) 4160 2628 w (a) 4557 2628 w (uniform) 4655 2628 w (16-bit) 720 2748 w (code) 1078 2748 w (based) 1354 2748 w (on) 1687 2748 w (the) 1855 2748 w (principle) 2055 2748 w (of) 2523 2748 w (unification:) 2666 2748 w (two) 3257 2748 w (characters) 3477 2748 w (are) 4022 2748 w (the) 4219 2748 w (same) 4420 2748 w (if) 4721 2748 w (they) 4833 2748 w (look) 720 2868 w (the) 962 2868 w (same) 1150 2868 w (even) 1438 2868 w (though) 1697 2868 w (they) 2076 2868 w (are) 2316 2868 w (from) 2501 2868 w (different) 2766 2868 w (languages.) 3217 2868 w (This) 3808 2868 w (principle,) 4046 2868 w (called Han) 4534 2868 w (unification,) 720 2988 w (allows) 1305 2988 w (the) 1646 2988 w (large) 1840 2988 w (Japanese,) 2122 2988 w (Chinese,) 2622 2988 w (and) 3078 2988 w (Korean) 3297 2988 w (character) 3676 2988 w (sets) 4164 2988 w (to) 4398 2988 w (be) 4535 2988 w (packed) 4694 2988 w (comfortably into a 16-bit representation.) 720 3108 w (We) 970 3264 w (chose) 1148 3264 w (the) 1465 3264 w (Unicode) 1656 3264 w (Standard) 2084 3264 w (for) 2551 3264 w (its) 2727 3264 w (technical) 2881 3264 w (merits) 3350 3264 w (and) 3694 3264 w (because) 3911 3264 w (its) 4342 3264 w (code) 4496 3264 w (space) 4764 3264 w (was) 720 3384 w (better) 956 3384 w (defined.) 1299 3384 w (Moreover,) 1782 3384 w (the) 2321 3384 w (Unicode) 2529 3384 w (Consortium) 2973 3384 w (was) 3592 3384 w (derailing) 3827 3384 w (the) 4305 3384 w (ISO) 4512 3384 w (10646) 4725 3384 w (standard.) 720 3504 w (\(Now,) 1244 3504 w (in) 1554 3504 w (1995,) 1679 3504 w (ISO) 1997 3504 w (10646) 2192 3504 w (is) 2541 3504 w (a) 2655 3504 w (standard) 2744 3504 w (with) 3205 3504 w (one) 3444 3504 w (16-bit) 3657 3504 w (group) 4004 3504 w (defined,) 4327 3504 w (which) 4759 3504 w (is) 720 3624 w (almost) 847 3624 w (exactly) 1220 3624 w (the) 1608 3624 w (Unicode) 1810 3624 w (Standard.) 2248 3624 w (As) 2789 3624 w (most) 2956 3624 w (people) 3245 3624 w (expected,) 3619 3624 w (the) 4140 3624 w (two) 4341 3624 w (standards) 4562 3624 w (bodies reached a d\351tente and ISO 10646 and Unicode represent the same character set.\)) 720 3744 w (The) 970 3900 w (Unicode) 1190 3900 w (Standard) 1620 3900 w (defines) 2089 3900 w (an) 2482 3900 w (adequate) 2638 3900 w (character) 3124 3900 w (set) 3612 3900 w (but) 3795 3900 w (an) 3997 3900 w (unreasonable) 4154 3900 w (rep\255) 4847 3900 w (resentation.) 720 4020 w (It) 1381 4020 w (states) 1497 4020 w (that) 1834 4020 w (all) 2075 4020 w (characters) 2238 4020 w (are) 2788 4020 w (16) 2990 4020 w (bits) 3165 4020 w (wide) 3394 4020 w (and) 3668 4020 w (are) 3897 4020 w (communicated) 4098 4020 w (and) 4860 4020 w (stored) 720 4140 w (in) 1065 4140 w (16-bit) 1192 4140 w (units.) 1541 4140 w (It) 1882 4140 w (also) 1984 4140 w (reserves) 2216 4140 w (a) 2656 4140 w (pair) 2747 4140 w (of) 2971 4140 w (characters) 3105 4140 w (\(hexadecimal) 3641 4140 w (FFFE) 4321 4140 w (and) 4574 4140 w (FEFF\)) 4791 4140 w (to) 720 4260 w (detect) 864 4260 w (byte) 1210 4260 w (order) 1464 4260 w (in) 1772 4260 w (transmitted) 1909 4260 w (text,) 2516 4260 w (requiring) 2785 4260 w (state) 3276 4260 w (in) 3557 4260 w (the) 3693 4260 w (byte) 3893 4260 w (stream.) 4146 4260 w (\(The) 4588 4260 w (Uni\255) 4847 4260 w (code) 720 4380 w (Consortium) 997 4380 w (was) 1609 4380 w (thinking) 1838 4380 w (of) 2285 4380 w (files,) 2429 4380 w (not) 2709 4380 w (pipes.\)) 2915 4380 w (To) 3320 4380 w (adopt) 3491 4380 w (this) 3817 4380 w (encoding,) 4043 4380 w (we) 4568 4380 w (would) 4748 4380 w (have) 720 4500 w (had) 991 4500 w (to) 1217 4500 w (convert) 1361 4500 w (all) 1767 4500 w (text) 1926 4500 w (going) 2163 4500 w (into) 2484 4500 w (and) 2718 4500 w (out) 2943 4500 w (of) 3148 4500 w (Plan) 3291 4500 w (9) 3537 4500 w (between) 3645 4500 w (ASCII) 4097 4500 w (and) 4392 4500 w (Unicode,) 4617 4500 w (which) 720 4620 w (cannot) 1034 4620 w (be) 1395 4620 w (done.) 1547 4620 w (Within) 1886 4620 w (a) 2224 4620 w (single) 2313 4620 w (program,) 2636 4620 w (in) 3118 4620 w (command) 3243 4620 w (of) 3755 4620 w (all) 3887 4620 w (its) 4034 4620 w (input) 4185 4620 w (and) 4472 4620 w (output,) 4686 4620 w (it) 720 4740 w (is) 834 4740 w (possible) 962 4740 w (to) 1413 4740 w (define) 1559 4740 w (characters) 1910 4740 w (as) 2457 4740 w (16-bit) 2610 4740 w (quantities;) 2970 4740 w (in) 3530 4740 w (the) 3668 4740 w (context) 3870 4740 w (of) 4282 4740 w (a) 4427 4740 w (networked) 4529 4740 w (system) 720 4860 w (with) 1093 4860 w (hundreds) 1331 4860 w (of) 1824 4860 w (applications) 1955 4860 w (on) 2573 4860 w (diverse) 2729 4860 w (machines) 3111 4860 w (by) 3604 4860 w (different) 3753 4860 w (manufacturers,) 4205 4860 w (it) 4974 4860 w (is impossible.) 720 4980 w (We) 970 5136 w (needed) 1153 5136 w (a) 1550 5136 w (way) 1646 5136 w (to) 1871 5136 w (adapt) 2010 5136 w (the) 2324 5136 w (Unicode) 2520 5136 w (Standard) 2952 5136 w (to) 3423 5136 w (the) 3562 5136 w (tools-and-pipes) 3759 5136 w (model) 4598 5136 w (of) 4942 5136 w (text) 720 5256 w (processing) 976 5256 w (embodied) 1568 5256 w (by) 2117 5256 w (the) 2297 5256 w (Unix) 2517 5256 w (system.) 2803 5256 w (To) 3271 5256 w (do) 3459 5256 w (that,) 3647 5256 w (we) 3934 5256 w (needed) 4131 5256 w (an) 4551 5256 w (ASCII-) 4732 5256 w (compatible) 720 5376 w (textual) 1303 5376 w (representation) 1686 5376 w (of) 2439 5376 w (Unicode) 2583 5376 w (characters) 3020 5376 w (for) 3566 5376 w (transmission) 3751 5376 w (and) 4419 5376 w (storage.) 4645 5376 w (In) 720 5496 w (the) 847 5496 w (draft) 1038 5496 w (ISO) 1307 5496 w (standard) 1504 5496 w (there) 1966 5496 w (was) 2253 5496 w (an) 2471 5496 w (informative) 2623 5496 w (\(non-required\)) 3210 5496 w (Annex) 3965 5496 w (called) 4310 5496 w (UTF) 4628 5496 w (that) 4849 5496 w (provided) 720 5616 w (a) 1188 5616 w (byte) 1283 5616 w (stream) 1531 5616 w (encoding) 1904 5616 w (of) 2390 5616 w (the) 2528 5616 w (32-bit) 2723 5616 w (ISO) 3076 5616 w (code.) 3277 5616 w (The) 3612 5616 w (encoding) 3834 5616 w (uses) 4321 5616 w (multibyte) 4582 5616 w (sequences) 720 5736 w (composed) 1268 5736 w (from) 1807 5736 w (the) 2079 5736 w (190) 2274 5736 w (printable) 2503 5736 w (characters) 2978 5736 w (of) 3518 5736 w (Latin-1) 3656 5736 w (to) 4053 5736 w (represent) 4190 5736 w (charac\255) 4692 5736 w (ter values larger than 159.) 720 5856 w (The) 970 6012 w (UTF) 1186 6012 w (encoding) 1407 6012 w (has) 1888 6012 w (several) 2091 6012 w (good) 2466 6012 w (properties.) 2748 6012 w (By) 3345 6012 w (far) 3490 6012 w (the) 3659 6012 w (most) 3850 6012 w (important) 4128 6012 w (is) 4642 6012 w (that) 4758 6012 w (a) 4985 6012 w (byte) 720 6132 w (in) 968 6132 w (the) 1098 6132 w (ASCII) 1292 6132 w (range) 1581 6132 w (0-127) 1896 6132 w (represents) 2245 6132 w (itself) 2798 6132 w (in) 3076 6132 w (UTF.) 3206 6132 w (Thus) 3495 6132 w (UTF) 3772 6132 w (is) 3997 6132 w (backward) 4116 6132 w (compati\255) 4618 6132 w (ble with ASCII.) 720 6252 w (UTF) 970 6408 w (has) 1195 6408 w (other) 1402 6408 w (advantages.) 1698 6408 w (It) 2349 6408 w (is) 2454 6408 w (a) 2573 6408 w (byte) 2668 6408 w (encoding) 2916 6408 w (and) 3402 6408 w (is) 3622 6408 w (therefore) 3742 6408 w (byte-order) 4229 6408 w (inde\255) 4797 6408 w (pendent.) 720 6528 w (ASCII) 1225 6528 w (control) 1516 6528 w (characters) 1899 6528 w (appear) 2440 6528 w (in) 2814 6528 w (the) 2946 6528 w (byte) 3142 6528 w (stream) 3391 6528 w (only) 3765 6528 w (as) 4010 6528 w (themselves,) 4157 6528 w (never) 4773 6528 w (as) 720 6648 w (an) 879 6648 w (element) 1049 6648 w (of) 1491 6648 w (a) 1642 6648 w (sequence) 1750 6648 w (encoding) 2260 6648 w (another) 2759 6648 w (character,) 3187 6648 w (so) 3722 6648 w (newline) 3888 6648 w (bytes) 4313 6648 w (separate) 4626 6648 w (lines) 720 6768 w (of) 990 6768 w (UTF) 1131 6768 w (text.) 1360 6768 w (Finally,) 1658 6768 w (ANSI) 2043 6768 w (C) 2312 6768 w 10 /LucidaSansUnicode20 f (\031) 2381 6768 w 10 /LucidaSansUnicode00 f (s) 2413 6768 w 10 /LucidaTypewriter f (strcmp) 2507 6768 w 10 /LucidaSansUnicode00 f (function) 2982 6768 w (applied) 3426 6768 w (to) 3827 6768 w (UTF) 3968 6768 w (strings) 4197 6768 w (preserves) 4573 6768 w (the ordering of Unicode characters.) 720 6888 w (To) 970 7044 w (encode) 1149 7044 w (and) 1553 7044 w (decode) 1789 7044 w (UTF) 2195 7044 w (is) 2437 7044 w (expensive) 2573 7044 w (\(involving) 3115 7044 w (multiplication,) 3642 7044 w (division,) 4396 7044 w (and) 4860 7044 w (modulo) 720 7164 w (operations\)) 1126 7164 w (but) 1712 7164 w (workable.) 1911 7164 w (UTF) 2451 7164 w 10 /LucidaSansUnicode20 f (\031) 2637 7164 w 10 /LucidaSansUnicode00 f (s) 2669 7164 w (major) 2756 7164 w (disadvantage) 3072 7164 w (is) 3748 7164 w (that) 3864 7164 w (the) 4091 7164 w (encoding) 4282 7164 w (is) 4764 7164 w (not) 4880 7164 w (self-synchronizing.) 720 7284 w (It) 1730 7284 w (is) 1830 7284 w (in) 1945 7284 w (general) 2071 7284 w (impossible) 2467 7284 w (to) 3027 7284 w (find) 3160 7284 w (the) 3386 7284 w (character) 3576 7284 w (boundaries) 4060 7284 w (in) 4638 7284 w (a) 4764 7284 w (UTF) 4854 7284 w cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 /LucidaSansUnicode00 f (\255 3 \255) 2783 480 w (string) 720 840 w (without) 1054 840 w (reading) 1471 840 w (from) 1891 840 w (the) 2175 840 w (beginning) 2382 840 w (of) 2921 840 w (the) 3070 840 w (string,) 3276 840 w (although) 3641 840 w (in) 4122 840 w (practice) 4264 840 w (control) 4698 840 w (characters such as newlines, tabs, and blanks provide synchronization points.) 720 960 w (In) 970 1116 w (August) 1100 1116 w (1992,) 1482 1116 w (X-Open) 1805 1116 w (circulated) 2224 1116 w (a) 2738 1116 w (proposal) 2833 1116 w (for) 3297 1116 w (another) 3476 1116 w (UTF-like) 3890 1116 w (byte) 4346 1116 w (encoding) 4594 1116 w (of) 720 1236 w (Unicode) 865 1236 w (characters.) 1303 1236 w (Their) 1914 1236 w (major) 2212 1236 w (concern) 2538 1236 w (was) 2968 1236 w (that) 3197 1236 w (an) 3434 1236 w (embedded) 3597 1236 w (character) 4156 1236 w (in) 4651 1236 w (a) 4788 1236 w (file) 4889 1236 w (name) 720 1356 w (\(in) 1028 1356 w (particular) 1194 1356 w (a) 1699 1356 w (slash\)) 1797 1356 w (could) 2121 1356 w (be) 2430 1356 w (part) 2592 1356 w (of) 2831 1356 w (an) 2972 1356 w (escape) 3132 1356 w (sequence) 3507 1356 w (in) 4007 1356 w (UTF) 4141 1356 w (and) 4370 1356 w (therefore) 4593 1356 w (confuse) 720 1476 w (a) 1142 1476 w (traditional) 1239 1476 w (file) 1779 1476 w (system.) 1972 1476 w (Their) 2418 1476 w (proposal) 2711 1476 w (would) 3177 1476 w (allow) 3511 1476 w (all) 3804 1476 w (7-bit) 3958 1476 w (ASCII) 4249 1476 w (characters) 4540 1476 w (to) 720 1596 w (represent) 862 1596 w (themselves) 1369 1596 w 10 /LucidaSans-Italic f (and) 1956 1596 w (only) 2185 1596 w (themselves) 2433 1596 w 10 /LucidaSansUnicode00 f (in) 3011 1596 w (text.) 3147 1596 w (Multibyte) 3447 1596 w (sequences) 3943 1596 w (would) 4496 1596 w (con\255) 4833 1596 w (tain) 720 1716 w (only) 945 1716 w (characters) 1191 1716 w (with) 1733 1716 w (the) 1980 1716 w (high) 2177 1716 w (bit) 2434 1716 w (set.) 2605 1716 w (We) 2855 1716 w (proposed) 3039 1716 w (a) 3539 1716 w (modification) 3635 1716 w (to) 4283 1716 w (the) 4422 1716 w (new) 4618 1716 w (UTF) 4854 1716 w (that) 720 1836 w (would) 957 1836 w (address) 1296 1836 w (our) 1723 1836 w (synchronization) 1934 1836 w (problem.) 2753 1836 w (Our) 3270 1836 w (proposal,) 3498 1836 w (which) 4001 1836 w (was) 4329 1836 w (originally) 4591 1836 w (known) 720 1956 w (informally) 1091 1956 w (as) 1630 1956 w (UTF-2) 1787 1956 w (and) 2145 1956 w (FSS-UTF,) 2376 1956 w (is) 2865 1956 w (now) 2996 1956 w (referred) 3247 1956 w (to) 3689 1956 w (as) 3838 1956 w (UTF-8) 3995 1956 w (and) 4353 1956 w (has) 4584 1956 w (been) 4803 1956 w (approved by ISO to become Annex P to ISO 10646.) 720 2076 w (The) 970 2232 w (model) 1195 2232 w (for) 1542 2232 w (text) 1726 2232 w (in) 1962 2232 w (Plan) 2098 2232 w (9) 2344 2232 w (is) 2452 2232 w (chosen) 2577 2232 w (from) 2965 2232 w (these) 3242 2232 w (three) 3549 2232 w (standards*:) 3846 2232 w (the) 4449 2232 w (Unicode) 4649 2232 w (character) 720 2352 w (set) 1219 2352 w (encoded) 1412 2352 w (as) 1873 2352 w (a) 2028 2352 w (byte) 2132 2352 w (stream) 2389 2352 w (by) 2771 2352 w (UTF-8,) 2935 2352 w (from) 3323 2352 w (\(soon) 3604 2352 w (to) 3921 2352 w (be\)) 4068 2352 w (Annex) 4269 2352 w (P) 4628 2352 w (of) 4732 2352 w (ISO) 4879 2352 w (10646.) 720 2472 w (Although) 1135 2472 w (this) 1615 2472 w (mixture) 1830 2472 w (may) 2245 2472 w (seem) 2481 2472 w (like) 2773 2472 w (a) 2981 2472 w (precarious) 3072 2472 w (position) 3618 2472 w (for) 4048 2472 w (us) 4224 2472 w (to) 4374 2472 w (adopt,) 4509 2472 w (it) 4857 2472 w (is) 4960 2472 w (not) 720 2592 w (as) 926 2592 w (bad) 1078 2592 w (as) 1305 2592 w (it) 1457 2592 w (sounds.) 1569 2592 w (ISO) 2029 2592 w (10646) 2236 2592 w (and) 2596 2592 w (the) 2821 2592 w (Unicode) 3021 2592 w (Standard) 3457 2592 w (have) 3932 2592 w (converged,) 4202 2592 w (other) 4783 2592 w (systems) 720 2712 w (such) 1146 2712 w (as) 1407 2712 w (Linux) 1548 2712 w (have) 1850 2712 w (adopted) 2110 2712 w (the) 2543 2712 w (same) 2734 2712 w (character) 3025 2712 w (set) 3510 2712 w (and) 3690 2712 w (encoding,) 3906 2712 w (and) 4420 2712 w (the) 4636 2712 w (gen\255) 4827 2712 w (eral) 720 2832 w (feeling) 965 2832 w (seems) 1360 2832 w (to) 1731 2832 w (be) 1893 2832 w (that) 2076 2832 w (Unicode) 2331 2832 w (and) 2786 2832 w (UTF-8) 3030 2832 w (will) 3401 2832 w (be) 3629 2832 w (accepted) 3812 2832 w (as) 4308 2832 w (the) 4477 2832 w (way) 4695 2832 w (to) 4942 2832 w (exchange text between systems.) 720 2952 w (The prognosis for wide acceptance is good.) 2366 2952 w (There) 970 3108 w (are) 1288 3108 w (a) 1480 3108 w (couple) 1575 3108 w (of) 1937 3108 w (aspects) 2075 3108 w (of) 2479 3108 w (the) 2617 3108 w (Unicode) 2812 3108 w (Standard) 3244 3108 w (we) 3715 3108 w (have) 3889 3108 w (not) 4155 3108 w (faced.) 4356 3108 w (One) 4723 3108 w (is) 4960 3108 w (the) 720 3228 w (issue) 918 3228 w (of) 1210 3228 w (right-to-left) 1351 3228 w (text) 1998 3228 w (such) 2232 3228 w (as) 2501 3228 w (Hebrew) 2650 3228 w (or) 3060 3228 w (Arabic.) 3205 3228 w (Since) 3620 3228 w (that) 3915 3228 w (is) 4149 3228 w (an) 4272 3228 w (issue) 4432 3228 w (of) 4724 3228 w (dis\255) 4864 3228 w (play,) 720 3348 w (not) 989 3348 w (representation,) 1187 3348 w (we) 1964 3348 w (believe) 2136 3348 w (we) 2516 3348 w (can) 2688 3348 w (defer) 2895 3348 w (that) 3187 3348 w (problem) 3417 3348 w (for) 3862 3348 w (the) 4040 3348 w (moment) 4234 3348 w (without) 4675 3348 w (affecting) 720 3468 w (our) 1180 3468 w (ability) 1378 3468 w (to) 1706 3468 w (solve) 1837 3468 w (it) 2119 3468 w (later.) 2218 3468 w (Another) 2533 3468 w (issue) 2954 3468 w (is) 3236 3468 w (diacriticals) 3349 3468 w (and) 3902 3468 w 10 /LucidaSansUnicode20 f (\030) 4115 3468 w 10 /LucidaSansUnicode00 f (combining) 4147 3468 w (charac\255) 4692 3468 w (ters) 720 3588 w 10 /LucidaSansUnicode20 f (\031) 905 3588 w 10 /LucidaSansUnicode00 f (,) 937 3588 w (which) 1011 3588 w (cause) 1334 3588 w (overstriking) 1651 3588 w (of) 2273 3588 w (multiple) 2414 3588 w (Unicode) 2855 3588 w (characters.) 3289 3588 w (Although) 3896 3588 w (necessary) 4383 3588 w (for) 4901 3588 w (some) 720 3708 w (scripts,) 1021 3708 w (such) 1416 3708 w (as) 1682 3708 w (Thai,) 1828 3708 w (Arabic,) 2109 3708 w (and) 2488 3708 w (Hebrew,) 2707 3708 w (such) 3145 3708 w (characters) 3410 3708 w (confuse) 3949 3708 w (the) 4368 3708 w (issues) 4562 3708 w (for) 4901 3708 w (Latin) 720 3828 w (languages) 990 3828 w (because) 1518 3828 w (they) 1946 3828 w (generate) 2187 3828 w (multiple) 2646 3828 w (representations) 3078 3828 w (for) 3870 3828 w (accented) 4043 3828 w (characters.) 4508 3828 w (ISO) 720 3948 w (10646) 914 3948 w (describes) 1262 3948 w (three) 1756 3948 w (levels) 2041 3948 w (of) 2347 3948 w (implementation;) 2478 3948 w (in) 3305 3948 w (Plan) 3429 3948 w (9) 3663 3948 w (we) 3759 3948 w (decided not to address) 3925 3948 w (the issue.) 720 4068 w (Again, this can be labeled as a display issue and) 1252 4068 w (its) 3631 4068 w (finer) 3781 4068 w (points) 4039 4068 w (are) 4375 4068 w (still) 4560 4068 w (being) 4768 4068 w (debated, so we felt comfortable deferring.) 720 4188 w (Ma\361ana.) 2836 4188 w (Although) 970 4344 w (we) 1471 4344 w (converted) 1661 4344 w (Plan) 2197 4344 w (9) 2455 4344 w (in) 2575 4344 w (the) 2723 4344 w (altruistic) 2935 4344 w (interests) 3413 4344 w (of) 3890 4344 w (serving) 4045 4344 w (foreign) 4455 4344 w (lan\255) 4861 4344 w (guages,) 720 4464 w (we) 1135 4464 w (have) 1303 4464 w (found) 1563 4464 w (the) 1883 4464 w (large) 2073 4464 w (character) 2350 4464 w (set) 2833 4464 w (attractive) 3011 4464 w (for) 3495 4464 w (other) 3668 4464 w (reasons.) 3959 4464 w (The) 4434 4464 w (Unicode) 4649 4464 w (Standard) 720 4584 w (includes) 1210 4584 w (many) 1673 4584 w (characters) 1995 4584 w 10 /LucidaSansUnicode20 f (\024) 2495 4584 w 10 /LucidaSansUnicode00 f (mathematical) 2595 4584 w (symbols,) 3307 4584 w (scientific) 3799 4584 w (notation,) 4292 4584 w (more) 4789 4584 w (general) 720 4704 w (punctuation,) 1123 4704 w (and) 1778 4704 w (more) 2000 4704 w 10 /LucidaSansUnicode20 f (\024) 2251 4704 w 10 /LucidaSansUnicode00 f (that) 2351 4704 w (we) 2584 4704 w (now) 2759 4704 w (use) 3001 4704 w (daily) 3212 4704 w (in) 3481 4704 w (our) 3613 4704 w (work.) 3818 4704 w (We) 4160 4704 w (no) 4343 4704 w (longer) 4507 4704 w (test) 4859 4704 w (our) 720 4824 w (imaginations) 924 4824 w (to) 1589 4824 w (find) 1727 4824 w (ways) 1959 4824 w (to) 2235 4824 w (include) 2374 4824 w (non-ASCII) 2767 4824 w (symbols) 3301 4824 w (in) 3742 4824 w (our) 3874 4824 w (text;) 4079 4824 w (why) 4343 4824 w (type) 4575 4824 w 10 /LucidaTypewriter f (:-\)) 4824 4824 w 10 /LucidaSansUnicode00 f (when) 720 4944 w (you) 1016 4944 w (can) 1230 4944 w (use) 1437 4944 w (the) 1645 4944 w (character) 1838 4944 w 10 /S1 f 2325 4944 m 70 build_X263a 10 /LucidaSansUnicode00 f (?) 2395 4944 w (Most) 2507 4944 w (compelling) 2780 4944 w (is) 3353 4944 w (the) 3471 4944 w (ability) 3664 4944 w (to) 3996 4944 w (absorb) 4132 4944 w (documents) 4504 4944 w (and) 720 5064 w (data) 942 5064 w (that) 1194 5064 w (contain) 1427 5064 w (non-ASCII) 1826 5064 w (characters;) 2361 5064 w (our) 2935 5064 w (browser) 3141 5064 w (for) 3573 5064 w (the) 3754 5064 w (Oxford) 3951 5064 w (English) 4334 5064 w (Dictio\255) 4725 5064 w (nary) 720 5184 w (lets) 969 5184 w (us) 1181 5184 w (see) 1333 5184 w (the) 1535 5184 w (dictionary) 1729 5184 w (as) 2248 5184 w (it) 2393 5184 w (really) 2498 5184 w (is,) 2799 5184 w (with) 2950 5184 w (pronunciation) 3194 5184 w (in) 3908 5184 w (the) 4038 5184 w (IPA) 4232 5184 w (font,) 4424 5184 w (foreign) 4692 5184 w (phrases properly rendered, and so on,) 720 5304 w 10 /LucidaSans-Italic f (in plain text.) 2614 5304 w 10 /LucidaSansUnicode00 f (In) 970 5460 w (the) 1094 5460 w (rest) 1282 5460 w (of) 1500 5460 w (this) 1631 5460 w (paper,) 1843 5460 w (except) 2186 5460 w (when) 2543 5460 w (stated) 2834 5460 w (otherwise,) 3167 5460 w (the) 3703 5460 w (term) 3892 5460 w 10 /LucidaSansUnicode20 f (\030) 4153 5460 w 10 /LucidaSansUnicode00 f (UTF) 4185 5460 w 10 /LucidaSansUnicode20 f (\031) 4371 5460 w 10 /LucidaSansUnicode00 f (refers) 4437 5460 w (to) 4753 5460 w (the) 4885 5460 w (UTF-8 encoding of Unicode characters as adopted by Plan 9.) 720 5580 w 10 /LucidaSans-Demi f (C Compiler) 720 5820 w 10 /LucidaSansUnicode00 f (The) 970 5976 w (first) 1184 5976 w (program) 1412 5976 w (to) 1862 5976 w (be) 1994 5976 w (converted) 2147 5976 w (to) 2660 5976 w (UTF) 2792 5976 w (was) 3012 5976 w (the) 3229 5976 w (C) 3418 5976 w (Compiler.) 3521 5976 w (There) 4060 5976 w (are) 4372 5976 w (two) 4558 5976 w (levels) 4767 5976 w (of) 720 6096 w (conversion.) 862 6096 w (On) 1496 6096 w (the) 1680 6096 w (syntactic) 1879 6096 w (level,) 2348 6096 w (input) 2645 6096 w (to) 2941 6096 w (the) 3082 6096 w (C) 3280 6096 w (compiler) 3392 6096 w (is) 3858 6096 w (UTF;) 3981 6096 w (on) 4242 6096 w (the) 4408 6096 w (semantic) 4606 6096 w (level, the C language needs to define how compiled programs manipulate the UTF set.) 720 6216 w (The) 970 6372 w (syntactic) 1203 6372 w (part) 1680 6372 w (is) 1928 6372 w (simple.) 2060 6372 w (The) 2497 6372 w (ANSI) 2730 6372 w (C) 3008 6372 w (language) 3129 6372 w (standard) 3624 6372 w (defines) 4103 6372 w (the) 4510 6372 w (source) 4718 6372 w (character) 720 6492 w (set) 1217 6492 w (to) 1409 6492 w (be) 1554 6492 w (ASCII.) 1720 6492 w (Since) 2081 6492 w (UTF) 2380 6492 w (is) 2613 6492 w (backward) 2740 6492 w (compatible) 3250 6492 w (with) 3834 6492 w (ASCII,) 4086 6492 w (the) 4415 6492 w (compiler) 4617 6492 w (needs) 720 6612 w (little) 1044 6612 w (change.) 1298 6612 w (The) 1747 6612 w (only) 1965 6612 w (places) 2206 6612 w (where) 2548 6612 w (a) 2877 6612 w (larger) 2969 6612 w (character) 3290 6612 w (set) 3776 6612 w (is) 3957 6612 w (allowed) 4074 6612 w (are) 4481 6612 w (in) 4670 6612 w (char\255) 4798 6612 w (acter) 720 6732 w (constants,) 995 6732 w (strings,) 1529 6732 w (and) 1929 6732 w (comments.) 2144 6732 w (Since) 2747 6732 w (7-bit) 3034 6732 w (ASCII) 3319 6732 w (characters) 3603 6732 w (can) 4137 6732 w (represent) 4339 6732 w (only) 4836 6732 w (themselves) 720 6852 w (in) 1321 6852 w (UTF,) 1470 6852 w (the) 1746 6852 w (compiler) 1959 6852 w (does) 2440 6852 w (not) 2729 6852 w (have) 2947 6852 w (to) 3230 6852 w (be) 3386 6852 w (careful) 3564 6852 w (while) 3954 6852 w (looking) 4266 6852 w (for) 4687 6852 w (the) 4885 6852 w 8 /S1 f (__________________) 720 6952 w 8 /LucidaSansUnicode00 f (*) 720 7052 w 8 /LucidaSansUnicode20 f (\030\030) 795 7052 w 8 /LucidaSansUnicode00 f (That) 847 7052 w 8 /LucidaSansUnicode20 f (\031) 1021 7052 w 8 /LucidaSansUnicode00 f (s) 1047 7052 w (the) 1125 7052 w (nice) 1287 7052 w (thing) 1483 7052 w (about) 1723 7052 w (standards) 1983 7052 w 8 /LucidaSansUnicode20 f (\024) 2366 7052 w 8 /LucidaSansUnicode00 f (there) 2446 7052 w 8 /LucidaSansUnicode20 f (\031) 2649 7052 w 8 /LucidaSansUnicode00 f (s) 2675 7052 w (so) 2753 7052 w (many) 2880 7052 w (to) 3128 7052 w (choose) 3245 7052 w (from.) 3558 7052 w 8 /LucidaSansUnicode20 f (\031\031) 3770 7052 w (\023) 3860 7052 w 8 /LucidaSansUnicode00 f (Andy) 3938 7052 w (Tannenbaum) 4173 7052 w (\(no,) 720 7152 w (the) 897 7152 w (other) 1048 7152 w (one\)) 1281 7152 w cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 /LucidaSansUnicode00 f (\255 4 \255) 2783 480 w (termination of a string or comment.) 720 840 w (The Plan 9 compiler extends ANSI C to treat any Unicode character with a value) 970 996 w (out\255) 4847 996 w (side) 720 1116 w (of) 958 1116 w (the) 1095 1116 w (ASCII) 1289 1116 w (range) 1578 1116 w (as) 1893 1116 w (an) 2038 1116 w (alphabetic.) 2194 1116 w (To) 2797 1116 w (a) 2960 1116 w (Greek) 3054 1116 w (programmer) 3376 1116 w (or) 4021 1116 w (an) 4162 1116 w (English) 4317 1116 w (mathe\255) 4704 1116 w (matician, ) 720 1236 w 10 /LucidaSansUnicode03 f (\261) 1195 1236 w 10 /LucidaSansUnicode00 f (is a sensible and now valid variable name.) 1299 1236 w (On) 970 1392 w (the) 1150 1392 w (semantic) 1345 1392 w (level,) 1819 1392 w (ANSI) 2113 1392 w (C) 2379 1392 w (allows,) 2488 1392 w (but) 2862 1392 w (does) 3064 1392 w (not) 3335 1392 w (tie) 3536 1392 w (down,) 3699 1392 w (the) 4035 1392 w (notion) 4231 1392 w (of) 4584 1392 w (a) 4723 1392 w 10 /LucidaSans-Italic f (wide) 4819 1392 w (character) 720 1512 w 10 /LucidaSansUnicode00 f (and) 1238 1512 w (admits) 1465 1512 w (string) 1840 1512 w (and) 2169 1512 w (character) 2396 1512 w (constants) 2892 1512 w (of) 3406 1512 w (this) 3551 1512 w (type.) 3777 1512 w (We) 4096 1512 w (chose) 4285 1512 w (the) 4613 1512 w (wide) 4815 1512 w (character) 720 1632 w (type) 1206 1632 w (to) 1451 1632 w (be) 1586 1632 w 10 /LucidaTypewriter f (unsigned) 1742 1632 w (short) 2356 1632 w 10 /LucidaSansUnicode00 f (.) 2716 1632 w (In) 2818 1632 w (the) 2947 1632 w (libraries,) 3140 1632 w (the) 3604 1632 w (word) 3797 1632 w 10 /LucidaTypewriter f (Rune) 4077 1632 w 10 /LucidaSansUnicode00 f (is) 4403 1632 w (defined) 4521 1632 w (by) 4925 1632 w (a) 720 1752 w 10 /LucidaTypewriter f (typedef) 822 1752 w 10 /LucidaSansUnicode00 f (to) 1373 1752 w (be) 1518 1752 w (equivalent) 1684 1752 w (to) 2232 1752 w 10 /LucidaTypewriter f (unsigned) 2377 1752 w (short) 3000 1752 w 10 /LucidaSansUnicode00 f (and) 3406 1752 w (is) 3632 1752 w (used) 3758 1752 w (to) 4036 1752 w (signify) 4180 1752 w (a) 4548 1752 w (Unicode) 4649 1752 w (character.) 720 1872 w (There are surprises; for example:) 970 2028 w 9 /LucidaTypewriter f (L'x') 1008 2198 w 9 /LucidaSansUnicode00 f (is) 1528 2198 w (120) 1629 2198 w 9 /LucidaTypewriter f ('x') 1008 2308 w 9 /LucidaSansUnicode00 f (is) 1528 2308 w (120) 1629 2308 w 9 /LucidaTypewriter f (L'\377') 1008 2418 w 9 /LucidaSansUnicode00 f (is) 1528 2418 w (255) 1629 2418 w 9 /LucidaTypewriter f ('\377') 1008 2528 w 9 /LucidaSansUnicode00 f (is) 1528 2528 w (-1,) 1629 2528 w (stdio) 1796 2528 w 9 /LucidaTypewriter f (EOF) 2042 2528 w 9 /LucidaSansUnicode00 f (\(if) 2266 2528 w 9 /LucidaTypewriter f (char) 2384 2528 w 9 /LucidaSansUnicode00 f (is) 2673 2528 w (signed\)) 2774 2528 w 9 /LucidaTypewriter f (L') 1008 2638 w 9 /LucidaSansUnicode03 f (\261) 1138 2638 w 9 /LucidaTypewriter f (') 1203 2638 w 9 /LucidaSansUnicode00 f (is) 1528 2638 w (945) 1629 2638 w 9 /LucidaTypewriter f (') 1008 2748 w 9 /LucidaSansUnicode03 f (\261) 1073 2748 w 9 /LucidaTypewriter f (') 1138 2748 w 9 /LucidaSansUnicode00 f (is) 1528 2748 w (illegal) 1629 2748 w 10 /LucidaSansUnicode00 f (In the string constants,) 720 2928 w 9 /LucidaTypewriter f (") 1008 3098 w save 1073 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore save 1168 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore save 1263 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore save 1358 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore save 1453 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore save 1549 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore save 1644 3098 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore (") 1739 3098 w (L") 1008 3208 w save 1138 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore save 1233 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore save 1328 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore save 1423 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore save 1518 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore save 1614 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore save 1709 3208 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore (",) 1804 3208 w 10 /LucidaSansUnicode00 f (the) 720 3388 w (former) 911 3388 w (is) 1276 3388 w (an) 1392 3388 w (array) 1545 3388 w (of) 1825 3388 w 10 /LucidaTypewriter f (chars) 1959 3388 w 10 /LucidaSansUnicode00 f (with) 2355 3388 w (22) 2596 3388 w (elements) 2758 3388 w (and) 3234 3388 w (a) 3450 3388 w (null) 3541 3388 w (byte,) 3759 3388 w (while) 4035 3388 w (the) 4324 3388 w (latter) 4515 3388 w (is) 4806 3388 w (an) 4923 3388 w (array of) 720 3508 w 10 /LucidaTypewriter f (unsigned) 1126 3508 w (shorts) 1734 3508 w 10 /LucidaSansUnicode00 f (\() 2198 3508 w 10 /LucidaTypewriter f (Runes) 2231 3508 w 10 /LucidaSansUnicode00 f (\) with 8 elements and a null) 2591 3508 w 10 /LucidaTypewriter f (Rune) 3973 3508 w 10 /LucidaSansUnicode00 f (.) 4261 3508 w (The) 970 3664 w (Plan) 1197 3664 w (9) 1444 3664 w (library) 1553 3664 w (provides) 1909 3664 w (an) 2371 3664 w (output) 2535 3664 w (conversion) 2904 3664 w (function,) 3477 3664 w 10 /LucidaTypewriter f (print) 3957 3664 w 10 /LucidaSansUnicode00 f (\(analogous) 4364 3664 w (to) 4942 3664 w 10 /LucidaTypewriter f (printf) 720 3784 w 10 /LucidaSansUnicode00 f (\),) 1152 3784 w (with) 1255 3784 w (formats) 1498 3784 w 10 /LucidaTypewriter f (%c) 1911 3784 w 10 /LucidaSansUnicode00 f (,) 2055 3784 w 10 /LucidaTypewriter f (%C) 2125 3784 w 10 /LucidaSansUnicode00 f (,) 2269 3784 w 10 /LucidaTypewriter f (%s) 2339 3784 w 10 /LucidaSansUnicode00 f (,) 2483 3784 w (and) 2553 3784 w 10 /LucidaTypewriter f (%S) 2771 3784 w 10 /LucidaSansUnicode00 f (.) 2915 3784 w (Since) 3016 3784 w 10 /LucidaTypewriter f (print) 3305 3784 w 10 /LucidaSansUnicode00 f (produces) 3702 3784 w (text,) 4187 3784 w (its) 4447 3784 w (output) 4601 3784 w (is) 4960 3784 w (always) 720 3904 w (UTF.) 1090 3904 w (The) 1391 3904 w (character) 1624 3904 w (conversion) 2125 3904 w 10 /LucidaTypewriter f (%c) 2703 3904 w 10 /LucidaSansUnicode00 f (\(lower) 2899 3904 w (case\)) 3248 3904 w (masks) 3546 3904 w (its) 3906 3904 w (argument) 4075 3904 w (to) 4595 3904 w (8) 4745 3904 w (bits) 4860 3904 w (before) 720 4024 w (converting) 1074 4024 w (to) 1627 4024 w (UTF.) 1765 4024 w (Thus) 2055 4024 w 10 /LucidaTypewriter f (L'\377') 2333 4024 w 10 /LucidaSansUnicode00 f (and) 2661 4024 w 10 /LucidaTypewriter f ('\377') 2881 4024 w 10 /LucidaSansUnicode00 f (printed) 3137 4024 w (under) 3528 4024 w 10 /LucidaTypewriter f (%c) 3852 4024 w 10 /LucidaSansUnicode00 f (will) 4035 4024 w (be) 4238 4024 w (identical,) 4396 4024 w (but) 4878 4024 w 10 /LucidaTypewriter f (L') 720 4144 w 10 /LucidaSansUnicode03 f (\261) 864 4144 w 10 /LucidaTypewriter f (') 936 4144 w 10 /LucidaSansUnicode00 f (will) 1043 4144 w (print) 1242 4144 w (as) 1509 4144 w (the) 1650 4144 w (Unicode) 1840 4144 w (character) 2266 4144 w (with) 2750 4144 w (decimal) 2991 4144 w (value) 3403 4144 w (177.) 3693 4144 w (The) 3982 4144 w (character) 4199 4144 w (conver\255) 4684 4144 w (sion) 720 4264 w 10 /LucidaTypewriter f (%C) 973 4264 w 10 /LucidaSansUnicode00 f (\(upper) 1167 4264 w (case\)) 1535 4264 w (masks) 1831 4264 w (its) 2189 4264 w (argument) 2356 4264 w (to) 2874 4264 w (16) 3022 4264 w (bits) 3198 4264 w (before) 3428 4264 w (converting) 3792 4264 w (to) 4355 4264 w (UTF.) 4503 4264 w (Thus) 4802 4264 w 10 /LucidaTypewriter f (L'\377') 720 4384 w 10 /LucidaSansUnicode00 f (and) 1056 4384 w 10 /LucidaTypewriter f (L') 1284 4384 w 10 /LucidaSansUnicode03 f (\261) 1428 4384 w 10 /LucidaTypewriter f (') 1500 4384 w 10 /LucidaSansUnicode00 f (will) 1620 4384 w (print) 1832 4384 w (correctly) 2112 4384 w (under) 2579 4384 w 10 /LucidaTypewriter f (%C) 2911 4384 w 10 /LucidaSansUnicode00 f (,) 3055 4384 w (but) 3135 4384 w 10 /LucidaTypewriter f ('\377') 3345 4384 w 10 /LucidaSansUnicode00 f (will) 3609 4384 w (not.) 3821 4384 w (The) 4093 4384 w (conversion) 4322 4384 w 10 /LucidaTypewriter f (%s) 4896 4384 w 10 /LucidaSansUnicode00 f (\(lower) 720 4504 w (case\)) 1050 4504 w (expects a pointer to) 1329 4504 w 10 /LucidaTypewriter f (char) 2334 4504 w 10 /LucidaSansUnicode00 f (and copies UTF sequences up to a null byte.) 2654 4504 w (The) 4859 4504 w (conversion) 720 4624 w 10 /LucidaTypewriter f (%S) 1280 4624 w 10 /LucidaSansUnicode00 f (\(upper) 1458 4624 w (case\)) 1810 4624 w (expects) 2090 4624 w (a) 2499 4624 w (pointer) 2588 4624 w (to) 2971 4624 w 10 /LucidaTypewriter f (Rune) 3103 4624 w 10 /LucidaSansUnicode00 f (and) 3426 4624 w (performs) 3641 4624 w (sequential) 4119 4624 w 10 /LucidaTypewriter f (%C) 4654 4624 w 10 /LucidaSansUnicode00 f (con\255) 4833 4624 w (versions until a null) 720 4744 w 10 /LucidaTypewriter f (Rune) 1707 4744 w 10 /LucidaSansUnicode00 f (is encountered.) 2027 4744 w (Another) 970 4900 w (problem) 1395 4900 w (in) 1838 4900 w (format) 1967 4900 w (conversion) 2329 4900 w (is) 2893 4900 w (the) 3011 4900 w (definition) 3204 4900 w (of) 3707 4900 w 10 /LucidaTypewriter f (%10s) 3843 4900 w 10 /LucidaSansUnicode00 f (:) 4131 4900 w (does) 4201 4900 w (the) 4470 4900 w (number) 4663 4900 w (refer) 720 5020 w (to) 1000 5020 w (bytes) 1147 5020 w (or) 1455 5020 w (characters?) 1606 5020 w (We) 2229 5020 w (decided) 2420 5020 w (that) 2850 5020 w (such) 3090 5020 w (formats) 3365 5020 w (were) 3789 5020 w (most) 4068 5020 w (often) 4359 5020 w (used) 4661 5020 w (to) 4942 5020 w (align) 720 5140 w (output) 992 5140 w (columns) 1349 5140 w (and) 1793 5140 w (so) 2008 5140 w (made) 2156 5140 w (the) 2459 5140 w (number) 2650 5140 w (count) 3063 5140 w (characters.) 3372 5140 w (Some) 3972 5140 w (programs,) 4272 5140 w (how\255) 4807 5140 w (ever,) 720 5260 w (use) 1009 5260 w (the) 1230 5260 w (count) 1437 5260 w (to) 1762 5260 w (place) 1912 5260 w (blank-padded) 2217 5260 w (strings) 2956 5260 w (in) 3340 5260 w (fixed-sized) 3482 5260 w (arrays.) 4093 5260 w (These) 4503 5260 w (pro\255) 4842 5260 w (grams must be found and corrected.) 720 5380 w (Here is a complete example:) 970 5536 w 9 /LucidaTypewriter f (#include) 1008 5706 w () 1593 5706 w (char) 1008 5926 w (c[]) 1333 5926 w (=) 1593 5926 w (") 1723 5926 w save 1788 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore save 1883 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore save 1978 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore save 2073 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore save 2168 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore save 2264 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore save 2359 5926 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore (";) 2454 5926 w (Rune) 1008 6036 w (s[]) 1333 6036 w (=) 1593 6036 w (L") 1723 6036 w save 1853 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore save 1948 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore save 2043 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore save 2138 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore save 2233 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore save 2329 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore save 2424 6036 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore (";) 2519 6036 w (main\(void\)) 1008 6256 w ({) 1008 6366 w (print\("%d,) 1528 6476 w (%d\\n",) 2243 6476 w (sizeof\(c\),) 2698 6476 w (sizeof\(s\)\);) 3413 6476 w (print\("%s\\n",) 1528 6586 w (c\);) 2438 6586 w (print\("%S\\n",) 1528 6696 w (s\);) 2438 6696 w (}) 1008 6806 w 10 /LucidaSansUnicode00 f (This) 970 7022 w (program) 1214 7022 w (prints) 1669 7022 w 10 /LucidaTypewriter f (23,) 1991 7022 w (18) 2246 7022 w 10 /LucidaSansUnicode00 f (and) 2429 7022 w (then) 2648 7022 w (two) 2904 7022 w (identical) 3118 7022 w (lines) 3568 7022 w (of) 3835 7022 w (UTF) 3973 7022 w (text.) 4199 7022 w (In) 4494 7022 w (practice,) 4625 7022 w 10 /LucidaTypewriter f (%S) 720 7142 w 10 /LucidaSansUnicode00 f (and) 899 7142 w 10 /LucidaTypewriter f (L"...") 1114 7142 w 10 /LucidaSansUnicode00 f (are) 1581 7142 w (rare) 1768 7142 w (in) 1996 7142 w (programs;) 2122 7142 w (one) 2656 7142 w (reason) 2870 7142 w (is) 3231 7142 w (that) 3346 7142 w (most) 3572 7142 w (formatted) 3849 7142 w (I/O) 4364 7142 w (is) 4559 7142 w (done) 4673 7142 w (in) 4949 7142 w (unconverted UTF.) 720 7262 w cleartomark showpage saveobj restore %%EndPage: 4 4 %%Page: 5 5 /saveobj save def mark 5 pagesetup 10 /LucidaSansUnicode00 f (\255 5 \255) 2783 480 w 10 /LucidaSans-Demi f (Ramifications) 720 840 w 10 /LucidaSansUnicode00 f (All) 970 996 w (programs) 1146 996 w (in) 1662 996 w (Plan) 1802 996 w (9) 2052 996 w (now) 2164 996 w (read) 2413 996 w (and) 2678 996 w (write) 2908 996 w (text) 3198 996 w (as) 3439 996 w (UTF,) 3595 996 w (not) 3863 996 w (ASCII.) 4073 996 w (This) 4437 996 w (change) 4692 996 w (breaks two deep-rooted symmetries implicit in most C programs:) 720 1116 w (1.) 720 1272 w (A character is no longer a) 970 1272 w 10 /LucidaTypewriter f (char) 2249 1272 w 10 /LucidaSansUnicode00 f (.) 2537 1272 w (2.) 720 1428 w (The) 970 1428 w (internal) 1188 1428 w (representation) 1596 1428 w (\(Rune\)) 2340 1428 w (of) 2686 1428 w (a) 2821 1428 w (character) 2913 1428 w (now) 3399 1428 w (differs) 3636 1428 w (from) 3987 1428 w (its) 4257 1428 w (external) 4412 1428 w (rep\255) 4847 1428 w (resentation \(UTF\).) 970 1548 w (In) 970 1704 w (the) 1103 1704 w (sections) 1300 1704 w (that) 1741 1704 w (follow,) 1975 1704 w (we) 2344 1704 w (show) 2520 1704 w (how) 2814 1704 w (these) 3057 1704 w (issues) 3362 1704 w (were) 3705 1704 w (faced) 3978 1704 w (in) 4283 1704 w (the) 4417 1704 w (layers) 4615 1704 w (of) 4942 1704 w (system) 720 1824 w (software) 1118 1824 w (from) 1591 1824 w (the) 1881 1824 w (operating) 2093 1824 w (system) 2616 1824 w (up) 3013 1824 w (to) 3195 1824 w (the) 3350 1824 w (applications.) 3562 1824 w (The) 4268 1824 w (effects) 4506 1824 w (are) 4888 1824 w (wide-reaching and often surprising.) 720 1944 w 10 /LucidaSans-Demi f (Operating system) 720 2184 w 10 /LucidaSansUnicode00 f (Since UTF is the only format for text in Plan 9, the interface to the) 970 2340 w (operating) 4201 2340 w (system) 4700 2340 w (had) 720 2460 w (to) 934 2460 w (be) 1066 2460 w (converted) 1219 2460 w (to) 1732 2460 w (UTF.) 1863 2460 w (Text) 2146 2460 w (strings) 2396 2460 w (cross) 2762 2460 w (the) 3050 2460 w (interface) 3238 2460 w (in) 3695 2460 w (several) 3819 2460 w (places:) 4192 2460 w (command) 4562 2460 w (arguments,) 720 2580 w (file) 1318 2580 w (names,) 1516 2580 w (user) 1912 2580 w (names) 2169 2580 w (\(people) 2533 2580 w (can) 2941 2580 w (log) 3156 2580 w (in) 3356 2580 w (using) 3495 2580 w (their) 3809 2580 w (native) 4082 2580 w (name\),) 4421 2580 w (error) 4800 2580 w (messages,) 720 2700 w (and) 1264 2700 w (miscellaneous) 1481 2700 w (minor) 2203 2700 w (places) 2526 2700 w (such) 2868 2700 w (as) 3131 2700 w (commands) 3273 2700 w (to) 3838 2700 w (the) 3972 2700 w (I/O) 4163 2700 w (system.) 4359 2700 w (Little) 4799 2700 w (change) 720 2820 w (was) 1127 2820 w (required:) 1369 2820 w (null-terminated) 1872 2820 w (UTF) 2701 2820 w (strings) 2947 2820 w (are) 3340 2820 w (equivalent) 3552 2820 w (to) 4113 2820 w (null-terminated) 4271 2820 w (ASCII) 720 2940 w (strings) 1006 2940 w (for) 1375 2940 w (most) 1549 2940 w (purposes) 1826 2940 w (of) 2309 2940 w (the) 2442 2940 w (operating) 2632 2940 w (system.) 3133 2940 w (The) 3572 2940 w (library) 3788 2940 w (routines) 4133 2940 w (described) 4567 2940 w (in the next section made that change straightforward.) 720 3060 w (The window system, once called) 970 3216 w 10 /LucidaTypewriter f (8.5) 2565 3216 w 10 /LucidaSansUnicode00 f (, is now rightfully called) 2781 3216 w 10 /LucidaTypewriter f (8\275) 3976 3216 w 10 /LucidaSansUnicode00 f (.) 4120 3216 w 10 /LucidaSans-Demi f (Libraries) 720 3456 w 10 /LucidaSansUnicode00 f (A) 970 3612 w (header) 1088 3612 w (file) 1470 3612 w (included) 1670 3612 w (by) 2134 3612 w (all) 2298 3612 w (programs) 2460 3612 w (\(see) 2976 3612 w ([Pike92]\)) 3221 3612 w (declares) 3693 3612 w (the) 4144 3612 w 10 /LucidaTypewriter f (Rune) 4348 3612 w 10 /LucidaSansUnicode00 f (type) 4685 3612 w (to) 4942 3612 w (hold 16-bit character values:) 720 3732 w 9 /LucidaTypewriter f (typedef) 1008 3902 w (unsigned) 1528 3902 w (short) 2113 3902 w (Rune;) 2503 3902 w 10 /LucidaSansUnicode00 f (Also defined are several constants relevant to UTF:) 720 4082 w 9 /LucidaTypewriter f (enum) 1008 4252 w ({) 1008 4362 w (UTFmax) 1268 4472 w (=) 1918 4472 w (3,) 2048 4472 w (/*) 2438 4472 w (maximum) 2633 4472 w (bytes) 3153 4472 w (per) 3543 4472 w (rune) 3803 4472 w (*/) 4128 4472 w (Runesync) 1268 4582 w (=) 1918 4582 w (0x80,) 2048 4582 w (/*) 2438 4582 w (can't) 2633 4582 w (appear) 3023 4582 w (in) 3478 4582 w (UTF) 3673 4582 w (sequence) 3933 4582 w (\(<\)) 4518 4582 w (*/) 4778 4582 w (Runeself) 1268 4692 w (=) 1918 4692 w (0x80,) 2048 4692 w (/*) 2438 4692 w (rune==UTF) 2633 4692 w (sequence) 3283 4692 w (\(<\)) 3868 4692 w (*/) 4128 4692 w (Runeerror) 1268 4802 w (=) 1918 4802 w (0x80,) 2048 4802 w (/*) 2438 4802 w (decoding) 2633 4802 w (error) 3218 4802 w (in) 3608 4802 w (UTF) 3803 4802 w (*/) 4063 4802 w (};) 1008 4912 w 10 /LucidaSansUnicode00 f (\(With) 720 5092 w (the) 1030 5092 w (original) 1248 5092 w (UTF,) 1679 5092 w 10 /LucidaTypewriter f (Runesync) 1961 5092 w 10 /LucidaSansUnicode00 f (was) 2601 5092 w (hexadecimal) 2848 5092 w (21) 3522 5092 w (and) 3712 5092 w 10 /LucidaTypewriter f (Runeself) 3956 5092 w 10 /LucidaSansUnicode00 f (was) 4596 5092 w (A0.\)) 4843 5092 w 10 /LucidaTypewriter f (UTFmax) 720 5212 w 10 /LucidaSansUnicode00 f (bytes) 1191 5212 w (are) 1488 5212 w (sufficient) 1678 5212 w (to) 2167 5212 w (hold) 2303 5212 w (the) 2556 5212 w (UTF) 2749 5212 w (encoding) 2973 5212 w (of) 3457 5212 w (any) 3593 5212 w (Unicode) 3800 5212 w (character.) 4229 5212 w (Char\255) 4780 5212 w (acters of value) 720 5332 w (less) 1460 5332 w (than) 1680 5332 w 10 /LucidaTypewriter f (Runesync) 1929 5332 w 10 /LucidaSansUnicode00 f (only) 2538 5332 w (appear) 2775 5332 w (in) 3141 5332 w (a) 3265 5332 w (UTF) 3353 5332 w (string) 3572 5332 w (as) 3887 5332 w (themselves,) 4026 5332 w (never) 4634 5332 w (as) 4934 5332 w (part) 720 5452 w (of) 999 5452 w (a) 1180 5452 w (sequence) 1318 5452 w (encoding) 1858 5452 w (another) 2387 5452 w (character.) 2844 5452 w (Characters) 3439 5452 w (of) 4039 5452 w (value) 4219 5452 w (less) 4555 5452 w (than) 4824 5452 w 10 /LucidaTypewriter f (Runeself) 720 5572 w 10 /LucidaSansUnicode00 f (encode into single bytes of the same value.) 1328 5572 w (Finally, when the library) 3496 5572 w (detects) 4689 5572 w (errors) 720 5692 w (in) 1055 5692 w (UTF) 1190 5692 w (input) 1420 5692 w 10 /LucidaSansUnicode20 f (\024) 1673 5692 w 10 /LucidaSansUnicode00 f (byte) 1773 5692 w (sequences) 2025 5692 w (that) 2577 5692 w (are) 2812 5692 w (not) 3008 5692 w (valid) 3212 5692 w (UTF) 3484 5692 w (sequences) 3714 5692 w 10 /LucidaSansUnicode20 f (\024) 4222 5692 w 10 /LucidaSansUnicode00 f (it) 4322 5692 w (converts) 4431 5692 w (the) 4885 5692 w (first) 720 5812 w (byte) 961 5812 w (of) 1215 5812 w (the) 1359 5812 w (error) 1560 5812 w (sequence) 1846 5812 w (to) 2349 5812 w (the) 2493 5812 w (character) 2694 5812 w 10 /LucidaTypewriter f (Runeerror) 3189 5812 w 10 /LucidaSansUnicode00 f (.) 3837 5812 w (There) 3947 5812 w (is) 4271 5812 w (little) 4397 5812 w (a) 4660 5812 w (rune-) 4761 5812 w (oriented) 720 5932 w (program) 1172 5932 w (can) 1635 5932 w (do) 1850 5932 w (when) 2021 5932 w (given) 2325 5932 w (bad) 2633 5932 w (data) 2861 5932 w (except) 3118 5932 w (exit,) 3489 5932 w (which) 3751 5932 w (is) 4079 5932 w (unreasonable,) 4206 5932 w (or) 4938 5932 w (carry) 720 6052 w (on.) 1015 6052 w (Originally) 1257 6052 w (the) 1779 6052 w (conversion) 1990 6052 w (routines,) 2572 6052 w (described) 3059 6052 w (below,) 3588 6052 w (returned) 3962 6052 w (errors) 4436 6052 w (when) 4783 6052 w (given) 720 6172 w (invalid) 1025 6172 w (UTF,) 1388 6172 w (but) 1650 6172 w (we) 1856 6172 w (found) 2033 6172 w (ourselves) 2362 6172 w (repeatedly) 2865 6172 w (checking) 3417 6172 w (for) 3892 6172 w (errors) 4075 6172 w (and) 4409 6172 w (ignoring) 4632 6172 w (them.) 720 6292 w (We therefore decided to convert a bad sequence) 1064 6292 w (to) 3442 6292 w (a) 3573 6292 w (valid) 3661 6292 w (rune) 3922 6292 w (and) 4176 6292 w (continue) 4389 6292 w (pro\255) 4842 6292 w (cessing.) 720 6412 w (\(The ANSI C routines, on the other hand, return errors.\)) 1178 6412 w (This) 970 6568 w (technique) 1208 6568 w (does) 1720 6568 w (have) 1985 6568 w (the) 2244 6568 w (unfortunate) 2433 6568 w (property) 3039 6568 w (that) 3487 6568 w (converting) 3712 6568 w (invalid) 4259 6568 w (UTF) 4612 6568 w (byte) 4832 6568 w (strings) 720 6688 w (in) 1107 6688 w (and) 1252 6688 w (out) 1486 6688 w (of) 1700 6688 w (runes) 1852 6688 w (does) 2178 6688 w (not) 2463 6688 w (preserve) 2677 6688 w (the) 3147 6688 w (input,) 3356 6688 w (but) 3695 6688 w (this) 3911 6688 w (circumstance) 4144 6688 w (only) 4836 6688 w (occurs) 720 6808 w (when) 1087 6808 w (non-textual) 1394 6808 w (input) 2024 6808 w (is) 2327 6808 w (given) 2457 6808 w (to) 2768 6808 w (a) 2916 6808 w (textual) 3021 6808 w (program.) 3408 6808 w (The) 3938 6808 w (Unicode) 4169 6808 w (Standard) 4610 6808 w (defines) 720 6928 w (an) 1122 6928 w (error) 1286 6928 w (character,) 1573 6928 w (value) 2101 6928 w (FFFD,) 2402 6928 w (to) 2718 6928 w (stand) 2863 6928 w (for) 3178 6928 w (characters) 3364 6928 w (from) 3911 6928 w (other) 4190 6928 w (sets) 4494 6928 w (that) 4736 6928 w (it) 4974 6928 w (does) 720 7048 w (not) 998 7048 w (represent.) 1205 7048 w (The) 1779 7048 w 10 /LucidaTypewriter f (Runeerror) 2007 7048 w 10 /LucidaSansUnicode00 f (character) 2702 7048 w (is) 3198 7048 w (a) 3325 7048 w (different) 3427 7048 w (concept,) 3893 7048 w (related) 4354 7048 w (to) 4739 7048 w (the) 4885 7048 w (encoding rather than the character set, so we chose a different character for it.) 720 7168 w cleartomark showpage saveobj restore %%EndPage: 5 5 %%Page: 6 6 /saveobj save def mark 6 pagesetup 10 /LucidaSansUnicode00 f (\255 6 \255) 2783 480 w (The) 970 840 w (Plan) 1198 840 w (9) 1446 840 w (C) 1556 840 w (library) 1672 840 w (contains) 2029 840 w (a) 2484 840 w (number) 2586 840 w (of) 3010 840 w (routines) 3155 840 w (for) 3602 840 w (manipulating) 3789 840 w (runes.) 4475 840 w (The) 4859 840 w (first set converts between runes and UTF strings:) 720 960 w 9 /LucidaTypewriter f (extern) 1008 1130 w (int) 1528 1130 w (runetochar\(char*,) 2048 1130 w (Rune*\);) 3218 1130 w (extern) 1008 1240 w (int) 1528 1240 w (chartorune\(Rune*,) 2048 1240 w (char*\);) 3218 1240 w (extern) 1008 1350 w (int) 1528 1350 w (runelen\(long\);) 2048 1350 w (extern) 1008 1460 w (int) 1528 1460 w (fullrune\(char*,) 2048 1460 w (int\);) 3088 1460 w 10 /LucidaTypewriter f (Runetochar) 720 1640 w 10 /LucidaSansUnicode00 f (translates) 1481 1640 w (a) 1996 1640 w (single) 2092 1640 w 10 /LucidaTypewriter f (Rune) 2422 1640 w 10 /LucidaSansUnicode00 f (to) 2751 1640 w (a) 2890 1640 w (UTF) 2986 1640 w (sequence) 3213 1640 w (and) 3712 1640 w (returns) 3934 1640 w (the) 4326 1640 w (number) 4523 1640 w (of) 4942 1640 w (bytes) 720 1760 w (produced.) 1030 1760 w 10 /LucidaTypewriter f (Chartorune) 1605 1760 w 10 /LucidaSansUnicode00 f (goes) 2376 1760 w (the) 2657 1760 w (other) 2863 1760 w (way,) 3171 1760 w (reporting) 3437 1760 w (how) 3939 1760 w (many) 4189 1760 w (bytes) 4501 1760 w (were) 4810 1760 w (consumed.) 720 1880 w 10 /LucidaTypewriter f (Runelen) 1339 1880 w 10 /LucidaSansUnicode00 f (returns) 1899 1880 w (the) 2305 1880 w (number) 2516 1880 w (of) 2949 1880 w (bytes) 3103 1880 w (in) 3418 1880 w (the) 3565 1880 w (UTF) 3776 1880 w (encoding) 4018 1880 w (of) 4520 1880 w (a) 4675 1880 w (rune.) 4787 1880 w 10 /LucidaTypewriter f (Fullrune) 720 2000 w 10 /LucidaSansUnicode00 f (examines) 1357 2000 w (a) 1880 2000 w (UTF) 1995 2000 w (string) 2241 2000 w (up) 2583 2000 w (to) 2768 2000 w (a) 2926 2000 w (specified) 3041 2000 w (number) 3536 2000 w (of) 3973 2000 w (bytes) 4131 2000 w (and) 4450 2000 w (reports) 4690 2000 w (whether) 720 2120 w (the) 1161 2120 w (string) 1366 2120 w (begins) 1698 2120 w (with) 2071 2120 w (a) 2326 2120 w (complete) 2431 2120 w (UTF) 2927 2120 w (encoding.) 3163 2120 w (All) 3724 2120 w (these) 3902 2120 w (routines) 4215 2120 w (use) 4665 2120 w (the) 4885 2120 w 10 /LucidaTypewriter f (Runeerror) 720 2240 w 10 /LucidaSansUnicode00 f (character to work around encoding problems.) 1400 2240 w (There) 970 2396 w (is) 1281 2396 w (also) 1395 2396 w (a) 1625 2396 w (set) 1714 2396 w (of) 1892 2396 w (routines) 2024 2396 w (for) 2457 2396 w (examining) 2630 2396 w (null-terminated) 3173 2396 w (UTF) 3976 2396 w (strings,) 4196 2396 w (based) 4595 2396 w (on) 4917 2396 w (the) 720 2516 w (model) 921 2516 w (of) 1269 2516 w (the) 1413 2516 w (ANSI) 1614 2516 w (standard) 1886 2516 w 10 /LucidaTypewriter f (str) 2359 2516 w 10 /LucidaSansUnicode00 f (routines,) 2621 2516 w (but) 3098 2516 w (with) 3306 2516 w 10 /LucidaTypewriter f (utf) 3557 2516 w 10 /LucidaSansUnicode00 f (substituted) 3819 2516 w (for) 4413 2516 w 10 /LucidaTypewriter f (str) 4598 2516 w 10 /LucidaSansUnicode00 f (and) 4860 2516 w 10 /LucidaTypewriter f (rune) 720 2636 w 10 /LucidaSansUnicode00 f (for) 1040 2636 w 10 /LucidaTypewriter f (chr) 1211 2636 w 10 /LucidaSansUnicode00 f (:) 1427 2636 w 9 /LucidaTypewriter f (extern) 1008 2806 w (int) 1528 2806 w (utflen\(char*\);) 2048 2806 w (extern) 1008 2916 w (char*) 1528 2916 w (utfrune\(char*,) 2048 2916 w (long\);) 3023 2916 w (extern) 1008 3026 w (char*) 1528 3026 w (utfrrune\(char*,) 2048 3026 w (long\);) 3088 3026 w (extern) 1008 3136 w (char*) 1528 3136 w (utfutf\(char*,) 2048 3136 w (char*\);) 2958 3136 w 10 /LucidaTypewriter f (Utflen) 720 3316 w 10 /LucidaSansUnicode00 f (returns) 1197 3316 w (the) 1592 3316 w (number) 1792 3316 w (of) 2214 3316 w (runes) 2357 3316 w (in) 2674 3316 w (a) 2810 3316 w (UTF) 2910 3316 w (string;) 3141 3316 w 10 /LucidaTypewriter f (utfrune) 3500 3316 w 10 /LucidaSansUnicode00 f (returns) 4050 3316 w (a) 4446 3316 w (pointer) 4547 3316 w (to) 4942 3316 w (the) 720 3436 w (first) 926 3436 w (occurrence) 1171 3436 w (of) 1753 3436 w (a) 1901 3436 w (rune) 2006 3436 w (in) 2277 3436 w (a) 2418 3436 w (UTF) 2523 3436 w (string;) 2759 3436 w (and) 3123 3436 w 10 /LucidaTypewriter f (utfrrune) 3353 3436 w 10 /LucidaSansUnicode00 f (a) 3979 3436 w (pointer) 4084 3436 w (to) 4483 3436 w (the) 4631 3436 w (last.) 4836 3436 w 10 /LucidaTypewriter f (Utfutf) 720 3556 w 10 /LucidaSansUnicode00 f (searches) 1191 3556 w (for) 1653 3556 w (the) 1831 3556 w (first) 2025 3556 w (occurrence) 2259 3556 w (of) 2831 3556 w (a) 2969 3556 w (UTF) 3064 3556 w (string) 3290 3556 w (in) 3612 3556 w (another) 3743 3556 w (UTF) 4157 3556 w (string.) 4383 3556 w (Given) 4769 3556 w (the) 720 3676 w (synchronizing) 909 3676 w (property) 1624 3676 w (of) 2072 3676 w (UTF-8,) 2204 3676 w 10 /LucidaTypewriter f (utfutf) 2576 3676 w 10 /LucidaSansUnicode00 f (is) 3041 3676 w (the) 3154 3676 w (same) 3342 3676 w (as) 3630 3676 w 10 /LucidaTypewriter f (strstr) 3769 3676 w 10 /LucidaSansUnicode00 f (if) 4234 3676 w (the) 4333 3676 w (arguments) 4521 3676 w (point to valid UTF strings.) 720 3796 w (It) 970 3952 w (is) 1086 3952 w (a) 1216 3952 w (mistake) 1321 3952 w (to) 1751 3952 w (use) 1900 3952 w 10 /LucidaTypewriter f (strchr) 2120 3952 w 10 /LucidaSansUnicode00 f (or) 2603 3952 w 10 /LucidaTypewriter f (strrchr) 2756 3952 w 10 /LucidaSansUnicode00 f (unless) 3311 3952 w (searching) 3673 3952 w (for) 4193 3952 w (a) 4383 3952 w (7-bit) 4489 3952 w (ASCII) 4790 3952 w (character, that is, a character less than) 720 4072 w 10 /LucidaTypewriter f (Runeself) 2635 4072 w 10 /LucidaSansUnicode00 f (.) 3211 4072 w (We) 970 4228 w (have) 1149 4228 w (no) 1411 4228 w (routines) 1571 4228 w (for) 2007 4228 w (manipulating) 2183 4228 w (null-terminated) 2858 4228 w (arrays) 3665 4228 w (of) 3998 4228 w 10 /LucidaTypewriter f (Runes) 4134 4228 w 10 /LucidaSansUnicode00 f (.) 4494 4228 w (Although) 4596 4228 w (they) 720 4348 w (should) 968 4348 w (probably) 1337 4348 w (exist) 1805 4348 w (for) 2080 4348 w (completeness,) 2260 4348 w (we) 2999 4348 w (have) 3173 4348 w (found) 3439 4348 w (no) 3765 4348 w (need) 3929 4348 w (for) 4207 4348 w (them,) 4386 4348 w (for) 4706 4348 w (the) 4885 4348 w (same reason that) 720 4468 w 10 /LucidaTypewriter f (%S) 1588 4468 w 10 /LucidaSansUnicode00 f (and) 1764 4468 w 10 /LucidaTypewriter f (L"...") 1976 4468 w 10 /LucidaSansUnicode00 f (are rarely used.) 2440 4468 w (Most) 970 4624 w (Plan) 1238 4624 w (9) 1472 4624 w (programs) 1568 4624 w (use) 2068 4624 w (a) 2271 4624 w (new) 2360 4624 w (buffered) 2589 4624 w (I/O) 3038 4624 w (library,) 3232 4624 w (BIO,) 3608 4624 w (in) 3839 4624 w (place) 3964 4624 w (of) 4252 4624 w (Standard) 4384 4624 w (I/O.) 4848 4624 w (BIO) 720 4744 w (contains) 938 4744 w (routines) 1399 4744 w (to) 1851 4744 w (read) 2002 4744 w (and) 2270 4744 w (write) 2503 4744 w (UTF) 2796 4744 w (streams,) 3035 4744 w (converting) 3504 4744 w (to) 4070 4744 w (and) 4220 4744 w (from) 4452 4744 w (runes.) 4736 4744 w 10 /LucidaTypewriter f (Bgetrune) 720 4864 w 10 /LucidaSansUnicode00 f (returns,) 1348 4864 w (as) 1782 4864 w (a) 1940 4864 w 10 /LucidaTypewriter f (Rune) 2047 4864 w 10 /LucidaSansUnicode00 f (within) 2387 4864 w (a) 2736 4864 w 10 /LucidaTypewriter f (long) 2844 4864 w 10 /LucidaSansUnicode00 f (,) 3132 4864 w (the) 3217 4864 w (next) 3425 4864 w (character) 3694 4864 w (in) 4196 4864 w (the) 4340 4864 w (UTF) 4548 4864 w (input) 4787 4864 w (stream;) 720 4984 w 10 /LucidaTypewriter f (Bputrune) 1119 4984 w 10 /LucidaSansUnicode00 f (takes) 1729 4984 w (a) 2020 4984 w (rune) 2109 4984 w (and) 2364 4984 w (writes) 2577 4984 w (its) 2901 4984 w (UTF) 3051 4984 w (representation.) 3270 4984 w 10 /LucidaTypewriter f (Bungetrune) 4074 4984 w 10 /LucidaSansUnicode00 f (puts) 4827 4984 w (a rune back into the input stream for rereading.) 720 5104 w (Plan) 970 5260 w (9) 1211 5260 w (programs) 1314 5260 w (use) 1821 5260 w (a) 2030 5260 w (simple) 2125 5260 w (set) 2486 5260 w (of) 2670 5260 w (macros) 2808 5260 w (to) 3200 5260 w (process) 3338 5260 w (command) 3753 5260 w (line) 4272 5260 w (arguments.) 4489 5260 w (Converting) 720 5380 w (these) 1284 5380 w (macros) 1579 5380 w (to) 1964 5380 w (UTF) 2095 5380 w (automatically updated the argument processing of most) 2314 5380 w (programs.) 720 5500 w (In general, argument flag names can no longer be held in bytes) 1283 5500 w (and) 4401 5500 w (arrays) 4614 5500 w (of) 4942 5500 w (256 bytes cannot be used to hold a set of flags.) 720 5620 w (We) 970 5776 w (have) 1146 5776 w (done) 1405 5776 w (nothing) 1681 5776 w (analogous) 2090 5776 w (to) 2622 5776 w (ANSI) 2754 5776 w (C) 3014 5776 w 10 /LucidaSansUnicode20 f (\031) 3083 5776 w 10 /LucidaSansUnicode00 f (s) 3115 5776 w (locales,) 3200 5776 w (partly) 3599 5776 w (because) 3911 5776 w (we) 4340 5776 w (do) 4508 5776 w (not) 4667 5776 w (feel) 4862 5776 w (qualified) 720 5896 w (to) 1182 5896 w (define) 1319 5896 w (locales) 1661 5896 w (and) 2032 5896 w (partly) 2251 5896 w (because) 2567 5896 w (we) 3000 5896 w (remain) 3172 5896 w (unconvinced) 3547 5896 w (of) 4196 5896 w (that) 4332 5896 w (model) 4561 5896 w (for) 4901 5896 w (dealing) 720 6016 w (with) 1109 6016 w (the) 1348 6016 w (problems.) 1537 6016 w (That) 2092 6016 w (is) 2343 6016 w (really) 2457 6016 w (more) 2753 6016 w (an) 3038 6016 w (issue) 3189 6016 w (of) 3472 6016 w (internationalization) 3604 6016 w (than) 4583 6016 w (con\255) 4833 6016 w (version) 720 6136 w (to) 1116 6136 w (a) 1258 6136 w (larger) 1357 6136 w (character) 1685 6136 w (set;) 2178 6136 w (on) 2398 6136 w (the) 2565 6136 w (other) 2764 6136 w (hand,) 3065 6136 w (because) 3383 6136 w (we) 3821 6136 w (have) 3998 6136 w (chosen) 4267 6136 w (a) 4653 6136 w (single) 4751 6136 w (character) 720 6256 w (set) 1211 6256 w (that) 1397 6256 w (encompasses) 1630 6256 w (most) 2322 6256 w (languages,) 2606 6256 w (some) 3174 6256 w (of) 3477 6256 w (the) 3617 6256 w (need) 3814 6256 w (for) 4093 6256 w (locales) 4274 6256 w (is) 4648 6256 w (elimi\255) 4771 6256 w (nated.) 720 6376 w (\(We have a utility,) 1089 6376 w 10 /LucidaTypewriter f (tcs) 1979 6376 w 10 /LucidaSansUnicode00 f (, that translates between UTF and other character sets.\)) 2195 6376 w (There) 970 6532 w (are) 1284 6532 w (several) 1472 6532 w (reasons) 1848 6532 w (why) 2261 6532 w (our) 2488 6532 w (library) 2688 6532 w (does) 3034 6532 w (not) 3301 6532 w (follow) 3497 6532 w (the) 3827 6532 w (ANSI) 4018 6532 w (design) 4280 6532 w (for) 4639 6532 w (wide) 4815 6532 w (and) 720 6652 w (multi-byte) 958 6652 w (characters.) 1532 6652 w (The) 2153 6652 w (ANSI) 2391 6652 w (model) 2674 6652 w (was) 3033 6652 w (designed) 3273 6652 w (by) 3772 6652 w (a) 3944 6652 w (committee,) 4056 6652 w (untried,) 4658 6652 w (almost) 720 6772 w (as) 1083 6772 w (an) 1226 6772 w (afterthought,) 1380 6772 w (whereas) 2058 6772 w (we) 2493 6772 w (wanted) 2663 6772 w (to) 3050 6772 w (design) 3185 6772 w (as) 3545 6772 w (we) 3689 6772 w (built.) 3860 6772 w (\(We) 4182 6772 w (made) 4395 6772 w (several) 4700 6772 w (major) 720 6892 w (changes) 1041 6892 w (to) 1481 6892 w (the) 1620 6892 w (interface) 1815 6892 w (as) 2279 6892 w (we) 2425 6892 w (became) 2598 6892 w (familiar) 3012 6892 w (with) 3420 6892 w (the) 3665 6892 w (problems) 3860 6892 w (involved.\)) 4357 6892 w (We) 4898 6892 w (disagree) 720 7012 w (with) 1191 7012 w (ANSI) 1454 7012 w (C) 1738 7012 w 10 /LucidaSansUnicode20 f (\031) 1807 7012 w 10 /LucidaSansUnicode00 f (s) 1839 7012 w (handling) 1948 7012 w (of) 2430 7012 w (invalid) 2587 7012 w (multi-byte) 2965 7012 w (sequences.) 3540 7012 w (Also,) 4171 7012 w (the) 4472 7012 w (ANSI) 4686 7012 w (C) 4971 7012 w (library) 720 7132 w (is) 1073 7132 w (incomplete:) 1196 7132 w (although) 1808 7132 w (it) 2281 7132 w (contains) 2390 7132 w (some) 2841 7132 w (crucial) 3145 7132 w (routines) 3505 7132 w (for) 3946 7132 w (handling) 4127 7132 w (wide) 4593 7132 w (and) 4860 7132 w (multi-byte characters, there are some serious omissions.) 720 7252 w (For) 3560 7252 w (example,) 3749 7252 w (our) 4227 7252 w (software) 4424 7252 w (can) 4872 7252 w cleartomark showpage saveobj restore %%EndPage: 6 6 %%Page: 7 7 /saveobj save def mark 7 pagesetup 10 /LucidaSansUnicode00 f (\255 7 \255) 2783 480 w (exploit) 720 840 w (the) 1118 840 w (fact) 1335 840 w (that) 1577 840 w (UTF) 1829 840 w (preserves) 2076 840 w (ASCII) 2604 840 w (characters) 2915 840 w (in) 3476 840 w (the) 3628 840 w (byte) 3844 840 w (stream.) 4113 840 w (We) 4571 840 w (could) 4774 840 w (remove) 720 960 w (that) 1127 960 w (assumption) 1366 960 w (by) 1978 960 w (replacing) 2141 960 w (all) 2637 960 w (calls) 2798 960 w (to) 3061 960 w 10 /LucidaTypewriter f (strchr) 3207 960 w 10 /LucidaSansUnicode00 f (with) 3688 960 w 10 /LucidaTypewriter f (utfrune) 3942 960 w 10 /LucidaSansUnicode00 f (and) 4495 960 w (so) 4724 960 w (on.) 4885 960 w (\(Because) 720 1080 w (of) 1175 1080 w (the) 1306 1080 w (weaker) 1494 1080 w (properties) 1870 1080 w (of) 2401 1080 w (the) 2532 1080 w (original) 2720 1080 w (UTF,) 3121 1080 w (we) 3372 1080 w (have) 3538 1080 w (actually done so.\)) 3796 1080 w (ANSI C) 4713 1080 w (cannot:) 720 1200 w (the) 1129 1200 w (standard) 1333 1200 w (says) 1809 1200 w (nothing) 2067 1200 w (about) 2492 1200 w (the) 2820 1200 w (representation,) 3025 1200 w (so) 3814 1200 w (portable) 3976 1200 w (code) 4431 1200 w (should) 4712 1200 w 10 /LucidaSans-Italic f (never) 720 1320 w 10 /LucidaSansUnicode00 f (call) 1039 1320 w 10 /LucidaTypewriter f (strchr) 1252 1320 w 10 /LucidaSansUnicode00 f (,) 1684 1320 w (yet) 1765 1320 w (there) 1958 1320 w (is) 2258 1320 w (no) 2386 1320 w (ANSI) 2557 1320 w (equivalent) 2831 1320 w (to) 3380 1320 w 10 /LucidaTypewriter f (utfrune) 3526 1320 w 10 /LucidaSansUnicode00 f (.) 4030 1320 w (ANSI) 4142 1320 w (C) 4416 1320 w (simultane\255) 4533 1320 w (ously invalidates) 720 1440 w 10 /LucidaTypewriter f (strchr) 1557 1440 w 10 /LucidaSansUnicode00 f (and offers no replacement.) 2021 1440 w (Finally,) 970 1596 w (ANSI) 1352 1596 w (did) 1618 1596 w (nothing) 1813 1596 w (to) 2228 1596 w (integrate) 2366 1596 w (wide) 2841 1596 w (characters) 3106 1596 w (into) 3646 1596 w (the) 3875 1596 w (I/O) 4070 1596 w (system:) 4270 1596 w (it) 4683 1596 w (gives) 4790 1596 w (no) 720 1716 w (method) 876 1716 w (for) 1281 1716 w (printing) 1453 1716 w (wide) 1871 1716 w (characters.) 2129 1716 w (We) 2726 1716 w (therefore) 2901 1716 w (needed) 3381 1716 w (to) 3770 1716 w (invent) 3901 1716 w (some things and) 4232 1716 w (decided) 720 1836 w (to) 1159 1836 w (invent) 1315 1836 w (everything.) 1671 1836 w (In) 2302 1836 w (the) 2452 1836 w (end,) 2666 1836 w (some) 2938 1836 w (of) 3258 1836 w (our) 3415 1836 w (entry) 3638 1836 w (points) 3945 1836 w (do) 4307 1836 w (correspond) 4490 1836 w (closely) 720 1956 w (to) 1091 1956 w (ANSI) 1231 1956 w (routines) 1499 1956 w 10 /LucidaSansUnicode20 f (\024) 1898 1956 w 10 /LucidaSansUnicode00 f (for) 1998 1956 w (example) 2179 1956 w 10 /LucidaTypewriter f (chartorune) 2634 1956 w 10 /LucidaSansUnicode00 f (and) 3396 1956 w 10 /LucidaTypewriter f (runetochar) 3618 1956 w 10 /LucidaSansUnicode00 f (are) 4380 1956 w (similar) 4574 1956 w (to) 4942 1956 w 10 /LucidaTypewriter f (mbtowc) 720 2076 w 10 /LucidaSansUnicode00 f (and) 1189 2076 w 10 /LucidaTypewriter f (wctomb) 1406 2076 w 10 /LucidaSansUnicode20 f (\024) 1838 2076 w 10 /LucidaSansUnicode00 f (but) 1938 2076 w (Plan) 2137 2076 w (9) 2375 2076 w 10 /LucidaSansUnicode20 f (\031) 2438 2076 w 10 /LucidaSansUnicode00 f (s) 2470 2076 w (library) 2559 2076 w (defines) 2907 2076 w (more) 3299 2076 w (functionality,) 3588 2076 w (enough) 4261 2076 w (to) 4664 2076 w (write) 4800 2076 w (real applications comfortably.) 720 2196 w 10 /LucidaSans-Demi f (Converting the tools) 720 2436 w 10 /LucidaSansUnicode00 f (The) 970 2592 w (source) 1187 2592 w (for) 1545 2592 w (our) 1720 2592 w (tools) 1920 2592 w (and) 2195 2592 w (applications) 2411 2592 w (had) 3032 2592 w (already) 3248 2592 w (been) 3636 2592 w (converted) 3910 2592 w (to) 4426 2592 w (work) 4561 2592 w (with) 4835 2592 w (Latin-1,) 720 2712 w (so) 1154 2712 w (it) 1311 2712 w (was) 1421 2712 w 10 /LucidaSansUnicode20 f (\030) 1648 2712 w 10 /LucidaSansUnicode00 f (8-bit) 1680 2712 w (safe) 1974 2712 w 10 /LucidaSansUnicode20 f (\031) 2173 2712 w 10 /LucidaSansUnicode00 f (,) 2205 2712 w (but) 2281 2712 w (the) 2487 2712 w (conversion) 2686 2712 w (to) 3256 2712 w (the) 3398 2712 w (Unicode) 3597 2712 w (Standard) 4032 2712 w (and) 4506 2712 w (UTF) 4730 2712 w (is) 4960 2712 w (more) 720 2832 w (involved.) 1013 2832 w (Some) 1523 2832 w (programs) 1829 2832 w (needed) 2338 2832 w (no) 2736 2832 w (change) 2902 2832 w (at) 3293 2832 w (all:) 3428 2832 w 10 /LucidaTypewriter f (cat) 3616 2832 w 10 /LucidaSansUnicode00 f (,) 3832 2832 w (for) 3907 2832 w (instance,) 4089 2832 w (interprets) 4567 2832 w (its) 720 2952 w (argument) 876 2952 w (strings,) 1383 2952 w (delivered) 1787 2952 w (in) 2271 2952 w (UTF,) 2401 2952 w (as) 2658 2952 w (file) 2803 2952 w (names) 2993 2952 w (that) 3348 2952 w (it) 3577 2952 w (passes) 3681 2952 w (uninterpreted) 4046 2952 w (to) 4749 2952 w (the) 4885 2952 w 10 /LucidaTypewriter f (open) 720 3072 w 10 /LucidaSansUnicode00 f (system) 1041 3072 w (call,) 1414 3072 w (and) 1643 3072 w (then) 1856 3072 w (just) 2106 3072 w (copies) 2319 3072 w (bytes) 2663 3072 w (from) 2955 3072 w (its) 3220 3072 w (input) 3370 3072 w (to) 3656 3072 w (its) 3787 3072 w (output;) 3938 3072 w (it) 4326 3072 w (never) 4426 3072 w (makes) 4727 3072 w (decisions) 720 3192 w (based) 1213 3192 w (on) 1541 3192 w (the) 1704 3192 w (values) 1899 3192 w (of) 2244 3192 w (the) 2382 3192 w (bytes.) 2577 3192 w (\(Plan) 2940 3192 w (9) 3214 3192 w 10 /LucidaTypewriter f (cat) 3317 3192 w 10 /LucidaSansUnicode00 f (has) 3573 3192 w (no) 3781 3192 w (options) 3944 3192 w (such) 4348 3192 w (as) 4614 3192 w 10 /LucidaTypewriter f (-v) 4759 3192 w 10 /LucidaSansUnicode00 f (to) 4942 3192 w (complicate matters.\)) 720 3312 w (Most programs, however, needed modest change.) 1776 3312 w (It) 970 3468 w (is) 1075 3468 w (difficult) 1194 3468 w (to) 1607 3468 w (find) 1745 3468 w (automatically) 1976 3468 w (the) 2661 3468 w (places) 2856 3468 w (that) 3201 3468 w (need) 3432 3468 w (attention,) 3709 3468 w (but) 4217 3468 w 10 /LucidaTypewriter f (grep) 4419 3468 w 10 /LucidaSansUnicode00 f (helps.) 4747 3468 w (Software) 720 3588 w (that) 1178 3588 w (uses) 1409 3588 w (the) 1669 3588 w (libraries) 1864 3588 w (conscientiously) 2298 3588 w (can) 3082 3588 w (be) 3290 3588 w (searched) 3449 3588 w (for) 3924 3588 w (calls) 4103 3588 w (to) 4357 3588 w (library) 4494 3588 w (rou\255) 4843 3588 w (tines) 720 3708 w (that) 999 3708 w (examine) 1234 3708 w (bytes) 1690 3708 w (as) 1993 3708 w (characters:) 2143 3708 w 10 /LucidaTypewriter f (strchr) 2719 3708 w 10 /LucidaSansUnicode00 f (,) 3151 3708 w 10 /LucidaTypewriter f (strrchr) 3227 3708 w 10 /LucidaSansUnicode00 f (,) 3731 3708 w 10 /LucidaTypewriter f (strstr) 3808 3708 w 10 /LucidaSansUnicode00 f (,) 4240 3708 w (etc.) 4317 3708 w (Replacing) 4570 3708 w (these) 720 3828 w (by) 1017 3828 w (calls) 1166 3828 w (to) 1415 3828 w 10 /LucidaTypewriter f (utfrune) 1547 3828 w 10 /LucidaSansUnicode00 f (,) 2051 3828 w 10 /LucidaTypewriter f (utfrrune) 2117 3828 w 10 /LucidaSansUnicode00 f (,) 2693 3828 w (and) 2759 3828 w 10 /LucidaTypewriter f (utfutf) 2973 3828 w 10 /LucidaSansUnicode00 f (is) 3439 3828 w (enough) 3553 3828 w (to) 3952 3828 w (fix) 4084 3828 w (many) 4245 3828 w (programs.) 4541 3828 w (Few) 720 3948 w (tools) 946 3948 w (actually) 1224 3948 w (need) 1633 3948 w (to) 1909 3948 w (operate) 2046 3948 w (on) 2454 3948 w (runes) 2616 3948 w (internally;) 2927 3948 w (more) 3450 3948 w (typically) 3740 3948 w (they) 4176 3948 w (need) 4422 3948 w (only) 4698 3948 w (to) 4942 3948 w (look) 720 4068 w (for) 966 4068 w (the) 1142 4068 w (final) 1334 4068 w (slash) 1582 4068 w (in) 1866 4068 w (a) 1993 4068 w (file) 2084 4068 w (name) 2271 4068 w (and) 2573 4068 w (similar) 2789 4068 w (trivial) 3152 4068 w (tasks.) 3460 4068 w (Of) 3812 4068 w (the) 3963 4068 w (170) 4154 4068 w (C) 4379 4068 w (source) 4484 4068 w (pro\255) 4842 4068 w (grams in the top levels of) 720 4188 w 10 /LucidaTypewriter f (/sys/src/cmd) 1992 4188 w 10 /LucidaSansUnicode00 f (, only 23 now contain the word) 2856 4188 w 10 /LucidaTypewriter f (Rune) 4396 4188 w 10 /LucidaSansUnicode00 f (.) 4684 4188 w (The programs that) 970 4344 w 10 /LucidaSans-Italic f (do) 1905 4344 w 10 /LucidaSansUnicode00 f (store runes internally) 2055 4344 w (are) 3122 4344 w (mostly) 3307 4344 w (those) 3663 4344 w (whose) 3963 4344 w 10 /LucidaSans-Italic f (raison) 4303 4344 w (d'\352tre) 4642 4344 w 10 /LucidaSansUnicode00 f (is) 4960 4344 w (character) 720 4464 w (manipulation:) 1204 4464 w 10 /LucidaTypewriter f (sam) 1908 4464 w 10 /LucidaSansUnicode00 f (\(the) 2159 4464 w (text) 2382 4464 w (editor\),) 2608 4464 w 10 /LucidaTypewriter f (sed) 2995 4464 w 10 /LucidaSansUnicode00 f (,) 3211 4464 w 10 /LucidaTypewriter f (sort) 3278 4464 w 10 /LucidaSansUnicode00 f (,) 3566 4464 w 10 /LucidaTypewriter f (tr) 3633 4464 w 10 /LucidaSansUnicode00 f (,) 3777 4464 w 10 /LucidaTypewriter f (troff) 3844 4464 w 10 /LucidaSansUnicode00 f (,) 4204 4464 w 10 /LucidaTypewriter f (8\275) 4271 4464 w 10 /LucidaSansUnicode00 f (\(the) 4449 4464 w (window) 4671 4464 w (system) 720 4584 w (and) 1100 4584 w (terminal) 1320 4584 w (emulator\),) 1762 4584 w (and) 2301 4584 w (so) 2521 4584 w (on.) 2674 4584 w (To) 2902 4584 w (decide) 3067 4584 w (whether) 3426 4584 w (to) 3858 4584 w (compute) 3997 4584 w (using) 4461 4584 w (runes) 4768 4584 w (or) 720 4704 w (UTF-encoded) 870 4704 w (byte) 1574 4704 w (strings) 1829 4704 w (requires) 2209 4704 w (balancing) 2655 4704 w (the) 3170 4704 w (cost) 3372 4704 w (of) 3619 4704 w (converting) 3764 4704 w (the) 4324 4704 w (data) 4526 4704 w (when) 4783 4704 w (read) 720 4824 w (and) 972 4824 w (written) 1189 4824 w (against) 1565 4824 w (the) 1953 4824 w (cost) 2145 4824 w (of) 2382 4824 w (converting) 2518 4824 w (relevant) 3069 4824 w (text) 3495 4824 w (on) 3724 4824 w (demand.) 3885 4824 w (For) 4379 4824 w (programs) 4573 4824 w (such) 720 4944 w (as) 980 4944 w (editors) 1120 4944 w (that) 1492 4944 w (run) 1717 4944 w (a) 1916 4944 w (long) 2005 4944 w (time) 2253 4944 w (with) 2502 4944 w (a) 2741 4944 w (relatively) 2830 4944 w (constant) 3300 4944 w (dataset,) 3750 4944 w (runes) 4170 4944 w (are) 4476 4944 w (the) 4662 4944 w (bet\255) 4851 4944 w (ter) 720 5064 w (choice.) 902 5064 w (There) 1324 5064 w (are) 1650 5064 w (space) 1850 5064 w (considerations) 2174 5064 w (too,) 2931 5064 w (but) 3170 5064 w (they) 3380 5064 w (are) 3635 5064 w (more) 3835 5064 w (complicated:) 4134 5064 w (plain) 4802 5064 w (ASCII text grows when converted to runes; UTF-encoded Japanese shrinks.) 720 5184 w (Again,) 970 5340 w (it) 1315 5340 w (is) 1417 5340 w (hard) 1533 5340 w (to) 1790 5340 w (automate) 1924 5340 w (the) 2416 5340 w (conversion) 2607 5340 w (of) 3169 5340 w (a) 3303 5340 w (program) 3394 5340 w (from) 3847 5340 w 10 /LucidaTypewriter f (chars) 4116 5340 w 10 /LucidaSansUnicode00 f (to) 4513 5340 w 10 /LucidaTypewriter f (Runes) 4648 5340 w 10 /LucidaSansUnicode00 f (.) 5008 5340 w (It) 720 5460 w (is) 836 5460 w (not) 966 5460 w (enough) 1176 5460 w (just) 1591 5460 w (to) 1821 5460 w (change) 1969 5460 w (the) 2367 5460 w (type) 2572 5460 w (of) 2830 5460 w (variables;) 2978 5460 w (the) 3491 5460 w (assumption) 3696 5460 w (that) 4310 5460 w (bytes) 4551 5460 w (and) 4860 5460 w (characters are equivalent can be insidious.) 720 5580 w (For instance, to clear a character array by) 2853 5580 w 9 /LucidaTypewriter f (memset\(buf,) 1008 5750 w (0,) 1788 5750 w (BUFSIZE\)) 1983 5750 w 10 /LucidaSansUnicode00 f (becomes) 720 5930 w (wrong) 1188 5930 w (if) 1528 5930 w 10 /LucidaTypewriter f (buf) 1631 5930 w 10 /LucidaSansUnicode00 f (is) 1884 5930 w (changed) 2001 5930 w (from) 2449 5930 w (an) 2718 5930 w (array) 2872 5930 w (of) 3153 5930 w 10 /LucidaTypewriter f (chars) 3288 5930 w 10 /LucidaSansUnicode00 f (to) 3686 5930 w (an) 3822 5930 w (array) 3977 5930 w (of) 4259 5930 w 10 /LucidaTypewriter f (Runes) 4395 5930 w 10 /LucidaSansUnicode00 f (.) 4755 5930 w (Any) 4857 5930 w (program) 720 6050 w (that) 1175 6050 w (indexes) 1405 6050 w (tables) 1822 6050 w (based) 2151 6050 w (on) 2477 6050 w (character) 2638 6050 w (values) 3125 6050 w (needs) 3468 6050 w (rethinking.) 3794 6050 w (Consider) 4394 6050 w 10 /LucidaTypewriter f (tr) 4864 6050 w 10 /LucidaSansUnicode00 f (,) 5008 6050 w (which) 720 6170 w (originally) 1043 6170 w (used) 1534 6170 w (multiple) 1808 6170 w (256-byte) 2248 6170 w (arrays) 2745 6170 w (for) 3082 6170 w (the) 3263 6170 w (mapping.) 3460 6170 w (The) 3993 6170 w (na\357ve) 4217 6170 w (conversion) 4514 6170 w (would) 720 6290 w (yield) 1054 6290 w (multiple) 1325 6290 w (65536-rune) 1765 6290 w (arrays.) 2401 6290 w (Instead) 2802 6290 w (Plan) 3197 6290 w (9) 3440 6290 w 10 /LucidaTypewriter f (tr) 3545 6290 w 10 /LucidaSansUnicode00 f (saves) 3730 6290 w (space) 4036 6290 w (by) 4353 6290 w (building) 4509 6290 w (in) 4949 6290 w (effect a run-encoded version of the map.) 720 6410 w 10 /LucidaTypewriter f (Sort) 970 6566 w 10 /LucidaSansUnicode00 f (has) 1302 6566 w (related) 1515 6566 w (problems.) 1897 6566 w (The) 2463 6566 w (cooperation) 2689 6566 w (of) 3311 6566 w (UTF) 3454 6566 w (and) 3685 6566 w 10 /LucidaTypewriter f (strcmp) 3910 6566 w 10 /LucidaSansUnicode00 f (means) 4387 6566 w (that) 4749 6566 w (a) 4985 6566 w (simple) 720 6686 w (sort) 1106 6686 w 10 /LucidaSansUnicode20 f (\024) 1296 6686 w 10 /LucidaSansUnicode00 f (one) 1396 6686 w (with) 1640 6686 w (no) 1910 6686 w (options) 2098 6686 w 10 /LucidaSansUnicode20 f (\024) 2462 6686 w 10 /LucidaSansUnicode00 f (can) 2562 6686 w (be) 2795 6686 w (done) 2979 6686 w (on) 3286 6686 w (the) 3474 6686 w (original) 3694 6686 w (UTF) 4127 6686 w (strings) 4377 6686 w (using) 4774 6686 w 10 /LucidaTypewriter f (strcmp) 720 6806 w 10 /LucidaSansUnicode00 f (.) 1152 6806 w (With) 1257 6806 w (sorting) 1512 6806 w (options) 1896 6806 w (enabled,) 2301 6806 w (however,) 2758 6806 w 10 /LucidaTypewriter f (sort) 3236 6806 w 10 /LucidaSansUnicode00 f (may) 3565 6806 w (need) 3807 6806 w (to) 4086 6806 w (convert) 4226 6806 w (its) 4628 6806 w (input) 4787 6806 w (to) 720 6926 w (runes:) 868 6926 w (for) 1222 6926 w (example,) 1411 6926 w (option) 1906 6926 w 10 /LucidaTypewriter f (-t) 2269 6926 w 10 /LucidaSansUnicode03 f (\261) 2413 6926 w 10 /LucidaSansUnicode00 f (requires) 2535 6926 w (searching) 2984 6926 w (for) 3503 6926 w (alphas) 3692 6926 w (in) 4056 6926 w (the) 4196 6926 w (input) 4400 6926 w (text) 4702 6926 w (to) 4942 6926 w (crack) 720 7046 w (the) 1014 7046 w (input) 1207 7046 w (into) 1499 7046 w (fields.) 1727 7046 w (The) 2095 7046 w (field) 2315 7046 w (specifier) 2568 7046 w 10 /LucidaTypewriter f (+3.2) 3020 7046 w 10 /LucidaSansUnicode00 f (refers) 3347 7046 w (to) 3668 7046 w (2) 3805 7046 w (runes) 3907 7046 w (beyond) 4218 7046 w (the) 4614 7046 w (third) 4808 7046 w (field.) 720 7166 w (Some) 1049 7166 w (of) 1364 7166 w (the) 1513 7166 w (other) 1719 7166 w (options) 2027 7166 w (are) 2441 7166 w (hopelessly) 2643 7166 w (provincial:) 3203 7166 w (consider) 3757 7166 w (the) 4221 7166 w (case-folding) 4426 7166 w (and) 720 7286 w (dictionary) 936 7286 w (order) 1452 7286 w (options) 1750 7286 w (\(Japanese) 2150 7286 w (doesn) 2648 7286 w 10 /LucidaSansUnicode20 f (\031) 2941 7286 w 10 /LucidaSansUnicode00 f (t) 2973 7286 w (even) 3046 7286 w (have) 3308 7286 w (an) 3570 7286 w (official) 3724 7286 w (dictionary) 4089 7286 w (order\)) 4606 7286 w (or) 4938 7286 w cleartomark showpage saveobj restore %%EndPage: 7 7 %%Page: 8 8 /saveobj save def mark 8 pagesetup 10 /LucidaSansUnicode00 f (\255 8 \255) 2783 480 w 10 /LucidaTypewriter f (-M) 720 840 w 10 /LucidaSansUnicode00 f (which) 911 840 w (compares) 1239 840 w (by) 1757 840 w (case-insensitive) 1919 840 w (English) 2751 840 w (month) 3147 840 w (name.) 3509 840 w (Handling) 3886 840 w (these) 4368 840 w (options) 4676 840 w (involves) 720 960 w (the) 1153 960 w (larger) 1349 960 w (issues) 1674 960 w (of) 2015 960 w (internationalization) 2154 960 w (and) 3140 960 w (is) 3361 960 w (beyond) 3482 960 w (the) 3880 960 w (scope) 4077 960 w (of) 4401 960 w (this) 4541 960 w (paper) 4762 960 w (and) 720 1080 w (our) 935 1080 w (expertise.) 1134 1080 w (Plan) 1682 1080 w (9) 1917 1080 w 10 /LucidaTypewriter f (sort) 2014 1080 w 10 /LucidaSansUnicode00 f (works) 2336 1080 w (sensibly) 2658 1080 w (with) 3085 1080 w (options) 3324 1080 w (that) 3722 1080 w (make) 3947 1080 w (sense) 4243 1080 w (relative) 4553 1080 w (to) 4942 1080 w (the) 720 1200 w (input.) 909 1200 w (The) 1261 1200 w (simple) 1477 1200 w (and) 1833 1200 w (most) 2048 1200 w (important) 2325 1200 w (options) 2838 1200 w (are,) 3237 1200 w (however,) 3456 1200 w (usually) 3928 1200 w (meaningful.) 4303 1200 w (In) 4949 1200 w (particular,) 720 1320 w 10 /LucidaTypewriter f (sort) 1247 1320 w 10 /LucidaSansUnicode00 f (sorts UTF into the same order that) 1567 1320 w 10 /LucidaTypewriter f (look) 3270 1320 w 10 /LucidaSansUnicode00 f (expects.) 3590 1320 w (Regular expression-matching algorithms need rethinking to) 970 1476 w (be) 3924 1476 w (applied) 4076 1476 w (to) 4467 1476 w (UTF) 4598 1476 w (text.) 4817 1476 w (Deterministic) 720 1596 w (automata) 1424 1596 w (are) 1937 1596 w (usually) 2146 1596 w (applied) 2543 1596 w (to) 2958 1596 w (bytes;) 3113 1596 w (converting) 3461 1596 w (them) 4031 1596 w (to) 4336 1596 w (operate) 4491 1596 w (on) 4917 1596 w (variable-sized) 720 1716 w (byte) 1467 1716 w (sequences) 1729 1716 w (is) 2291 1716 w (awkward.) 2425 1716 w (On) 2969 1716 w (the) 3163 1716 w (other) 3372 1716 w (hand,) 3683 1716 w (converting) 4011 1716 w (the) 4578 1716 w (input) 4787 1716 w (stream) 720 1836 w (to) 1088 1836 w (runes) 1221 1836 w (adds) 1528 1836 w (measurable) 1795 1836 w (expense) 2391 1836 w (and) 2831 1836 w (the) 3046 1836 w (state) 3236 1836 w (tables) 3507 1836 w (expand) 3832 1836 w (from) 4226 1836 w (size) 4492 1836 w (256) 4719 1836 w (to) 4942 1836 w (65536;) 720 1956 w (it) 1121 1956 w (can) 1241 1956 w (be) 1463 1956 w (expensive) 1636 1956 w (just) 2176 1956 w (to) 2410 1956 w (generate) 2562 1956 w (them.) 3041 1956 w (For) 3407 1956 w (simple) 3617 1956 w (string) 3992 1956 w (searching,) 4329 1956 w (the) 4885 1956 w (Boyer-Moore) 720 2076 w (algorithm) 1384 2076 w (works) 1886 2076 w (with) 2207 2076 w (UTF) 2445 2076 w (provided) 2664 2076 w (the) 3125 2076 w (input) 3313 2076 w (is) 3599 2076 w (guaranteed) 3712 2076 w (to) 4294 2076 w (be only valid) 4425 2076 w (UTF) 720 2196 w (strings;) 943 2196 w (however,) 1345 2196 w (it) 1819 2196 w (does) 1922 2196 w (not) 2190 2196 w (work) 2387 2196 w (with) 2662 2196 w (the) 2905 2196 w (old) 3098 2196 w (UTF) 3289 2196 w (encoding.) 3513 2196 w (At) 4061 2196 w (a) 4205 2196 w (more) 4298 2196 w (mundane) 4587 2196 w (level,) 720 2316 w (even) 1028 2316 w (character) 1308 2316 w (classes) 1811 2316 w (are) 2209 2316 w (harder:) 2415 2316 w (the) 2818 2316 w (usual) 3026 2316 w (bit-vector) 3338 2316 w (representation) 3876 2316 w (within) 4636 2316 w (a) 4985 2316 w (non-deterministic automaton is unwieldy with 65536 characters in the alphabet.) 720 2436 w (We) 970 2592 w (compromised.) 1151 2592 w (An) 1916 2592 w (existing) 2086 2592 w (library) 2512 2592 w (for) 2861 2592 w (compiling) 3039 2592 w (and) 3557 2592 w (executing) 3777 2592 w (regular) 4293 2592 w (expres\255) 4679 2592 w (sions) 720 2712 w (was) 1022 2712 w (adapted) 1252 2712 w (to) 1691 2712 w (work) 1836 2712 w (on) 2120 2712 w (runes,) 2290 2712 w (with) 2641 2712 w (two) 2893 2712 w (entry) 3115 2712 w (points) 3410 2712 w (for) 3760 2712 w (searching) 3946 2712 w (in) 4462 2712 w (arrays) 4600 2712 w (of) 4942 2712 w (runes) 720 2832 w (and) 1031 2832 w (arrays) 1250 2832 w (of) 1584 2832 w (chars) 1721 2832 w (\(the) 2020 2832 w (pattern) 2247 2832 w (is) 2637 2832 w (always) 2756 2832 w (UTF) 3114 2832 w (text\).) 3339 2832 w (Character) 3667 2832 w (classes) 4174 2832 w (are) 4558 2832 w (repre\255) 4750 2832 w (sented) 720 2952 w (internally) 1082 2952 w (as) 1571 2952 w (runs) 1714 2952 w (of) 1967 2952 w (runes;) 2102 2952 w (the) 2443 2952 w (reserved) 2635 2952 w (value) 3088 2952 w 10 /LucidaTypewriter f (FFFF) 3379 2952 w 10 /LucidaSansUnicode00 f (marks) 3704 2952 w (the) 4038 2952 w (end) 4229 2952 w (of) 4446 2952 w (the) 4580 2952 w (class.) 4771 2952 w (Then) 720 3072 w 10 /LucidaSans-Italic f (all) 1014 3072 w 10 /LucidaSansUnicode00 f (utilities) 1184 3072 w (that) 1595 3072 w (use) 1838 3072 w (regular) 2059 3072 w (expressions) 2457 3072 w 10 /LucidaSansUnicode20 f (\024) 3039 3072 w 10 /LucidaSansUnicode00 f (editors,) 3139 3072 w 10 /LucidaTypewriter f (grep) 3561 3072 w 10 /LucidaSansUnicode00 f (,) 3849 3072 w 10 /LucidaTypewriter f (awk) 3933 3072 w 10 /LucidaSansUnicode00 f (,) 4149 3072 w (etc.) 4233 3072 w 10 /LucidaSansUnicode20 f (\024) 4409 3072 w 10 /LucidaSansUnicode00 f (except) 4509 3072 w (the) 4885 3072 w (shell,) 720 3192 w (whose) 1023 3192 w (notation) 1374 3192 w (was) 1822 3192 w (grandfathered,) 2049 3192 w (were) 2815 3192 w (converted) 3089 3192 w (to) 3612 3192 w (use) 3753 3192 w (the) 3965 3192 w (library.) 4163 3192 w (For) 4580 3192 w (some) 4779 3192 w (programs,) 720 3312 w (there) 1267 3312 w (was) 1567 3312 w (a) 1798 3312 w (concomitant) 1901 3312 w (loss) 2548 3312 w (of) 2789 3312 w (performance,) 2936 3312 w (but) 3633 3312 w (there) 3844 3312 w (was) 4145 3312 w (also) 4377 3312 w (a) 4622 3312 w (strong) 4726 3312 w (advantage.) 720 3432 w (To) 1315 3432 w (our) 1473 3432 w (knowledge,) 1671 3432 w (Plan) 2261 3432 w (9) 2496 3432 w (is) 2592 3432 w (the) 2705 3432 w (only) 2893 3432 w (Unix-like) 3130 3432 w (system) 3614 3432 w (that) 3987 3432 w (has) 4211 3432 w (a) 4412 3432 w (single) 4500 3432 w (defi\255) 4822 3432 w (nition) 720 3552 w (and) 1042 3552 w (implementation) 1264 3552 w (of) 2068 3552 w (regular) 2208 3552 w (expressions;) 2597 3552 w (patterns) 3254 3552 w (are) 3699 3552 w (written) 3894 3552 w (and) 4276 3552 w (interpreted) 4499 3552 w (identically by all the programs in the system.) 720 3672 w (A) 970 3828 w (handful) 1078 3828 w (of) 1487 3828 w (programs) 1624 3828 w (have) 2131 3828 w (the) 2396 3828 w (notion) 2591 3828 w (of) 2943 3828 w (character) 3081 3828 w (built) 3570 3828 w (into) 3830 3828 w (them) 4059 3828 w (so) 4347 3828 w (strongly) 4499 3828 w (as) 4934 3828 w (to) 720 3948 w (confuse) 877 3948 w (the) 1316 3948 w (issue) 1530 3948 w (of) 1838 3948 w (what) 1994 3948 w (they) 2283 3948 w (should) 2548 3948 w (do) 2934 3948 w (with) 3116 3948 w (UTF) 3379 3948 w (input.) 3623 3948 w (Such) 3998 3948 w (programs) 4285 3948 w (were) 4810 3948 w (treated) 720 4068 w (as) 1099 4068 w (individual) 1239 4068 w (special) 1746 4068 w (cases.) 2114 4068 w (For) 2476 4068 w (example,) 2666 4068 w 10 /LucidaTypewriter f (wc) 3145 4068 w 10 /LucidaSansUnicode00 f (is,) 3323 4068 w (by) 3469 4068 w (default,) 3618 4068 w (unchanged) 4023 4068 w (in) 4593 4068 w (behav\255) 4719 4068 w (ior) 720 4188 w (and) 890 4188 w (output;) 1109 4188 w (a) 1502 4188 w (new) 1596 4188 w (option,) 1830 4188 w 10 /LucidaTypewriter f (-r) 2213 4188 w 10 /LucidaSansUnicode00 f (,) 2357 4188 w (counts) 2427 4188 w (the) 2789 4188 w (number) 2982 4188 w (of) 3397 4188 w (correctly) 3533 4188 w (encoded) 3990 4188 w (runes) 4440 4188 w 10 /LucidaSansUnicode20 f (\024) 4712 4188 w 10 /LucidaSansUnicode00 f (valid) 4812 4188 w (UTF sequences) 720 4308 w 10 /LucidaSansUnicode20 f (\024) 1446 4308 w 10 /LucidaSansUnicode00 f (in its input;) 1546 4308 w 10 /LucidaTypewriter f (-b) 2135 4308 w 10 /LucidaSansUnicode00 f (the number of invalid sequences.) 2311 4308 w (It) 970 4464 w (took) 1075 4464 w (us) 1331 4464 w (several) 1483 4464 w (months) 1863 4464 w (to) 2269 4464 w (convert) 2407 4464 w (all) 2807 4464 w (the) 2960 4464 w (software) 3155 4464 w (in) 3610 4464 w (the) 3741 4464 w (system) 3936 4464 w (to) 4316 4464 w (the) 4454 4464 w (Unicode) 4649 4464 w (Standard) 720 4584 w (and) 1189 4584 w (the) 1408 4584 w (old) 1602 4584 w (UTF.) 1794 4584 w (When) 2083 4584 w (we) 2388 4584 w (decided) 2560 4584 w (to) 2980 4584 w (convert) 3117 4584 w (from) 3516 4584 w (that) 3787 4584 w (to) 4017 4584 w (the) 4154 4584 w (new) 4347 4584 w (UTF,) 4580 4584 w (only) 4836 4584 w (three) 720 4704 w (things) 1018 4704 w (needed) 1367 4704 w (to) 1769 4704 w (be) 1913 4704 w (done.) 2078 4704 w (First,) 2430 4704 w (we) 2720 4704 w (rewrote) 2899 4704 w (the) 3314 4704 w (library) 3516 4704 w (routines) 3873 4704 w (to) 4319 4704 w (encode) 4464 4704 w (and) 4860 4704 w (decode) 720 4824 w (the) 1109 4824 w (new) 1303 4824 w (UTF.) 1537 4824 w (This) 1826 4824 w (took) 2069 4824 w (an) 2324 4824 w (evening.) 2479 4824 w (Next,) 2960 4824 w (we) 3258 4824 w (converted) 3429 4824 w (all) 3946 4824 w (the) 4097 4824 w (files) 4290 4824 w (containing) 4530 4824 w (UTF) 720 4944 w (to) 939 4944 w (the) 1070 4944 w (new) 1258 4944 w (encoding.) 1486 4944 w (We) 2029 4944 w (wrote) 2205 4944 w (a) 2511 4944 w (trivial) 2600 4944 w (program) 2906 4944 w (to) 3356 4944 w (look) 3488 4944 w (for) 3731 4944 w (non-ASCII) 3904 4944 w (bytes) 4431 4944 w (in) 4724 4944 w (text) 4849 4944 w (files) 720 5064 w (and) 967 5064 w (used) 1192 5064 w (a) 1468 5064 w (Plan) 1567 5064 w (9) 1812 5064 w (program) 1919 5064 w (called) 2379 5064 w 10 /LucidaTypewriter f (tcs) 2706 5064 w 10 /LucidaSansUnicode00 f (\(translate) 2966 5064 w (character) 3466 5064 w (set\)) 3959 5064 w (to) 4180 5064 w (change) 4322 5064 w (encod\255) 4714 5064 w (ings.) 720 5184 w (Finally,) 1070 5184 w (we) 1494 5184 w (recompiled) 1709 5184 w (all) 2333 5184 w (the) 2528 5184 w (system) 2766 5184 w (software;) 3189 5184 w (the) 3719 5184 w (library) 3957 5184 w (interface) 4350 5184 w (was) 4857 5184 w (unchanged,) 720 5304 w (so) 1338 5304 w (recompilation) 1501 5304 w (was) 2218 5304 w (sufficient) 2451 5304 w (to) 2952 5304 w (effect) 3100 5304 w (the) 3424 5304 w (transformation.) 3629 5304 w (The) 4465 5304 w (second) 4696 5304 w (two) 720 5424 w (steps) 932 5424 w (were) 1227 5424 w (done) 1494 5424 w (concurrently) 1773 5424 w (and) 2415 5424 w (took) 2632 5424 w (an) 2886 5424 w (afternoon.) 3040 5424 w (We) 3613 5424 w (concluded) 3793 5424 w (that) 4329 5424 w (the) 4558 5424 w (actual) 4751 5424 w (encoding) 720 5544 w (is) 1204 5544 w (relatively) 1322 5544 w (unimportant) 1796 5544 w (to) 2436 5544 w (the) 2572 5544 w (software;) 2764 5544 w (the) 3248 5544 w (adoption) 3440 5544 w (of) 3908 5544 w (large) 4043 5544 w (characters) 4323 5544 w (and) 4860 5544 w (a byte-stream encoding) 720 5664 w 10 /LucidaSans-Italic f (per se) 1916 5664 w 10 /LucidaSansUnicode00 f (are much deeper issues.) 2244 5664 w 10 /LucidaSans-Demi f (Graphics and fonts) 720 5904 w 10 /LucidaSansUnicode00 f (Plan) 970 6060 w (9) 1240 6060 w (provides) 1372 6060 w (only) 1857 6060 w (minimal) 2130 6060 w (support) 2589 6060 w (for) 3036 6060 w (plain) 3245 6060 w (text) 3553 6060 w (terminals.) 3814 6060 w (It) 4401 6060 w (is) 4537 6060 w (instead) 4687 6060 w (designed) 720 6180 w (to) 1204 6180 w (be) 1344 6180 w (used) 1504 6180 w (with) 1777 6180 w (all) 2023 6180 w (character) 2177 6180 w (input) 2667 6180 w (and) 2961 6180 w (output) 3182 6180 w (mediated) 3545 6180 w (by) 4038 6180 w (a) 4194 6180 w (window) 4290 6180 w (system) 4700 6180 w (such) 720 6300 w (as) 982 6300 w 10 /LucidaTypewriter f (8\275) 1124 6300 w 10 /LucidaSansUnicode00 f (.) 1268 6300 w (The) 1368 6300 w (window) 1585 6300 w (system) 1990 6300 w (and) 2366 6300 w (related) 2582 6300 w (software) 2955 6300 w (are) 3407 6300 w (responsible) 3596 6300 w (for) 4195 6300 w (the) 4371 6300 w (display) 4563 6300 w (of) 4942 6300 w (UTF) 720 6420 w (text) 945 6420 w (as) 1175 6420 w (Unicode) 1320 6420 w (character) 1750 6420 w (images.) 2237 6420 w (For) 2685 6420 w (plain) 2879 6420 w (text,) 3155 6420 w (the) 3416 6420 w (window) 3609 6420 w (system) 4016 6420 w (must) 4394 6420 w (provide) 4675 6420 w (a) 720 6540 w (user-settable) 809 6540 w 10 /LucidaSans-Italic f (font) 1495 6540 w 10 /LucidaSansUnicode00 f (that) 1724 6540 w (provides) 1949 6540 w (a) 2400 6540 w (\(possibly) 2490 6540 w (empty\)) 2957 6540 w (picture) 3326 6540 w (for) 3700 6540 w (each) 3874 6540 w (Unicode) 4133 6540 w (character.) 4559 6540 w (Fancier) 720 6660 w (applications) 1101 6660 w (that) 1719 6660 w (use) 1943 6660 w (bold) 2145 6660 w (and) 2394 6660 w (Italic) 2607 6660 w (characters) 2870 6660 w (need multiple fonts storing multi\255) 3403 6660 w (ple) 720 6780 w (pictures) 918 6780 w (for) 1358 6780 w (each) 1547 6780 w (Unicode) 1821 6780 w (value.) 2262 6780 w (All) 2630 6780 w (the) 2808 6780 w (issues) 3014 6780 w (are) 3365 6780 w (apparent,) 3568 6780 w (though,) 4083 6780 w (in) 4512 6780 w (just) 4654 6780 w (the) 4885 6780 w (problem) 720 6900 w (of) 1164 6900 w (displaying) 1300 6900 w (a) 1833 6900 w (single) 1926 6900 w (image) 2253 6900 w (for) 2586 6900 w (each) 2763 6900 w (character,) 3024 6900 w (that) 3542 6900 w (is,) 3770 6900 w (the) 3919 6900 w (Unicode) 4111 6900 w (equivalent) 4539 6900 w (of) 720 7020 w (a) 853 7020 w (plain) 943 7020 w (text) 1216 7020 w (terminal.) 1442 7020 w (With) 1943 7020 w (128) 2192 7020 w (or) 2417 7020 w (even) 2555 7020 w (256) 2817 7020 w (characters,) 3042 7020 w (a) 3610 7020 w (font) 3701 7020 w (can) 3934 7020 w (be) 4138 7020 w (just) 4293 7020 w (an) 4509 7020 w (array) 4662 7020 w (of) 4942 7020 w (bitmaps.) 720 7140 w (With) 1208 7140 w (65536 characters, a more sophisticated design is necessary.) 1455 7140 w (To store the) 4451 7140 w (ideographs) 720 7260 w (for) 1303 7260 w (just) 1482 7260 w (Japanese) 1702 7260 w (as) 2171 7260 w (16\32716\3271) 2317 7260 w (bit) 2832 7260 w (images,) 3001 7260 w (the) 3420 7260 w (smallest) 3616 7260 w (they) 4058 7260 w (can) 4306 7260 w (reasonably) 4515 7260 w cleartomark showpage saveobj restore %%EndPage: 8 8 %%Page: 9 9 /saveobj save def mark 9 pagesetup 10 /LucidaSansUnicode00 f (\255 9 \255) 2783 480 w (be,) 720 840 w (takes) 908 840 w (over) 1202 840 w (a) 1449 840 w (quarter) 1541 840 w (of) 1932 840 w (a) 2066 840 w (megabyte.) 2157 840 w (Make) 2731 840 w (the) 3022 840 w (images) 3213 840 w (a) 3595 840 w (little) 3686 840 w (larger,) 3939 840 w (store) 4291 840 w (more) 4573 840 w (bits) 4860 840 w (per) 720 960 w (pixel,) 919 960 w (and) 1228 960 w (hold) 1447 960 w (a) 1702 960 w (copy) 1797 960 w (in) 2064 960 w (every) 2195 960 w (running) 2492 960 w (application,) 2912 960 w (and) 3518 960 w (the) 3738 960 w (memory) 3933 960 w (cost) 4369 960 w (becomes) 4609 960 w (unreasonable.) 720 1080 w (The) 970 1236 w (structure) 1207 1236 w (of) 1701 1236 w (the) 1855 1236 w (bitmap) 2066 1236 w (graphics) 2462 1236 w (services) 2932 1236 w (is) 3375 1236 w (described) 3512 1236 w (at) 4042 1236 w (length) 4191 1236 w (elsewhere) 4556 1236 w ([Pike91].) 720 1356 w (In) 1215 1356 w (summary,) 1347 1356 w (the) 1867 1356 w (memory) 2063 1356 w (holding) 2500 1356 w (the) 2909 1356 w (bitmaps) 3105 1356 w (is) 3537 1356 w (stored) 3658 1356 w (in) 4008 1356 w (the) 4140 1356 w (same) 4336 1356 w (machine) 4632 1356 w (that) 720 1476 w (has) 944 1476 w (the) 1145 1476 w (display,) 1333 1476 w (mouse,) 1740 1476 w (and) 2128 1476 w (keyboard:) 2341 1476 w (the) 2855 1476 w (terminal) 3043 1476 w (in) 3478 1476 w (Plan) 3602 1476 w (9) 3836 1476 w (terminology,) 3932 1476 w (the) 4581 1476 w (work\255) 4770 1476 w (station) 720 1596 w (in) 1089 1596 w (others) 1217 1596 w 10 /LucidaSansUnicode20 f (\031) 1525 1596 w 10 /LucidaSansUnicode00 f (.) 1557 1596 w (Access) 1658 1596 w (to) 2024 1596 w (that) 2159 1596 w (memory) 2386 1596 w (and) 2818 1596 w (associated) 3034 1596 w (services) 3579 1596 w (is) 4002 1596 w (provided) 4118 1596 w (by) 4582 1596 w (device) 4733 1596 w (files) 720 1716 w (served) 969 1716 w (by) 1335 1716 w (system) 1497 1716 w (software) 1884 1716 w (on) 2346 1716 w (the) 2516 1716 w (terminal.) 2718 1716 w (One) 3231 1716 w (of) 3474 1716 w (those) 3619 1716 w (files,) 3934 1716 w 10 /LucidaTypewriter f (/dev/bitblt) 4216 1716 w 10 /LucidaSansUnicode00 f (,) 5008 1716 w (interprets) 720 1836 w (messages) 1254 1836 w (written) 1790 1836 w (upon) 2189 1836 w (it) 2497 1836 w (as) 2623 1836 w (requests) 2789 1836 w (for) 3266 1836 w (actions) 3465 1836 w (corresponding) 3871 1836 w (to) 4634 1836 w (entry) 4792 1836 w (points) 720 1956 w (in) 1060 1956 w (the) 1188 1956 w (graphics) 1380 1956 w (library:) 1831 1956 w (allocate) 2210 1956 w (a) 2620 1956 w (bitmap,) 2712 1956 w (execute) 3121 1956 w (a) 3537 1956 w (raster) 3629 1956 w (operation,) 3947 1956 w (draw) 4482 1956 w (a) 4756 1956 w (text) 4849 1956 w (string,) 720 2076 w (etc.) 1079 2076 w (The) 1331 2076 w (window) 1556 2076 w (system) 1969 2076 w (acts) 2353 2076 w (as) 2591 2076 w (a) 2741 2076 w (multiplexer) 2840 2076 w (that) 3440 2076 w (mediates) 3675 2076 w (access) 4159 2076 w (to) 4518 2076 w (the) 4660 2076 w (ser\255) 4859 2076 w (vices) 720 2196 w (and) 1006 2196 w (resources) 1233 2196 w (of) 1750 2196 w (the) 1895 2196 w (terminal) 2097 2196 w (by) 2546 2196 w (simulating) 2708 2196 w (in) 3264 2196 w (each) 3402 2196 w (client) 3673 2196 w (window) 3984 2196 w (a) 4400 2196 w (set) 4502 2196 w (of) 4693 2196 w (files) 4838 2196 w (mirroring) 720 2316 w (those) 1262 2316 w (provided) 1612 2316 w (by) 2123 2316 w (the) 2321 2316 w (system.) 2558 2316 w (That) 3044 2316 w (is,) 3343 2316 w (each) 3537 2316 w (window) 3843 2316 w (has) 4294 2316 w (a) 4544 2316 w (distinct) 4681 2316 w 10 /LucidaTypewriter f (/dev/mouse) 720 2436 w 10 /LucidaSansUnicode00 f (,) 1440 2436 w 10 /LucidaTypewriter f (/dev/bitblt) 1515 2436 w 10 /LucidaSansUnicode00 f (,) 2307 2436 w (and) 2382 2436 w (so) 2605 2436 w (on) 2760 2436 w (through) 2926 2436 w (which) 3356 2436 w (applications) 3680 2436 w (drive) 4308 2436 w (graphical) 4593 2436 w (input and output.) 720 2556 w (One) 970 2712 w (of) 1199 2712 w (the) 1330 2712 w (resources) 1518 2712 w (managed) 2021 2712 w (by) 2500 2712 w 10 /LucidaTypewriter f (8\275) 2648 2712 w 10 /LucidaSansUnicode00 f (and) 2826 2712 w (the) 3040 2712 w (terminal) 3229 2712 w (is) 3665 2712 w (the) 3779 2712 w (set) 3968 2712 w (of) 4146 2712 w (active) 4278 2712 w 10 /LucidaSans-Italic f (subfonts.) 4592 2712 w 10 /LucidaSansUnicode00 f (Each) 720 2832 w (subfont) 988 2832 w (holds) 1407 2832 w (the) 1719 2832 w (bitmaps) 1920 2832 w (and) 2356 2832 w (associated) 2581 2832 w (data) 3135 2832 w (structures) 3390 2832 w (for) 3924 2832 w (a) 4108 2832 w (sequential) 4208 2832 w (set) 4753 2832 w (of) 4942 2832 w (Unicode) 720 2952 w (characters.) 1151 2952 w (Subfonts) 1755 2952 w (are) 2222 2952 w (stored) 2414 2952 w (in) 2764 2952 w (files) 2896 2952 w (and) 3139 2952 w (loaded) 3360 2952 w (into) 3728 2952 w (the) 3958 2952 w (terminal) 4154 2952 w (by) 4597 2952 w 10 /LucidaTypewriter f (8\275) 4753 2952 w 10 /LucidaSansUnicode00 f (or) 4938 2952 w (an) 720 3072 w (application.) 871 3072 w (For) 1503 3072 w (example,) 1693 3072 w (one) 2172 3072 w (subfont) 2385 3072 w (might) 2792 3072 w (hold) 3108 3072 w (the) 3356 3072 w (images) 3544 3072 w (of) 3923 3072 w (the) 4054 3072 w (first) 4242 3072 w (256) 4470 3072 w (charac\255) 4692 3072 w (ters) 720 3192 w (of) 954 3192 w (the) 1101 3192 w (Unicode) 1305 3192 w (space,) 1745 3192 w (corresponding) 2102 3192 w (to) 2854 3192 w (the) 3001 3192 w (Latin-1) 3205 3192 w (character) 3611 3192 w (set;) 4109 3192 w (another) 4334 3192 w (might) 4757 3192 w (hold) 720 3312 w (the) 977 3312 w (standard) 1174 3312 w (phonetic) 1643 3312 w (character) 2106 3312 w (set,) 2597 3312 w (Unicode) 2815 3312 w (characters) 3248 3312 w (with) 3790 3312 w (value) 4037 3312 w (0250) 4333 3312 w (to) 4626 3312 w (02E9.) 4765 3312 w (These) 720 3432 w (files) 1176 3432 w (are) 1546 3432 w (collected) 1866 3432 w (in) 2467 3432 w (directories) 2727 3432 w (corresponding) 3411 3432 w (to) 4283 3432 w (typefaces:) 4550 3432 w 10 /LucidaTypewriter f (/lib/font/bit/pelm) 720 3552 w 10 /LucidaSansUnicode00 f (contains) 2072 3552 w (the) 2536 3552 w (Pellucida) 2747 3552 w (Monospace) 3232 3552 w (character) 3834 3552 w (set,) 4339 3552 w (with) 4571 3552 w (sub\255) 4831 3552 w (fonts) 720 3672 w (holding) 1006 3672 w (the) 1413 3672 w (Latin-1,) 1607 3672 w (Greek,) 2035 3672 w (Cyrillic) 2389 3672 w (and) 2757 3672 w (other) 2976 3672 w (components) 3272 3672 w (of) 3908 3672 w (the) 4045 3672 w (typeface.) 4239 3672 w (A) 4749 3672 w (suf\255) 4857 3672 w (fix) 720 3792 w (on) 918 3792 w (subfont) 1112 3792 w (files) 1556 3792 w (encodes) 1829 3792 w (\(in) 2300 3792 w (a) 2495 3792 w (subfont-specific) 2621 3792 w (way\)) 3490 3792 w (the) 3778 3792 w (size) 4004 3792 w (of) 4268 3792 w (the) 4437 3792 w (images:) 4662 3792 w 10 /LucidaTypewriter f (/lib/font/bit/pelm/latin1.9) 720 3912 w 10 /LucidaSansUnicode00 f (contains) 2703 3912 w (the) 3151 3912 w (Latin-1) 3346 3912 w (Pellucida) 3743 3912 w (Monospace) 4212 3912 w (char\255) 4798 3912 w (acters) 720 4032 w (with) 1065 4032 w (lower) 1323 4032 w (case) 1640 4032 w (letters) 1906 4032 w (9) 2266 4032 w (pixels) 2382 4032 w (high;) 2724 4032 w 10 /LucidaTypewriter f (/lib/font/bit/jis/jis5400.16) 3024 4032 w 10 /LucidaSansUnicode00 f (contains 16-pixel high ideographs starting at Unicode value 5400.) 720 4152 w (The) 970 4308 w (subfonts) 1214 4308 w (do) 1701 4308 w (not) 1888 4308 w (identify) 2111 4308 w (which) 2539 4308 w (portion) 2883 4308 w (of) 3300 4308 w (the) 3462 4308 w (Unicode) 3681 4308 w (space) 4136 4308 w (they) 4476 4308 w (cover.) 4747 4308 w (Instead,) 720 4428 w (a) 1150 4428 w (font) 1250 4428 w (file,) 1492 4428 w (in) 1720 4428 w (plain) 1856 4428 w (text,) 2138 4428 w (describes) 2405 4428 w (how) 2910 4428 w (to) 3154 4428 w (assemble) 3296 4428 w (subfonts) 3794 4428 w (into) 4262 4428 w (a) 4495 4428 w (complete) 4594 4428 w (character) 720 4548 w (set.) 1204 4548 w (The) 1447 4548 w (font) 1663 4548 w (file) 1895 4548 w (is) 2081 4548 w (presented) 2196 4548 w (as) 2716 4548 w (an) 2857 4548 w (argument) 3010 4548 w (to) 3514 4548 w (the) 3648 4548 w (window) 3839 4548 w (system) 4244 4548 w (to) 4620 4548 w (deter\255) 4754 4548 w (mine) 720 4668 w (how) 1004 4668 w (plain) 1248 4668 w (text) 1530 4668 w (is) 1765 4668 w (displayed) 1889 4668 w (in) 2394 4668 w (text) 2529 4668 w (windows) 2764 4668 w (and) 3228 4668 w (applications.) 3452 4668 w (Here) 4144 4668 w (is) 4414 4668 w (the) 4537 4668 w (begin\255) 4735 4668 w (ning) 720 4788 w (of) 970 4788 w (the) 1103 4788 w (font) 1293 4788 w (file) 1525 4788 w 10 /LucidaTypewriter f (/lib/font/bit/pelm/jis.9.font) 1711 4788 w 10 /LucidaSansUnicode00 f (,) 3799 4788 w (which) 3866 4788 w (describes) 4183 4788 w (the) 4680 4788 w (lay\255) 4871 4788 w (out) 720 4908 w (of) 914 4908 w (a) 1046 4908 w (font) 1135 4908 w (covering) 1366 4908 w (that) 1813 4908 w (portion) 2037 4908 w (of) 2424 4908 w (the) 2555 4908 w (Unicode) 2743 4908 w (Standard) 3167 4908 w (for) 3630 4908 w (which) 3802 4908 w (we) 4116 4908 w (have) 4282 4908 w (characters) 4540 4908 w (of typical display size, using Japanese characters to cover the Han space:) 720 5028 w 9 /LucidaTypewriter f (18) 1008 5198 w (14) 1528 5198 w (0x0000) 1008 5308 w (0x00FF) 1528 5308 w (latin1.9) 2048 5308 w (0x0100) 1008 5418 w (0x017E) 1528 5418 w (latineur.9) 2048 5418 w (0x0250) 1008 5528 w (0x02E9) 1528 5528 w (ipa.9) 2048 5528 w (0x0386) 1008 5638 w (0x03F5) 1528 5638 w (greek.9) 2048 5638 w (0x0400) 1008 5748 w (0x0475) 1528 5748 w (cyrillic.9) 2048 5748 w (0x2000) 1008 5858 w (0x2044) 1528 5858 w (../misc/genpunc.9) 2048 5858 w (0x2070) 1008 5968 w (0x208E) 1528 5968 w (supsub.9) 2048 5968 w (0x20A0) 1008 6078 w (0x20AA) 1528 6078 w (currency.9) 2048 6078 w (0x2100) 1008 6188 w (0x2138) 1528 6188 w (../misc/letterlike.9) 2048 6188 w (0x2190) 1008 6298 w (0x21EA) 1528 6298 w (../misc/arrows) 2048 6298 w (0x2200) 1008 6408 w (0x227F) 1528 6408 w (../misc/math1) 2048 6408 w (0x2280) 1008 6518 w (0x22F1) 1528 6518 w (../misc/math2) 2048 6518 w (0x2300) 1008 6628 w (0x232C) 1528 6628 w (../misc/tech) 2048 6628 w (0x2500) 1008 6738 w (0x257F) 1528 6738 w (../misc/chart) 2048 6738 w (0x2600) 1008 6848 w (0x266F) 1528 6848 w (../misc/ding) 2048 6848 w cleartomark showpage saveobj restore %%EndPage: 9 9 %%Page: 10 10 /saveobj save def mark 10 pagesetup 10 /LucidaSansUnicode00 f (\255 10 \255) 2752 480 w 9 /LucidaTypewriter f (0x3000) 1008 830 w (0x303f) 1528 830 w (../jis/jis3000.16) 2048 830 w (0x30a1) 1008 940 w (0x30fe) 1528 940 w (../jis/katakana.16) 2048 940 w (0x3041) 1008 1050 w (0x309e) 1528 1050 w (../jis/hiragana.16) 2048 1050 w (0x4e00) 1008 1160 w (0x4fff) 1528 1160 w (../jis/jis4e00.16) 2048 1160 w (0x5000) 1008 1270 w (0x51ff) 1528 1270 w (../jis/jis5000.16) 2048 1270 w (...) 1008 1380 w 10 /LucidaSansUnicode00 f (The) 720 1560 w (first) 940 1560 w (two) 1174 1560 w (numbers) 1389 1560 w (set) 1857 1560 w (the) 2041 1560 w (interline) 2236 1560 w (spacing) 2677 1560 w (of) 3090 1560 w (the) 3228 1560 w (font) 3423 1560 w (\(18) 3660 1560 w (pixels\)) 3859 1560 w (and) 4221 1560 w (the) 4441 1560 w (distance) 4636 1560 w (from) 720 1680 w (the) 988 1680 w (baseline) 1178 1680 w (to) 1614 1680 w (the) 1747 1680 w (top) 1937 1680 w (of) 2133 1680 w (the) 2266 1680 w (line) 2456 1680 w (\(14) 2667 1680 w (pixels\).) 2861 1680 w (When) 3282 1680 w (characters) 3583 1680 w (are) 4118 1680 w (displayed,) 4305 1680 w (they) 4833 1680 w (are) 720 1800 w (placed) 916 1800 w (so) 1277 1800 w (as) 1433 1800 w (best) 1583 1800 w (to) 1834 1800 w (fit) 1976 1800 w (within) 2123 1800 w (those) 2463 1800 w (constraints;) 2774 1800 w (characters) 3387 1800 w (too) 3931 1800 w (large) 4134 1800 w (to) 4421 1800 w (fit) 4564 1800 w (will) 4712 1800 w (be) 4921 1800 w (truncated.) 720 1920 w (The) 1290 1920 w (rest) 1513 1920 w (of) 1740 1920 w (the) 1880 1920 w (file) 2077 1920 w (associates) 2270 1920 w (subfont) 2809 1920 w (files) 3224 1920 w (with) 3468 1920 w (portions) 3715 1920 w (of) 4161 1920 w (Unicode) 4300 1920 w (space.) 4732 1920 w (The) 720 2040 w (first) 945 2040 w (four) 1185 2040 w (such) 1431 2040 w (files) 1702 2040 w (are) 1949 2040 w (in) 2146 2040 w (the) 2282 2040 w (Pellucida) 2482 2040 w (Monospace) 2956 2040 w (typeface) 3547 2040 w (and) 3999 2040 w (directory;) 4224 2040 w (others) 4732 2040 w (reside in other directories.) 720 2160 w (The file names are relative to the font file) 2071 2160 w 10 /LucidaSansUnicode20 f (\031) 4084 2160 w 10 /LucidaSansUnicode00 f (s own location.) 4116 2160 w (There) 970 2316 w (are) 1295 2316 w (several) 1495 2316 w (advantages) 1883 2316 w (to) 2479 2316 w (this) 2625 2316 w (two-level) 2852 2316 w (structure.) 3355 2316 w (First,) 3905 2316 w (it) 4197 2316 w (simultaneously) 4311 2316 w (breaks) 720 2436 w (the) 1091 2436 w (huge) 1293 2436 w (Unicode) 1582 2436 w (space) 2020 2436 w (into) 2343 2436 w (manageable) 2579 2436 w (components) 3212 2436 w (and) 3856 2436 w (provides) 4082 2436 w (a) 4544 2436 w (unifying) 4645 2436 w (architecture) 720 2556 w (for) 1338 2556 w (assembling) 1517 2556 w (fonts) 2108 2556 w (from) 2396 2556 w (disjoint) 2668 2556 w (pieces.) 3071 2556 w (Second,) 3482 2556 w (the) 3902 2556 w (structure) 4098 2556 w (promotes) 4577 2556 w (sharing.) 720 2676 w (For) 1184 2676 w (example,) 1378 2676 w (we) 1861 2676 w (have) 2032 2676 w (only) 2295 2676 w (one) 2537 2676 w (set) 2754 2676 w (of) 2936 2676 w (Japanese) 3072 2676 w (characters) 3539 2676 w (but) 4077 2676 w (dozens) 4277 2676 w (of) 4664 2676 w (type\255) 4799 2676 w (faces) 720 2796 w (for) 1007 2796 w (the) 1183 2796 w (Latin-1) 1375 2796 w (characters,) 1769 2796 w (and) 2338 2796 w (this) 2555 2796 w (structure) 2771 2796 w (permits) 3246 2796 w (us) 3653 2796 w (to) 3803 2796 w (store) 3938 2796 w (only) 4221 2796 w (one) 4462 2796 w (copy) 4678 2796 w (of) 4942 2796 w (the) 720 2916 w (Japanese) 934 2916 w (set) 1422 2916 w (but) 1625 2916 w (use) 1846 2916 w (it) 2074 2916 w (with) 2199 2916 w (any) 2463 2916 w (Roman) 2691 2916 w (typeface.) 3084 2916 w (Also,) 3613 2916 w (customization) 3913 2916 w (is) 4656 2916 w (easy.) 4794 2916 w (English-speaking) 720 3036 w (users) 1610 3036 w (who) 1918 3036 w (don) 2165 3036 w 10 /LucidaSansUnicode20 f (\031) 2351 3036 w 10 /LucidaSansUnicode00 f (t) 2383 3036 w (need) 2467 3036 w (Japanese) 2752 3036 w (characters) 3229 3036 w (but) 3777 3036 w (may) 3987 3036 w (want) 4235 3036 w (to) 4514 3036 w (read) 4660 3036 w (an) 4923 3036 w (on-line) 720 3156 w (Oxford) 1114 3156 w (English) 1492 3156 w (Dictionary) 1878 3156 w (can) 2407 3156 w (assemble) 2612 3156 w (a) 3103 3156 w (custom) 3194 3156 w (font) 3585 3156 w (with) 3818 3156 w (the) 4059 3156 w (Latin-1) 4250 3156 w (\(or) 4643 3156 w (even) 4814 3156 w (just) 720 3276 w (ASCII\)) 938 3276 w (characters) 1259 3276 w (and) 1797 3276 w (the) 2015 3276 w (International) 2208 3276 w (Phonetic) 2861 3276 w (Alphabet) 3312 3276 w (\(IPA\).) 3784 3276 w (Moreover,) 4105 3276 w (to) 4629 3276 w (do) 4765 3276 w (so) 4928 3276 w (requires) 720 3396 w (just) 1162 3396 w (editing) 1385 3396 w (a) 1766 3396 w (plain) 1864 3396 w (text) 2145 3396 w (file,) 2379 3396 w (not) 2605 3396 w (using) 2807 3396 w (a) 3115 3396 w (special) 3212 3396 w (font) 3588 3396 w (editing) 3827 3396 w (tool.) 4207 3396 w (Finally,) 4501 3396 w (the) 4885 3396 w (structure) 720 3516 w (guides) 1200 3516 w (the) 1565 3516 w (design) 1763 3516 w (of) 2129 3516 w (caching) 2270 3516 w (protocols) 2685 3516 w (to) 3183 3516 w (improve) 3324 3516 w (performance) 3762 3516 w (and) 4421 3516 w (memory) 4644 3516 w (usage.) 720 3636 w (To) 970 3792 w (load) 1128 3792 w (a) 1371 3792 w (complete) 1461 3792 w (Unicode) 1942 3792 w (character) 2368 3792 w (set) 2852 3792 w (into) 3031 3792 w (each) 3255 3792 w (application) 3514 3792 w (would) 4083 3792 w (consume) 4410 3792 w (too) 4881 3792 w (much) 720 3912 w (memory) 1034 3912 w (and,) 1476 3912 w (particularly) 1734 3912 w (on) 2324 3912 w (slow) 2493 3912 w (terminal) 2757 3912 w (lines,) 3205 3912 w (would) 3510 3912 w (take) 3848 3912 w (unreasonably) 4100 3912 w (long.) 4794 3912 w (Instead,) 720 4032 w (Plan) 1153 4032 w (9) 1402 4032 w (assembles) 1513 4032 w (a) 2066 4032 w (multi-level) 2169 4032 w (cache) 2747 4032 w (structure) 3070 4032 w (for) 3556 4032 w (each) 3743 4032 w (font.) 4016 4032 w (An) 4326 4032 w (application) 4506 4032 w (opens) 720 4152 w (a) 1049 4152 w (font) 1140 4152 w (file,) 1373 4152 w (reads) 1591 4152 w (and) 1892 4152 w (parses) 2107 4152 w (it,) 2459 4152 w (and) 2592 4152 w (allocates) 2807 4152 w (a) 3266 4152 w (data) 3356 4152 w (structure.) 3601 4152 w (A) 4138 4152 w (message) 4242 4152 w (written) 4701 4152 w (to) 720 4272 w 10 /LucidaTypewriter f (/dev/bitblt) 852 4272 w 10 /LucidaSansUnicode00 f (allocates) 1678 4272 w (an) 2136 4272 w (associated) 2287 4272 w (structure) 2830 4272 w (held) 3302 4272 w (in) 3546 4272 w (the) 3671 4272 w (terminal,) 3860 4272 w (in) 4329 4272 w (particular,) 4455 4272 w (a) 4985 4272 w (bitmap) 720 4392 w (to) 1093 4392 w (act) 1224 4392 w (as a cache for recently used character images.) 1400 4392 w (Other messages copy these) 3706 4392 w (images) 720 4512 w (to) 1120 4512 w (bitmaps) 1272 4512 w (such) 1717 4512 w (as) 1997 4512 w (the) 2157 4512 w (screen) 2366 4512 w (by) 2737 4512 w (loading) 2906 4512 w (characters) 3321 4512 w (from) 3875 4512 w (subfonts) 4162 4512 w (into) 4641 4512 w (the) 4885 4512 w (cache) 720 4632 w (on) 1032 4632 w (demand) 1192 4632 w (and) 1620 4632 w (from) 1836 4632 w (there) 2104 4632 w (to) 2392 4632 w (the) 2526 4632 w (destination) 2717 4632 w (bitmap.) 3295 4632 w (The) 3735 4632 w (protocol) 3952 4632 w (to) 4392 4632 w (draw) 4526 4632 w (char\255) 4798 4632 w (acters) 720 4752 w (is) 1059 4752 w (in) 1187 4752 w (terms) 1326 4752 w (of) 1652 4752 w (cache) 1798 4752 w (indices,) 2121 4752 w (not) 2542 4752 w (Unicode) 2750 4752 w (character) 3190 4752 w (number) 3688 4752 w (or) 4114 4752 w (UTF) 4265 4752 w (sequences.) 4500 4752 w (These) 720 4872 w (details) 1050 4872 w (are) 1412 4872 w (hidden) 1606 4872 w (from) 1983 4872 w (the) 2257 4872 w (application,) 2454 4872 w (which) 3062 4872 w (instead) 3385 4872 w (sees) 3780 4872 w (only) 4036 4872 w (a) 4281 4872 w (subroutine) 4377 4872 w (to) 4942 4872 w (draw) 720 4992 w (a) 997 4992 w (string) 1093 4992 w (in) 1416 4992 w (a) 1548 4992 w (bitmap) 1644 4992 w (from) 2026 4992 w (a) 2300 4992 w (given) 2397 4992 w (font,) 2700 4992 w (functions) 2971 4992 w (to) 3465 4992 w (discover) 3605 4992 w (character) 4051 4992 w (size) 4542 4992 w (infor\255) 4777 4992 w (mation, and routines to allocate and to free fonts.) 720 5112 w (As) 970 5268 w (needed,) 1145 5268 w (whole) 1588 5268 w (subfonts) 1929 5268 w (are) 2409 5268 w (opened) 2617 5268 w (by) 3034 5268 w (the) 3205 5268 w (graphics) 3416 5268 w (library,) 3886 5268 w (read,) 4284 5268 w (and) 4587 5268 w (then) 4823 5268 w (downloaded) 720 5388 w (to) 1352 5388 w (the) 1492 5388 w (terminal.) 1689 5388 w (They) 2197 5388 w (are) 2472 5388 w (held) 2666 5388 w (open) 2918 5388 w (by) 3202 5388 w (the) 3359 5388 w (library) 3556 5388 w (in) 3908 5388 w (an) 4040 5388 w (LRU-replacement) 4198 5388 w (list.) 720 5508 w (Even) 964 5508 w (when) 1222 5508 w (the) 1513 5508 w (program) 1702 5508 w (closes) 2152 5508 w (a) 2485 5508 w (subfont,) 2574 5508 w (it) 3013 5508 w (is) 3113 5508 w (retained) 3227 5508 w (in) 3660 5508 w (the) 3785 5508 w (terminal) 3975 5508 w (for) 4412 5508 w (later) 4586 5508 w (use.) 4839 5508 w (When) 720 5628 w (the) 1027 5628 w (application) 1223 5628 w (opens) 1798 5628 w (the) 2131 5628 w (subfont,) 2326 5628 w (it) 2771 5628 w (asks) 2877 5628 w (the) 3132 5628 w (terminal) 3327 5628 w (if) 3769 5628 w (it) 3875 5628 w (already) 3981 5628 w (has) 4372 5628 w (a) 4580 5628 w (copy) 4675 5628 w (to) 4942 5628 w (avoid) 720 5748 w (reading) 1013 5748 w (it) 1414 5748 w (from) 1513 5748 w (the) 1778 5748 w (file) 1966 5748 w (server) 2150 5748 w (if) 2480 5748 w (possible.) 2579 5748 w (This) 3079 5748 w (level) 3317 5748 w (of) 3572 5748 w (cache) 3703 5748 w (has) 4011 5748 w (the) 4212 5748 w (property) 4401 5748 w (that) 4849 5748 w (the) 720 5868 w (bitmaps) 919 5868 w (for,) 1354 5868 w (say,) 1569 5868 w (all) 1803 5868 w (the) 1960 5868 w (Japanese) 2159 5868 w (characters) 2632 5868 w (are) 3175 5868 w (stored) 3370 5868 w (only) 3722 5868 w (once,) 3969 5868 w (in) 4274 5868 w (the) 4408 5868 w (terminal;) 4606 5868 w (the) 720 5988 w (applications) 918 5988 w (read) 1546 5988 w (only) 1804 5988 w (size) 2051 5988 w (and) 2287 5988 w (width) 2510 5988 w (information) 2821 5988 w (from) 3431 5988 w (the) 3707 5988 w (terminal) 3906 5988 w (and) 4352 5988 w (share) 4576 5988 w (the) 4885 5988 w (images.) 720 6108 w (The) 970 6264 w (sizes) 1186 6264 w (of) 1465 6264 w (the) 1598 6264 w (character) 1788 6264 w (and) 2272 6264 w (subfont) 2487 6264 w (caches) 2895 6264 w (held) 3256 6264 w (by) 3501 6264 w (the) 3651 6264 w (application) 3841 6264 w (are) 4410 6264 w (adaptive.) 4598 6264 w (A) 720 6384 w (simple) 836 6384 w (algorithm) 1204 6384 w (monitors) 1720 6384 w (the) 2202 6384 w (cache) 2404 6384 w (miss) 2726 6384 w (rate) 2997 6384 w (to) 3233 6384 w (enlarge) 3378 6384 w (and) 3786 6384 w (shrink) 4012 6384 w (the) 4361 6384 w (caches) 4562 6384 w (as) 4934 6384 w (required.) 720 6504 w (The) 1230 6504 w (size) 1446 6504 w (of) 1674 6504 w (the) 1807 6504 w (character) 1997 6504 w (cache) 2481 6504 w (is) 2791 6504 w (limited) 2906 6504 w (to) 3277 6504 w (2048) 3410 6504 w (images) 3697 6504 w (maximum,) 4078 6504 w (which) 4632 6504 w (in) 4949 6504 w (practice) 720 6624 w (seems enough even for Japanese text.) 1136 6624 w (For plain ASCII-like text it naturally stays) 3049 6624 w (around 128 images.) 720 6744 w (This mechanism sounds complicated but) 970 6900 w (is) 2988 6900 w (implemented) 3101 6900 w (by) 3771 6900 w (only) 3919 6900 w (about) 4156 6900 w (500) 4467 6900 w (lines) 4689 6900 w (in) 4949 6900 w (the) 720 7020 w (library) 909 7020 w (and) 1253 7020 w (considerably) 1467 7020 w (less) 2114 7020 w (in) 2335 7020 w (each) 2460 7020 w (of) 2718 7020 w (the) 2850 7020 w (terminal) 3039 7020 w 10 /LucidaSansUnicode20 f (\031) 3441 7020 w 10 /LucidaSansUnicode00 f (s) 3473 7020 w (graphics) 3557 7020 w (driver) 4004 7020 w (and) 4319 7020 w 10 /LucidaTypewriter f (8\275) 4532 7020 w 10 /LucidaSansUnicode00 f (.) 4676 7020 w (It) 4773 7020 w (has) 4872 7020 w (the) 720 7140 w (advantage) 921 7140 w (that) 1464 7140 w (only) 1701 7140 w (characters) 1951 7140 w (that) 2497 7140 w (are) 2734 7140 w (being) 2933 7140 w (used) 3252 7140 w (are) 3531 7140 w (loaded) 3730 7140 w (into) 4104 7140 w (memory.) 4340 7140 w (It) 4847 7140 w (is) 4960 7140 w (also) 720 7260 w (efficient:) 974 7260 w (if) 1458 7260 w (the) 1582 7260 w (characters) 1795 7260 w (being) 2353 7260 w (drawn) 2682 7260 w (are) 3037 7260 w (in) 3246 7260 w (the) 3394 7260 w (cache) 3606 7260 w (the) 3938 7260 w (extra) 4150 7260 w (overhead) 4457 7260 w (is) 4960 7260 w cleartomark showpage saveobj restore %%EndPage: 10 10 %%Page: 11 11 /saveobj save def mark 11 pagesetup 10 /LucidaSansUnicode00 f (\255 11 \255) 2752 480 w (negligible.) 720 840 w (It) 1308 840 w (works) 1421 840 w (particularly) 1756 840 w (well) 2347 840 w (for) 2585 840 w (alphabetic) 2771 840 w (character) 3319 840 w (sets,) 3816 840 w (but) 4091 840 w (also) 4301 840 w (adapts) 4545 840 w (on) 4917 840 w (demand) 720 960 w (for) 1158 960 w (ideographic) 1343 960 w (sets.) 1961 960 w (When) 2266 960 w (a) 2578 960 w (user) 2678 960 w (first) 2933 960 w (looks) 3173 960 w (at) 3478 960 w (Japanese) 3615 960 w (text,) 4089 960 w (it) 4357 960 w (takes) 4468 960 w (a) 4770 960 w (few) 4870 960 w (seconds) 720 1080 w (to) 1148 1080 w (read) 1279 1080 w (all) 1527 1080 w (the) 1673 1080 w (font) 1861 1080 w (data,) 2091 1080 w (but) 2366 1080 w (thereafter) 2561 1080 w (the) 3072 1080 w (text) 3261 1080 w (is) 3486 1080 w (drawn) 3600 1080 w (almost) 3932 1080 w (as) 4292 1080 w (fast) 4432 1080 w (as) 4646 1080 w (regu\255) 4786 1080 w (lar) 720 1200 w (text) 888 1200 w (\(the) 1122 1200 w (images) 1353 1200 w (are) 1742 1200 w (larger,) 1937 1200 w (so) 2296 1200 w (draw) 2450 1200 w (a) 2728 1200 w (little) 2825 1200 w (slower\).) 3084 1200 w (Also,) 3538 1200 w (because) 3822 1200 w (the) 4258 1200 w (bitmaps) 4455 1200 w (are) 4888 1200 w (remembered) 720 1320 w (by) 1371 1320 w (the) 1519 1320 w (terminal,) 1707 1320 w (if) 2174 1320 w (a) 2274 1320 w (second) 2363 1320 w (application) 2741 1320 w (then) 3309 1320 w (looks) 3560 1320 w (at) 3854 1320 w (Japanese) 3980 1320 w (text) 4443 1320 w (it) 4668 1320 w (starts) 4768 1320 w (faster than the first.) 720 1440 w (We) 970 1596 w (considered) 1159 1596 w (building) 1739 1596 w (a) 2186 1596 w 10 /LucidaSansUnicode20 f (\030) 2289 1596 w 10 /LucidaSansUnicode00 f (font) 2321 1596 w (server) 2566 1596 w 10 /LucidaSansUnicode20 f (\031) 2863 1596 w 10 /LucidaSansUnicode00 f (to) 2943 1596 w (cache) 3089 1596 w (character) 3412 1596 w (images) 3909 1596 w (and) 4303 1596 w (associated) 4531 1596 w (data) 720 1716 w (for) 966 1716 w (the) 1141 1716 w (applications,) 1332 1716 w (the) 1985 1716 w (window) 2176 1716 w (system,) 2581 1716 w (and) 2989 1716 w (the) 3205 1716 w (terminal.) 3396 1716 w (We) 3898 1716 w (rejected) 4076 1716 w (this) 4502 1716 w (design) 4717 1716 w (because,) 720 1836 w (although) 1187 1836 w (isolating) 1658 1836 w (many) 2114 1836 w (of) 2417 1836 w (the) 2556 1836 w (problems) 2752 1836 w (of) 3250 1836 w (font) 3389 1836 w (management) 3627 1836 w (into) 4299 1836 w (a) 4529 1836 w (separate) 4626 1836 w (program,) 720 1956 w (it) 1210 1956 w (didn) 1318 1956 w 10 /LucidaSansUnicode20 f (\031) 1535 1956 w 10 /LucidaSansUnicode00 f (t) 1567 1956 w (simplify) 1646 1956 w (the) 2071 1956 w (applications.) 2268 1956 w (Moreover,) 2959 1956 w (in) 3486 1956 w (a) 3618 1956 w (distributed) 3714 1956 w (system) 4286 1956 w (such) 4667 1956 w (as) 4934 1956 w (Plan) 720 2076 w (9) 959 2076 w (it) 1060 2076 w (is) 1164 2076 w (easy) 1282 2076 w (to) 1534 2076 w (have) 1670 2076 w (too) 1933 2076 w (many) 2130 2076 w (special) 2430 2076 w (purpose) 2802 2076 w (servers.) 3237 2076 w (Making) 3687 2076 w (the) 4078 2076 w (management) 4272 2076 w (of) 4942 2076 w (the) 720 2196 w (fonts) 910 2196 w (the) 1192 2196 w (concern) 1381 2196 w (of) 1799 2196 w (only) 1931 2196 w (the) 2169 2196 w (essential) 2358 2196 w (components) 2818 2196 w (simplifies) 3449 2196 w (the) 3950 2196 w (system) 4139 2196 w (and) 4513 2196 w (makes) 4727 2196 w (bootstrapping less intricate.) 720 2316 w 10 /LucidaSans-Demi f (Input) 720 2556 w 10 /LucidaSansUnicode00 f (A) 970 2712 w (completely) 1082 2712 w (different) 1652 2712 w (problem) 2113 2712 w (is) 2562 2712 w (how) 2685 2712 w (to) 2928 2712 w (type) 3069 2712 w (Unicode) 3320 2712 w (characters) 3754 2712 w (as) 4297 2712 w (input) 4446 2712 w (to) 4743 2712 w (the) 4885 2712 w (system.) 720 2832 w (We) 1175 2832 w (selected) 1368 2832 w (an) 1818 2832 w (unused) 1986 2832 w (key) 2393 2832 w (on) 2610 2832 w (our) 2784 2832 w (ASCII) 2999 2832 w (keyboards) 3299 2832 w (to) 3849 2832 w (serve) 3997 2832 w (as) 4303 2832 w (a) 4459 2832 w (prefix) 4564 2832 w (for) 4901 2832 w (multi-keystroke) 720 2952 w (sequences) 1537 2952 w (that) 2085 2952 w (generate) 2316 2952 w (Unicode) 2781 2952 w (characters.) 3212 2952 w (For) 3816 2952 w (example,) 4012 2952 w (the) 4497 2952 w (charac\255) 4692 2952 w (ter) 720 3072 w 10 /LucidaTypewriter f (\374) 896 3072 w 10 /LucidaSansUnicode00 f (is) 1010 3072 w (generated) 1132 3072 w (by) 1662 3072 w (the) 1819 3072 w (prefix) 2016 3072 w (key) 2344 3072 w (\(typically) 2551 3072 w 10 /LucidaTypewriter f (ALT) 3022 3072 w 10 /LucidaSansUnicode00 f (or) 3279 3072 w 10 /LucidaTypewriter f (Compose) 3422 3072 w 10 /LucidaSansUnicode00 f (\)) 3926 3072 w (followed) 4000 3072 w (by) 4454 3072 w (a) 4610 3072 w (double) 4706 3072 w (quote) 720 3192 w (and) 1036 3192 w (a) 1253 3192 w (lower-case) 1345 3192 w 10 /LucidaTypewriter f (u) 1917 3192 w 10 /LucidaSansUnicode00 f (.) 1989 3192 w (When) 2090 3192 w (that) 2393 3192 w (character) 2621 3192 w (is) 3107 3192 w (read) 3224 3192 w (by) 3476 3192 w (the) 3629 3192 w (application,) 3822 3192 w (from) 4426 3192 w (the) 4696 3192 w (file) 4889 3192 w 10 /LucidaTypewriter f (/dev/cons) 720 3312 w 10 /LucidaSansUnicode00 f (,) 1368 3312 w (it) 1443 3312 w (is) 1552 3312 w (of) 1675 3312 w (course) 1816 3312 w (presented) 2180 3312 w (as) 2707 3312 w (its) 2855 3312 w (UTF) 3014 3312 w (encoding.) 3242 3312 w (Such) 3794 3312 w (sequences) 4065 3312 w (generate) 4615 3312 w (characters) 720 3432 w (from) 1264 3432 w (an) 1540 3432 w (arbitrary) 1701 3432 w (set) 2159 3432 w (that) 2347 3432 w (includes) 2583 3432 w (all) 3031 3432 w (of) 3189 3432 w (Latin-1) 3332 3432 w (plus) 3734 3432 w (a) 3984 3432 w (selection) 4084 3432 w (of) 4561 3432 w (mathe\255) 4704 3432 w (matical) 720 3552 w (and) 1114 3552 w (technical) 1339 3552 w (characters.) 1816 3552 w (An) 2425 3552 w (arbitrary) 2600 3552 w (Unicode) 3058 3552 w (character) 3493 3552 w (may) 3986 3552 w (be) 4230 3552 w (generated) 4393 3552 w (by) 4925 3552 w (typing) 720 3672 w (the) 1058 3672 w (prefix,) 1246 3672 w (an) 1598 3672 w (upper) 1748 3672 w (case) 2066 3672 w (X,) 2312 3672 w (and) 2440 3672 w (four) 2653 3672 w (hexadecimal) 2887 3672 w (digits) 3531 3672 w (that) 3836 3672 w (identify) 4061 3672 w (the) 4460 3672 w (Unicode) 4649 3672 w (value.) 720 3792 w (These) 970 3948 w (simple) 1311 3948 w (mechanisms) 1686 3948 w (are) 2343 3948 w (adequate) 2549 3948 w (for) 3050 3948 w (most) 3243 3948 w (of) 3539 3948 w (our) 3691 3948 w (day-to-day) 3909 3948 w (needs:) 4517 3948 w (it) 4891 3948 w 10 /LucidaSansUnicode20 f (\031) 4957 3948 w 10 /LucidaSansUnicode00 f (s) 4989 3948 w (easy) 720 4068 w (to) 977 4068 w (remember) 1118 4068 w (to) 1660 4068 w (type) 1801 4068 w 10 /LucidaSansUnicode20 f (\030) 2052 4068 w 10 /LucidaSansUnicode00 f (ALT) 2084 4068 w (1) 2312 4068 w (2) 2418 4068 w 10 /LucidaSansUnicode20 f (\031) 2481 4068 w 10 /LucidaSansUnicode00 f (for) 2555 4068 w (\275) 2736 4068 w (or) 2866 4068 w 10 /LucidaSansUnicode20 f (\030) 3010 4068 w 10 /LucidaSansUnicode00 f (ALT) 3042 4068 w (accent) 3269 4068 w (letter) 3623 4068 w 10 /LucidaSansUnicode20 f (\031) 3879 4068 w 10 /LucidaSansUnicode00 f (for) 3953 4068 w (accented) 4134 4068 w (Latin) 4607 4068 w (let\255) 4885 4068 w (ters.) 720 4188 w (For) 1006 4188 w (the) 1199 4188 w (occasional) 1391 4188 w (unusual) 1933 4188 w (character,) 2354 4188 w (the) 2873 4188 w (cut) 3066 4188 w (and) 3254 4188 w (paste) 3472 4188 w (features) 3772 4188 w (of) 4205 4188 w 10 /LucidaTypewriter f (8\275) 4341 4188 w 10 /LucidaSansUnicode00 f (serve) 4523 4188 w (well.) 4817 4188 w (A) 720 4308 w (program) 838 4308 w (called) 1303 4308 w (\(perhaps) 1635 4308 w (misleadingly\)) 2108 4308 w 10 /LucidaTypewriter f (unicode) 2800 4308 w 10 /LucidaSansUnicode00 f (takes) 3352 4308 w (as) 3657 4308 w (argument) 3811 4308 w (a) 4327 4308 w (hexadecimal) 4430 4308 w (value,) 720 4428 w (and) 1041 4428 w (prints) 1256 4428 w (the) 1574 4428 w (UTF) 1764 4428 w (representation) 1985 4428 w (of) 2727 4428 w (that) 2860 4428 w (character,) 3086 4428 w (which) 3602 4428 w (may) 3918 4428 w (then) 4153 4428 w (be) 4405 4428 w (picked) 4559 4428 w (up) 4915 4428 w (with the mouse and used as input.) 720 4548 w (These) 970 4704 w (methods) 1293 4704 w (are) 1751 4704 w (clearly) 1938 4704 w (unsatisfactory) 2286 4704 w (when) 3002 4704 w (working) 3294 4704 w (in) 3719 4704 w (a) 3846 4704 w (non-English) 3937 4704 w (language.) 4565 4704 w (In) 720 4824 w (the) 864 4824 w (native) 1072 4824 w (country) 1416 4824 w (of) 1835 4824 w (such) 1986 4824 w (a) 2264 4824 w (language) 2371 4824 w (the) 2866 4824 w (appropriate) 3073 4824 w (keyboard) 3689 4824 w (is) 4190 4824 w (likely) 4322 4824 w (to) 4627 4824 w (be) 4777 4824 w (at) 4948 4824 w (hand.) 720 4944 w (But) 1101 4944 w (it) 1333 4944 w 10 /LucidaSansUnicode20 f (\031) 1399 4944 w 10 /LucidaSansUnicode00 f (s) 1431 4944 w (also) 1557 4944 w (reasonable) 1829 4944 w 10 /LucidaSansUnicode20 f (\024) 2358 4944 w 10 /LucidaSansUnicode00 f (especially) 2458 4944 w (now) 3005 4944 w (that) 3281 4944 w (the) 3548 4944 w (system) 3779 4944 w (handles) 4195 4944 w (Unicode) 4649 4944 w (characters) 720 5064 w 10 /LucidaSansUnicode20 f (\024) 1220 5064 w 10 /LucidaSansUnicode00 f (to work in a language foreign to the keyboard.) 1320 5064 w (For) 970 5220 w (alphabetic) 1175 5220 w (languages) 1724 5220 w (such) 2268 5220 w (as) 2544 5220 w (Greek) 2700 5220 w (or) 3033 5220 w (Russian,) 3185 5220 w (it) 3640 5220 w (is) 3756 5220 w (straightforward) 3886 5220 w (to) 4685 5220 w (con\255) 4833 5220 w (struct) 720 5340 w (a) 1034 5340 w (program) 1124 5340 w (that) 1575 5340 w (does) 1801 5340 w (phonetic) 2066 5340 w (substitution,) 2521 5340 w (so) 3168 5340 w (that,) 3314 5340 w (for) 3571 5340 w (example,) 3744 5340 w (typing) 4223 5340 w (a) 4562 5340 w (Latin) 4651 5340 w 10 /LucidaSansUnicode20 f (\030) 4921 5340 w 10 /LucidaSansUnicode00 f (a) 4953 5340 w 10 /LucidaSansUnicode20 f (\031) 5008 5340 w 10 /LucidaSansUnicode00 f (yields) 720 5460 w (the) 1060 5460 w (Greek) 1275 5460 w 10 /LucidaSansUnicode20 f (\030) 1618 5460 w 10 /LucidaSansUnicode03 f (\261) 1650 5460 w 10 /LucidaSansUnicode20 f (\031) 1722 5460 w 10 /LucidaSansUnicode00 f (.) 1754 5460 w (Within) 1878 5460 w (Plan) 2243 5460 w (9,) 2504 5460 w (such) 2659 5460 w (a) 2945 5460 w (program) 3060 5460 w (can) 3536 5460 w (be) 3764 5460 w (inserted) 3943 5460 w (transparently) 4399 5460 w (between) 720 5580 w (the) 1162 5580 w (real) 1352 5580 w (keyboard) 1568 5580 w (and) 2052 5580 w (a) 2267 5580 w (program) 2357 5580 w (such) 2808 5580 w (as) 3069 5580 w (the) 3210 5580 w (window) 3400 5580 w (system,) 3804 5580 w (providing) 4211 5580 w (a) 4708 5580 w (man\255) 4797 5580 w (ageable input device for such languages.) 720 5700 w (For) 970 5856 w (ideographic) 1181 5856 w (languages) 1808 5856 w (such) 2357 5856 w (as) 2638 5856 w (Chinese) 2799 5856 w (or) 3239 5856 w (Japanese) 3396 5856 w (the) 3881 5856 w (problem) 4092 5856 w (is) 4554 5856 w (harder.) 4690 5856 w (Native) 720 5976 w (users) 1061 5976 w (of) 1360 5976 w (such) 1496 5976 w (languages) 1760 5976 w (have) 2292 5976 w (adopted) 2555 5976 w (methods) 2991 5976 w (for) 3452 5976 w (dealing) 3629 5976 w (with) 4023 5976 w (Latin) 4266 5976 w (keyboards) 4540 5976 w (that) 720 6096 w (involve) 954 6096 w (a) 1338 6096 w (hybrid) 1436 6096 w (technique) 1789 6096 w (based) 2310 6096 w (on) 2641 6096 w (phonetics) 2807 6096 w (to) 3322 6096 w (generate) 3464 6096 w (a) 3933 6096 w (list) 4032 6096 w (of) 4222 6096 w (possible) 4364 6096 w (sym\255) 4811 6096 w (bols) 720 6216 w (followed) 959 6216 w (by) 1406 6216 w (menu) 1555 6216 w (selection) 1862 6216 w (to) 2328 6216 w (choose) 2460 6216 w (the) 2836 6216 w (desired) 3025 6216 w (one.) 3418 6216 w (Such) 3695 6216 w (methods) 3958 6216 w (can) 4415 6216 w (be) 4617 6216 w (effec\255) 4770 6216 w (tive,) 720 6336 w (but) 975 6336 w (their) 1186 6336 w (design) 1460 6336 w (must) 1833 6336 w (be) 2126 6336 w (rooted) 2295 6336 w (in) 2664 6336 w (information) 2805 6336 w (about) 3422 6336 w (the) 3750 6336 w (language) 3955 6336 w (unknown) 4448 6336 w (to) 4942 6336 w (non-native) 720 6456 w (speakers.) 1298 6456 w (\() 1837 6456 w 10 /LucidaTypewriter f (Cxterm) 1870 6456 w 10 /LucidaSansUnicode00 f (,) 2302 6456 w (a) 2378 6456 w (Chinese) 2477 6456 w (terminal) 2906 6456 w (emulator) 3352 6456 w (built) 3829 6456 w (by) 4092 6456 w (and) 4250 6456 w (for) 4473 6456 w (Chinese) 4655 6456 w (programmers,) 720 6576 w (employs) 1464 6576 w (such) 1924 6576 w (a) 2205 6576 w (technique) 2315 6576 w ([Pong) 2848 6576 w (and) 3176 6576 w (Zhang].\)) 3411 6576 w (Although) 3898 6576 w (the) 4397 6576 w (technical) 4608 6576 w (problem) 720 6696 w (of) 1162 6696 w (implementing) 1296 6696 w (such) 2003 6696 w (a) 2264 6696 w (device) 2354 6696 w (is) 2696 6696 w (easy) 2811 6696 w (in) 3060 6696 w (Plan) 3186 6696 w (9) 3422 6696 w 10 /LucidaSansUnicode20 f (\024) 3485 6696 w 10 /LucidaSansUnicode00 f (it) 3585 6696 w (is) 3686 6696 w (just) 3801 6696 w (an) 4016 6696 w (elaboration) 4168 6696 w (of) 4752 6696 w (the) 4885 6696 w (technique) 720 6816 w (for) 1255 6816 w (alphabetic) 1451 6816 w (languages) 2008 6816 w 10 /LucidaSansUnicode20 f (\024) 2502 6816 w 10 /LucidaSansUnicode00 f (our) 2602 6816 w (lack) 2823 6816 w (of) 3073 6816 w (familiarity) 3229 6816 w (with) 3773 6816 w (such) 4036 6816 w (languages) 4320 6816 w (has) 4872 6816 w (restrained our enthusiasm for building one.) 720 6936 w (The) 970 7092 w (input) 1192 7092 w (problem) 1486 7092 w (is) 1934 7092 w (technically) 2056 7092 w (the) 2611 7092 w (least) 2808 7092 w (interesting) 3078 7092 w (but) 3642 7092 w (perhaps) 3846 7092 w (emotionally) 4279 7092 w (the) 4885 7092 w (most) 720 7212 w (important) 995 7212 w (of) 1506 7212 w (the) 1637 7212 w (problems) 1825 7212 w (of) 2315 7212 w (converting) 2446 7212 w (a) 2992 7212 w (system) 3080 7212 w (to) 3453 7212 w (an) 3584 7212 w (international) 3734 7212 w (character) 4382 7212 w (set.) 4864 7212 w cleartomark showpage saveobj restore %%EndPage: 11 11 %%Page: 12 12 /saveobj save def mark 12 pagesetup 10 /LucidaSansUnicode00 f (\255 12 \255) 2752 480 w (Beyond) 720 840 w (that) 1120 840 w (remain) 1359 840 w (the) 1743 840 w (deeper) 1946 840 w (problems) 2329 840 w (of) 2834 840 w (internationalization) 2980 840 w (such) 3974 840 w (as) 4249 840 w (multi-lingual) 4404 840 w (error) 720 960 w (messages) 998 960 w (and) 1511 960 w (command) 1729 960 w (names,) 2245 960 w (problems) 2632 960 w (we) 3127 960 w (are) 3298 960 w (not) 3488 960 w (qualified) 3686 960 w (to) 4147 960 w (solve.) 4283 960 w (With) 4634 960 w (the) 4885 960 w (ability) 720 1080 w (to) 1052 1080 w (treat) 1188 1080 w (text) 1452 1080 w (of) 1681 1080 w (most) 1817 1080 w (languages) 2097 1080 w (on) 2629 1080 w (an) 2790 1080 w (equal) 2946 1080 w (footing,) 3250 1080 w (though,) 3670 1080 w (we) 4087 1080 w (can) 4259 1080 w (begin) 4466 1080 w (down) 4777 1080 w (that) 720 1200 w (path.) 944 1200 w (Perhaps) 1258 1200 w (people) 1674 1200 w (in) 2035 1200 w (non-English speaking countries will consider adopting Plan) 2159 1200 w (9,) 720 1320 w (solving) 852 1320 w (the) 1235 1320 w (input) 1427 1320 w (problem) 1717 1320 w (locally) 2160 1320 w 10 /LucidaSansUnicode20 f (\024) 2466 1320 w 10 /LucidaSansUnicode00 f (perhaps) 2566 1320 w (just) 2994 1320 w (by) 3211 1320 w (plugging) 3363 1320 w (in) 3832 1320 w (their) 3961 1320 w (local) 4224 1320 w (terminals) 4487 1320 w 10 /LucidaSansUnicode20 f (\024) 4940 1320 w 10 /LucidaSansUnicode00 f (and begin to use a system with at least the capacity to be international.) 720 1440 w 10 /LucidaSans-Demi f (Acknowledgements) 720 1680 w 10 /LucidaSansUnicode00 f (Dennis) 970 1836 w (Ritchie) 1369 1836 w (provided) 1761 1836 w (consultation) 2254 1836 w (and) 2916 1836 w (encouragement.) 3161 1836 w (Bob) 4044 1836 w (Flandrena) 4291 1836 w (con\255) 4833 1836 w (verted) 720 1956 w (most) 1063 1956 w (of) 1343 1956 w (the) 1479 1956 w (standard) 1672 1956 w (tools) 2137 1956 w (to) 2414 1956 w (UTF.) 2550 1956 w (Brian) 2838 1956 w (Kernighan) 3121 1956 w (suffered) 3653 1956 w (cheerfully) 4094 1956 w (with) 4606 1956 w (sev\255) 4848 1956 w (eral) 720 2076 w (inadequate) 955 2076 w (implementations) 1547 2076 w (and) 2414 2076 w (converted) 2649 2076 w 10 /LucidaTypewriter f (troff) 3183 2076 w 10 /LucidaSansUnicode00 f (to) 3598 2076 w (UTF.) 3751 2076 w (Rich) 4056 2076 w (Drechsler) 4316 2076 w (con\255) 4833 2076 w (verted) 720 2196 w (his) 1068 2196 w (Postscript) 1252 2196 w (driver) 1770 2196 w (to) 2094 2196 w (UTF.) 2234 2196 w (John) 2526 2196 w (Hobby) 2784 2196 w (built) 3139 2196 w (the) 3401 2196 w (Postscript) 3598 2196 w 10 /S1 f 4116 2196 m 70 build_X263a 10 /LucidaSansUnicode00 f (.) 4186 2196 w (We) 4292 2196 w (thank) 4476 2196 w (them) 4792 2196 w (all.) 720 2316 w 10 /LucidaSans-Demi f (References) 720 2556 w 10 /LucidaSansUnicode00 f ([ANSIC]) 720 2712 w 10 /LucidaSans-Italic f (American) 1117 2712 w (National) 1618 2712 w (Standard) 2065 2712 w (for) 2549 2712 w (Information) 2729 2712 w (Systems) 3340 2712 w 10 /LucidaSansUnicode20 f (\023) 3769 2712 w 10 /LucidaSans-Italic f (Programming) 3856 2712 w (Language) 4564 2712 w (C) 720 2832 w 10 /LucidaSansUnicode00 f (, American National Standards Institute, Inc., New York, 1990.) 788 2832 w ([ISO10646]) 720 2988 w (ISO/IEC) 1322 2988 w (DIS) 1748 2988 w (10646-1:1993) 1966 2988 w 10 /LucidaSans-Italic f (Information) 2747 2988 w (technology) 3382 2988 w 10 /LucidaSansUnicode20 f (\023) 3967 2988 w 10 /LucidaSans-Italic f (Universal) 4078 2988 w (Multiple-) 4593 2988 w (Octet Coded Character Set \(UCS\) ) 720 3108 w 10 /LucidaSansUnicode20 f (\024) 2330 3108 w 10 /LucidaSans-Italic f (Part 1: Architecture and Basic Multilingual Plane) 2462 3108 w 10 /LucidaSansUnicode00 f (.) 4823 3108 w ([Pike90]) 720 3264 w (R.) 1148 3264 w (Pike,) 1281 3264 w (D.) 1549 3264 w (Presotto,) 1694 3264 w (K.) 2163 3264 w (Thompson,) 2298 3264 w (H.) 2885 3264 w (Trickey,) 3030 3264 w 10 /LucidaSansUnicode20 f (\030\030) 3451 3264 w 10 /LucidaSansUnicode00 f (Plan) 3515 3264 w (9) 3755 3264 w (from) 3857 3264 w (Bell) 4128 3264 w (Labs) 4339 3264 w 10 /LucidaSansUnicode20 f (\031\031) 4561 3264 w 10 /LucidaSansUnicode00 f (,) 4625 3264 w (UKUUG) 4696 3264 w (Proc. of the Summer 1990 Conf., London, England, 1990.) 720 3384 w ([Pike91]) 720 3540 w (R.) 1152 3540 w (Pike,) 1289 3540 w 10 /LucidaSansUnicode20 f (\030\030) 1561 3540 w 10 /LucidaSansUnicode00 f (8\275,) 1625 3540 w (The) 1842 3540 w (Plan) 2065 3540 w (9) 2309 3540 w (Window) 2415 3540 w (System) 2836 3540 w 10 /LucidaSansUnicode20 f (\031\031) 3179 3540 w 10 /LucidaSansUnicode00 f (,) 3243 3540 w (USENIX) 3318 3540 w (Summer) 3704 3540 w (Conf.) 4146 3540 w (Proc.,) 4450 3540 w (Nash\255) 4765 3540 w (ville, 1991, reprinted in this volume.) 720 3660 w ([Pike92] R. Pike, ) 720 3816 w 10 /LucidaSansUnicode20 f (\030\030) 1531 3816 w 10 /LucidaSansUnicode00 f (How to Use the Plan 9 C Compiler) 1595 3816 w 10 /LucidaSansUnicode20 f (\031\031) 3234 3816 w 10 /LucidaSansUnicode00 f (, this volume.) 3298 3816 w ([Pong) 720 3972 w (and) 1037 3972 w (Zhang]) 1261 3972 w (Man-Chi) 1640 3972 w (Pong) 2105 3972 w (and) 2389 3972 w (Yongguang) 2614 3972 w (Zhang,) 3209 3972 w 10 /LucidaSansUnicode20 f (\030\030) 3588 3972 w 10 /LucidaSansUnicode00 f (cxterm:) 3652 3972 w (A) 4068 3972 w (Chinese) 4182 3972 w (Terminal) 4612 3972 w (Emulator) 720 4092 w (for) 1215 4092 w (the) 1417 4092 w (X) 1635 4092 w (Window) 1760 4092 w (System) 2200 4092 w 10 /LucidaSansUnicode20 f (\031\031) 2543 4092 w 10 /LucidaSansUnicode00 f (,) 2607 4092 w 10 /LucidaSans-Italic f (Software) 2701 4092 w 10 /LucidaSansUnicode20 f (\024) 3129 4092 w 10 /LucidaSans-Italic f (Practice) 3229 4092 w (and) 3678 4092 w (Experience,) 3924 4092 w 10 /LucidaSansUnicode00 f (Vol) 4536 4092 w (22\(1\),) 4753 4092 w (809-926, October 1992.) 720 4212 w ([Unicode]) 720 4368 w 10 /LucidaSans-Italic f (The) 1211 4368 w (Unicode) 1422 4368 w (Standard,) 1838 4368 w (Worldwide) 2352 4368 w (Character) 2892 4368 w (Encoding,) 3416 4368 w (Version) 3920 4368 w (1.0,) 4322 4368 w (Volume) 4547 4368 w (1) 4945 4368 w 10 /LucidaSansUnicode00 f (,) 5008 4368 w (The Unicode Consortium, Addison Wesley, New York, 1991.) 720 4488 w cleartomark showpage saveobj restore %%EndPage: 12 12 %%Trailer done %%DocumentFonts: LucidaSansUnicode03 LucidaSansUnicode20 S1 LucidaSansUnicode00 LucidaSans-Demi LucidaSans-Italic LucidaTypewriter %%Pages: 12