5469607a00
git-svn-id: http://skia.googlecode.com/svn/trunk@536 2bbb7eff-a529-9590-31e7-b0007b416f81
55 lines
2.6 KiB
C
55 lines
2.6 KiB
C
#ifndef SCRIPT_IDENTIFY_H_
|
|
#define SCRIPT_IDENTIFY_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <harfbuzz-shaper.h>
|
|
|
|
static const uint32_t HB_InvalidCodePoint = 0xffffffffu;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Return the next Unicode code point from a UTF-16 vector
|
|
// chars: a pointer to @len words
|
|
// iter: (input/output) an index into @chars. This is updated.
|
|
// returns: HB_InvalidCodePoint on error and the code point otherwise.
|
|
// -----------------------------------------------------------------------------
|
|
uint32_t utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Like the above, except that the code points are traversed backwards. Thus,
|
|
// on the first call, |iter| should be |len| - 1.
|
|
// -----------------------------------------------------------------------------
|
|
uint32_t utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Return the script of the given code point
|
|
// -----------------------------------------------------------------------------
|
|
HB_Script code_point_to_script(uint32_t cp);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Find the next script run in a UTF-16 string.
|
|
//
|
|
// A script run is a subvector of codepoints, all of which are in the same
|
|
// script. A run will never cut a surrogate pair in half at either end.
|
|
//
|
|
// num_code_points: (output, maybe NULL) the number of code points in the run
|
|
// output: (output) the @pos, @length and @script fields are set on success
|
|
// chars: the UTF-16 string
|
|
// len: the length of @chars, in words
|
|
// iter: (in/out) the current index into the string. This should be 0 for the
|
|
// first call and is updated on exit.
|
|
//
|
|
// returns: non-zero if a script run was found and returned.
|
|
// -----------------------------------------------------------------------------
|
|
char hb_utf16_script_run_next(unsigned *num_code_points, HB_ScriptItem *output,
|
|
const uint16_t *chars, size_t len, ssize_t *iter);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// This is the same as above, except that the input is traversed backwards.
|
|
// Thus, on the first call, |iter| should be |len| - 1.
|
|
// -----------------------------------------------------------------------------
|
|
char hb_utf16_script_run_prev(unsigned *num_code_points, HB_ScriptItem *output,
|
|
const uint16_t *chars, size_t len, ssize_t *iter);
|
|
|
|
#endif
|