georgian_academy.h revision 1ab64890
11c7386f4Smrg/* $XFree86$ */
2602e473dSmrg
321298544Smrg/*
41016ad83Smrg * GEORGIAN-ACADEMY
5b9526c6aSmrg */
6b9526c6aSmrg
71c7386f4Smrgstatic const unsigned short georgian_academy_2uni[32] = {
81016ad83Smrg  /* 0x80 */
91016ad83Smrg  0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
10602e473dSmrg  0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
111c7386f4Smrg  /* 0x90 */
1221298544Smrg  0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
1321298544Smrg  0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
14aa30ed02Smrg};
15b9526c6aSmrg
16602e473dSmrgstatic int
171016ad83Smrggeorgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
181016ad83Smrg{
191016ad83Smrg  unsigned char c = *s;
201016ad83Smrg  if (c >= 0x80 && c < 0xa0)
21b9526c6aSmrg    *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
221016ad83Smrg  else if (c >= 0xc0 && c < 0xe7)
231c7386f4Smrg    *pwc = (ucs4_t) c + 0x1010;
241c7386f4Smrg  else
251c7386f4Smrg    *pwc = (ucs4_t) c;
261c7386f4Smrg  return 1;
271c7386f4Smrg}
281c7386f4Smrg
291c7386f4Smrgstatic const unsigned char georgian_academy_page00[32] = {
301c7386f4Smrg  0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
311c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
321c7386f4Smrg  0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
331c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
341c7386f4Smrg};
351c7386f4Smrgstatic const unsigned char georgian_academy_page01[72] = {
361c7386f4Smrg  0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
371c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
381c7386f4Smrg  0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
39602e473dSmrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
408ffb90f1Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
41602e473dSmrg  0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
42602e473dSmrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
431016ad83Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
441016ad83Smrg  0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
45602e473dSmrg};
461c7386f4Smrgstatic const unsigned char georgian_academy_page02[32] = {
471c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
481c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
491c7386f4Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
50602e473dSmrg  0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
51602e473dSmrg};
52602e473dSmrgstatic const unsigned char georgian_academy_page20[48] = {
53602e473dSmrg  0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
54b9526c6aSmrg  0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
55aa30ed02Smrg  0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
56aa30ed02Smrg  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
57b9526c6aSmrg  0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
58aa30ed02Smrg  0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
59aa30ed02Smrg};
60602e473dSmrg
61602e473dSmrgstatic int
62602e473dSmrggeorgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
63602e473dSmrg{
641c7386f4Smrg  unsigned char c = 0;
651c7386f4Smrg  if (wc < 0x0080) {
661c7386f4Smrg    *r = wc;
671c7386f4Smrg    return 1;
681c7386f4Smrg  }
691c7386f4Smrg  else if (wc >= 0x0080 && wc < 0x00a0)
701c7386f4Smrg    c = georgian_academy_page00[wc-0x0080];
711c7386f4Smrg  else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
721c7386f4Smrg    c = wc;
731c7386f4Smrg  else if (wc >= 0x0150 && wc < 0x0198)
741c7386f4Smrg    c = georgian_academy_page01[wc-0x0150];
75602e473dSmrg  else if (wc >= 0x02c0 && wc < 0x02e0)
76602e473dSmrg    c = georgian_academy_page02[wc-0x02c0];
77602e473dSmrg  else if (wc >= 0x10d0 && wc < 0x10f7)
78602e473dSmrg    c = wc-0x1010;
79602e473dSmrg  else if (wc >= 0x2010 && wc < 0x2040)
80602e473dSmrg    c = georgian_academy_page20[wc-0x2010];
81602e473dSmrg  else if (wc == 0x2122)
82602e473dSmrg    c = 0x99;
83602e473dSmrg  if (c != 0) {
84602e473dSmrg    *r = c;
85602e473dSmrg    return 1;
86602e473dSmrg  }
87602e473dSmrg  return RET_ILSEQ;
88602e473dSmrg}
89602e473dSmrg