CVSROOT:        /cvsroot/groff
Module name:    groff
Branch:         
Changes by:     Werner LEMBERG <[EMAIL PROTECTED]>      06/02/26 22:21:38

Modified files:
        .              : ChangeLog 
        doc            : Makefile.sub 
        font/devhtml   : DESC.proto R.proto 
        font/devutf8   : DESC.proto R.proto 
        src/include    : font.h 
        src/libs/libgroff: font.cpp fontfile.cpp 

Log message:
        * doc/Makefile.sub (HTMLEXAMPLEFILESALL): New variable. (CLEANADD): Use 
it.
        (install_html, uninstall_sub): Updated.
        
        Introduce Unicode fonts.
        
        * font/devhtml/DESC.proto: Mark as unicode. font/devhtml/R.proto: 
Remove all
        * charset entries that are already
        in glyphuni.cpp. font/devutf8/DESC.proto: Mark as unicode.
        * font/devutf8/R.proto: Remove all charset entries. src/include/font.h
        * (font): New static field `is_unicode'.
        Change order of fields. src/libs/libgroff/font.cpp: Include unicode.h.
        * (font::font): Update for
        changed order of fields. (font::contains, font::get_width, 
font::get_height,
        font::get_depth, font::get_italic_correction,
        font::get_left_italic_correction, font::get_subscript_correction,
        font::get_character_type, font::get_code,
        font::get_special_device_encoding): Handle both the explicitly 
enumerated
        glyphs and use general code for Unicode fonts. (font::load): Make the
        charset section optional when the font is declared unicode.
        (font::load_desc): Recognize the `unicode' attribute.
        * src/libs/libgroff/fontfile.cpp (font::is_unicode): New variable.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/groff/ChangeLog.diff?tr1=1.916&tr2=1.917&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/doc/Makefile.sub.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/font/devhtml/DESC.proto.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/font/devhtml/R.proto.diff?tr1=1.28&tr2=1.29&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/font/devutf8/DESC.proto.diff?tr1=1.1.1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/font/devutf8/R.proto.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/src/include/font.h.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/src/libs/libgroff/font.cpp.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/groff/groff/src/libs/libgroff/fontfile.cpp.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: groff/ChangeLog
diff -u groff/ChangeLog:1.916 groff/ChangeLog:1.917
--- groff/ChangeLog:1.916       Sun Feb 26 14:03:25 2006
+++ groff/ChangeLog     Sun Feb 26 22:21:37 2006
@@ -1,3 +1,32 @@
+2006-02-26  Werner LEMBERG  <[EMAIL PROTECTED]>
+
+       * doc/Makefile.sub (HTMLEXAMPLEFILESALL): New variable.
+       (CLEANADD): Use it.
+       (install_html, uninstall_sub): Updated.
+
+2006-02-26  Bruno Haible  <[EMAIL PROTECTED]>
+
+       Introduce Unicode fonts.
+
+       * font/devhtml/DESC.proto: Mark as unicode.
+       * font/devhtml/R.proto: Remove all charset entries that are already
+       in glyphuni.cpp.
+       * font/devutf8/DESC.proto: Mark as unicode.
+       * font/devutf8/R.proto: Remove all charset entries.
+       * src/include/font.h (font): New static field `is_unicode'.
+       Change order of fields.
+       * src/libs/libgroff/font.cpp: Include unicode.h.
+       (font::font): Update for changed order of fields.
+       (font::contains, font::get_width, font::get_height, font::get_depth,
+       font::get_italic_correction, font::get_left_italic_correction,
+       font::get_subscript_correction, font::get_character_type,
+       font::get_code, font::get_special_device_encoding): Handle both the
+       explicitly enumerated glyphs and use general code for Unicode fonts.
+       (font::load): Make the charset section optional when the font is
+       declared unicode.
+       (font::load_desc): Recognize the `unicode' attribute.
+       * src/libs/libgroff/fontfile.cpp (font::is_unicode): New variable.
+
 2006-02-26  Claudio Fontana  <[EMAIL PROTECTED]>
 
        * Makefile.in: Add comment about DESTDIR.
Index: groff/doc/Makefile.sub
diff -u groff/doc/Makefile.sub:1.25 groff/doc/Makefile.sub:1.26
--- groff/doc/Makefile.sub:1.25 Sun Feb 26 14:03:25 2006
+++ groff/doc/Makefile.sub      Sun Feb 26 22:21:37 2006
@@ -77,6 +77,9 @@
 HTMLEXAMPLEFILES=\
   webpage.html
 
+HTMLEXAMPLEFILESALL=\
+  webpage*.html
+
 HTMLEXAMPLEIMAGEFILES=\
   webpage*
 
@@ -87,7 +90,7 @@
 CLEANADD=\
   $(PROCESSEDDOCFILES) \
   $(PROCESSEDEXAMPLEFILES) \
-  $(HTMLEXAMPLEFILES) \
+  $(HTMLEXAMPLEFILESALL) \
   $(HTMLDOCFILESALL) \
   groff.aux groff.cp* groff.dvi groff.es* groff.fn* groff.html groff.ky* \
   groff.log groff.ma* groff.op* groff.pdf groff.pg* groff.ps groff.rq* \
@@ -210,7 +213,7 @@
          $(DESTDIR)$(htmldocimagedir)
        -test -d $(DESTDIR)$(exampledir) \
          || $(mkinstalldirs) $(DESTDIR)$(exampledir)
-       for f in $(HTMLEXAMPLEFILES); do \
+       for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
          rm -f $(DESTDIR)$(exampledir)/$$f; \
          $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
        done
@@ -235,7 +238,7 @@
        -rm -f $(DESTDIR)$(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
        -rmdir $(DESTDIR)$(htmldocimagedir)
        -for f in $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES) \
-                 $(HTMLEXAMPLEFILES); do \
+                 `ls $(HTMLEXAMPLEFILESALL)`; do \
          rm -f $(DESTDIR)$(exampledir)/$$f; \
        done
        -rm -f $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
Index: groff/font/devhtml/DESC.proto
diff -u groff/font/devhtml/DESC.proto:1.4 groff/font/devhtml/DESC.proto:1.5
--- groff/font/devhtml/DESC.proto:1.4   Fri Oct  8 07:08:08 2004
+++ groff/font/devhtml/DESC.proto       Sun Feb 26 22:21:37 2006
@@ -10,3 +10,4 @@
 prepro  pre-grohtml
 use_charnames_in_special
 pass_filenames
+unicode
Index: groff/font/devhtml/R.proto
diff -u groff/font/devhtml/R.proto:1.28 groff/font/devhtml/R.proto:1.29
--- groff/font/devhtml/R.proto:1.28     Thu Feb 23 20:09:51 2006
+++ groff/font/devhtml/R.proto  Sun Feb 26 22:21:37 2006
@@ -2,743 +2,7 @@
 internalname 0
 spacewidth 24
 charset
-!      24      0       0x0021
-"      24      0       0x0022
-dq     "
-#      24      0       0x0023
-sh     "
-$      24      0       0x0024
-Do     "
-%      24      0       0x0025
-&      24      0       0x0026
-aq     24      0       0x0027
-(      24      0       0x0028
-)      24      0       0x0029
-*      24      0       0x002A
-+      24      0       0x002B
-pl     "
-,      24      0       0x002C
 hy     24      0       0x002D
 -      "
