diff options
author | Owen Taylor <otaylor@redhat.com> | 2000-04-12 17:41:15 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2000-04-12 17:41:15 +0000 |
commit | 4121f3559f75d07a04af44874264701fbd29b493 (patch) | |
tree | a0bf074ca705fe901b421ad1e9345b6f0f514bda | |
parent | d223764349f3aaf8179587d2ba69488de1fbc0fe (diff) | |
download | pango-4121f3559f75d07a04af44874264701fbd29b493.tar.gz |
Added Devanagari shaper from Robert Brady <rwb197@zepler.org>
Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com>
* configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari
shaper from Robert Brady <rwb197@zepler.org>
* examples/HELLO.utf8: Added Hindi from Emacs
* examples/dev-example.utf: Some syllable strings for testing
the Devanagari shaper.
* examples/pangox_aliases: Added
-*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev
* fonts/devnag18.bdf fonts/devnag.README: Devanagari font
from http://crl.NMSU.Edu/~mleisher/devnag.html currently
required for operation of the devanagari shaper.
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-0 | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 17 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 17 | ||||
-rw-r--r-- | configure.in | 1 | ||||
-rw-r--r-- | examples/HELLO.utf8 | 3 | ||||
-rw-r--r-- | examples/dev-example.utf | 9 | ||||
-rw-r--r-- | examples/pangox_aliases | 6 | ||||
-rw-r--r-- | fonts/devnag.README | 12 | ||||
-rw-r--r-- | fonts/devnag18.bdf | 3907 | ||||
-rw-r--r-- | modules/Makefile.am | 7 | ||||
-rw-r--r-- | modules/devanagari/.cvsignore | 6 | ||||
-rw-r--r-- | modules/devanagari/Makefile.am | 14 | ||||
-rw-r--r-- | modules/devanagari/dev-ligatures.h | 27 | ||||
-rw-r--r-- | modules/devanagari/devanagari.c | 589 |
18 files changed, 4696 insertions, 4 deletions
@@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-0 +++ b/ChangeLog.pre-1-0 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index a418abe3..5436a11e 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,20 @@ +Wed Apr 12 13:59:22 2000 Owen Taylor <otaylor@redhat.com> + + * configure.in modules/Makefile.am modules/devanagari/*: Added Devanagari + shaper from Robert Brady <rwb197@zepler.org> + + * examples/HELLO.utf8: Added Hindi from Emacs + + * examples/dev-example.utf: Some syllable strings for testing + the Devanagari shaper. + + * examples/pangox_aliases: Added + -*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev + + * fonts/devnag18.bdf fonts/devnag.README: Devanagari font + from http://crl.NMSU.Edu/~mleisher/devnag.html currently + required for operation of the devanagari shaper. + Tue Apr 4 22:03:42 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Released 0.9 diff --git a/configure.in b/configure.in index bc14981d..c7d503dd 100644 --- a/configure.in +++ b/configure.in @@ -66,6 +66,7 @@ pango/Makefile modules/Makefile modules/arabic/Makefile modules/basic/Makefile +modules/devanagari/Makefile modules/hangul/Makefile modules/tamil/Makefile examples/Makefile diff --git a/examples/HELLO.utf8 b/examples/HELLO.utf8 index f0fc95c3..f0e26aa7 100644 --- a/examples/HELLO.utf8 +++ b/examples/HELLO.utf8 @@ -18,6 +18,7 @@ German (Deutsch Nord) Guten Tag German (Deutsch Süd) Grüß Gott Greek (Ελληνικά) Γειά σας Hebrew שלום +Hindi नमस्ते, नमस्कार। Italiano Ciao, Buon giorno Maltese Ċaw, Saħħa Nederlands, Vlaams Hallo, Dag @@ -40,3 +41,5 @@ Difference among chinese characters in GB, JIS, KSC, BIG5: JIS -- 元気 開発 KSC -- 元氣 開發 BIG5 -- 元氣 開發 + + diff --git a/examples/dev-example.utf b/examples/dev-example.utf new file mode 100644 index 00000000..9cfccc56 --- /dev/null +++ b/examples/dev-example.utf @@ -0,0 +1,9 @@ +कि KI +किकि KIKI +क्कि KKI +क्क्कि KKKI +क््कि KKI (sp) +क़्कि KKI (sp) +क््क्कि KKKI (sp) +क््क््कि KKKI (sp) +क़्क़्कि KKKI (sp) diff --git a/examples/pangox_aliases b/examples/pangox_aliases index 069a17f0..5926511d 100644 --- a/examples/pangox_aliases +++ b/examples/pangox_aliases @@ -2,7 +2,7 @@ # # family style variant weight stretch XLFD -sans normal normal normal normal "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*,-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0" -serif normal normal normal normal "-*-times-medium-r-normal--*-*-*-*-*-*-*-*,-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0" -monospace normal normal normal normal "-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0" +sans normal normal normal normal "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*,-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0,-*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev" +serif normal normal normal normal "-*-times-medium-r-normal--*-*-*-*-*-*-*-*,-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0,-*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev" +monospace normal normal normal normal "-*-fixed-medium-r-normal--*-*-*-*-*-*-*-*,-kaist-iyagi-bold-r-normal--*-*-*-*-*-*-johab-1,-*-song ti-medium-r-normal--*-*-*-*-*-*-*-*,-tamil-tscakaram-medium-r-normal--*-*-*-*-*-*-tscii-0,-*-devanagari-medium-r-normal--*-*-*-*-*-*-iso10646-dev" diff --git a/fonts/devnag.README b/fonts/devnag.README new file mode 100644 index 00000000..55331fbc --- /dev/null +++ b/fonts/devnag.README @@ -0,0 +1,12 @@ +This is a font that Mark Leisher put together for using Devanagari +with Unicode. To quote from http://crl.NMSU.Edu/~mleisher/devnag.html: + + This font is freeware. + + This font is a variation of the freely available XDVNG fonts put + together by Sandeep Sibal. Only the 18pt size is available from CRL at + the moment. Glyphs have been added and rearranged to fit our local + Unicode toolkit. + + The font is basically an 18 point, 75dpi font with around 200 glyphs. + diff --git a/fonts/devnag18.bdf b/fonts/devnag18.bdf new file mode 100644 index 00000000..474b74d5 --- /dev/null +++ b/fonts/devnag18.bdf @@ -0,0 +1,3907 @@ +STARTFONT 2.1 +FONT -Sibal-Devanagari-Medium-R-Normal--18-18-75-75-P-100-ISO10646-DEV +SIZE 1 75 75 +FONTBOUNDINGBOX 31 26 -7 -8 +STARTPROPERTIES 17 +POINT_SIZE 18 +PIXEL_SIZE 18 +RESOLUTION_X 75 +RESOLUTION_Y 75 +FONT_ASCENT 20 +FONT_DESCENT 10 +AVERAGE_WIDTH 100 +SPACING "P" +_XMBDFED_INFO "Edited with xmbdfed 4.3." +FOUNDRY "Sibal" +FAMILY_NAME "Devanagari" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "DEV" +ENDPROPERTIES +CHARS 196 +STARTCHAR U+0901 +ENCODING 2305 +SWIDTH 4800 0 +DWIDTH 5 0 +BBX 6 5 0 13 +BITMAP +20 +F4 +A4 +4C +38 +ENDCHAR +STARTCHAR U+0902 +ENCODING 2306 +SWIDTH 2880 0 +DWIDTH 3 0 +BBX 3 3 0 14 +BITMAP +40 +E0 +40 +ENDCHAR +STARTCHAR U+0903 +ENCODING 2307 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 5 11 1 0 +BITMAP +20 +70 +F8 +70 +20 +00 +20 +70 +F8 +70 +20 +ENDCHAR +STARTCHAR U+0905 +ENCODING 2309 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 17 13 1 -1 +BITMAP +7DFF00 +FEFF80 +C33000 +033000 +0F3000 +BE3000 +BFF000 +43F000 +633000 +3F3000 +1E3000 +003000 +001000 +ENDCHAR +STARTCHAR U+0906 +ENCODING 2310 +SWIDTH 21120 0 +DWIDTH 22 0 +BBX 23 13 1 -1 +BITMAP +7DFFFC +FEFFFE +C330C0 +0330C0 +0F30C0 +BE30C0 +BFF0C0 +43F0C0 +6330C0 +3F30C0 +1E30C0 +0030C0 +001040 +ENDCHAR +STARTCHAR U+0907 +ENCODING 2311 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 12 14 -1 -2 +BITMAP +FFE0 +7FF0 +0600 +3E00 +7E00 +6000 +7E00 +3F00 +3B00 +7F00 +3E00 +0200 +0100 +0180 +ENDCHAR +STARTCHAR U+0908 +ENCODING 2312 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 12 19 -1 -2 +BITMAP +0700 +0F00 +0C80 +0C00 +0400 +FFE0 +7FF0 +0600 +3E00 +7E00 +6000 +7E00 +3F00 +3B00 +7F00 +3E00 +0200 +0100 +0180 +ENDCHAR +STARTCHAR U+0909 +ENCODING 2313 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 12 -1 0 +BITMAP +FFF0 +7FF8 +00C0 +00C0 +01C0 +5F80 +4F80 +6080 +20C0 +30C0 +1FC0 +0F80 +ENDCHAR +STARTCHAR U+090A +ENCODING 2314 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 12 -1 0 +BITMAP +FFFF80 +7FFFC0 +00C000 +00C000 +01C000 +5FF800 +4FFC00 +60C400 +20C600 +30CE00 +1FCC00 +0F8C00 +ENDCHAR +STARTCHAR U+090B +ENCODING 2315 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +018000 +3D8C00 +7F8E00 +63FE00 +03FE00 +0F8600 +3F8E00 +199E00 +019800 +018E00 +008F00 +ENDCHAR +STARTCHAR U+090C +ENCODING 2316 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 14 -1 -2 +BITMAP +FFFF00 +7FFF80 +003000 +003000 +3CF000 +7FF800 +638800 +630C00 +211C00 +307800 +10F000 +18C000 +0CF800 +007C00 +ENDCHAR +STARTCHAR U+090D +ENCODING 2317 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 24 -1 -6 +BITMAP +0420 +0420 +0260 +01C0 +0000 +0000 +FFF8 +7FFC +6180 +6180 +6180 +6180 +6180 +6180 +6780 +3300 +1C00 +0E00 +0380 +01C0 +0060 +0060 +00E0 +0040 +ENDCHAR +STARTCHAR U+090E +ENCODING 2318 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 24 -1 -6 +BITMAP +4000 +6000 +3E00 +1F00 +0180 +0080 +FFF8 +7FFC +6180 +6180 +6180 +6180 +6180 +6180 +6780 +3300 +1C00 +0E00 +0380 +01C0 +0060 +0060 +00E0 +0040 +ENDCHAR +STARTCHAR U+090F +ENCODING 2319 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 18 -1 -6 +BITMAP +FFF8 +7FFC +6180 +6180 +6180 +6180 +6180 +6180 +6780 +3300 +1C00 +0E00 +0380 +01C0 +0060 +0060 +00E0 +0040 +ENDCHAR +STARTCHAR U+0910 +ENCODING 2320 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 24 -1 -6 +BITMAP +7000 +3C00 +0E00 +0300 +0180 +0080 +FFF8 +7FFC +6180 +6180 +6180 +6180 +6180 +6180 +6780 +3300 +1C00 +0E00 +0380 +01C0 +0060 +0060 +00E0 +0040 +ENDCHAR +STARTCHAR U+0911 +ENCODING 2321 +SWIDTH 21120 0 +DWIDTH 22 0 +BBX 23 19 0 -1 +BITMAP +000210 +000210 +000130 +0000E0 +000000 +000000 +7DFFFC +FEFFFE +C330C0 +0330C0 +0F30C0 +BE30C0 +BFF0C0 +43F0C0 +6330C0 +3F30C0 +1E30C0 +0030C0 +001040 +ENDCHAR +STARTCHAR U+0912 +ENCODING 2322 +SWIDTH 21120 0 +DWIDTH 22 0 +BBX 23 19 0 -1 +BITMAP +002000 +003000 +001F00 +000F80 +0000C0 +000040 +7DFFFC +FEFFFE +C330C0 +0330C0 +0F30C0 +BE30C0 +BFF0C0 +43F0C0 +6330C0 +3F30C0 +1E30C0 +0030C0 +001040 +ENDCHAR +STARTCHAR U+0913 +ENCODING 2323 +SWIDTH 21120 0 +DWIDTH 22 0 +BBX 23 19 0 -1 +BITMAP +003800 +001E00 +000700 +000180 +0000C0 +000040 +7DFFFC +FEFFFE +C330C0 +0330C0 +0F30C0 +BE30C0 +BFF0C0 +43F0C0 +6330C0 +3F30C0 +1E30C0 +0030C0 +001040 +ENDCHAR +STARTCHAR U+0914 +ENCODING 2324 +SWIDTH 21120 0 +DWIDTH 22 0 +BBX 23 19 0 -1 +BITMAP +003C00 +001E00 +007B00 +003F00 +000780 +0001C0 +7DFFFC +FEFFFE +C330C0 +0330C0 +0F30C0 +BE30C0 +BFF0C0 +43F0C0 +6330C0 +3F30C0 +1E30C0 +0030C0 +001040 +ENDCHAR +STARTCHAR U+0915 +ENCODING 2325 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0300 +3FE0 +7FF0 +6398 +6318 +3F18 +1F18 +0338 +0330 +0310 +0100 +ENDCHAR +STARTCHAR U+0916 +ENCODING 2326 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +181800 +1BD800 +5FF800 +7E3800 +7E3800 +323800 +13F800 +19F800 +0C3800 +07F800 +03E800 +ENDCHAR +STARTCHAR U+0917 +ENCODING 2327 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +1860 +1860 +1860 +1860 +7860 +7860 +7860 +3860 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+0918 +ENCODING 2328 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +6060 +6060 +3E60 +7E60 +61E0 +3FE0 +1F60 +0060 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+0919 +ENCODING 2329 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 11 -1 1 +BITMAP +FFFE +7FFF +0180 +0F80 +1F90 +1838 +5F90 +6FC0 +60C0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+091A +ENCODING 2330 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0060 +0060 +7FE0 +7FE0 +1860 +08E0 +0FE0 +0760 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+091B +ENCODING 2331 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +1C0C00 +3E1C00 +363E00 +203300 +371300 +1F9B00 +1F0F00 +180E00 +087E00 +0FFA00 +07C300 +ENDCHAR +STARTCHAR U+091C +ENCODING 2332 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +4FF800 +67F800 +231800 +311800 +199800 +0F9800 +071800 +001800 +000800 +ENDCHAR +STARTCHAR U+091D +ENCODING 2333 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 19 15 -1 -3 +BITMAP +FFFFC0 +7FFFE0 +030C00 +3F0C00 +7F0C00 +603C00 +7FFC00 +3FEC00 +3D8C00 +7F8C00 +3F0C00 +010C00 +018400 +008000 +008000 +ENDCHAR +STARTCHAR U+091E +ENCODING 2334 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +003000 +383000 +3C3000 +063000 +07F000 +47F000 +6E3000 +7C3000 +383000 +003000 +001000 +ENDCHAR +STARTCHAR U+091F +ENCODING 2335 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 12 -1 0 +BITMAP +FFF8 +7FFC +0180 +0180 +1F80 +3F80 +7000 +6000 +6000 +60C0 +3FE0 +1F80 +ENDCHAR +STARTCHAR U+0920 +ENCODING 2336 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 12 -1 0 +BITMAP +FFF8 +7FFC +0180 +0180 +1F80 +3FC0 +7040 +6060 +2060 +30E0 +1FC0 +0F80 +ENDCHAR +STARTCHAR U+0921 +ENCODING 2337 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 11 -1 1 +BITMAP +FFF8 +7FFC +0180 +0F80 +1F80 +1800 +5F80 +6FC0 +60C0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+0922 +ENCODING 2338 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 12 -1 0 +BITMAP +FFF0 +7FF8 +0180 +1F80 +3F80 +7000 +6380 +67C0 +2EC0 +3CC0 +1FC0 +0F80 +ENDCHAR +STARTCHAR U+0923 +ENCODING 2339 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +663000 +663000 +663000 +663000 +663000 +263000 +3E3000 +1C3000 +003000 +003000 +001000 +ENDCHAR +STARTCHAR U+0924 +ENCODING 2340 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +00C0 +3FC0 +7FC0 +60C0 +60C0 +60C0 +20C0 +30C0 +18C0 +0C40 +ENDCHAR +STARTCHAR U+0925 +ENCODING 2341 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 15 13 0 -1 +BITMAP +67FC +F7FE +D0C0 +F8C0 +78C0 +F1C0 +E1C0 +43C0 +7FC0 +3EC0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+0926 +ENCODING 2342 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 12 -1 0 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +6000 +6300 +2780 +3F80 +1F00 +0180 +ENDCHAR +STARTCHAR U+0927 +ENCODING 2343 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 15 13 0 -1 +BITMAP +47FC +E7FE +C0C0 +C0C0 +7CC0 +FCC0 +C3C0 +7FC0 +3EC0 +00C0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+0928 +ENCODING 2344 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +00C0 +00C0 +3FC0 +7FC0 +78C0 +30C0 +00C0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+0929 +ENCODING 2345 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +00C0 +00C0 +3FC0 +7FC0 +78C0 +30C0 +00C0 +08C0 +1CC0 +0840 +ENDCHAR +STARTCHAR U+092A +ENCODING 2346 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 13 -1 -1 +BITMAP +FFF8 +7FFC +6180 +6180 +6180 +2180 +3380 +1F80 +0F80 +0180 +0180 +0180 +0080 +ENDCHAR +STARTCHAR U+092B +ENCODING 2347 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +618000 +61F000 +61F800 +21CC00 +338C00 +1F8C00 +0F8C00 +019C00 +019800 +018800 +008000 +ENDCHAR +STARTCHAR U+092C +ENCODING 2348 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +1EC0 +3FC0 +79C0 +6DC0 +65C0 +3FC0 +1FC0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+092D +ENCODING 2349 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 0 -1 +BITMAP +E3FE +F3FF +5060 +7860 +3860 +1860 +7FE0 +7FE0 +3860 +1060 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+092E +ENCODING 2350 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +3060 +3060 +3060 +3060 +FFE0 +FFE0 +7060 +0060 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+092F +ENCODING 2351 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0860 +0C60 +1C60 +78E0 +70E0 +21E0 +3FE0 +1F60 +0060 +0060 +0020 +ENDCHAR +STARTCHAR U+0930 +ENCODING 2352 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 13 -1 -1 +BITMAP +FFF0 +7FF8 +0300 +0300 +2700 +3600 +1E00 +1C00 +0C00 +0600 +0300 +0180 +00C0 +ENDCHAR +STARTCHAR U+0931 +ENCODING 2353 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 13 -1 -1 +BITMAP +FFF0 +7FF8 +0300 +0300 +2700 +3600 +1E00 +1C00 +0C00 +0600 +1300 +3980 +10C0 +ENDCHAR +STARTCHAR U+0932 +ENCODING 2354 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +3CF800 +7FF800 +639800 +631800 +211800 +301800 +101800 +181800 +0C0800 +ENDCHAR +STARTCHAR U+0933 +ENCODING 2355 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 12 -1 0 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +3C7800 +7EFC00 +63C400 +638600 +630600 +278600 +3EFE00 +1C7C00 +ENDCHAR +STARTCHAR U+0934 +ENCODING 2356 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 15 -1 -3 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +3C7800 +7EFC00 +63C400 +638600 +630600 +278600 +3EFE00 +1C7C00 +010000 +038000 +010000 +ENDCHAR +STARTCHAR U+0935 +ENCODING 2357 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +1EC0 +3FC0 +71C0 +61C0 +61C0 +3FC0 +1FC0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+0936 +ENCODING 2358 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +391800 +319800 +319800 +1F9800 +0F9800 +7F1800 +7E1800 +3E1800 +031800 +011800 +018800 +ENDCHAR +STARTCHAR U+0937 +ENCODING 2359 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +70C0 +68C0 +64C0 +23C0 +33C0 +1FC0 +0EC0 +00C0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+0938 +ENCODING 2360 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +183000 +183000 +587000 +7FF000 +7FF000 +203000 +303000 +103000 +083000 +0C3000 +041000 +ENDCHAR +STARTCHAR U+0939 +ENCODING 2361 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 16 -1 -4 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +2F00 +3F80 +78C0 +60C0 +27C0 +3380 +1C00 +0F00 +03C0 +00C0 +ENDCHAR +STARTCHAR U+093C +ENCODING 2364 +SWIDTH 2880 0 +DWIDTH 3 0 +BBX 3 3 0 -3 +BITMAP +40 +E0 +40 +ENDCHAR +STARTCHAR U+093D +ENCODING 2365 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 9 13 0 -1 +BITMAP +3F00 +7F80 +6000 +6000 +2000 +3800 +1C00 +8600 +C200 +C300 +4700 +7E00 +3C00 +ENDCHAR +STARTCHAR U+093E +ENCODING 2366 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 8 13 -1 -1 +BITMAP +FE +7F +60 +60 +60 +60 +60 +60 +60 +60 +60 +60 +20 +ENDCHAR +STARTCHAR U+093F +ENCODING 2367 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 11 19 -1 -1 +BITMAP +3E00 +7F80 +61C0 +6060 +6000 +6000 +FE00 +7F00 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +6000 +2000 +ENDCHAR +STARTCHAR U+0940 +ENCODING 2368 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 14 19 -7 -1 +BITMAP +3C00 +7E00 +E200 +C300 +C100 +0180 +03F8 +01FC +0180 +0180 +0180 +0180 +0180 +0180 +0180 +0180 +0180 +0180 +0080 +ENDCHAR +STARTCHAR U+0941 +ENCODING 2369 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 8 4 0 -4 +BITMAP +8E +49 +31 +0F +ENDCHAR +STARTCHAR U+0942 +ENCODING 2370 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 8 5 0 -5 +BITMAP +F0 +88 +84 +42 +39 +ENDCHAR +STARTCHAR U+0943 +ENCODING 2371 +SWIDTH 5760 0 +DWIDTH 6 0 +BBX 6 4 0 -4 +BITMAP +78 +C0 +80 +7C +ENDCHAR +STARTCHAR U+0944 +ENCODING 2372 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 7 7 0 -7 +BITMAP +78 +C0 +80 +FC +80 +86 +7C +ENDCHAR +STARTCHAR U+0945 +ENCODING 2373 +SWIDTH 5760 0 +DWIDTH 6 0 +BBX 6 4 0 14 +BITMAP +84 +84 +4C +38 +ENDCHAR +STARTCHAR U+0946 +ENCODING 2374 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 8 6 0 12 +BITMAP +80 +C0 +7C +3E +03 +01 +ENDCHAR +STARTCHAR U+0947 +ENCODING 2375 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 8 6 0 12 +BITMAP +E0 +78 +1C +06 +03 +01 +ENDCHAR +STARTCHAR U+0948 +ENCODING 2376 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 9 6 0 12 +BITMAP +7800 +3C00 +F600 +7E00 +0F00 +0380 +ENDCHAR +STARTCHAR U+0949 +ENCODING 2377 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 19 -2 -1 +BITMAP +8400 +8400 +4C00 +3800 +0000 +0000 +7F00 +3F80 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +3000 +1000 +ENDCHAR +STARTCHAR U+094A +ENCODING 2378 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 13 19 -6 -1 +BITMAP +8000 +C000 +7C00 +3E00 +0300 +0100 +07F0 +03F8 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0100 +ENDCHAR +STARTCHAR U+094B +ENCODING 2379 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 13 19 -6 -1 +BITMAP +E000 +7800 +1C00 +0400 +0200 +0300 +07F0 +03F8 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0100 +ENDCHAR +STARTCHAR U+094C +ENCODING 2380 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 13 19 -6 -1 +BITMAP +7800 +3C00 +E600 +7A00 +1F00 +0700 +07F0 +03F8 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0300 +0100 +ENDCHAR +STARTCHAR U+094D +ENCODING 2381 +SWIDTH 5760 0 +DWIDTH 6 0 +BBX 6 4 0 -4 +BITMAP +E0 +78 +18 +04 +ENDCHAR +STARTCHAR U+0950 +ENCODING 2384 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 17 15 0 -1 +BITMAP +000800 +001D00 +008980 +00C180 +F86380 +FC3F00 +061E00 +060000 +3E3E00 +3FFF00 +01E180 +C18780 +618F80 +3F8C00 +1F0400 +ENDCHAR +STARTCHAR U+0951 +ENCODING 2385 +SWIDTH 1920 0 +DWIDTH 2 0 +BBX 2 6 0 12 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR U+0952 +ENCODING 2386 +SWIDTH 5760 0 +DWIDTH 6 0 +BBX 6 1 0 -1 +BITMAP +FC +ENDCHAR +STARTCHAR U+0953 +ENCODING 2387 +SWIDTH 3840 0 +DWIDTH 4 0 +BBX 4 6 0 12 +BITMAP +C0 +C0 +E0 +60 +30 +10 +ENDCHAR +STARTCHAR U+0954 +ENCODING 2388 +SWIDTH 3840 0 +DWIDTH 4 0 +BBX 4 6 0 12 +BITMAP +30 +30 +70 +60 +C0 +80 +ENDCHAR +STARTCHAR U+0958 +ENCODING 2392 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0300 +3FE0 +7FF0 +6398 +6318 +3F18 +1F18 +0338 +1330 +3B10 +1100 +ENDCHAR +STARTCHAR U+0959 +ENCODING 2393 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 17 -1 -5 +BITMAP +FFFF80 +7FFFC0 +181800 +1BD800 +5FF800 +7E3800 +7E3800 +323800 +13F800 +19F800 +0C3800 +07F800 +03E800 +000000 +010000 +038000 +010000 +ENDCHAR +STARTCHAR U+095A +ENCODING 2394 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 14 -1 -2 +BITMAP +FFFE +7FFF +1060 +1860 +1860 +1860 +7860 +7860 +7860 +3860 +0060 +1060 +3820 +1000 +ENDCHAR +STARTCHAR U+095B +ENCODING 2395 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +4FD800 +67F800 +231800 +311800 +199800 +0F9800 +075800 +00F800 +004800 +ENDCHAR +STARTCHAR U+095C +ENCODING 2396 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 14 15 -1 -3 +BITMAP +FFF8 +7FFC +0180 +0F80 +1F80 +1800 +5F80 +6FC0 +60C0 +3FC0 +1F80 +0000 +0200 +0700 +0200 +ENDCHAR +STARTCHAR U+095D +ENCODING 2397 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 16 -1 -4 +BITMAP +FFF0 +7FF8 +0180 +1F80 +3F80 +7000 +6380 +67C0 +2EC0 +3CC0 +1FC0 +0F80 +0000 +0200 +0700 +0200 +ENDCHAR +STARTCHAR U+095E +ENCODING 2398 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +618000 +61F000 +61F800 +21CC00 +338C00 +5F8C00 +EF8C00 +4F9C00 +199800 +318800 +008000 +ENDCHAR +STARTCHAR U+095F +ENCODING 2399 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 14 -1 -2 +BITMAP +FFFE +7FFF +0860 +0C60 +1C60 +78E0 +70E0 +21E0 +3FE0 +1F60 +0060 +0460 +0E20 +0400 +ENDCHAR +STARTCHAR U+0960 +ENCODING 2400 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 19 16 -1 -4 +BITMAP +FFFFC0 +7FFFE0 +00C000 +3ECC00 +7FCE00 +61FE00 +03FE00 +0FC600 +1ECE00 +18DE00 +00DA00 +00CF00 +004E00 +000C00 +000F80 +000780 +ENDCHAR +STARTCHAR U+0961 +ENCODING 2401 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 17 17 -1 -5 +BITMAP +FFFF00 +7FFF80 +003000 +003000 +3CF000 +7FF800 +638800 +630C00 +211C00 +307800 +10F000 +18C000 +0CF800 +007C00 +006000 +003C00 +001E00 +ENDCHAR +STARTCHAR U+0962 +ENCODING 2402 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 9 6 0 -6 +BITMAP +7600 +8900 +8900 +4200 +0280 +0180 +ENDCHAR +STARTCHAR U+0963 +ENCODING 2403 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 10 7 0 -7 +BITMAP +7600 +8900 +8900 +4200 +0180 +0200 +01C0 +ENDCHAR +STARTCHAR U+0964 +ENCODING 2404 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 2 13 6 -1 +BITMAP +80 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +40 +ENDCHAR +STARTCHAR U+0965 +ENCODING 2405 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 6 13 4 -1 +BITMAP +88 +CC +CC +CC +CC +CC +CC +CC +CC +CC +CC +CC +44 +ENDCHAR +STARTCHAR U+0966 +ENCODING 2406 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 7 7 0 2 +BITMAP +78 +FC +C4 +C6 +46 +7E +3C +ENDCHAR +STARTCHAR U+0967 +ENCODING 2407 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 6 16 0 -4 +BITMAP +70 +F8 +C8 +CC +CC +7C +3C +38 +70 +E0 +40 +60 +30 +18 +1C +18 +ENDCHAR +STARTCHAR U+0968 +ENCODING 2408 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 9 14 0 -3 +BITMAP +FE00 +FF00 +0180 +0180 +0380 +EF00 +FE00 +7800 +0C00 +0400 +0200 +0300 +0100 +0180 +ENDCHAR +STARTCHAR U+0969 +ENCODING 2409 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 8 14 0 -3 +BITMAP +F8 +FC +06 +FE +7E +07 +03 +63 +7F +3E +0C +04 +02 +03 +ENDCHAR +STARTCHAR U+096A +ENCODING 2410 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 11 11 0 1 +BITMAP +8040 +C0E0 +63C0 +3780 +1E00 +1C00 +3A00 +3300 +3300 +1F00 +0E00 +ENDCHAR +STARTCHAR U+096B +ENCODING 2411 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 10 14 0 -2 +BITMAP +8200 +C700 +C600 +C600 +4600 +7E00 +3C00 +0C00 +1C00 +7800 +FE00 +6700 +0180 +00C0 +ENDCHAR +STARTCHAR U+096C +ENCODING 2412 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 9 15 0 -3 +BITMAP +7C00 +FE00 +C000 +C000 +E400 +7E00 +7C00 +6000 +6600 +2700 +3F00 +1E00 +0300 +0100 +0180 +ENDCHAR +STARTCHAR U+096D +ENCODING 2413 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 11 12 0 0 +BITMAP +8000 +C780 +CFC0 +CC40 +CC60 +C460 +47E0 +63E0 +20E0 +31C0 +1F80 +0F00 +ENDCHAR +STARTCHAR U+096E +ENCODING 2414 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 10 11 -1 -1 +BITMAP +FF80 +7FC0 +7000 +6000 +6000 +6000 +6780 +7FC0 +3CC0 +01C0 +0080 +ENDCHAR +STARTCHAR U+096F +ENCODING 2415 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 9 15 0 -3 +BITMAP +7000 +F800 +CC00 +CC00 +5C00 +7800 +3000 +1000 +1800 +0C00 +0600 +0300 +0100 +0380 +0300 +ENDCHAR +STARTCHAR U+0970 +ENCODING 2416 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 6 6 3 5 +BITMAP +78 +C4 +84 +84 +8C +78 +ENDCHAR +STARTCHAR U+E900 +ENCODING 59648 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 17 14 0 -2 +BITMAP +79FF00 +FDFF80 +C63000 +C67000 +DEF000 +7FF000 +FFB000 +C03000 +CE3000 +4F3000 +7F3000 +3E3000 +031000 +010000 +ENDCHAR +STARTCHAR U+E901 +ENCODING 59649 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +7FC0 +7FC0 +18C0 +0CC0 +04C0 +76C0 +7EC0 +3CC0 +04C0 +0640 +ENDCHAR +STARTCHAR U+E902 +ENCODING 59650 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +001800 +001800 +7FF800 +7FF800 +181800 +181800 +181800 +081800 +0C1800 +071800 +030800 +ENDCHAR +STARTCHAR U+E903 +ENCODING 59651 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +3CC0 +7EC0 +63C0 +03C0 +0FC0 +3EC0 +18C0 +00C0 +00C0 +0040 +ENDCHAR +STARTCHAR U+00C1 +ENCODING 59652 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +330C00 +130C00 +1F0C00 +7FCC00 +70EC00 +1FBC00 +0FFC00 +063C00 +067C00 +07EC00 +03C400 +ENDCHAR +STARTCHAR U+00C2 +ENCODING 59653 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +330C00 +330C00 +1F0C00 +7FEC00 +70FC00 +01EC00 +03CC00 +070C00 +060C00 +000C00 +000400 +ENDCHAR +STARTCHAR U+00C3 +ENCODING 59654 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +330C00 +330C00 +1F0C00 +7FEC00 +73FC00 +07BC00 +067C00 +07EC00 +03CC00 +000C00 +000400 +ENDCHAR +STARTCHAR U+0915 +ENCODING 59655 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0300 +3FE0 +7FF0 +6398 +6318 +3F18 +1F18 +0F38 +1B30 +3310 +0100 +ENDCHAR +STARTCHAR U+0024 +ENCODING 59656 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 20 13 -1 -1 +BITMAP +FFFFE0 +7FFFF0 +000600 +000600 +47FE00 +67FE00 +630600 +218600 +318E00 +1F9E00 +0F3600 +006600 +000200 +ENDCHAR +STARTCHAR U+0025 +ENCODING 59657 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 20 13 -1 -1 +BITMAP +FFFFE0 +7FFFF0 +000600 +000600 +47FE00 +67FE00 +634600 +21E600 +31CE00 +1F9E00 +0F3600 +006600 +000200 +ENDCHAR +STARTCHAR U+0027 +ENCODING 59658 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +618000 +61F000 +61F800 +21CC00 +338C00 +1F8C00 +0F8C00 +1D9C00 +319800 +618800 +008000 +ENDCHAR +STARTCHAR U+0028 +ENCODING 59659 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +618000 +61F000 +61F800 +21CC00 +338C00 +5F8C00 +EF8C00 +4F9C00 +199800 +318800 +008000 +ENDCHAR +STARTCHAR U+0029 +ENCODING 59660 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 13 -1 -1 +BITMAP +FFF0 +7FF8 +6300 +6300 +6300 +6300 +2300 +3F00 +1F00 +1B00 +3300 +6300 +0100 +ENDCHAR +STARTCHAR U+002B +ENCODING 59661 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +1860 +1860 +5860 +7FE0 +7FE0 +20E0 +31E0 +13E0 +0F60 +0E60 +0420 +ENDCHAR +STARTCHAR U+002C +ENCODING 59662 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 13 -1 -1 +BITMAP +FFF8 +7FFC +0180 +0380 +2380 +3740 +1E40 +1CC0 +0C80 +0600 +0300 +0180 +00C0 +ENDCHAR +STARTCHAR U+002D +ENCODING 59663 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0300 +0300 +27C0 +3620 +1E10 +1D08 +0CE4 +0600 +0300 +0180 +00C0 +ENDCHAR +STARTCHAR U+E915 +ENCODING 59669 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +0300 +3F00 +7FE0 +63E0 +6310 +3F00 +1F00 +0300 +0300 +0300 +0100 +ENDCHAR +STARTCHAR U+E916 +ENCODING 59670 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +1800 +1BC0 +5FE0 +7E20 +7E30 +3230 +13F0 +19E0 +0C00 +0600 +0300 +ENDCHAR +STARTCHAR U+E917 +ENCODING 59671 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 10 -1 2 +BITMAP +FF80 +7FC0 +1800 +1800 +1800 +1800 +7800 +7800 +7800 +3800 +ENDCHAR +STARTCHAR U+E918 +ENCODING 59672 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 9 -1 3 +BITMAP +FF80 +7FC0 +6000 +6000 +3E00 +7E00 +61C0 +3F80 +1F00 +ENDCHAR +STARTCHAR U+E919 +ENCODING 59673 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 11 -1 1 +BITMAP +FFFE +7FFF +0180 +0F80 +1F90 +1838 +5F90 +6FC0 +60C0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+E91A +ENCODING 59674 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 11 10 -1 2 +BITMAP +FFC0 +7FE0 +0000 +0000 +7F80 +7FC0 +1800 +08E0 +0FE0 +0780 +ENDCHAR +STARTCHAR U+E91B +ENCODING 59675 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 13 -1 -1 +BITMAP +FFFFC0 +7FFFE0 +180C00 +7E1C00 +763E00 +203300 +371300 +1F9B00 +1F0F00 +180E00 +087E00 +0FFA00 +07C300 +ENDCHAR +STARTCHAR U+E91C +ENCODING 59676 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 11 -1 1 +BITMAP +FFE0 +7FF0 +0000 +0000 +4FE0 +67F0 +2300 +3100 +1980 +0F80 +0700 +ENDCHAR +STARTCHAR U+E91D +ENCODING 59677 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 15 -1 -3 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6030 +7FF8 +3FE0 +3D80 +7F80 +3F00 +0100 +0180 +0080 +0080 +ENDCHAR +STARTCHAR U+E91E +ENCODING 59678 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 11 11 -1 1 +BITMAP +FFC0 +7FE0 +0000 +3800 +3C00 +0600 +07E0 +47E0 +6E00 +7C00 +3800 +ENDCHAR +STARTCHAR U+E91F +ENCODING 59679 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 12 -1 0 +BITMAP +FFF8 +7FFC +0180 +0180 +1F80 +3F80 +7000 +6000 +6000 +60C0 +3FE0 +1F80 +ENDCHAR +STARTCHAR U+E920 +ENCODING 59680 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 12 -1 0 +BITMAP +FFF8 +7FFC +0180 +0180 +1F80 +3FC0 +7040 +6060 +2060 +30E0 +1FC0 +0F80 +ENDCHAR +STARTCHAR U+E921 +ENCODING 59681 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 11 -1 1 +BITMAP +FFF8 +7FFC +0180 +0F80 +1F80 +1800 +5F80 +6FC0 +60C0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+E922 +ENCODING 59682 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 12 -1 0 +BITMAP +FFF0 +7FF8 +0180 +1F80 +3F80 +7000 +6380 +67C0 +2EC0 +3CC0 +1FC0 +0F80 +ENDCHAR +STARTCHAR U+E923 +ENCODING 59683 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 10 -1 2 +BITMAP +FF80 +7FC0 +6600 +6600 +6600 +6600 +6600 +2600 +3E00 +1C00 +ENDCHAR +STARTCHAR U+E924 +ENCODING 59684 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 13 -1 -1 +BITMAP +FF00 +7F80 +0000 +0000 +3F00 +7F80 +6000 +6000 +6000 +2000 +3000 +1800 +0C00 +ENDCHAR +STARTCHAR U+E925 +ENCODING 59685 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 9 10 0 2 +BITMAP +6700 +F780 +D000 +F800 +7800 +F100 +E180 +4380 +7F00 +3E00 +ENDCHAR +STARTCHAR U+E926 +ENCODING 59686 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 12 -1 0 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +6000 +6300 +2780 +3F80 +1F00 +0180 +ENDCHAR +STARTCHAR U+E927 +ENCODING 59687 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 9 9 0 3 +BITMAP +4700 +E780 +C000 +C000 +7C00 +FC00 +C380 +7F00 +3E00 +ENDCHAR +STARTCHAR U+E928 +ENCODING 59688 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 9 -1 3 +BITMAP +FF00 +7F80 +0000 +0000 +0000 +3F00 +7F80 +7800 +3000 +ENDCHAR +STARTCHAR U+E929 +ENCODING 59689 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 13 -1 -1 +BITMAP +FF00 +7F80 +0000 +0000 +0000 +3F00 +7F80 +7800 +3000 +0000 +0400 +0E00 +0400 +ENDCHAR +STARTCHAR U+E92A +ENCODING 59690 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 9 -1 3 +BITMAP +FF00 +7F80 +6000 +6000 +6000 +2100 +3380 +1F00 +0E00 +ENDCHAR +STARTCHAR U+E92B +ENCODING 59691 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 13 -1 -1 +BITMAP +FFF0 +7FF8 +6180 +6180 +61E0 +21F0 +3398 +1F80 +0F80 +0180 +0180 +0180 +0080 +ENDCHAR +STARTCHAR U+E92C +ENCODING 59692 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 10 -1 2 +BITMAP +FF00 +7F80 +0000 +1E00 +3F00 +7980 +6D80 +6580 +3F80 +1F00 +ENDCHAR +STARTCHAR U+E92D +ENCODING 59693 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 10 -1 2 +BITMAP +E380 +F3C0 +5000 +7800 +3800 +1800 +7F80 +7FC0 +3800 +1000 +ENDCHAR +STARTCHAR U+E92E +ENCODING 59694 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 9 -1 3 +BITMAP +FF80 +7FC0 +3000 +3000 +3000 +3000 +FF80 +FFC0 +7000 +ENDCHAR +STARTCHAR U+E92F +ENCODING 59695 +SWIDTH 7680 0 +DWIDTH 8 0 +BBX 10 10 -1 2 +BITMAP +FF80 +7FC0 +0800 +0C00 +1C00 +7880 +70C0 +21C0 +3F80 +1F00 +ENDCHAR +STARTCHAR U+E930 +ENCODING 59696 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 13 -1 -1 +BITMAP +FFF0 +7FF8 +0300 +0300 +2700 +3600 +1E00 +1C00 +0C00 +0600 +0300 +0180 +00C0 +ENDCHAR +STARTCHAR U+E931 +ENCODING 59697 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 13 0 -1 +BITMAP +FFF0 +7FF8 +0300 +0300 +2700 +3600 +1E00 +1C00 +0C00 +0600 +1300 +3980 +10C0 +ENDCHAR +STARTCHAR U+E932 +ENCODING 59698 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +0000 +0000 +3CE0 +7FF0 +6380 +6300 +2100 +3000 +1000 +1800 +0C00 +ENDCHAR +STARTCHAR U+E933 +ENCODING 59699 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 15 12 -1 0 +BITMAP +FFFC +7FFE +0000 +0000 +3C78 +7EFC +63C4 +6386 +6306 +278E +3FFC +1C78 +ENDCHAR +STARTCHAR U+E934 +ENCODING 59700 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 15 15 -1 -3 +BITMAP +FFFC +7FFE +0000 +0000 +3C78 +7EFC +63C4 +6386 +6306 +278E +3FFC +1C78 +0100 +0380 +0100 +ENDCHAR +STARTCHAR U+E935 +ENCODING 59701 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 10 -1 2 +BITMAP +FF00 +7F80 +0000 +1E00 +3F00 +7180 +6180 +6180 +3F80 +1F00 +ENDCHAR +STARTCHAR U+E936 +ENCODING 59702 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +3900 +3180 +3180 +1F80 +0F80 +7F00 +7E00 +3E00 +0300 +0100 +0180 +ENDCHAR +STARTCHAR U+005C +ENCODING 59703 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 9 -1 3 +BITMAP +FF00 +7F80 +7000 +6800 +6400 +2300 +3380 +1F00 +0E00 +ENDCHAR +STARTCHAR U+E938 +ENCODING 59704 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 11 13 -1 -1 +BITMAP +FFC0 +7FE0 +1800 +1800 +5840 +7FE0 +7FC0 +2000 +3000 +1000 +0800 +0C00 +0400 +ENDCHAR +STARTCHAR U+E939 +ENCODING 59705 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 16 -1 -4 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +2F00 +3F80 +78C0 +60C0 +27C0 +3380 +1C00 +0F00 +03C0 +00C0 +ENDCHAR +STARTCHAR U+0915 +ENCODING 59712 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0300 +3B60 +7FF0 +6398 +6F18 +3F70 +63F8 +6798 +7F18 +3B30 +0100 +ENDCHAR +STARTCHAR U+0924 +ENCODING 59713 +SWIDTH 15360 0 +DWIDTH 16 0 +BBX 18 13 -1 -1 +BITMAP +FFFF80 +7FFFC0 +00C000 +00C000 +FFF800 +7FFC00 +30C600 +30C600 +30C600 +10C600 +18CE00 +0CCC00 +064000 +ENDCHAR +STARTCHAR U+00A2 +ENCODING 59714 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 18 -1 -6 +BITMAP +FFFE +7FFF +00C0 +0FC0 +1FD0 +1838 +5FD0 +6FE0 +6060 +3FE0 +1FC0 +0300 +1B40 +3FE0 +2720 +3F60 +1B40 +0300 +ENDCHAR +STARTCHAR U+00A3 +ENCODING 59715 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 19 -1 -7 +BITMAP +FFFE +7FFF +00C0 +0FC0 +1FD0 +1838 +5FD0 +6FE0 +6060 +3FE0 +1FC0 +10C0 +37C0 +6CC0 +6CC0 +27C0 +30C0 +19C0 +0F40 +ENDCHAR +STARTCHAR U+00A4 +ENCODING 59716 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 19 -1 -7 +BITMAP +FFFE +7FFF +0180 +0F80 +1F90 +1838 +5F90 +6FC0 +60C0 +3FC0 +1F80 +0D80 +0D80 +0D80 +1D80 +1D80 +0180 +0180 +0080 +ENDCHAR +STARTCHAR U+00A5 +ENCODING 59717 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 19 -1 -7 +BITMAP +FFFE +7FFF +0180 +0F80 +1F90 +1838 +5F90 +6FC0 +60C0 +3FC0 +3F80 +3180 +1980 +3D80 +3380 +1F80 +0F80 +0180 +0080 +ENDCHAR +STARTCHAR U+091E +ENCODING 59718 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +003000 +0E3000 +07F000 +33F000 +1F3000 +0E3000 +01F000 +21B000 +31B000 +1FB000 +0F1000 +ENDCHAR +STARTCHAR U+00B9 +ENCODING 59719 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 15 -1 -3 +BITMAP +FFFE +7FFF +0060 +07E0 +0FE0 +0C00 +1C00 +3C60 +2CF0 +27F0 +3FE0 +1C30 +0C78 +07E8 +03CC +ENDCHAR +STARTCHAR U+00B8 +ENCODING 59720 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 16 -1 -4 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +6000 +3F00 +7F00 +6000 +6380 +3FC0 +1F80 +0180 +00C0 +0060 +ENDCHAR +STARTCHAR U+00B9 +ENCODING 59721 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 15 -1 -3 +BITMAP +FFFE +7FFF +0060 +07E0 +0FE0 +0C00 +6C00 +6C60 +64F0 +27F0 +3FE0 +1C30 +0C78 +07E8 +03CC +ENDCHAR +STARTCHAR U+00BA +ENCODING 59722 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 15 -1 -3 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +6000 +6300 +2780 +3F80 +7F00 +6980 +65C0 +3F40 +1E60 +ENDCHAR +STARTCHAR U+00BB +ENCODING 59723 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0060 +07E0 +0FE0 +0C00 +67C0 +73E0 +1860 +0860 +3FF0 +3FF0 +1C18 +ENDCHAR +STARTCHAR U+00BC +ENCODING 59724 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0360 +3F60 +7F60 +6060 +3060 +1860 +3FE0 +3FE0 +1C60 +0060 +0020 +ENDCHAR +STARTCHAR U+00BD +ENCODING 59725 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 17 13 -1 -1 +BITMAP +FFFF00 +7FFF80 +033000 +3F3000 +7F3000 +603000 +603000 +263000 +3F3000 +1E3000 +0C7000 +07F000 +03D000 +ENDCHAR +STARTCHAR U+00BE +ENCODING 59726 +SWIDTH 10560 0 +DWIDTH 11 0 +BBX 13 15 -1 -3 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +6000 +6300 +2780 +3F80 +7F00 +6380 +3FC0 +1E40 +0060 +ENDCHAR +STARTCHAR U+00AC +ENCODING 59727 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 17 -1 -5 +BITMAP +FFF8 +7FFC +0180 +1F80 +3F80 +7000 +6000 +61C0 +3FC0 +1F80 +0F80 +3F80 +7800 +6000 +60C0 +3FE0 +1F80 +ENDCHAR +STARTCHAR U+00AD +ENCODING 59728 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 18 -1 -6 +BITMAP +FFF8 +7FFC +0180 +1F80 +3F80 +7000 +6000 +61C0 +3FC0 +1F80 +0780 +3F80 +7C40 +6060 +6060 +60E0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+00AD +ENCODING 59729 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 18 -1 -6 +BITMAP +FFF8 +7FFC +0180 +1F80 +3FC0 +7060 +6060 +60E0 +3FC0 +1F80 +0180 +1F80 +3FC0 +7060 +6060 +60E0 +3FC0 +1F80 +ENDCHAR +STARTCHAR U+00A4 +ENCODING 59730 +SWIDTH 13440 0 +DWIDTH 14 0 +BBX 16 19 -1 -7 +BITMAP +FFFE +7FFF +0180 +0F80 +1F80 +1800 +5F80 +6FC0 +60C0 +3FC0 +1F80 +0D80 +0D80 +0D80 +1D80 +1D80 +0180 +0180 +0080 +ENDCHAR +STARTCHAR U+00B2 +ENCODING 59731 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 20 -1 -8 +BITMAP +FFF8 +7FFC +0180 +0F80 +1F80 +1C00 +4F00 +6380 +6180 +3F80 +1F80 +0180 +0F80 +1F80 +1C00 +4F00 +6380 +6180 +3F80 +1F00 +ENDCHAR +STARTCHAR U+00B2 +ENCODING 59732 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 14 20 -1 -8 +BITMAP +FFF8 +7FFC +0180 +0F80 +1F80 +1C00 +4F00 +6380 +6180 +3F80 +1F80 +0180 +1F80 +3F80 +6000 +6700 +6F80 +3980 +3F80 +1F00 +ENDCHAR +STARTCHAR U+00C0 +ENCODING 59733 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 16 13 -1 -1 +BITMAP +FFFE +7FFF +0060 +7C60 +7F60 +73E0 +31E0 +07E0 +1F60 +1C60 +1C60 +0C60 +0020 +ENDCHAR +STARTCHAR U+00C9 +ENCODING 59734 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 16 -1 -4 +BITMAP +FFFFC0 +7FFFE0 +018C00 +3F8C00 +7F8C00 +600C00 +3E0C00 +3F0C00 +718C00 +618C00 +23FC00 +33FC00 +1B8C00 +0F8C00 +070400 +018000 +ENDCHAR +STARTCHAR U+00CA +ENCODING 59735 +SWIDTH 16320 0 +DWIDTH 17 0 +BBX 19 16 -1 -4 +BITMAP +FFFFC0 +7FFFE0 +018C00 +3F8C00 +7F8C00 +600C00 +3E0C00 +3F0C00 +718C00 +618C00 +27BC00 +33FC00 +19EC00 +0E0C00 +070400 +018000 +ENDCHAR +STARTCHAR U+00CC +ENCODING 59736 +SWIDTH 19200 0 +DWIDTH 20 0 +BBX 22 16 -1 -4 +BITMAP +FFFFF8 +7FFFFC +0000C0 +003FC0 +007FC0 +002000 +003F80 +003FC0 +007860 +3FE060 +7FE3E0 +6733C0 +219C00 +38CF00 +1F03E0 +0780E0 +ENDCHAR +STARTCHAR U+00CD +ENCODING 59737 +SWIDTH 14400 0 +DWIDTH 15 0 +BBX 17 16 -1 -4 +BITMAP +FFFF00 +7FFF80 +001800 +07F800 +0FF800 +040000 +07F000 +07F800 +0F0C00 +0C0C00 +047C00 +3E7800 +7F8000 +61E000 +3FFC00 +1F1C00 +ENDCHAR +STARTCHAR U+002B +ENCODING 59738 +SWIDTH 17280 0 +DWIDTH 18 0 +BBX 20 13 -1 -1 +BITMAP +FFFFE0 +7FFFF0 +180600 +187600 +58FE00 +7ECE00 +3E0E00 +303E00 +18FE00 +0C6600 +060600 +030600 +018200 +ENDCHAR +STARTCHAR U+0078 +ENCODING 59760 +SWIDTH 8640 0 +DWIDTH 9 0 +BBX 11 14 0 -2 +BITMAP +79C0 +FDE0 +C600 +C640 +DEE0 +7FC0 +FF80 +C000 +CE00 +4F00 +7F00 +3E00 +0300 +0100 +ENDCHAR +STARTCHAR U+E901 +ENCODING 59761 +SWIDTH 12480 0 +DWIDTH 13 0 +BBX 15 13 -1 -1 +BITMAP +FFFC +7FFE +00C0 +7FC0 +7FC0 +18C0 +0CC0 +04C0 +76C0 +7EC0 +3CC0 +04C0 +0640 +ENDCHAR +STARTCHAR U+00B6 +ENCODING 59762 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +0000 +0000 +7FE0 +7FF0 +1800 +1800 +1800 +0800 +0C00 +0700 +0300 +ENDCHAR +STARTCHAR U+002A +ENCODING 59763 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 10 -1 2 +BITMAP +FF00 +7F80 +0000 +3C00 +7E00 +6300 +0380 +0F80 +3E00 +1800 +ENDCHAR +STARTCHAR U+00C1 +ENCODING 59764 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 13 -1 -1 +BITMAP +FFE0 +7FF0 +3300 +1300 +1F00 +7FE0 +70E0 +3FB0 +1FF0 +0630 +0670 +07E0 +03C0 +ENDCHAR +STARTCHAR U+00C2 +ENCODING 59765 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 11 -1 1 +BITMAP +FFE0 +7FF0 +3300 +3300 +1F00 +7FE0 +70F0 +01E0 +03C0 +0700 +0600 +ENDCHAR +STARTCHAR U+00C3 +ENCODING 59766 +SWIDTH 9600 0 +DWIDTH 10 0 +BBX 12 11 -1 1 +BITMAP +FFE0 +7FF0 +3300 +3300 +1F00 +7FE0 +73F0 +07B0 +0670 +07E0 +03C0 +ENDCHAR +STARTCHAR char59728 +ENCODING 59771 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 5 0 12 +BITMAP +F0 +88 +B0 +40 +20 +ENDCHAR +STARTCHAR U+E939 +ENCODING 59772 +SWIDTH 11520 0 +DWIDTH 12 0 +BBX 13 16 -1 -4 +BITMAP +FFF0 +7FF8 +0300 +3F00 +7F00 +6000 +2F00 +3F80 +78C0 +60C0 +27C0 +3380 +1C00 +3F00 +63C0 +C0C0 +ENDCHAR +STARTCHAR U+0022 +ENCODING 59773 +SWIDTH 6720 0 +DWIDTH 7 0 +BBX 9 8 -1 4 +BITMAP +FF00 +7F80 +0000 +0000 +0000 +6100 +7F80 +1F00 +ENDCHAR +STARTCHAR char59728 +ENCODING 59774 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 5 5 0 12 +BITMAP +F0 +88 +80 +40 +20 +ENDCHAR +STARTCHAR U+00D7 +ENCODING 59775 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 6 5 0 -5 +BITMAP +20 +38 +64 +C0 +80 +ENDCHAR +ENDFONT diff --git a/modules/Makefile.am b/modules/Makefile.am index 93cf108e..90cb1513 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -1,6 +1,11 @@ ## Process this file with automake to create Makefile.in. -SUBDIRS=basic hangul tamil arabic +SUBDIRS = \ + arabic \ + devanagari \ + basic \ + hangul \ + tamil install-data-local: $(mkinstalldirs) $(DESTDIR)$(localstatedir)/lib/pango diff --git a/modules/devanagari/.cvsignore b/modules/devanagari/.cvsignore new file mode 100644 index 00000000..6e5ca7ed --- /dev/null +++ b/modules/devanagari/.cvsignore @@ -0,0 +1,6 @@ +Makefile +Makefile.in +.deps +.libs +*.lo +*.la diff --git a/modules/devanagari/Makefile.am b/modules/devanagari/Makefile.am new file mode 100644 index 00000000..2f3d5601 --- /dev/null +++ b/modules/devanagari/Makefile.am @@ -0,0 +1,14 @@ +## Process this file with automake to create Makefile.in. + +moduledir = $(libdir)/pango/modules +module_LTLIBRARIES = pango-devanagari.la + +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/pango/ + +pango_devanagari_la_SOURCES = \ + devanagari.c \ + dev-ligatures.h + +pango_devanagari_la_LDFLAGS = -rpath $(libdir) -export-dynamic -avoid-version -module + +EXTRA_DIST= diff --git a/modules/devanagari/dev-ligatures.h b/modules/devanagari/dev-ligatures.h new file mode 100644 index 00000000..02eca1b3 --- /dev/null +++ b/modules/devanagari/dev-ligatures.h @@ -0,0 +1,27 @@ +{ 0xE900, { 0x0915, VIRAMA, 0x0937 } }, +{ 0xE901, { 0x091C, VIRAMA, 0x091E } }, +{ 0xE902, { 0x0924, VIRAMA, 0x0924 } }, +{ 0xE903, { 0x0924, VIRAMA, 0x0930 } }, +{ 0xE904, { 0x0936, VIRAMA, 0x091B } }, +{ 0xE905, { 0x0936, VIRAMA, 0x0930 } }, +{ 0xE906, { 0x0936, VIRAMA, 0x0935 } }, + +{ 0xE907, { 0x0915, VIRAMA, RA } }, +{ 0xE908, { 0x091C, VIRAMA, RA } }, +{ 0xE909, { 0x095B, VIRAMA, RA } }, +{ 0xE90A, { 0x092B, VIRAMA, RA } }, +{ 0xE90B, { 0x095E, VIRAMA, RA } }, +{ 0xE90C, { 0x092A, VIRAMA, RA } }, +{ 0xE90D, { 0x0938, VIRAMA, RA } }, + +{ 0xE940, { 0x0915, VIRAMA, 0x0915 } }, +{ 0xE941, { 0x0915, VIRAMA, 0x0924 } }, +{ 0xE947, { 0x0926, VIRAMA, 0x0918 } }, +{ 0xE949, { 0x0926, VIRAMA, 0x0927 } }, +{ 0xE94D, { 0x0926, VIRAMA, 0x092F } }, +{ 0xE94E, { 0x0926, VIRAMA, 0x0935 } }, +{ 0xE94F, { 0x091F, VIRAMA, 0x091F } }, +{ 0xE950, { 0x091F, VIRAMA, 0x0920 } }, +{ 0xE952, { 0x0921, VIRAMA, 0x0917 } }, +{ 0xE955, { 0x0928, VIRAMA, 0x0928 } }, + diff --git a/modules/devanagari/devanagari.c b/modules/devanagari/devanagari.c new file mode 100644 index 00000000..38b4d4cd --- /dev/null +++ b/modules/devanagari/devanagari.c @@ -0,0 +1,589 @@ +/* Pango - Devanagari module + * devanagari.c: + * + * Copyright (C) 2000 Robert Brady <rwb197@zepler.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <glib.h> +#include <unicode.h> + +#include "utils.h" +#include "pango.h" +#include "pangox.h" + +#define VIRAMA 0x94d +#define CANDRA 0x901 +#define ANUSWAR 0x902 +#define NUKTA 0x93c +#define RA 0x930 +#define JOINING_RA 0xe97f +#define REPHA 0xe97e + +typedef struct _LigData LigData; + +struct _LigData + { + int replacement; + int source[3]; + }; + +static LigData ligatures[] = +{ +#include "dev-ligatures.h" +}; + +static gint n_ligatures = G_N_ELEMENTS (ligatures); + +static char *default_charset[] = +{ + "iso10646-dev", + /* devanagari encoded in iso10646 way, with PUA used for + * ligatures and half forms */ +}; + +/* Table about ligatures in the font. This should come from the font + * somehow : this needs to be co-ordinated with fonts@xfree86.org. + * (and for whatever passes for a font working group at X.org) + */ + +static PangoEngineRange devanagari_range[] = +{ + {0x900, 0x97f, "*"} +}; + +static PangoEngineInfo script_engines[] = +{ + { + "DevanagariScriptEngineLang", + PANGO_ENGINE_TYPE_LANG, + PANGO_RENDER_TYPE_NONE, + devanagari_range, G_N_ELEMENTS (devanagari_range)}, + { + "DevanagariScriptEngineX", + PANGO_ENGINE_TYPE_SHAPE, + PANGO_RENDER_TYPE_X, + devanagari_range, G_N_ELEMENTS (devanagari_range)} +}; + +static gint n_script_engines = G_N_ELEMENTS (script_engines); + +static gboolean + find_unic_font (PangoFont * font, char *charsets[], PangoXSubfont * rfont); + +static PangoCoverage * +devanagari_engine_get_coverage (PangoFont * font, const char *lang) +{ + GUChar4 i; + PangoCoverage *result = pango_coverage_new (); + PangoXSubfont subfont; + + int dev_font = find_unic_font (font, default_charset, &subfont); + + if (dev_font) + { + for (i = 0x900; i < 0x97f; i++) + pango_coverage_set (result, i, PANGO_COVERAGE_EXACT); + } + + return result; +} + +static gboolean +find_unic_font (PangoFont * font, char *charsets[], PangoXSubfont * rfont) +{ + int n_subfonts; + int result = 0; + PangoXSubfont *subfonts; + int *subfont_charsets; + n_subfonts = pango_x_list_subfonts (font, charsets, 1, + &subfonts, &subfont_charsets); + + if (n_subfonts > 0) + { + rfont[0] = subfonts[0]; + result = 1; + } + + g_free (subfonts); + g_free (subfont_charsets); + return result; +} + +static int +is_ligating_consonant (int ch) +{ + /* false for 958 to 961, as these don't ligate in any way */ + return (ch >= 0x915 && ch <= 0x939); +} + +static int +is_comb_vowel (int i) +{ + /* one that combines, whether or not it spaces */ + return (i >= 0x93E && i <= 0x94c) || (i >= 0x962 && i <= 0x963); +} + +static int +vowelsign_to_letter (int i) +{ + if (i >= 0x93e && i <= 0x94c) + return i - 0x93e + 0x906; + return i; +} + +static int +is_half_consonant (int i) +{ + return (i >= 0xe915 && i <= 0xe939) || (i >= 0xe970 && i <= 0xe976); +} + +static int +is_consonant (int i) +{ + return (i >= 0x915 && i <= 0x939) || (i >= 0x958 && i <= 0x95f); +} + +static int +is_nonspacing_vowel (GUChar4 c) +{ + /* one that doesn't space. ie 93f and 940 don't count */ + return (c >= 0x941 && c <= 0x948) || (c >= 0x962 && c <= 0x963); +} + +static int +get_char (GUChar4 * chars, GUChar4 * end) +{ + if (chars >= end) + return 0; + return *chars; +} + +void +devanagari_make_ligatures (int *num, GUChar4 * chars, gint * cluster) +{ + /* perhaps a syllable based approach would be better? */ + GUChar4 *src = chars; + GUChar4 *start = chars; + GUChar4 *end = chars + *num; + gint *c_src = cluster; + while (src < end) + { + int t0, t1, t2, t3, p1; + if (chars != start) + p1 = chars[-1]; + else + p1 = 0; + t0 = get_char (src, end); + t1 = get_char (src + 1, end); + t2 = get_char (src + 2, end); + t3 = get_char (src + 3, end); + + if (!is_half_consonant (p1)) + { + int i; + /* This makes T.T.T.T come out OK. We need an expert in Devanagari + * to explain what 3 and 4-consonant ligatures are supposed to + * look like, especially when some of the adjacent characters + * form ligatures in 2 consonant form. + * + * (T.T.T.T is significant as T.T forms a conjunt with a half-form + * which looks very similar so it was producing TT (half-form), + * joined to TT unfortunately, this was indistinguishable from + * T.T.T ) + */ + for (i = 0; i < n_ligatures; i++) + { + /* handle the conjuncts */ + LigData *l = ligatures + i; + if (t0 == l->source[0] && t1 == l->source[1] + && t2 == l->source[2]) + { + /* RA ligature handling magic */ + if (t2 == RA && (is_consonant (t3) || (t3 == 0x94d))) + continue; + + chars[0] = l->replacement; + src += 3; + chars++; + + *cluster = *c_src; + c_src += 3; + cluster++; + break; + } + } + if (i != n_ligatures) + { + /* if we made a conjunct here, loop... */ + continue; + } + } + + if ((is_consonant (t0)) && + (t1 == VIRAMA) && (t2 == RA) && + (!is_consonant (t3)) && (t3 != 0x94d)) + { + /* turn C vir RA to C joining-RA */ + chars[0] = *src; + chars[1] = JOINING_RA; + + *cluster = *c_src; + cluster[1] = *c_src; + + src += 3; + chars += 2; + + c_src += 3; + cluster += 2; + continue; + } + + /* some ligatures have half-forms. use them. */ + if ((p1 >= 0xe900 && p1 <= 0xe906) && t0 == VIRAMA && is_consonant (t1)) + { + chars[-1] = 0xe972; + src++; + c_src++; + continue; + } + + /* is_ligating_consonant(t2) probably wants to + * be is_consonant(t2), not sure. */ + if (is_ligating_consonant (t0) && + t1 == VIRAMA && is_ligating_consonant (t2)) + { + chars[0] = t0 + 0xe000; + src += 2; + chars++; + + *cluster = *c_src; + c_src += 2; + cluster++; + continue; + } + + /* Handle Virama followed by Nukta. This suppresses the special-case + * ligature, and just enables regular half-form building. + * + * Cavaet as above. */ + if (is_ligating_consonant (t0) && + t1 == VIRAMA && t2 == NUKTA && is_ligating_consonant (t3)) + { + chars[0] = t0 + 0xe000; + src += 3; + chars++; + + *cluster = *c_src; + c_src += 3; + cluster++; + + continue; + } + + /* convert R virama vowel to full-vowel with repha */ + if (p1 != VIRAMA && + !is_half_consonant (p1) && + t0 == RA && t1 == VIRAMA && is_comb_vowel (t2)) + { + chars[0] = vowelsign_to_letter (t2); + chars[1] = REPHA; + *cluster = *c_src; + cluster[1] = *c_src; + chars += 2; + cluster += 2; + + c_src += 3; + src += 3; + continue; + } + + *chars = *src; + src++; + chars++; + + *cluster = *c_src; + cluster++; + c_src++; + } + *num = chars - start; +} + +void +devanagari_shift_vowels (int *num, GUChar4 * chars, gint * clusters) +{ + /* moves 0x93f (I) before consonant clusters where appropriate. */ + GUChar4 *strt = chars, *end = chars + *num; + while (chars < end) + { + if (*chars == 0x93f && chars > strt) + { + GUChar4 *bubble = chars; + int i = 1; + /* move back one consonant, and past any half consonants */ + /* How should this interact with vowel letters and other + * non-consonant signs? */ + + /* also, should it go back past consonants that have a virama + * attached, so as to be at the start of the syllable? */ + + /* probably should go past JOINING RA as well. */ + while (bubble > strt && (i || is_half_consonant (bubble[-1]))) + { + bubble[0] = bubble[-1]; + bubble[-1] = 0x93f; + i = 0; + bubble--; + } + /* XXX : if we bubble the cluster stuff here back with the + glyph, it breaks. */ + } + chars++; + clusters++; + } +} + +void +devanagari_convert_vowels (int *num, GUChar4 * chars) +{ + /* goes along and converts matras to vowel letters if needed. + * this is only currently done at the beginning of the string. */ + GUChar4 *end = chars + *num; + GUChar4 *start = chars; + while (chars < end) + { + if (chars == start && is_comb_vowel (chars[0])) + { + chars[0] = vowelsign_to_letter (chars[0]); + } + chars++; + } +} + +void +devanagari_remove_explicit_virama (int *num, GUChar4 * chars) +{ + /* collapse two viramas in a row to one virama. This is defined + * to mean 'show it with the virama, don't ligate'. */ + GUChar4 *end = chars + *num; + while (chars < end) + { + if (chars[0] == VIRAMA && chars[1] == VIRAMA) + chars[1] = 0; + chars++; + } +} + +void +devanagari_compact (int *num, GUChar4 * chars, gint * cluster) +{ + /* shuffle stuff up into the blanked out elements. */ + GUChar4 *dest = chars; + GUChar4 *end = chars + *num; + gint *cluster_dest = cluster; + while (chars < end) + { + if (*chars) + { + *dest = *chars; + *cluster_dest = *cluster; + dest++; + chars++; + cluster++; + cluster_dest++; + } + else + { + chars++; + cluster++; + } + } + *num -= (chars - dest); +} + +static void +devanagari_engine_shape (PangoFont * font, + const char *text, + int length, + PangoAnalysis * analysis, PangoGlyphString * glyphs) +{ + PangoXSubfont subfont; + + int n_chars, n_glyph; + int lvl; + const char *p, *next; + int i; + GUChar4 *wc; + + g_return_if_fail (font != NULL); + g_return_if_fail (text != NULL); + g_return_if_fail (length >= 0); + g_return_if_fail (analysis != NULL); + + n_chars = n_glyph = unicode_strlen (text, length); + lvl = find_unic_font (font, default_charset, &subfont); + if (!lvl) + { + PangoGlyph unknown_glyph = pango_x_get_unknown_glyph (font); + PangoRectangle logical_rect; + pango_font_get_glyph_extents (font, unknown_glyph, NULL, &logical_rect); + pango_glyph_string_set_size (glyphs, n_chars); + p = text; + for (i = 0; i < n_chars; i++) + { + glyphs->glyphs[i].glyph = unknown_glyph; + glyphs->glyphs[i].geometry.x_offset = 0; + glyphs->glyphs[i].geometry.y_offset = 0; + glyphs->glyphs[i].geometry.width = logical_rect.width; + glyphs->log_clusters[i] = 0; + + p = unicode_next_utf8 (p); + } + return; + } + p = text; + wc = (GUChar4 *) g_malloc (sizeof (GUChar4) * n_chars); + pango_glyph_string_set_size (glyphs, n_glyph); + for (i = 0; i < n_chars; i++) + { + _pango_utf8_iterate (p, &next, &wc[i]); + glyphs->log_clusters[i] = p - text; + p = next; + } + + devanagari_convert_vowels (&n_glyph, wc); + devanagari_make_ligatures (&n_glyph, wc, glyphs->log_clusters); + devanagari_remove_explicit_virama (&n_glyph, wc); + devanagari_compact (&n_glyph, wc, glyphs->log_clusters); + devanagari_shift_vowels (&n_glyph, wc, glyphs->log_clusters); + pango_glyph_string_set_size (glyphs, n_glyph); + + for (i = 0; i < n_glyph; i++) + { + PangoRectangle logical_rect; + glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]); + pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph, + NULL, &logical_rect); + glyphs->glyphs[i].geometry.x_offset = 0; + glyphs->glyphs[i].geometry.y_offset = 0; + glyphs->glyphs[i].geometry.width = logical_rect.width; + + if ((wc[i] == VIRAMA || wc[i] == ANUSWAR || wc[i] == CANDRA || + wc[i] == JOINING_RA || wc[i] == REPHA || + is_nonspacing_vowel (wc[i])) && i) + { + if (wc[i] == VIRAMA) + { + glyphs->glyphs[i].geometry.x_offset = + (-glyphs->glyphs[i - 1].geometry.width / 2); + } + else if (is_nonspacing_vowel (wc[i])) + { + glyphs->glyphs[i].geometry.x_offset = + -((glyphs->glyphs[i - 1].geometry.width) + + (logical_rect.width)) / 2; + } + else + glyphs->glyphs[i].geometry.x_offset = -logical_rect.width * 2; + + glyphs->glyphs[i].geometry.width = 0; + glyphs->log_clusters[i] = glyphs->log_clusters[i - 1]; + } + } +} + +static PangoEngine * +devanagari_engine_x_new () +{ + PangoEngineShape *result; + result = g_new (PangoEngineShape, 1); + result->engine.id = "DevanagariScriptEngine"; + result->engine.type = PANGO_ENGINE_TYPE_LANG; + result->engine.length = sizeof (result); + result->script_shape = devanagari_engine_shape; + result->get_coverage = devanagari_engine_get_coverage; + return (PangoEngine *) result; +} + +void +script_engine_list (PangoEngineInfo ** engines, int *n_engines) +{ + *engines = script_engines; + *n_engines = n_script_engines; +} + +static void +devanagari_engine_break (const char *text, + int len, + PangoAnalysis * analysis, PangoLogAttr * attrs) +{ + const char *cur = text; + const char *next; + gint i = 0; + GUChar4 wc; + + while (*cur) + { + if (!_pango_utf8_iterate (cur, &next, &wc)) + return; + if (cur == next) + break; + if ((next - text) > len) + break; + cur = next; + + attrs[i].is_white = (wc == ' ' || wc == '\t' || wc == 'n') ? 1 : 0; + attrs[i].is_break = (i > 0 && attrs[i - 1].is_white) || + attrs[i].is_white; + attrs[i].is_char_stop = 1; + attrs[i].is_word_stop = (i == 0) || attrs[i - 1].is_white; + /* actually, is_word_stop in not correct, but simple and good enough. */ + i++; + } +} + + +static PangoEngine * +devanagari_engine_lang_new () +{ + PangoEngineLang *result; + + result = g_new (PangoEngineLang, 1); + + result->engine.id = "DevanagariScriptEngine"; + result->engine.type = PANGO_ENGINE_TYPE_LANG; + result->engine.length = sizeof (result); + result->script_break = devanagari_engine_break; + + return (PangoEngine *) result; +} + +PangoEngine * +script_engine_load (const char *id) +{ + if (!strcmp (id, "DevanagariScriptEngineLang")) + return devanagari_engine_lang_new (); + else if (!strcmp (id, "DevanagariScriptEngineX")) + return devanagari_engine_x_new (); + else + return NULL; +} + +void +script_engine_unload (PangoEngine * engine) +{ +} |