1 /* Copyright (C) 2013 MORIOKA Tomohiko
2 This file is part of the CONCORD Library.
4 The CONCORD Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The CONCORD Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the CONCORD Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 #include "cos-print.h"
23 cos_encode_char_as_utf8 (int cid, unsigned char *dest, size_t size)
38 else if (cid <= 0x7FF)
42 dest[i++] = (cid >> 6) | 0xC0;
43 dest[i++] = (cid & 0x3F) | 0x80;
50 else if (cid <= 0xFFFF)
54 dest[i++] = (cid >> 12) | 0xE0;
55 dest[i++]= ((cid >> 6) & 0x3F) | 0x80;
56 dest[i++]= (cid & 0x3F) | 0x80;
63 else if (cid <= 0x1FFFFF)
67 dest[i++]= (cid >> 18) | 0xF0;
68 dest[i++]= ((cid >> 12) & 0x3F) | 0x80;
69 dest[i++]= ((cid >> 6) & 0x3F) | 0x80;
70 dest[i++]= (cid & 0x3F) | 0x80;
77 else if (cid <= 0x3FFFFFF)
81 dest[i++]= (cid >> 24) | 0xF8;
82 dest[i++]= ((cid >> 18) & 0x3F) | 0x80;
83 dest[i++]= ((cid >> 12) & 0x3F) | 0x80;
84 dest[i++]= ((cid >> 6) & 0x3F) | 0x80;
85 dest[i++]= (cid & 0x3F) | 0x80;
96 dest[i++]= (cid >> 30) | 0xFC;
97 dest[i++]= ((cid >> 24) & 0x3F) | 0x80;
98 dest[i++]= ((cid >> 18) & 0x3F) | 0x80;
99 dest[i++]= ((cid >> 12) & 0x3F) | 0x80;
100 dest[i++]= ((cid >> 6) & 0x3F) | 0x80;
101 dest[i++]= (cid & 0x3F) | 0x80;