-.      24      0       0x002E
-/      24      0       0x002F
-sl     "
-0      24      0       0x0030
-1      24      0       0x0031
-2      24      0       0x0032
-3      24      0       0x0033
-4      24      0       0x0034
-5      24      0       0x0035
-6      24      0       0x0036
-7      24      0       0x0037
-8      24      0       0x0038
-9      24      0       0x0039
-:      24      0       0x003A
-;      24      0       0x003B
-<      24      0       0x003C
-=      24      0       0x003D
-eq     "
->      24      0       0x003E
-?      24      0       0x003F
-@      24      0       0x0040
-at     "
-A      24      0       0x0041
-B      24      0       0x0042
-C      24      0       0x0043
-D      24      0       0x0044
-E      24      0       0x0045
-F      24      0       0x0046
-G      24      0       0x0047
-H      24      0       0x0048
-I      24      0       0x0049
-J      24      0       0x004A
-K      24      0       0x004B
-L      24      0       0x004C
-M      24      0       0x004D
-N      24      0       0x004E
-O      24      0       0x004F
-P      24      0       0x0050
-Q      24      0       0x0051
-R      24      0       0x0052
-S      24      0       0x0053
-T      24      0       0x0054
-U      24      0       0x0055
-V      24      0       0x0056
-W      24      0       0x0057
-X      24      0       0x0058
-Y      24      0       0x0059
-Z      24      0       0x005A
-[      24      0       0x005B
-lB     "
-\      24      0       0x005C
-rs     "
-]      24      0       0x005D
-rB     "
-^      24      0       0x005E
-a^     "
-ha     "
-_      24      0       0x005F
-ru     "
-ul     "
-ga     24      0       0x0060
-a      24      0       0x0061
-b      24      0       0x0062
-c      24      0       0x0063
-d      24      0       0x0064
-e      24      0       0x0065
-f      24      0       0x0066
-g      24      0       0x0067
-h      24      0       0x0068
-i      24      0       0x0069
-j      24      0       0x006A
-k      24      0       0x006B
-l      24      0       0x006C
-m      24      0       0x006D
-n      24      0       0x006E
-o      24      0       0x006F
-p      24      0       0x0070
-q      24      0       0x0071
-r      24      0       0x0072
-s      24      0       0x0073
-t      24      0       0x0074
-u      24      0       0x0075
-v      24      0       0x0076
-w      24      0       0x0077
-x      24      0       0x0078
-y      24      0       0x0079
-z      24      0       0x007A
-lC     24      0       0x007B
-{      "
-ba     24      0       0x007C
-or     "
-|      "
-rC     24      0       0x007D
-}      "
-a~     24      0       0x007E
-~      "
-ti     "
----    24      0       0x00A0
-r!     24      0       0x00A1
-ct     24      0       0x00A2
-Po     24      0       0x00A3
-Cs     24      0       0x00A4
-Ye     24      0       0x00A5
-bb     24      0       0x00A6
-sc     24      0       0x00A7
-ad     24      0       0x00A8
-co     24      0       0x00A9
-Of     24      0       0x00AA
-Fo     24      0       0x00AB
-no     24      0       0x00AC
-tno    "
-rg     24      0       0x00AE
-a-     24      0       0x00AF
-de     24      0       0x00B0
-+-     24      0       0x00B1
-t+-    "
-S2     24      0       0x00B2
-S3     24      0       0x00B3
-aa     24      0       0x00B4
-mc     24      0       0x00B5
-ps     24      0       0x00B6
-pc     24      0       0x00B7
-ac     24      0       0x00B8
-S1     24      0       0x00B9
-Om     24      0       0x00BA
-Fc     24      0       0x00BB
-14     24      0       0x00BC
-12     24      0       0x00BD
-34     24      0       0x00BE
-r?     24      0       0x00BF
-`A     24      0       0x00C0
-'A     24      0       0x00C1
-^A     24      0       0x00C2
-~A     24      0       0x00C3
-:A     24      0       0x00C4
-oA     24      0       0x00C5
-AE     24      0       0x00C6
-,C     24      0       0x00C7
-`E     24      0       0x00C8
-'E     24      0       0x00C9
-^E     24      0       0x00CA
-:E     24      0       0x00CB
-`I     24      0       0x00CC
-'I     24      0       0x00CD
-^I     24      0       0x00CE
-:I     24      0       0x00CF
--D     24      0       0x00D0
-~N     24      0       0x00D1
-`O     24      0       0x00D2
-'O     24      0       0x00D3
-^O     24      0       0x00D4
-~O     24      0       0x00D5
-:O     24      0       0x00D6
-mu     24      0       0x00D7
-tmu    "
-/O     24      0       0x00D8
-`U     24      0       0x00D9
-'U     24      0       0x00DA
-^U     24      0       0x00DB
-:U     24      0       0x00DC
-'Y     24      0       0x00DD
-TP     24      0       0x00DE
-ss     24      0       0x00DF
-`a     24      0       0x00E0
-'a     24      0       0x00E1
-^a     24      0       0x00E2
-~a     24      0       0x00E3
-:a     24      0       0x00E4
-oa     24      0       0x00E5
-ae     24      0       0x00E6
-,c     24      0       0x00E7
-`e     24      0       0x00E8
-'e     24      0       0x00E9
-^e     24      0       0x00EA
-:e     24      0       0x00EB
-`i     24      0       0x00EC
-'i     24      0       0x00ED
-^i     24      0       0x00EE
-:i     24      0       0x00EF
-Sd     24      0       0x00F0
-~n     24      0       0x00F1
-`o     24      0       0x00F2
-'o     24      0       0x00F3
-^o     24      0       0x00F4
-~o     24      0       0x00F5
-:o     24      0       0x00F6
-di     24      0       0x00F7
-tdi    "
-/o     24      0       0x00F8
-`u     24      0       0x00F9
-'u     24      0       0x00FA
-^u     24      0       0x00FB
-:u     24      0       0x00FC
-'y     24      0       0x00FD
-Tp     24      0       0x00FE
-:y     24      0       0x00FF
-u0041_0306     24      0       0x0102
-u0061_0306     24      0       0x0103
-u0041_0328     24      0       0x0104
-u0061_0328     24      0       0x0105
-'C     24      0       0x0106
-'c     24      0       0x0107
-u0043_030C     24      0       0x010C
-u0063_030C     24      0       0x010D
-u0044_030C     24      0       0x010E
-u0064_030C     24      0       0x010F
-u0110  24      0       0x0110
-u0111  24      0       0x0111
-u0045_0328     24      0       0x0118
-u0065_0328     24      0       0x0119
-u0045_030C     24      0       0x011A
-u0065_030C     24      0       0x011B
-u0047_0306     24      0       0x011E
-u0067_0306     24      0       0x011F
-u0049_0307     24      0       0x0130
-.i     24      0       0x0131
-IJ     24      0       0x0132
-ij     24      0       0x0133
-u004C_0301     24      0       0x0139
-u006C_0301     24      0       0x013A
-u004C_030C     24      0       0x013D
-u006C_030C     24      0       0x013E
-/L     24      0       0x0141
-/l     24      0       0x0142
-u004E_0301     24      0       0x0143
-u006E_0301     24      0       0x0144
-u004E_030C     24      0       0x0147
-u006E_030C     24      0       0x0148
-u004F_030B     24      0       0x0150
-u006F_030B     24      0       0x0151
-OE     24      0       0x0152
-oe     24      0       0x0153
-u0052_0301     24      0       0x0154
-u0072_0301     24      0       0x0155
-u0052_030C     24      0       0x0158
-u0072_030C     24      0       0x0159
-u0053_0301     24      0       0x015A
-u0073_0301     24      0       0x015B
-u0053_0327     24      0       0x015E
-u0073_0327     24      0       0x015F
-vS     24      0       0x0160
-vs     24      0       0x0161
-u0054_0327     24      0       0x0162
-u0074_0327     24      0       0x0163
-u0054_030C     24      0       0x0164
-u0074_030C     24      0       0x0165
-u0055_030A     24      0       0x016E
-u0075_030A     24      0       0x016F
-u0055_030B     24      0       0x0170
-u0075_030B     24      0       0x0171
-:Y     24      0       0x0178
-u005A_0301     24      0       0x0179
-u007A_0301     24      0       0x017A
-u005A_0307     24      0       0x017B
-u007A_0307     24      0       0x017C
-vZ     24      0       0x017D
-vz     24      0       0x017E
-Fn     24      0       0x0192
-ah     24      0       0x02C7
-ab     24      0       0x02D8
-a.     24      0       0x02D9
-ao     24      0       0x02DA
-ho     24      0       0x02DB
-a"     24      0       0x02DD
-*A     24      0       0x0391
-*B     24      0       0x0392
-*G     24      0       0x0393
-*D     24      0       0x0394
-*E     24      0       0x0395
-*Z     24      0       0x0396
-*Y     24      0       0x0397
-*H     24      0       0x0398
-*I     24      0       0x0399
-*K     24      0       0x039A
-*L     24      0       0x039B
-*M     24      0       0x039C
-*N     24      0       0x039D
-*C     24      0       0x039E
-*O     24      0       0x039F
-*P     24      0       0x03A0
-*R     24      0       0x03A1
-*S     24      0       0x03A3
-*T     24      0       0x03A4
-*U     24      0       0x03A5
-*F     24      0       0x03A6
-*X     24      0       0x03A7
-*Q     24      0       0x03A8
-*W     24      0       0x03A9
-*a     24      0       0x03B1
-*b     24      0       0x03B2
-*g     24      0       0x03B3
-*d     24      0       0x03B4
-*e     24      0       0x03B5
-*z     24      0       0x03B6
-*y     24      0       0x03B7
-*h     24      0       0x03B8
-*i     24      0       0x03B9
-*k     24      0       0x03BA
-*l     24      0       0x03BB
-*m     24      0       0x03BC
-*n     24      0       0x03BD
-*c     24      0       0x03BE
-*o     24      0       0x03BF
-*p     24      0       0x03C0
-*r     24      0       0x03C1
-ts     24      0       0x03C2
-*s     24      0       0x03C3
-*t     24      0       0x03C4
-*u     24      0       0x03C5
-+f     24      0       0x03C6
-*x     24      0       0x03C7
-*q     24      0       0x03C8
-*w     24      0       0x03C9
-+h     24      0       0x03D1
-*f     24      0       0x03D5
-+p     24      0       0x03D6
-+e     24      0       0x03F5
-u0415_0300     24      0       0x0400
-u0415_0308     24      0       0x0401
-u0402  24      0       0x0402
-u0413_0301     24      0       0x0403
-u0404  24      0       0x0404
-u0405  24      0       0x0405
-u0406  24      0       0x0406
-u0406_0308     24      0       0x0407
-u0408  24      0       0x0408
-u0409  24      0       0x0409
-u040A  24      0       0x040A
-u040B  24      0       0x040B
-u041A_0301     24      0       0x040C
-u0418_0300     24      0       0x040D
-u0423_0306     24      0       0x040E
-u040F  24      0       0x040F
-u0410  24      0       0x0410
-u0411  24      0       0x0411
-u0412  24      0       0x0412
-u0413  24      0       0x0413
-u0414  24      0       0x0414
-u0415  24      0       0x0415
-u0416  24      0       0x0416
-u0417  24      0       0x0417
-u0418  24      0       0x0418
-u0418_0306     24      0       0x0419
-u041A  24      0       0x041A
-u041B  24      0       0x041B
-u041C  24      0       0x041C
-u041D  24      0       0x041D
-u041E  24      0       0x041E
-u041F  24      0       0x041F
-u0420  24      0       0x0420
-u0421  24      0       0x0421
-u0422  24      0       0x0422
-u0423  24      0       0x0423
-u0424  24      0       0x0424
-u0425  24      0       0x0425
-u0426  24      0       0x0426
-u0427  24      0       0x0427
-u0428  24      0       0x0428
-u0429  24      0       0x0429
-u042A  24      0       0x042A
-u042B  24      0       0x042B
-u042C  24      0       0x042C
-u042D  24      0       0x042D
-u042E  24      0       0x042E
-u042F  24      0       0x042F
-u0430  24      0       0x0430
-u0431  24      0       0x0431
-u0432  24      0       0x0432
-u0433  24      0       0x0433
-u0434  24      0       0x0434
-u0435  24      0       0x0435
-u0436  24      0       0x0436
-u0437  24      0       0x0437
-u0438  24      0       0x0438
-u0438_0306     24      0       0x0439
-u043A  24      0       0x043A
-u043B  24      0       0x043B
-u043C  24      0       0x043C
-u043D  24      0       0x043D
-u043E  24      0       0x043E
-u043F  24      0       0x043F
-u0440  24      0       0x0440
-u0441  24      0       0x0441
-u0442  24      0       0x0442
-u0443  24      0       0x0443
-u0444  24      0       0x0444
-u0445  24      0       0x0445
-u0446  24      0       0x0446
-u0447  24      0       0x0447
-u0448  24      0       0x0448
-u0449  24      0       0x0449
-u044A  24      0       0x044A
-u044B  24      0       0x044B
-u044C  24      0       0x044C
-u044D  24      0       0x044D
-u044E  24      0       0x044E
-u044F  24      0       0x044F
-u0435_0300     24      0       0x0450
-u0435_0308     24      0       0x0451
-u0452  24      0       0x0452
-u0433_0301     24      0       0x0453
-u0454  24      0       0x0454
-u0455  24      0       0x0455
-u0456  24      0       0x0456
-u0456_0308     24      0       0x0457
-u0458  24      0       0x0458
-u0459  24      0       0x0459
-u045A  24      0       0x045A
-u045B  24      0       0x045B
-u043A_0301     24      0       0x045C
-u0438_0300     24      0       0x045D
-u0443_0306     24      0       0x045E
-u045F  24      0       0x045F
-u0460  24      0       0x0460
-u0461  24      0       0x0461
-u0462  24      0       0x0462
-u0463  24      0       0x0463
-u0464  24      0       0x0464
-u0465  24      0       0x0465
-u0466  24      0       0x0466
-u0467  24      0       0x0467
-u0468  24      0       0x0468
-u0469  24      0       0x0469
-u046A  24      0       0x046A
-u046B  24      0       0x046B
-u046C  24      0       0x046C
-u046D  24      0       0x046D
-u046E  24      0       0x046E
-u046F  24      0       0x046F
-u0470  24      0       0x0470
-u0471  24      0       0x0471
-u0472  24      0       0x0472
-u0473  24      0       0x0473
-u0474  24      0       0x0474
-u0475  24      0       0x0475
-u0474_030F     24      0       0x0476
-u0475_030F     24      0       0x0477
-u0478  24      0       0x0478
-u0479  24      0       0x0479
-u047A  24      0       0x047A
-u047B  24      0       0x047B
-u047C  24      0       0x047C
-u047D  24      0       0x047D
-u047E  24      0       0x047E
-u047F  24      0       0x047F
-u0480  24      0       0x0480
-u0481  24      0       0x0481
-u0482  24      0       0x0482
-u0483  0       0       0x0483
-u0484  0       0       0x0484
-u0485  0       0       0x0485
-u0486  0       0       0x0486
-u0488  0       0       0x0488
-u0489  0       0       0x0489
-u048A  24      0       0x048A
-u048B  24      0       0x048B
-u048C  24      0       0x048C
-u048D  24      0       0x048D
-u048E  24      0       0x048E
-u048F  24      0       0x048F
-u0490  24      0       0x0490
-u0491  24      0       0x0491
-u0492  24      0       0x0492
-u0493  24      0       0x0493
-u0494  24      0       0x0494
-u0495  24      0       0x0495
-u0496  24      0       0x0496
-u0497  24      0       0x0497
-u0498  24      0       0x0498
-u0499  24      0       0x0499
-u049A  24      0       0x049A
-u049B  24      0       0x049B
-u049C  24      0       0x049C
-u049D  24      0       0x049D
-u049E  24      0       0x049E
-u049F  24      0       0x049F
-u04A0  24      0       0x04A0
-u04A1  24      0       0x04A1
-u04A2  24      0       0x04A2
-u04A3  24      0       0x04A3
-u04A4  24      0       0x04A4
-u04A5  24      0       0x04A5
-u04A6  24      0       0x04A6
-u04A7  24      0       0x04A7
-u04A8  24      0       0x04A8
-u04A9  24      0       0x04A9
-u04AA  24      0       0x04AA
-u04AB  24      0       0x04AB
-u04AC  24      0       0x04AC
-u04AD  24      0       0x04AD
-u04AE  24      0       0x04AE
-u04AF  24      0       0x04AF
-u04B0  24      0       0x04B0
-u04B1  24      0       0x04B1
-u04B2  24      0       0x04B2
-u04B3  24      0       0x04B3
-u04B4  24      0       0x04B4
-u04B5  24      0       0x04B5
-u04B6  24      0       0x04B6
-u04B7  24      0       0x04B7
-u04B8  24      0       0x04B8
-u04B9  24      0       0x04B9
-u04BA  24      0       0x04BA
-u04BB  24      0       0x04BB
-u04BC  24      0       0x04BC
-u04BD  24      0       0x04BD
-u04BE  24      0       0x04BE
-u04BF  24      0       0x04BF
-u04C0  24      0       0x04C0
-u0416_0306     24      0       0x04C1
-u0436_0306     24      0       0x04C2
-u04C3  24      0       0x04C3
-u04C4  24      0       0x04C4
-u04C5  24      0       0x04C5
-u04C6  24      0       0x04C6
-u04C7  24      0       0x04C7
-u04C8  24      0       0x04C8
-u04C9  24      0       0x04C9
-u04CA  24      0       0x04CA
-u04CB  24      0       0x04CB
-u04CC  24      0       0x04CC
-u04CD  24      0       0x04CD
-u04CE  24      0       0x04CE
-u0410_0306     24      0       0x04D0
-u0430_0306     24      0       0x04D1
-u0410_0308     24      0       0x04D2
-u0430_0308     24      0       0x04D3
-u04D4  24      0       0x04D4
-u04D5  24      0       0x04D5
-u0415_0306     24      0       0x04D6
-u0435_0306     24      0       0x04D7
-u04D8  24      0       0x04D8
-u04D9  24      0       0x04D9
-u04D8_0308     24      0       0x04DA
-u04D9_0308     24      0       0x04DB
-u0416_0308     24      0       0x04DC
-u0436_0308     24      0       0x04DD
-u0417_0308     24      0       0x04DE
-u0437_0308     24      0       0x04DF
-u04E0  24      0       0x04E0
-u04E1  24      0       0x04E1
-u0418_0304     24      0       0x04E2
-u0438_0304     24      0       0x04E3
-u0418_0308     24      0       0x04E4
-u0438_0308     24      0       0x04E5
-u041E_0308     24      0       0x04E6
-u043E_0308     24      0       0x04E7
-u04E8  24      0       0x04E8
-u04E9  24      0       0x04E9
-u04E8_0308     24      0       0x04EA
-u04E9_0308     24      0       0x04EB
-u042D_0308     24      0       0x04EC
-u044D_0308     24      0       0x04ED
-u0423_0304     24      0       0x04EE
-u0443_0304     24      0       0x04EF
-u0423_0308     24      0       0x04F0
-u0443_0308     24      0       0x04F1
-u0423_030B     24      0       0x04F2
-u0443_030B     24      0       0x04F3
-u0427_0308     24      0       0x04F4
-u0447_0308     24      0       0x04F5
-u042B_0308     24      0       0x04F8
-u044B_0308     24      0       0x04F9
-u0500  24      0       0x0500
-u0501  24      0       0x0501
-u0502  24      0       0x0502
-u0503  24      0       0x0503
-u0504  24      0       0x0504
-u0505  24      0       0x0505
-u0506  24      0       0x0506
-u0507  24      0       0x0507
-u0508  24      0       0x0508
-u0509  24      0       0x0509
-u050A  24      0       0x050A
-u050B  24      0       0x050B
-u050C  24      0       0x050C
-u050D  24      0       0x050D
-u050E  24      0       0x050E
-u050F  24      0       0x050F
-en     24      0       0x2013
-em     24      0       0x2014
-`      24      0       0x2018
-oq     "
-'      24      0       0x2019
-cq     "
-bq     24      0       0x201A
-lq     24      0       0x201C
-rq     24      0       0x201D
-Bq     24      0       0x201E
-dg     24      0       0x2020
-dd     24      0       0x2021
-bu     24      0       0x2022
-%0     24      0       0x2030
-fm     24      0       0x2032
-sd     24      0       0x2033
-fo     24      0       0x2039
-fc     24      0       0x203A
-rn     24      0       0x203E
-f/     24      0       0x2044
-Eu     24      0       0x20AC
-eu     "
--h     24      0       0x210F
-hbar   "
-Im     24      0       0x2111
-wp     24      0       0x2118
-Re     24      0       0x211C
-tm     24      0       0x2122
-Ah     24      0       0x2135
-18     24      0       0x215B
-38     24      0       0x215C
-58     24      0       0x215D
-78     24      0       0x215E
-<-     24      0       0x2190
-ua     24      0       0x2191
-->     24      0       0x2192
-da     24      0       0x2193
-<>     24      0       0x2194
-va     24      0       0x2195
-CR     24      0       0x21B5
-lA     24      0       0x21D0
-uA     24      0       0x21D1
-rA     24      0       0x21D2
-dA     24      0       0x21D3
-hA     24      0       0x21D4
-vA     24      0       0x21D5
-fa     24      0       0x2200
-pd     24      0       0x2202
-te     24      0       0x2203
-es     24      0       0x2205
-gr     24      0       0x2207
-mo     24      0       0x2208
-nm     24      0       0x2209
-st     24      0       0x220B
-product        24      0       0x220F
-coproduct      24      0       0x2210
-sum    24      0       0x2211
-\-     24      0       0x2212
-mi     "
--+     24      0       0x2213
-**     24      0       0x2217
-sr     24      0       0x221A
-sqrt   "
-pt     24      0       0x221D
-if     24      0       0x221E
-/_     24      0       0x2220
-AN     24      0       0x2227
-OR     24      0       0x2228
-ca     24      0       0x2229
-cu     24      0       0x222A
-is     24      0       0x222B
-integral       "
-tf     24      0       0x2234
-3d     "
-ap     24      0       0x223C
-|=     24      0       0x2243
-=~     24      0       0x2245
-~~     24      0       0x2248
-~=     "
-!=     24      0       0x2260
-==     24      0       0x2261
-ne     24      0       0x2262
-<=     24      0       0x2264
->=     24      0       0x2265
-<<     24      0       0x226A
->>     24      0       0x226B
-sb     24      0       0x2282
-sp     24      0       0x2283
-nb     24      0       0x2284
-nc     24      0       0x2285
-ib     24      0       0x2286
-ip     24      0       0x2287
-c+     24      0       0x2295
-c*     24      0       0x2297
-pp     24      0       0x22A5
-md     24      0       0x22C5
-lc     24      0       0x2308
-rc     24      0       0x2309
-lf     24      0       0x230A
-rf     24      0       0x230B
 la     24      0       0x2329
 ra     24      0       0x232A
-parenlefttp    24      0       0x239B
-parenleftex    24      0       0x239C
-parenleftbt    24      0       0x239D
-parenrighttp   24      0       0x239E
-parenrightex   24      0       0x239F
-parenrightbt   24      0       0x23A0
-bracketlefttp  24      0       0x23A1
-bracketleftex  24      0       0x23A2
-bracketleftbt  24      0       0x23A3
-bracketrighttp 24      0       0x23A4
-bracketrightex 24      0       0x23A5
-bracketrightbt 24      0       0x23A6
-lt     24      0       0x23A7
-bracelefttp    "
-lk     24      0       0x23A8
-braceleftmid   "
-lb     24      0       0x23A9
-braceleftbt    "
-bv     24      0       0x23AA
-braceex        "
-braceleftex    "
-bracerightex   "
-rt     24      0       0x23AB
-bracerighttp   "
-rk     24      0       0x23AC
-bracerightmid  "
-rb     24      0       0x23AD
-bracerightbt   "
-u23AE  24      0       0x23AE
-an     24      0       0x23AF
-br     24      0       0x2502
-sq     24      0       0x25A1
-lz     24      0       0x25CA
-ci     24      0       0x25CB
-lh     24      0       0x261C
-rh     24      0       0x261E
-SP     24      0       0x2660
-CL     24      0       0x2663
-HE     24      0       0x2665
-DI     24      0       0x2666
-OK     24      0       0x2713
Index: groff/font/devutf8/DESC.proto
diff -u groff/font/devutf8/DESC.proto:1.1.1.1 groff/font/devutf8/DESC.proto:1.2
--- groff/font/devutf8/DESC.proto:1.1.1.1       Sun Feb  6 09:36:22 2000
+++ groff/font/devutf8/DESC.proto       Sun Feb 26 22:21:37 2006
@@ -6,3 +6,4 @@
 fonts 4 R I B BI
 tcommand
 postpro grotty
+unicode
Index: groff/font/devutf8/R.proto
diff -u groff/font/devutf8/R.proto:1.33 groff/font/devutf8/R.proto:1.34
--- groff/font/devutf8/R.proto:1.33     Thu Feb 23 20:09:51 2006
+++ groff/font/devutf8/R.proto  Sun Feb 26 22:21:37 2006
@@ -1,817 +1,3 @@
 name R
 internalname 0
 spacewidth 24
-charset
----    24      0       0x0000
----    24      0       0x0001
----    24      0       0x0002
----    24      0       0x0003
----    24      0       0x0004
----    24      0       0x0005
----    24      0       0x0006
----    24      0       0x0007
----    24      0       0x0008
----    24      0       0x0009
----    24      0       0x000A
----    24      0       0x000B
----    24      0       0x000C
----    24      0       0x000D
----    24      0       0x000E
----    24      0       0x000F
----    24      0       0x0010
----    24      0       0x0011
----    24      0       0x0012
----    24      0       0x0013
----    24      0       0x0014
----    24      0       0x0015
----    24      0       0x0016
----    24      0       0x0017
----    24      0       0x0018
----    24      0       0x0019
----    24      0       0x001A
----    24      0       0x001B
----    24      0       0x001C
----    24      0       0x001D
----    24      0       0x001E
----    24      0       0x001F
----    24      0       0x0020
-!      24      0       0x0021
-"      24      0       0x0022
-dq     "
-#      24      0       0x0023
-sh     "
-$      24      0       0x0024
-Do     "
-%      24      0       0x0025
-&      24      0       0x0026
-aq     24      0       0x0027
-(      24      0       0x0028
-)      24      0       0x0029
-*      24      0       0x002A
-+      24      0       0x002B
-pl     "
-,      24      0       0x002C
----    24      0       0x002D
-.      24      0       0x002E
-/      24      0       0x002F
-sl     "
-0      24      0       0x0030
-1      24      0       0x0031
-2      24      0       0x0032
-3      24      0       0x0033
-4      24      0       0x0034
-5      24      0       0x0035
-6      24      0       0x0036
-7      24      0       0x0037
-8      24      0       0x0038
-9      24      0       0x0039
-:      24      0       0x003A
-;      24      0       0x003B
-<      24      0       0x003C
-=      24      0       0x003D
-eq     "
->      24      0       0x003E
-?      24      0       0x003F
-@      24      0       0x0040
-at     "
-A      24      0       0x0041
-B      24      0       0x0042
-C      24      0       0x0043
-D      24      0       0x0044
-E      24      0       0x0045
-F      24      0       0x0046
-G      24      0       0x0047
-H      24      0       0x0048
-I      24      0       0x0049
-J      24      0       0x004A
-K      24      0       0x004B
-L      24      0       0x004C
-M      24      0       0x004D
-N      24      0       0x004E
-O      24      0       0x004F
-P      24      0       0x0050
-Q      24      0       0x0051
-R      24      0       0x0052
-S      24      0       0x0053
-T      24      0       0x0054
-U      24      0       0x0055
-V      24      0       0x0056
-W      24      0       0x0057
-X      24      0       0x0058
-Y      24      0       0x0059
-Z      24      0       0x005A
-[      24      0       0x005B
-lB     "
-\      24      0       0x005C
-rs     "
-]      24      0       0x005D
-rB     "
-a^     24      0       0x005E
-^      "
-ha     "
-_      24      0       0x005F
-ru     "
-ul     "
-ga     24      0       0x0060
-a      24      0       0x0061
-b      24      0       0x0062
-c      24      0       0x0063
-d      24      0       0x0064
-e      24      0       0x0065
-f      24      0       0x0066
-g      24      0       0x0067
-h      24      0       0x0068
-i      24      0       0x0069
-j      24      0       0x006A
-k      24      0       0x006B
-l      24      0       0x006C
-m      24      0       0x006D
-n      24      0       0x006E
-o      24      0       0x006F
-p      24      0       0x0070
-q      24      0       0x0071
-r      24      0       0x0072
-s      24      0       0x0073
-t      24      0       0x0074
-u      24      0       0x0075
-v      24      0       0x0076
-w      24      0       0x0077
-x      24      0       0x0078
-y      24      0       0x0079
-z      24      0       0x007A
-lC     24      0       0x007B
-{      "
-ba     24      0       0x007C
-or     "
-|      "
-rC     24      0       0x007D
-}      "
-a~     24      0       0x007E
-~      "
-ti     "
----    24      0       0x007F
----    24      0       0x0080
----    24      0       0x0081
----    24      0       0x0082
----    24      0       0x0083
----    24      0       0x0084
----    24      0       0x0085
----    24      0       0x0086
----    24      0       0x0087
----    24      0       0x0088
----    24      0       0x0089
----    24      0       0x008A
----    24      0       0x008B
----    24      0       0x008C
----    24      0       0x008D
----    24      0       0x008E
----    24      0       0x008F
----    24      0       0x0090
----    24      0       0x0091
----    24      0       0x0092
----    24      0       0x0093
----    24      0       0x0094
----    24      0       0x0095
----    24      0       0x0096
----    24      0       0x0097
----    24      0       0x0098
----    24      0       0x0099
----    24      0       0x009A
----    24      0       0x009B
----    24      0       0x009C
----    24      0       0x009D
----    24      0       0x009E
----    24      0       0x009F
----    24      0       0x00A0
-r!     24      0       0x00A1
-ct     24      0       0x00A2
-Po     24      0       0x00A3
-Cs     24      0       0x00A4
-Ye     24      0       0x00A5
-bb     24      0       0x00A6
-sc     24      0       0x00A7
-ad     24      0       0x00A8
-co     24      0       0x00A9
-Of     24      0       0x00AA
-Fo     24      0       0x00AB
-no     24      0       0x00AC
-tno    "
----    24      0       0x00AD
-rg     24      0       0x00AE
-a-     24      0       0x00AF
-de     24      0       0x00B0
-+-     24      0       0x00B1
-t+-    "
-S2     24      0       0x00B2
-S3     24      0       0x00B3
-aa     24      0       0x00B4
-mc     24      0       0x00B5
-ps     24      0       0x00B6
-pc     24      0       0x00B7
-ac     24      0       0x00B8
-S1     24      0       0x00B9
-Om     24      0       0x00BA
-Fc     24      0       0x00BB
-14     24      0       0x00BC
-12     24      0       0x00BD
-34     24      0       0x00BE
-r?     24      0       0x00BF
-`A     24      0       0x00C0
-'A     24      0       0x00C1
-^A     24      0       0x00C2
-~A     24      0       0x00C3
-:A     24      0       0x00C4
-oA     24      0       0x00C5
-AE     24      0       0x00C6
-,C     24      0       0x00C7
-`E     24      0       0x00C8
-'E     24      0       0x00C9
-^E     24      0       0x00CA
-:E     24      0       0x00CB
-`I     24      0       0x00CC
-'I     24      0       0x00CD
-^I     24      0       0x00CE
-:I     24      0       0x00CF
--D     24      0       0x00D0
-~N     24      0       0x00D1
-`O     24      0       0x00D2
-'O     24      0       0x00D3
-^O     24      0       0x00D4
-~O     24      0       0x00D5
-:O     24      0       0x00D6
-mu     24      0       0x00D7
-tmu    "
-/O     24      0       0x00D8
-`U     24      0       0x00D9
-'U     24      0       0x00DA
-^U     24      0       0x00DB
-:U     24      0       0x00DC
-'Y     24      0       0x00DD
-TP     24      0       0x00DE
-ss     24      0       0x00DF
-`a     24      0       0x00E0
-'a     24      0       0x00E1
-^a     24      0       0x00E2
-~a     24      0       0x00E3
-:a     24      0       0x00E4
-oa     24      0       0x00E5
-ae     24      0       0x00E6
-,c     24      0       0x00E7
-`e     24      0       0x00E8
-'e     24      0       0x00E9
-^e     24      0       0x00EA
-:e     24      0       0x00EB
-`i     24      0       0x00EC
-'i     24      0       0x00ED
-^i     24      0       0x00EE
-:i     24      0       0x00EF
-Sd     24      0       0x00F0
-~n     24      0       0x00F1
-`o     24      0       0x00F2
-'o     24      0       0x00F3
-^o     24      0       0x00F4
-~o     24      0       0x00F5
-:o     24      0       0x00F6
-di     24      0       0x00F7
-tdi    "
-/o     24      0       0x00F8
-`u     24      0       0x00F9
-'u     24      0       0x00FA
-^u     24      0       0x00FB
-:u     24      0       0x00FC
-'y     24      0       0x00FD
-Tp     24      0       0x00FE
-:y     24      0       0x00FF
-u0041_0306     24      0       0x0102
-u0061_0306     24      0       0x0103
-u0041_0328     24      0       0x0104
-u0061_0328     24      0       0x0105
-'C     24      0       0x0106
-'c     24      0       0x0107
-u0043_030C     24      0       0x010C
-u0063_030C     24      0       0x010D
-u0044_030C     24      0       0x010E
-u0064_030C     24      0       0x010F
-u0110  24      0       0x0110
-u0111  24      0       0x0111
-u0045_0328     24      0       0x0118
-u0065_0328     24      0       0x0119
-u0045_030C 24  0       0x011A
-u0065_030C     24      0       0x011B
-u0047_0306     24      0       0x011E
-u0067_0306     24      0       0x011F
-u0049_0307     24      0       0x0130
-.i     24      0       0x0131
-IJ     24      0       0x0132
-ij     24      0       0x0133
-u004C_0301     24      0       0x0139
-u006C_0301     24      0       0x013A
-u004C_030C     24      0       0x013D
-u006C_030C     24      0       0x013E
-/L     24      0       0x0141
-/l     24      0       0x0142
-u004E_0301     24      0       0x0143
-u006E_0301     24      0       0x0144
-u004E_030C     24      0       0x0147
-u006E_030C     24      0       0x0148
-u004F_030B     24      0       0x0150
-u006F_030B     24      0       0x0151
-OE     24      0       0x0152
-oe     24      0       0x0153
-u0052_0301     24      0       0x0154
-u0072_0301     24      0       0x0155
-u0052_030C     24      0       0x0158
-u0072_030C     24      0       0x0159
-u0053_0301     24      0       0x015A
-u0073_0301     24      0       0x015B
-u0053_0327     24      0       0x015E
-u0073_0327     24      0       0x015F
-vS     24      0       0x0160
-vs     24      0       0x0161
-u0054_0327     24      0       0x0162
-u0074_0327     24      0       0x0163
-u0054_030C     24      0       0x0164
-u0074_030C     24      0       0x0165
-u0055_030A     24      0       0x016E
-u0075_030A     24      0       0x016F
-u0055_030B     24      0       0x0170
-u0075_030B     24      0       0x0171
-:Y     24      0       0x0178
-u005A_0301     24      0       0x0179
-u007A_0301     24      0       0x017A
-u005A_0307     24      0       0x017B
-u007A_0307     24      0       0x017C
-vZ     24      0       0x017D
-vz     24      0       0x017E
-Fn     24      0       0x0192
-ah     24      0       0x02C7
-ab     24      0       0x02D8
-a.     24      0       0x02D9
-ao     24      0       0x02DA
-ho     24      0       0x02DB
-a"     24      0       0x02DD
-*A     24      0       0x0391
-*B     24      0       0x0392
-*G     24      0       0x0393
-*D     24      0       0x0394
-*E     24      0       0x0395
-*Z     24      0       0x0396
-*Y     24      0       0x0397
-*H     24      0       0x0398
-*I     24      0       0x0399
-*K     24      0       0x039A
-*L     24      0       0x039B
-*M     24      0       0x039C
-*N     24      0       0x039D
-*C     24      0       0x039E
-*O     24      0       0x039F
-*P     24      0       0x03A0
-*R     24      0       0x03A1
-*S     24      0       0x03A3
-*T     24      0       0x03A4
-*U     24      0       0x03A5
-*F     24      0       0x03A6
-*X     24      0       0x03A7
-*Q     24      0       0x03A8
-*W     24      0       0x03A9
-*a     24      0       0x03B1
-*b     24      0       0x03B2
-*g     24      0       0x03B3
-*d     24      0       0x03B4
-*e     24      0       0x03B5
-*z     24      0       0x03B6
-*y     24      0       0x03B7
-*h     24      0       0x03B8
-*i     24      0       0x03B9
-*k     24      0       0x03BA
-*l     24      0       0x03BB
-*m     24      0       0x03BC
-*n     24      0       0x03BD
-*c     24      0       0x03BE
-*o     24      0       0x03BF
-*p     24      0       0x03C0
-*r     24      0       0x03C1
-ts     24      0       0x03C2
-*s     24      0       0x03C3
-*t     24      0       0x03C4
-*u     24      0       0x03C5
-+f     24      0       0x03C6
-*x     24      0       0x03C7
-*q     24      0       0x03C8
-*w     24      0       0x03C9
-+h     24      0       0x03D1
-*f     24      0       0x03D5
-+p     24      0       0x03D6
-+e     24      0       0x03F5
-u0415_0300     24      0       0x0400
-u0415_0308     24      0       0x0401
-u0402  24      0       0x0402
-u0413_0301     24      0       0x0403
-u0404  24      0       0x0404
-u0405  24      0       0x0405
-u0406  24      0       0x0406
-u0406_0308     24      0       0x0407
-u0408  24      0       0x0408
-u0409  24      0       0x0409
-u040A  24      0       0x040A
-u040B  24      0       0x040B
-u041A_0301     24      0       0x040C
-u0418_0300     24      0       0x040D
-u0423_0306     24      0       0x040E
-u040F  24      0       0x040F
-u0410  24      0       0x0410
-u0411  24      0       0x0411
-u0412  24      0       0x0412
-u0413  24      0       0x0413
-u0414  24      0       0x0414
-u0415  24      0       0x0415
-u0416  24      0       0x0416
-u0417  24      0       0x0417
-u0418  24      0       0x0418
-u0418_0306     24      0       0x0419
-u041A  24      0       0x041A
-u041B  24      0       0x041B
-u041C  24      0       0x041C
-u041D  24      0       0x041D
-u041E  24      0       0x041E
-u041F  24      0       0x041F
-u0420  24      0       0x0420
-u0421  24      0       0x0421
-u0422  24      0       0x0422
-u0423  24      0       0x0423
-u0424  24      0       0x0424
-u0425  24      0       0x0425
-u0426  24      0       0x0426
-u0427  24      0       0x0427
-u0428  24      0       0x0428
-u0429  24      0       0x0429
-u042A  24      0       0x042A
-u042B  24      0       0x042B
-u042C  24      0       0x042C
-u042D  24      0       0x042D
-u042E  24      0       0x042E
-u042F  24      0       0x042F
-u0430  24      0       0x0430
-u0431  24      0       0x0431
-u0432  24      0       0x0432
-u0433  24      0       0x0433
-u0434  24      0       0x0434
-u0435  24      0       0x0435
-u0436  24      0       0x0436
-u0437  24      0       0x0437
-u0438  24      0       0x0438
-u0438_0306     24      0       0x0439
-u043A  24      0       0x043A
-u043B  24      0       0x043B
-u043C  24      0       0x043C
-u043D  24      0       0x043D
-u043E  24      0       0x043E
-u043F  24      0       0x043F
-u0440  24      0       0x0440
-u0441  24      0       0x0441
-u0442  24      0       0x0442
-u0443  24      0       0x0443
-u0444  24      0       0x0444
-u0445  24      0       0x0445
-u0446  24      0       0x0446
-u0447  24      0       0x0447
-u0448  24      0       0x0448
-u0449  24      0       0x0449
-u044A  24      0       0x044A
-u044B  24      0       0x044B
-u044C  24      0       0x044C
-u044D  24      0       0x044D
-u044E  24      0       0x044E
-u044F  24      0       0x044F
-u0435_0300     24      0       0x0450
-u0435_0308     24      0       0x0451
-u0452  24      0       0x0452
-u0433_0301     24      0       0x0453
-u0454  24      0       0x0454
-u0455  24      0       0x0455
-u0456  24      0       0x0456
-u0456_0308     24      0       0x0457
-u0458  24      0       0x0458
-u0459  24      0       0x0459
-u045A  24      0       0x045A
-u045B  24      0       0x045B
-u043A_0301     24      0       0x045C
-u0438_0300     24      0       0x045D
-u0443_0306     24      0       0x045E
-u045F  24      0       0x045F
-u0460  24      0       0x0460
-u0461  24      0       0x0461
-u0462  24      0       0x0462
-u0463  24      0       0x0463
-u0464  24      0       0x0464
-u0465  24      0       0x0465
-u0466  24      0       0x0466
-u0467  24      0       0x0467
-u0468  24      0       0x0468
-u0469  24      0       0x0469
-u046A  24      0       0x046A
-u046B  24      0       0x046B
-u046C  24      0       0x046C
-u046D  24      0       0x046D
-u046E  24      0       0x046E
-u046F  24      0       0x046F
-u0470  24      0       0x0470
-u0471  24      0       0x0471
-u0472  24      0       0x0472
-u0473  24      0       0x0473
-u0474  24      0       0x0474
-u0475  24      0       0x0475
-u0474_030F     24      0       0x0476
-u0475_030F     24      0       0x0477
-u0478  24      0       0x0478
-u0479  24      0       0x0479
-u047A  24      0       0x047A
-u047B  24      0       0x047B
-u047C  24      0       0x047C
-u047D  24      0       0x047D
-u047E  24      0       0x047E
-u047F  24      0       0x047F
-u0480  24      0       0x0480
-u0481  24      0       0x0481
-u0482  24      0       0x0482
-u0483  0       0       0x0483
-u0484  0       0       0x0484
-u0485  0       0       0x0485
-u0486  0       0       0x0486
-u0488  0       0       0x0488
-u0489  0       0       0x0489
-u048A  24      0       0x048A
-u048B  24      0       0x048B
-u048C  24      0       0x048C
-u048D  24      0       0x048D
-u048E  24      0       0x048E
-u048F  24      0       0x048F
-u0490  24      0       0x0490
-u0491  24      0       0x0491
-u0492  24      0       0x0492
-u0493  24      0       0x0493
-u0494  24      0       0x0494
-u0495  24      0       0x0495
-u0496  24      0       0x0496
-u0497  24      0       0x0497
-u0498  24      0       0x0498
-u0499  24      0       0x0499
-u049A  24      0       0x049A
-u049B  24      0       0x049B
-u049C  24      0       0x049C
-u049D  24      0       0x049D
-u049E  24      0       0x049E
-u049F  24      0       0x049F
-u04A0  24      0       0x04A0
-u04A1  24      0       0x04A1
-u04A2  24      0       0x04A2
-u04A3  24      0       0x04A3
-u04A4  24      0       0x04A4
-u04A5  24      0       0x04A5
-u04A6  24      0       0x04A6
-u04A7  24      0       0x04A7
-u04A8  24      0       0x04A8
-u04A9  24      0       0x04A9
-u04AA  24      0       0x04AA
-u04AB  24      0       0x04AB
-u04AC  24      0       0x04AC
-u04AD  24      0       0x04AD
-u04AE  24      0       0x04AE
-u04AF  24      0       0x04AF
-u04B0  24      0       0x04B0
-u04B1  24      0       0x04B1
-u04B2  24      0       0x04B2
-u04B3  24      0       0x04B3
-u04B4  24      0       0x04B4
-u04B5  24      0       0x04B5
-u04B6  24      0       0x04B6
-u04B7  24      0       0x04B7
-u04B8  24      0       0x04B8
-u04B9  24      0       0x04B9
-u04BA  24      0       0x04BA
-u04BB  24      0       0x04BB
-u04BC  24      0       0x04BC
-u04BD  24      0       0x04BD
-u04BE  24      0       0x04BE
-u04BF  24      0       0x04BF
-u04C0  24      0       0x04C0
-u0416_0306     24      0       0x04C1
-u0436_0306     24      0       0x04C2
-u04C3  24      0       0x04C3
-u04C4  24      0       0x04C4
-u04C5  24      0       0x04C5
-u04C6  24      0       0x04C6
-u04C7  24      0       0x04C7
-u04C8  24      0       0x04C8
-u04C9  24      0       0x04C9
-u04CA  24      0       0x04CA
-u04CB  24      0       0x04CB
-u04CC  24      0       0x04CC
-u04CD  24      0       0x04CD
-u04CE  24      0       0x04CE
-u0410_0306     24      0       0x04D0
-u0430_0306     24      0       0x04D1
-u0410_0308     24      0       0x04D2
-u0430_0308     24      0       0x04D3
-u04D4  24      0       0x04D4
-u04D5  24      0       0x04D5
-u0415_0306     24      0       0x04D6
-u0435_0306     24      0       0x04D7
-u04D8  24      0       0x04D8
-u04D9  24      0       0x04D9
-u04D8_0308     24      0       0x04DA
-u04D9_0308     24      0       0x04DB
-u0416_0308     24      0       0x04DC
-u0436_0308     24      0       0x04DD
-u0417_0308     24      0       0x04DE
-u0437_0308     24      0       0x04DF
-u04E0  24      0       0x04E0
-u04E1  24      0       0x04E1
-u0418_0304     24      0       0x04E2
-u0438_0304     24      0       0x04E3
-u0418_0308     24      0       0x04E4
-u0438_0308     24      0       0x04E5
-u041E_0308     24      0       0x04E6
-u043E_0308     24      0       0x04E7
-u04E8  24      0       0x04E8
-u04E9  24      0       0x04E9
-u04E8_0308     24      0       0x04EA
-u04E9_0308     24      0       0x04EB
-u042D_0308     24      0       0x04EC
-u044D_0308     24      0       0x04ED
-u0423_0304     24      0       0x04EE
-u0443_0304     24      0       0x04EF
-u0423_0308     24      0       0x04F0
-u0443_0308     24      0       0x04F1
-u0423_030B     24      0       0x04F2
-u0443_030B     24      0       0x04F3
-u0427_0308     24      0       0x04F4
-u0447_0308     24      0       0x04F5
-u042B_0308     24      0       0x04F8
-u044B_0308     24      0       0x04F9
-u0500  24      0       0x0500
-u0501  24      0       0x0501
-u0502  24      0       0x0502
-u0503  24      0       0x0503
-u0504  24      0       0x0504
-u0505  24      0       0x0505
-u0506  24      0       0x0506
-u0507  24      0       0x0507
-u0508  24      0       0x0508
-u0509  24      0       0x0509
-u050A  24      0       0x050A
-u050B  24      0       0x050B
-u050C  24      0       0x050C
-u050D  24      0       0x050D
-u050E  24      0       0x050E
-u050F  24      0       0x050F
--      24      0       0x2010
-hy     "
-en     24      0       0x2013
-em     24      0       0x2014
-`      24      0       0x2018
-oq     "
-'      24      0       0x2019
-cq     "
-bq     24      0       0x201A
-lq     24      0       0x201C
-rq     24      0       0x201D
-Bq     24      0       0x201E
-dg     24      0       0x2020
-dd     24      0       0x2021
-bu     24      0       0x2022
-%0     24      0       0x2030
-fm     24      0       0x2032
-sd     24      0       0x2033
-fo     24      0       0x2039
-fc     24      0       0x203A
-rn     24      0       0x203E
-f/     24      0       0x2044
-eu     24      0       0x20AC
-Eu     "
--h     24      0       0x210F
-hbar   "
-Im     24      0       0x2111
-wp     24      0       0x2118
-Re     24      0       0x211C
-tm     24      0       0x2122
-Ah     24      0       0x2135
-18     24      0       0x215B
-38     24      0       0x215C
-58     24      0       0x215D
-78     24      0       0x215E
-<-     24      0       0x2190
-ua     24      0       0x2191
-->     24      0       0x2192
-da     24      0       0x2193
-<>     24      0       0x2194
-va     24      0       0x2195
-CR     24      0       0x21B5
-lA     24      0       0x21D0
-uA     24      0       0x21D1
-rA     24      0       0x21D2
-dA     24      0       0x21D3
-hA     24      0       0x21D4
-vA     24      0       0x21D5
-fa     24      0       0x2200
-pd     24      0       0x2202
-te     24      0       0x2203
-es     24      0       0x2205
-gr     24      0       0x2207
-mo     24      0       0x2208
-nm     24      0       0x2209
-st     24      0       0x220B
-product        24      0       0x220F
-coproduct      24      0       0x2210
-sum    24      0       0x2211
-\-     24      0       0x2212
-mi     "
--+     24      0       0x2213
-**     24      0       0x2217
-sr     24      0       0x221A
-sqrt   "
-pt     24      0       0x221D
-if     24      0       0x221E
-/_     24      0       0x2220
-AN     24      0       0x2227
-OR     24      0       0x2228
-ca     24      0       0x2229
-cu     24      0       0x222A
-is     24      0       0x222B
-integral       "
-tf     24      0       0x2234
-3d     "
-ap     24      0       0x223C
-|=     24      0       0x2243
-=~     24      0       0x2245
-~~     24      0       0x2248
-~=     "
-!=     24      0       0x2260
-==     24      0       0x2261
-ne     24      0       0x2262
-<=     24      0       0x2264
->=     24      0       0x2265
-<<     24      0       0x226A
->>     24      0       0x226B
-sb     24      0       0x2282
-sp     24      0       0x2283
-nb     24      0       0x2284
-nc     24      0       0x2285
-ib     24      0       0x2286
-ip     24      0       0x2287
-c+     24      0       0x2295
-c*     24      0       0x2297
-pp     24      0       0x22A5
-md     24      0       0x22C5
-lc     24      0       0x2308
-rc     24      0       0x2309
-lf     24      0       0x230A
-rf     24      0       0x230B
-parenlefttp    24      0       0x239B
-parenleftex    24      0       0x239C
-parenleftbt    24      0       0x239D
-parenrighttp   24      0       0x239E
-parenrightex   24      0       0x239F
-parenrightbt   24      0       0x23A0
-bracketlefttp  24      0       0x23A1
-bracketleftex  24      0       0x23A2
-bracketleftbt  24      0       0x23A3
-bracketrighttp 24      0       0x23A4
-bracketrightex 24      0       0x23A5
-bracketrightbt 24      0       0x23A6
-lt     24      0       0x23A7
-bracelefttp    "
-lk     24      0       0x23A8
-braceleftmid   "
-lb     24      0       0x23A9
-braceleftbt    "
-bv     24      0       0x23AA
-braceex        "
-braceleftex    "
-bracerightex   "
-rt     24      0       0x23AB
-bracerighttp   "
-rk     24      0       0x23AC
-bracerightmid  "
-rb     24      0       0x23AD
-bracerightbt   "
-u23AE  24      0       0x23AE
-an     24      0       0x23AF
-br     24      0       0x2502
-sq     24      0       0x25A1
-lz     24      0       0x25CA
-ci     24      0       0x25CB
-lh     24      0       0x261C
-rh     24      0       0x261E
-SP     24      0       0x2660
-CL     24      0       0x2663
-HE     24      0       0x2665
-DI     24      0       0x2666
-OK     24      0       0x2713
-la     24      0       0x27E8
-ra     24      0       0x27E9
-ff     24      0       0xFB00
-fi     24      0       0xFB01
-fl     24      0       0xFB02
-Fi     24      0       0xFB03
-Fl     24      0       0xFB04
Index: groff/src/include/font.h
diff -u groff/src/include/font.h:1.15 groff/src/include/font.h:1.16
--- groff/src/include/font.h:1.15       Thu Feb 23 20:00:47 2006
+++ groff/src/include/font.h    Sun Feb 26 22:21:37 2006
@@ -248,6 +248,8 @@
                        // `pass_filenames' attribute.
   static int use_charnames_in_special; // Nonzero if the DESC file has the
                        // `use_charnames_in_special' attribute.
