1 /* Scripts of Unicode characters.
2 Copyright (C) 2007, 2009-2019 Free Software Foundation, Inc.
3 Written by Bruno Haible <bruno@clisp.org>, 2007.
5 This program is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Lesser General Public License as published
7 by the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */
26 #include "unictype/scripts_byname.h"
31 unsigned int index1
= uc
>> script_header_0
;
32 if (index1
< script_header_1
)
34 int lookup1
= u_script
.level1
[index1
];
37 unsigned int index2
= (uc
>> script_header_2
) & script_header_3
;
38 int lookup2
= u_script
.level2
[lookup1
+ index2
];
41 unsigned int index3
= (uc
& script_header_4
);
42 unsigned char lookup3
= u_script
.level3
[lookup2
+ index3
];
45 return &scripts
[lookup3
];
53 uc_script_byname (const char *script_name
)
55 const struct named_script
*found
;
57 found
= uc_script_lookup (script_name
, strlen (script_name
));
59 return &scripts
[found
->index
];
65 uc_is_script (ucs4_t uc
, const uc_script_t
*script
)
67 return uc_script (uc
) == script
;
71 uc_all_scripts (const uc_script_t
**scriptsp
, size_t *countp
)
74 *countp
= sizeof (scripts
) / sizeof (scripts
[0]);