+  static int is_unicode; // Nonzero if the DESC file has the `unicode'
+                       // attribute.
   static const char *image_generator;  // The `image_generator' attribute
                        // given in the DESC file.
   static const char **font_name_table; // The `fonts' attribute given in
@@ -269,22 +271,24 @@
                        // Used by get_kern().
   int space_width;     // The normal width of a space.  Used by
                        // get_space_width().
+  int special;         // 1 if this font is special, 0 otherwise.  Used by
+                       // is_special().
+  char *name;          // The name of this font.  Used by get_name().
+  char *internalname;  // The `internalname' attribute of this font, or
+                       // NULL.  Used by get_internal_name().
+  double slant;                // The natural slant angle (in degrees) of this 
font.
   int *ch_index;       // Conversion table from font-independent character
                        // indices to indices for this particular font.
   int nindices;
   font_char_metric *ch;        // Metrics information for every character in 
this
-                       // font.  The indices of this array are
+                       // font (if !is_unicode) or for just some characters
+                       // (if is_unicode).  The indices of this array are
                        // font-specific, found as values in ch_index[].
   int ch_used;
   int ch_size;
-  int special;         // 1 if this font is special, 0 otherwise.  Used by
-                       // is_special().
-  char *name;          // The name of this font.  Used by get_name().
-  char *internalname;  // The `internalname' attribute of this font, or
-                       // NULL.  Used by get_internal_name().
-  double slant;                // The natural slant angle (in degrees) of this 
font.
   font_widths_cache *widths_cache;     // A cache of scaled character
                        // widths.  Used by the get_width() function.
+
   static FONT_COMMAND_HANDLER unknown_desc_command_handler;    // A
                        // function defining the semantics of arbitrary
                        // commands in the DESC file.
Index: groff/src/libs/libgroff/font.cpp
diff -u groff/src/libs/libgroff/font.cpp:1.12 
groff/src/libs/libgroff/font.cpp:1.13
--- groff/src/libs/libgroff/font.cpp:1.12       Thu Feb 23 20:00:47 2006
+++ groff/src/libs/libgroff/font.cpp    Sun Feb 26 22:21:37 2006
@@ -30,6 +30,7 @@
 #include "error.h"
 #include "cset.h"
 #include "font.h"
+#include "unicode.h"
 #include "paper.h"
 
 const char *const WS = " \t\n\r";
@@ -151,8 +152,8 @@
 /* font functions */
 
 font::font(const char *s)
-: ligatures(0), kern_hash_table(0), space_width(0), ch_index(0), nindices(0),
-  ch(0), ch_used(0), ch_size(0), special(0), widths_cache(0)
+: ligatures(0), kern_hash_table(0), space_width(0), special(0),
+  ch_index(0), nindices(0), ch(0), ch_used(0), ch_size(0), widths_cache(0)
 {
   name = new char[strlen(s) + 1];
   strcpy(name, s);
@@ -249,7 +250,44 @@
 {
   int idx = glyph_to_index(g);
   assert(idx >= 0);
-  return idx < nindices && ch_index[idx] >= 0;
+  // Explicitly enumerated glyph?
+  if (idx < nindices && ch_index[idx] >= 0)
+    return 1;
+  if (is_unicode) {
+    // Unicode font
+    const char *nm = glyph_to_name(g);
+    if (nm != NULL) {
+      // ASCII character?
+      if (nm[0] == 'c' && nm[1] == 'h' && nm[2] == 'a' && nm[3] == 'r'
+          && (nm[4] >= '0' && nm[4] <= '9')) {
+       int n = (nm[4] - '0');
+       if (nm[5] == '\0')
+         return 1;
+       if (n > 0 && (nm[5] >= '0' && nm[5] <= '9')) {
+         n = 10*n + (nm[5] - '0');
+         if (nm[6] == '\0')
+           return 1;
+         if (nm[6] >= '0' && nm[6] <= '9') {
+           n = 10*n + (nm[6] - '0');
+           if (nm[7] == '\0' && n < 128)
+             return 1;
+         }
+       }
+      }
+      // Unicode character?
+      if (check_unicode_name(nm))
+       return 1;
+      // groff glyph name that maps to Unicode?
+      const char *unicode = glyph_name_to_unicode(nm);
+      if (unicode != NULL && strchr(unicode, '_') == NULL)
+       return 1;
+    }
+    // Numbered character?
+    int n = glyph_to_number(g);
+    if (n >= 0)
+      return 1;
+  }
+  return 0;
 }
 
 int font::is_special()
@@ -274,68 +312,132 @@
 int font::get_width(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices);
-  int i = ch_index[idx];
-  assert(i >= 0);
-
-  if (point_size == unitwidth || font::unscaled_charwidths)
-    return ch[i].width;
-
-  if (!widths_cache)
-    widths_cache = new font_widths_cache(point_size, ch_size);
-  else if (widths_cache->point_size != point_size) {
-    font_widths_cache **p;
-    for (p = &widths_cache; *p; p = &(*p)->next)
-      if ((*p)->point_size == point_size)
-       break;
-    if (*p) {
-      font_widths_cache *tem = *p;
-      *p = (*p)->next;
-      tem->next = widths_cache;
-      widths_cache = tem;
-    }
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    int i = ch_index[idx];
+
+    if (point_size == unitwidth || font::unscaled_charwidths)
+      return ch[i].width;
+
+    if (!widths_cache)
+      widths_cache = new font_widths_cache(point_size, ch_size);
+    else if (widths_cache->point_size != point_size) {
+      font_widths_cache **p;
+      for (p = &widths_cache; *p; p = &(*p)->next)
+       if ((*p)->point_size == point_size)
+         break;
+      if (*p) {
+       font_widths_cache *tem = *p;
+       *p = (*p)->next;
+       tem->next = widths_cache;
+       widths_cache = tem;
+      }
+      else
+       widths_cache = new font_widths_cache(point_size, ch_size,
+                                            widths_cache);
+    }
+    int &w = widths_cache->width[i];
+    if (w < 0)
+      w = scale(ch[i].width, point_size);
+    return w;
+  }
+  if (is_unicode) {
+    // Unicode font
+    int width = 24;    // value found in the original font files
+                       // XXX: this must be eventually moved back to the
+                       //      font description file!
+    if (point_size == unitwidth || font::unscaled_charwidths)
+      return width;
     else
-      widths_cache = new font_widths_cache(point_size, ch_size, widths_cache);
+      return scale(width, point_size);
   }
-  int &w = widths_cache->width[i];
-  if (w < 0)
-    w = scale(ch[i].width, point_size);
-  return w;
+  abort();
 }
 
 int font::get_height(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return scale(ch[ch_index[idx]].height, point_size);
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return scale(ch[ch_index[idx]].height, point_size);
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_depth(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return scale(ch[ch_index[idx]].depth, point_size);
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return scale(ch[ch_index[idx]].depth, point_size);
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_italic_correction(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return scale(ch[ch_index[idx]].italic_correction, point_size);
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return scale(ch[ch_index[idx]].italic_correction, point_size);
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_left_italic_correction(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return scale(ch[ch_index[idx]].pre_math_space, point_size);
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return scale(ch[ch_index[idx]].pre_math_space, point_size);
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_subscript_correction(glyph *g, int point_size)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return scale(ch[ch_index[idx]].subscript_correction, point_size);
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return scale(ch[ch_index[idx]].subscript_correction, point_size);
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_space_width(int point_size)
@@ -385,15 +487,68 @@
 int font::get_character_type(glyph *g)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return ch[ch_index[idx]].type;
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return ch[ch_index[idx]].type;
+  }
+  if (is_unicode) {
+    // Unicode font
+    return 0;  // value found in the original font files
+               // XXX: this must be eventually moved back to the
+               //      font description file!
+  }
+  abort();
 }
 
 int font::get_code(glyph *g)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return ch[ch_index[idx]].code;
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return ch[ch_index[idx]].code;
+  }
+  if (is_unicode) {
+    // Unicode font
+    const char *nm = glyph_to_name(g);
+    if (nm != NULL) {
+      // ASCII character?
+      if (nm[0] == 'c' && nm[1] == 'h' && nm[2] == 'a' && nm[3] == 'r'
+          && (nm[4] >= '0' && nm[4] <= '9')) {
+       int n = (nm[4] - '0');
+       if (nm[5] == '\0')
+         return n;
+       if (n > 0 && (nm[5] >= '0' && nm[5] <= '9')) {
+         n = 10*n + (nm[5] - '0');
+         if (nm[6] == '\0')
+           return n;
+         if (nm[6] >= '0' && nm[6] <= '9') {
+           n = 10*n + (nm[6] - '0');
+           if (nm[7] == '\0' && n < 128)
+             return n;
+         }
+       }
+      }
+      // Unicode character?
+      if (check_unicode_name(nm)) {
+       char *ignore;
+       return (int)strtol(nm + 1, &ignore, 16);
+      }
+      // groff glyphs that map to Unicode?
+      const char *unicode = glyph_name_to_unicode(nm);
+      if (unicode != NULL && strchr(unicode, '_') == NULL) {
+       char *ignore;
+       return (int)strtol(unicode, &ignore, 16);
+      }
+    }
+    // Numbered character?
+    int n = glyph_to_number(g);
+    if (n >= 0)
+      return n;
+  }
+  // The caller must check `contains(g)' before calling get_code(g).
+  abort();
 }
 
 const char *font::get_name()
@@ -409,8 +564,16 @@
 const char *font::get_special_device_encoding(glyph *g)
 {
   int idx = glyph_to_index(g);
-  assert(idx >= 0 && idx < nindices && ch_index[idx] >= 0);
-  return ch[ch_index[idx]].special_device_coding;
+  assert(idx >= 0);
+  if (idx < nindices && ch_index[idx] >= 0) {
+    // Explicitly enumerated glyph
+    return ch[ch_index[idx]].special_device_coding;
+  }
+  if (is_unicode) {
+    // Unicode font
+    return NULL;
+  }
+  abort();
 }
 
 const char *font::get_image_generator()
@@ -598,8 +761,8 @@
   char *p;
   for (;;) {
     if (!t.next()) {
-      t.error("missing charset command");
-      return 0;
+      p = 0;
+      break;
     }
     p = strtok(t.buf, WS);
     if (strcmp(p, "name") == 0) {
@@ -665,147 +828,154 @@
   }
   if (head_only)
     return 1;
-  char *command = p;
   int had_charset = 0;
-  t.skip_comments = 0;
-  while (command) {
-    if (strcmp(command, "kernpairs") == 0) {
-      for (;;) {
-       if (!t.next()) {
-         command = 0;
-         break;
-       }
-       char *c1 = strtok(t.buf, WS);
-       if (c1 == 0)
-         continue;
-       char *c2 = strtok(0, WS);
-       if (c2 == 0) {
-         command = c1;
-         break;
-       }
-       p = strtok(0, WS);
-       if (p == 0) {
-         t.error("missing kern amount");
-         return 0;
-       }
-       int n;
-       if (sscanf(p, "%d", &n) != 1) {
-         t.error("bad kern amount `%1'", p);
-         return 0;
-       }
-       glyph *g1 = name_to_glyph(c1);
-       glyph *g2 = name_to_glyph(c2);
-       add_kern(g1, g2, n);
-      }
+  if (p == 0) {
+    if (!is_unicode) {
+      t.error("missing charset command");
+      return 0;
     }
-    else if (strcmp(command, "charset") == 0) {
-      had_charset = 1;
-      glyph *last_glyph = NULL;
-      for (;;) {
-       if (!t.next()) {
-         command = 0;
-         break;
-       }
-       char *nm = strtok(t.buf, WS);
-       if (nm == 0)
-         continue;                     // I dont think this should happen
-       p = strtok(0, WS);
-       if (p == 0) {
-         command = nm;
-         break;
-       }
-       if (p[0] == '"') {
-         if (last_glyph == NULL) {
-           t.error("first charset entry is duplicate");
-           return 0;
-         }
-         if (strcmp(nm, "---") == 0) {
-           t.error("unnamed character cannot be duplicate");
-           return 0;
+  } else {
+    char *command = p;
+    t.skip_comments = 0;
+    while (command) {
+      if (strcmp(command, "kernpairs") == 0) {
+       for (;;) {
+         if (!t.next()) {
+           command = 0;
+           break;
          }
-         glyph *g = name_to_glyph(nm);
-         copy_entry(g, last_glyph);
-       }
-       else {
-         font_char_metric metric;
-         metric.height = 0;
-         metric.depth = 0;
-         metric.pre_math_space = 0;
-         metric.italic_correction = 0;
-         metric.subscript_correction = 0;
-         int nparms = sscanf(p, "%d,%d,%d,%d,%d,%d",
-                             &metric.width, &metric.height, &metric.depth,
-                             &metric.italic_correction,
-                             &metric.pre_math_space,
-                             &metric.subscript_correction);
-         if (nparms < 1) {
-           t.error("bad width for `%1'", nm);
-           return 0;
+         char *c1 = strtok(t.buf, WS);
+         if (c1 == 0)
+           continue;
+         char *c2 = strtok(0, WS);
+         if (c2 == 0) {
+           command = c1;
+           break;
          }
          p = strtok(0, WS);
          if (p == 0) {
-           t.error("missing character type for `%1'", nm);
+           t.error("missing kern amount");
            return 0;
          }
-         int type;
-         if (sscanf(p, "%d", &type) != 1) {
-           t.error("bad character type for `%1'", nm);
+         int n;
+         if (sscanf(p, "%d", &n) != 1) {
+           t.error("bad kern amount `%1'", p);
            return 0;
          }
-         if (type < 0 || type > 255) {
-           t.error("character type `%1' out of range", type);
-           return 0;
+         glyph *g1 = name_to_glyph(c1);
+         glyph *g2 = name_to_glyph(c2);
+         add_kern(g1, g2, n);
+       }
+      }
+      else if (strcmp(command, "charset") == 0) {
+       had_charset = 1;
+       glyph *last_glyph = NULL;
+       for (;;) {
+         if (!t.next()) {
+           command = 0;
+           break;
          }
-         metric.type = type;
+         char *nm = strtok(t.buf, WS);
+         if (nm == 0)
+           continue;                   // I dont think this should happen
          p = strtok(0, WS);
          if (p == 0) {
-           t.error("missing code for `%1'", nm);
-           return 0;
-         }
-         char *ptr;
-         metric.code = (int)strtol(p, &ptr, 0);
-         if (metric.code == 0 && ptr == p) {
-           t.error("bad code `%1' for character `%2'", p, nm);
-           return 0;
-         }
-         p = strtok(0, WS);
-         if ((p == NULL) || (strcmp(p, "--") == 0)) {
-           metric.special_device_coding = NULL;
-         }
-         else {
-           char *nam = new char[strlen(p) + 1];
-           strcpy(nam, p);
-           metric.special_device_coding = nam;
+           command = nm;
+           break;
          }
-         if (strcmp(nm, "---") == 0) {
-           last_glyph = number_to_glyph(metric.code);
-           add_entry(last_glyph, metric);
+         if (p[0] == '"') {
+           if (last_glyph == NULL) {
+             t.error("first charset entry is duplicate");
+             return 0;
+           }
+           if (strcmp(nm, "---") == 0) {
+             t.error("unnamed character cannot be duplicate");
+             return 0;
+           }
+           glyph *g = name_to_glyph(nm);
+           copy_entry(g, last_glyph);
          }
          else {
-           last_glyph = name_to_glyph(nm);
-           add_entry(last_glyph, metric);
-           copy_entry(number_to_glyph(metric.code), last_glyph);
+           font_char_metric metric;
+           metric.height = 0;
+           metric.depth = 0;
+           metric.pre_math_space = 0;
+           metric.italic_correction = 0;
+           metric.subscript_correction = 0;
+           int nparms = sscanf(p, "%d,%d,%d,%d,%d,%d",
+                               &metric.width, &metric.height, &metric.depth,
+                               &metric.italic_correction,
+                               &metric.pre_math_space,
+                               &metric.subscript_correction);
+           if (nparms < 1) {
+             t.error("bad width for `%1'", nm);
+             return 0;
+           }
+           p = strtok(0, WS);
+           if (p == 0) {
+             t.error("missing character type for `%1'", nm);
+             return 0;
+           }
+           int type;
+           if (sscanf(p, "%d", &type) != 1) {
+             t.error("bad character type for `%1'", nm);
+             return 0;
+           }
+           if (type < 0 || type > 255) {
+             t.error("character type `%1' out of range", type);
+             return 0;
+           }
+           metric.type = type;
+           p = strtok(0, WS);
+           if (p == 0) {
+             t.error("missing code for `%1'", nm);
+             return 0;
+           }
+           char *ptr;
+           metric.code = (int)strtol(p, &ptr, 0);
+           if (metric.code == 0 && ptr == p) {
+             t.error("bad code `%1' for character `%2'", p, nm);
+             return 0;
+           }
+           p = strtok(0, WS);
+           if ((p == NULL) || (strcmp(p, "--") == 0)) {
+             metric.special_device_coding = NULL;
+           }
+           else {
+             char *nam = new char[strlen(p) + 1];
+             strcpy(nam, p);
+             metric.special_device_coding = nam;
+           }
+           if (strcmp(nm, "---") == 0) {
+             last_glyph = number_to_glyph(metric.code);
+             add_entry(last_glyph, metric);
+           }
+           else {
+             last_glyph = name_to_glyph(nm);
+             add_entry(last_glyph, metric);
+             copy_entry(number_to_glyph(metric.code), last_glyph);
+           }
          }
        }
+       if (last_glyph == NULL) {
+         t.error("I didn't seem to find any characters");
+         return 0;
+       }
       }
-      if (last_glyph == NULL) {
-       t.error("I didn't seem to find any characters");
+      else {
+       t.error("unrecognised command `%1' after `kernpairs' or `charset' 
command",
+               command);
        return 0;
       }
     }
-    else {
-      t.error("unrecognised command `%1' after `kernpairs' or `charset' 
command",
-             command);
-      return 0;
-    }
+    compact();
   }
-  if (!had_charset) {
+  if (!is_unicode && !had_charset) {
     t.error("missing charset command");
     return 0;
   }
   if (space_width == 0)
     space_width = scale_round(unitwidth, res, 72*3*sizescale);
-  compact();
   return 1;
 }
 
@@ -995,6 +1165,8 @@
       tcommand = 1;
     else if (strcmp("use_charnames_in_special", p) == 0)
       use_charnames_in_special = 1;
+    else if (strcmp("unicode", p) == 0)
+      is_unicode = 1;
     else if (strcmp("image_generator", p) == 0) {
       p = strtok(0, WS);
       if (!p) {
Index: groff/src/libs/libgroff/fontfile.cpp
diff -u groff/src/libs/libgroff/fontfile.cpp:1.4 
groff/src/libs/libgroff/fontfile.cpp:1.5
--- groff/src/libs/libgroff/fontfile.cpp:1.4    Thu May 26 21:02:00 2005
+++ groff/src/libs/libgroff/fontfile.cpp        Sun Feb 26 22:21:38 2006
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2004
+/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2004, 2006
    Free Software Foundation, Inc.
      Written by James Clark ([EMAIL PROTECTED])
 
@@ -47,6 +47,7 @@
 int font::pass_filenames = 0;
 int font::unscaled_charwidths = 0;
 int font::use_charnames_in_special = 0;
+int font::is_unicode = 0;
 const char *font::image_generator = NULL;
 const char **font::font_name_table = 0;
 int *font::sizes = 0;


_______________________________________________
Groff-commit mailing list
Groff-commit@gnu.org
http://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to