jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Data type for holding color values. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: An integral type representing an OpenType 'name' table name identifier. jpayne@68: There are predefined name IDs, as well as name IDs return from other jpayne@68: API. These can be used to fetch name strings from a font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The default code point for replacing invalid characters in a given encoding. jpayne@68: Set to U+FFFD REPLACEMENT CHARACTER. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See Unicode 6.1 for details on the maximum decomposition length. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Makes a writable copy of @blob. jpayne@68: jpayne@68: jpayne@68: New blob, or nullptr if allocation failed. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: A blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates a new "blob" object wrapping @data. The @mode parameter is used jpayne@68: to negotiate ownership and lifecycle of @data. jpayne@68: jpayne@68: jpayne@68: New blob, or the empty blob if something failed or if @length is jpayne@68: zero. Destroy with hb_blob_destroy(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Pointer to blob data. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Length of @data in bytes. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Memory mode for @data. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Data parameter to pass to @destroy. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Callback to call when @data is not needed anymore. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: A hb_blob_t pointer with the content of the file jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font filename. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns a blob that represents a range of bytes in @parent. The new jpayne@68: blob is always created with %HB_MEMORY_MODE_READONLY, meaning that it jpayne@68: will never modify data in the parent blob. The parent data is not jpayne@68: expected to be modified, and will result in undefined behavior if it jpayne@68: is. jpayne@68: jpayne@68: Makes @parent immutable. jpayne@68: jpayne@68: jpayne@68: New blob, or the empty blob if something failed or if jpayne@68: @length is zero or @offset is beyond the end of @parent's data. Destroy jpayne@68: with hb_blob_destroy(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Parent blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Start offset of sub-blob within @parent, in bytes. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Length of sub-blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Decreases the reference count on @blob, and if it reaches zero, destroys jpayne@68: @blob, freeing all memory, possibly calling the destroy-callback the blob jpayne@68: was created for if it has not been called already. jpayne@68: jpayne@68: See TODO:link object types for more information. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tries to make blob data writable (possibly copying it) and jpayne@68: return pointer to data. jpayne@68: jpayne@68: Fails if blob has been made immutable, or if memory allocation jpayne@68: fails. jpayne@68: jpayne@68: jpayne@68: Writable blob data, jpayne@68: or %NULL if failed. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output length of the writable data. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns the singleton empty blob. jpayne@68: jpayne@68: See TODO:link object types for more information. jpayne@68: jpayne@68: jpayne@68: the empty blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of blob data in bytes. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: key for data to get. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: TODO jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Increases the reference count on @blob. jpayne@68: jpayne@68: See TODO:link object types for more information. jpayne@68: jpayne@68: jpayne@68: @blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: key for data to set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: data to set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: callback to call when @data is not needed anymore. jpayne@68: jpayne@68: jpayne@68: jpayne@68: whether to replace an existing data with the same key. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Appends a character with the Unicode value of @codepoint to @buffer, and jpayne@68: gives it the initial cluster value of @cluster. Clusters can be any thing jpayne@68: the client wants, they are usually used to refer to the index of the jpayne@68: character in the input text stream and are output in jpayne@68: #hb_glyph_info_t.cluster field. jpayne@68: jpayne@68: This function does not check the validity of @codepoint, it is up to the jpayne@68: caller to ensure it is a valid Unicode code point. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode code point. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the cluster value of @codepoint. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Appends characters from @text array to @buffer. The @item_offset is the jpayne@68: position of the first character from @text that will be appended, and jpayne@68: @item_length is the number of character. When shaping part of a larger text jpayne@68: (e.g. a run of text from a paragraph), instead of passing just the substring jpayne@68: corresponding to the run, it is preferable to pass the whole jpayne@68: paragraph and specify the run start and length as @item_offset and jpayne@68: @item_length, respectively, to give HarfBuzz the full context to be able, jpayne@68: for example, to do cross-run Arabic shaping or properly handle combining jpayne@68: marks at stat of run. jpayne@68: jpayne@68: This function does not check the validity of @text, it is up to the caller jpayne@68: to ensure it contains a valid Unicode code points. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a #hb_buffer_t to append characters to. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of Unicode code points to append. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of the @text, or -1 if it is %NULL terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the offset of the first code point to add to the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the number of code points to add to the @buffer, or -1 for the jpayne@68: end of @text (assuming it is %NULL terminated). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Similar to hb_buffer_add_codepoints(), but allows only access to first 256 jpayne@68: Unicode code points that can fit in 8-bit strings. jpayne@68: jpayne@68: <note>Has nothing to do with non-Unicode Latin-1 encoding.</note> jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of UTF-8 jpayne@68: characters to append. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of the @text, or -1 if it is %NULL terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the offset of the first character to add to the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the number of characters to add to the @buffer, or -1 for the jpayne@68: end of @text (assuming it is %NULL terminated). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_add_codepoints(). jpayne@68: jpayne@68: Replaces invalid UTF-16 characters with the @buffer replacement code point, jpayne@68: see hb_buffer_set_replacement_codepoint(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of UTF-16 characters to append. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of the @text, or -1 if it is %NULL terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the offset of the first character to add to the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the number of characters to add to the @buffer, or -1 for the jpayne@68: end of @text (assuming it is %NULL terminated). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_add_codepoints(). jpayne@68: jpayne@68: Replaces invalid UTF-32 characters with the @buffer replacement code point, jpayne@68: see hb_buffer_set_replacement_codepoint(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of UTF-32 characters to append. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of the @text, or -1 if it is %NULL terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the offset of the first character to add to the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the number of characters to add to the @buffer, or -1 for the jpayne@68: end of @text (assuming it is %NULL terminated). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_add_codepoints(). jpayne@68: jpayne@68: Replaces invalid UTF-8 characters with the @buffer replacement code point, jpayne@68: see hb_buffer_set_replacement_codepoint(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of UTF-8 jpayne@68: characters to append. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of the @text, or -1 if it is %NULL terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the offset of the first character to add to the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the number of characters to add to the @buffer, or -1 for the jpayne@68: end of @text (assuming it is %NULL terminated). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Check if allocating memory for the buffer succeeded. jpayne@68: jpayne@68: jpayne@68: %true if @buffer memory allocation succeeded, %false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Append (part of) contents of another buffer to this buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: source #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: start index into source buffer to copy. Use 0 to copy from start of buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: end index into source buffer to copy. Use @HB_FEATURE_GLOBAL_END to copy to end of buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Similar to hb_buffer_reset(), but does not clear the Unicode functions and jpayne@68: the replacement code point. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Return cluster values grouped by graphemes into jpayne@68: monotone order. jpayne@68: jpayne@68: jpayne@68: Return cluster values grouped into monotone order. jpayne@68: jpayne@68: jpayne@68: Don't group cluster values. jpayne@68: jpayne@68: jpayne@68: Default cluster level, jpayne@68: equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Initial value for new buffer. jpayne@68: jpayne@68: jpayne@68: The buffer contains input characters (before shaping). jpayne@68: jpayne@68: jpayne@68: The buffer contains output glyphs (after shaping). jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates a new #hb_buffer_t with all properties to defaults. jpayne@68: jpayne@68: jpayne@68: jpayne@68: A newly allocated #hb_buffer_t with a reference count of 1. The initial jpayne@68: reference count should be released with hb_buffer_destroy() when you are done jpayne@68: using the #hb_buffer_t. This function never returns %NULL. If memory cannot jpayne@68: be allocated, a special #hb_buffer_t object will be returned on which jpayne@68: hb_buffer_allocation_successful() returns %false. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Deallocate the @buffer. jpayne@68: Decreases the reference count on @buffer by one. If the result is zero, then jpayne@68: @buffer and all associated resources are freed. See hb_buffer_reference(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: If dottedcircle_glyph is (hb_codepoint_t) -1 then %HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT jpayne@68: and %HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT are never returned. This should be used by most jpayne@68: callers if just comparing two buffers is needed. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: other buffer to compare to. jpayne@68: jpayne@68: jpayne@68: jpayne@68: glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1. jpayne@68: jpayne@68: jpayne@68: jpayne@68: allowed absolute difference in position values. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the default buffer flag. jpayne@68: jpayne@68: jpayne@68: flag indicating that special handling of the beginning jpayne@68: of text paragraph can be applied to this buffer. Should usually jpayne@68: be set, unless you are passing to the buffer only part jpayne@68: of the text without the full context. jpayne@68: jpayne@68: jpayne@68: flag indicating that special handling of the end of text jpayne@68: paragraph can be applied to this buffer, similar to jpayne@68: @HB_BUFFER_FLAG_BOT. jpayne@68: jpayne@68: jpayne@68: flag indication that character with Default_Ignorable jpayne@68: Unicode property should use the corresponding glyph jpayne@68: from the font, instead of hiding them (done by jpayne@68: replacing them with the space glyph and zeroing the jpayne@68: advance width.) This flag takes precedence over jpayne@68: @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES. jpayne@68: jpayne@68: jpayne@68: flag indication that character with Default_Ignorable jpayne@68: Unicode property should be removed from glyph string jpayne@68: instead of hiding them (done by replacing them with the jpayne@68: space glyph and zeroing the advance width.) jpayne@68: @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes jpayne@68: precedence over this flag. Since: 1.8.0 jpayne@68: jpayne@68: jpayne@68: flag indicating that a dotted circle should jpayne@68: not be inserted in the rendering of incorrect jpayne@68: character sequences (such at <0905 093E>). Since: 2.4 jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: see hb_buffer_set_content_type(). jpayne@68: jpayne@68: jpayne@68: The type of @buffer contents. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_direction() jpayne@68: jpayne@68: jpayne@68: The direction of the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_flags(). jpayne@68: jpayne@68: jpayne@68: The @buffer flags. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns @buffer glyph information array. Returned pointer jpayne@68: is valid as long as @buffer contents are not modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: The @buffer glyph information array. jpayne@68: The value valid as long as buffer has not been modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output array length. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns @buffer glyph position array. Returned pointer jpayne@68: is valid as long as @buffer contents are not modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: The @buffer glyph position array. jpayne@68: The value valid as long as buffer has not been modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output length. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_invisible_glyph(). jpayne@68: jpayne@68: jpayne@68: The @buffer invisible #hb_codepoint_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_language(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_language_t of the buffer. Must not be freed by the caller. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns the number of items in the buffer. jpayne@68: jpayne@68: jpayne@68: The @buffer length. jpayne@68: The value valid as long as buffer has not been modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_replacement_codepoint(). jpayne@68: jpayne@68: jpayne@68: The @buffer replacement #hb_codepoint_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_buffer_set_script(). jpayne@68: jpayne@68: jpayne@68: The #hb_script_t of the @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets @props to the #hb_segment_properties_t of @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the output #hb_segment_properties_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets unset buffer segment properties based on buffer Unicode jpayne@68: contents. If buffer is not empty, it must have content type jpayne@68: %HB_BUFFER_CONTENT_TYPE_UNICODE. jpayne@68: jpayne@68: If buffer script is not set (ie. is %HB_SCRIPT_INVALID), it jpayne@68: will be set to the Unicode script of the first character in jpayne@68: the buffer that has a script other than %HB_SCRIPT_COMMON, jpayne@68: %HB_SCRIPT_INHERITED, and %HB_SCRIPT_UNKNOWN. jpayne@68: jpayne@68: Next, if buffer direction is not set (ie. is %HB_DIRECTION_INVALID), jpayne@68: it will be set to the natural horizontal direction of the jpayne@68: buffer script as returned by hb_script_get_horizontal_direction(). jpayne@68: If hb_script_get_horizontal_direction() returns %HB_DIRECTION_INVALID, jpayne@68: then %HB_DIRECTION_LTR is used. jpayne@68: jpayne@68: Finally, if buffer language is not set (ie. is %HB_LANGUAGE_INVALID), jpayne@68: it will be set to the process's default language as returned by jpayne@68: hb_language_get_default(). This may change in the future by jpayne@68: taking buffer script into consideration when choosing a language. jpayne@68: Note that hb_language_get_default() is NOT threadsafe the first time jpayne@68: it is called. See documentation for that function for details. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Reorders a glyph buffer to have canonical in-cluster glyph order / position. jpayne@68: The resulting clusters should behave identical to pre-reordering clusters. jpayne@68: jpayne@68: <note>This has nothing to do with Unicode normalization.</note> jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Pre allocates memory for @buffer to fit at least @size number of items. jpayne@68: jpayne@68: jpayne@68: %true if @buffer memory allocation succeeded, %false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: number of items to pre allocate. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Increases the reference count on @buffer by one. This prevents @buffer from jpayne@68: being destroyed until a matching call to hb_buffer_destroy() is made. jpayne@68: jpayne@68: jpayne@68: jpayne@68: The referenced #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Resets the buffer to its initial status, as if it was just newly created jpayne@68: with hb_buffer_create(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Reverses buffer contents. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Reverses buffer clusters. That is, the buffer contents are jpayne@68: reversed, then each cluster (consecutive items having the jpayne@68: same cluster number) are reversed again. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Reverses buffer contents between start to end. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: start index. jpayne@68: jpayne@68: jpayne@68: jpayne@68: end index. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). jpayne@68: jpayne@68: serialize glyph names, clusters and positions. jpayne@68: jpayne@68: jpayne@68: do not serialize glyph cluster. jpayne@68: jpayne@68: jpayne@68: do not serialize glyph position information. jpayne@68: jpayne@68: jpayne@68: do no serialize glyph name. jpayne@68: jpayne@68: jpayne@68: serialize glyph extents. jpayne@68: jpayne@68: jpayne@68: serialize glyph flags. Since: 1.5.0 jpayne@68: jpayne@68: jpayne@68: do not serialize glyph advances, jpayne@68: glyph offsets will reflect absolute glyph positions. Since: 1.8.0 jpayne@68: jpayne@68: jpayne@68: jpayne@68: Parses a string into an #hb_buffer_serialize_format_t. Does not check if jpayne@68: @str is a valid buffer serialization format, use jpayne@68: hb_buffer_serialize_list_formats() to get the list of supported formats. jpayne@68: jpayne@68: jpayne@68: The parsed #hb_buffer_serialize_format_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a string to parse jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: length of @str, or -1 if string is %NULL terminated jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The buffer serialization and de-serialization format used in jpayne@68: hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). jpayne@68: jpayne@68: a human-readable, plain text format. jpayne@68: jpayne@68: jpayne@68: a machine-readable JSON format. jpayne@68: jpayne@68: jpayne@68: invalid format. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts @format to the string corresponding it, or %NULL if it is not a valid jpayne@68: #hb_buffer_serialize_format_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: A %NULL terminated string corresponding to @format. Should not be freed. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_serialize_format_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Serializes @buffer into a textual representation of its glyph content, jpayne@68: useful for showing the contents of the buffer, for example during debugging. jpayne@68: There are currently two supported serialization formats: jpayne@68: jpayne@68: ## text jpayne@68: A human-readable, plain text format. jpayne@68: The serialized glyphs will look something like: jpayne@68: jpayne@68: ``` jpayne@68: [uni0651=0@518,0+0|uni0628=0+1897] jpayne@68: ``` jpayne@68: - The serialized glyphs are delimited with `[` and `]`. jpayne@68: - Glyphs are separated with `|` jpayne@68: - Each glyph starts with glyph name, or glyph index if jpayne@68: #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then, jpayne@68: - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster. jpayne@68: - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format: jpayne@68: - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then, jpayne@68: - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then, jpayne@68: - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the jpayne@68: #hb_glyph_extents_t in the format jpayne@68: `&lt;x_bearing,y_bearing,width,height&gt;` jpayne@68: jpayne@68: ## json jpayne@68: TODO. jpayne@68: jpayne@68: jpayne@68: The number of serialized items. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the first item in @buffer to serialize. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the last item in @buffer to serialize. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output string to jpayne@68: write serialized buffer into. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the size of @buf. jpayne@68: jpayne@68: jpayne@68: jpayne@68: if not %NULL, will be set to the number of byes written into @buf. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_font_t used to shape this buffer, needed to jpayne@68: read glyph names and extents. If %NULL, and empty font will be used. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_buffer_serialize_format_t to use for formatting the output. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_buffer_serialize_flags_t that control what glyph properties jpayne@68: to serialize. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns a list of supported buffer serialization formats. jpayne@68: jpayne@68: jpayne@68: jpayne@68: A string array of buffer serialization formats. Should not be freed. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the type of @buffer contents, buffers are either empty, contain jpayne@68: characters (before shaping) or glyphs (the result of shaping). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the type of buffer contents to set jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Set the text flow direction of the buffer. No shaping can happen without jpayne@68: setting @buffer direction, and it controls the visual direction for the jpayne@68: output glyphs; for RTL direction the glyphs will be reversed. Many layout jpayne@68: features depend on the proper setting of the direction, for example, jpayne@68: reversing RTL text before shaping, then shaping with LTR direction is not jpayne@68: the same as keeping the text in logical order and shaping with RTL jpayne@68: direction. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_direction_t of the @buffer jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets @buffer flags to @flags. See #hb_buffer_flags_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the buffer flags to set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the #hb_codepoint_t that replaces invisible characters in jpayne@68: the shaping result. If set to zero (default), the glyph for the jpayne@68: U+0020 SPACE character is used. Otherwise, this value is used jpayne@68: verbatim. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the invisible #hb_codepoint_t jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the language of @buffer to @language. jpayne@68: jpayne@68: Languages are crucial for selecting which OpenType feature to apply to the jpayne@68: buffer which can result in applying language-specific behaviour. Languages jpayne@68: are orthogonal to the scripts, and though they are related, they are jpayne@68: different concepts and should not be confused with each other. jpayne@68: jpayne@68: Use hb_language_from_string() to convert from BCP 47 language tags to jpayne@68: #hb_language_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an hb_language_t to set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Similar to hb_buffer_pre_allocate(), but clears any new items added at the jpayne@68: end. jpayne@68: jpayne@68: jpayne@68: %true if @buffer memory allocation succeeded, %false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the new length of @buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the #hb_codepoint_t that replaces invalid entries for a given encoding jpayne@68: when adding text to @buffer. jpayne@68: jpayne@68: Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the replacement #hb_codepoint_t jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the script of @buffer to @script. jpayne@68: jpayne@68: Script is crucial for choosing the proper shaping behaviour for scripts that jpayne@68: require it (e.g. Arabic) and the which OpenType features defined in the font jpayne@68: to be applied. jpayne@68: jpayne@68: You can pass one of the predefined #hb_script_t values, or use jpayne@68: hb_script_from_string() or hb_script_from_iso15924_tag() to get the jpayne@68: corresponding script from an ISO 15924 script tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_script_t to set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the segment properties of the buffer, a shortcut for calling jpayne@68: hb_buffer_set_direction(), hb_buffer_set_script() and jpayne@68: hb_buffer_set_language() individually. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_segment_properties_t to use. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The main structure holding the input text and its properties before shaping, jpayne@68: and output glyphs and their information after shaping. jpayne@68: jpayne@68: jpayne@68: jpayne@68: color: a #hb_color_t we are interested in its channels. jpayne@68: jpayne@68: jpayne@68: Alpha channel value of the given color jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: color: a #hb_color_t we are interested in its channels. jpayne@68: jpayne@68: jpayne@68: Blue channel value of the given color jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: color: a #hb_color_t we are interested in its channels. jpayne@68: jpayne@68: jpayne@68: Green channel value of the given color jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: color: a #hb_color_t we are interested in its channels. jpayne@68: jpayne@68: jpayne@68: Red channel value of the given color jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Initial, unset direction. jpayne@68: jpayne@68: jpayne@68: Text is set horizontally from left to right. jpayne@68: jpayne@68: jpayne@68: Text is set horizontally from right to left. jpayne@68: jpayne@68: jpayne@68: Text is set vertically from top to bottom. jpayne@68: jpayne@68: jpayne@68: Text is set vertically from bottom to top. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Add table for @tag with data provided by @blob to the face. @face must jpayne@68: be created using hb_face_builder_create(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates a #hb_face_t that can be used with hb_face_builder_add_table(). jpayne@68: After tables are added to the face, it can be compiled to a binary jpayne@68: font file by calling hb_face_reference_blob(). jpayne@68: jpayne@68: jpayne@68: New face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: set to add Unicode characters covered by @face to. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: set to add Variation Selector characters covered by @face to. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: set to add Unicode characters for @variation_selector covered by @face to. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Get number of faces in a blob. jpayne@68: jpayne@68: jpayne@68: Number of faces in @blob jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Retrieves table tags for a face, if possible. jpayne@68: jpayne@68: jpayne@68: total number of tables, or 0 if not possible to list. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: index of first tag to return. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input length of @table_tags array, output number of items written. jpayne@68: jpayne@68: jpayne@68: jpayne@68: array to write tags into. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Parses a string into a #hb_feature_t. jpayne@68: jpayne@68: The format for specifying feature strings follows. All valid CSS jpayne@68: font-feature-settings values other than 'normal' and the global values are jpayne@68: also accepted, though not documented below. CSS string escapes are not jpayne@68: supported. jpayne@68: jpayne@68: The range indices refer to the positions between Unicode characters. The jpayne@68: position before the first character is always 0. jpayne@68: jpayne@68: The format is Python-esque. Here is how it all works: jpayne@68: jpayne@68: <informaltable pgwide='1' align='left' frame='none'> jpayne@68: <tgroup cols='5'> jpayne@68: <thead> jpayne@68: <row><entry>Syntax</entry> <entry>Value</entry> <entry>Start</entry> <entry>End</entry></row> jpayne@68: </thead> jpayne@68: <tbody> jpayne@68: <row><entry>Setting value:</entry></row> jpayne@68: <row><entry>kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> jpayne@68: <row><entry>+kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> jpayne@68: <row><entry>-kern</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row> jpayne@68: <row><entry>kern=0</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row> jpayne@68: <row><entry>kern=1</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> jpayne@68: <row><entry>aalt=2</entry> <entry>2</entry> <entry>0</entry> <entry>∞</entry> <entry>Choose 2nd alternate</entry></row> jpayne@68: <row><entry>Setting index:</entry></row> jpayne@68: <row><entry>kern[]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> jpayne@68: <row><entry>kern[:]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> jpayne@68: <row><entry>kern[5:]</entry> <entry>1</entry> <entry>5</entry> <entry>∞</entry> <entry>Turn feature on, partial</entry></row> jpayne@68: <row><entry>kern[:5]</entry> <entry>1</entry> <entry>0</entry> <entry>5</entry> <entry>Turn feature on, partial</entry></row> jpayne@68: <row><entry>kern[3:5]</entry> <entry>1</entry> <entry>3</entry> <entry>5</entry> <entry>Turn feature on, range</entry></row> jpayne@68: <row><entry>kern[3]</entry> <entry>1</entry> <entry>3</entry> <entry>3+1</entry> <entry>Turn feature on, single char</entry></row> jpayne@68: <row><entry>Mixing it all:</entry></row> jpayne@68: <row><entry>aalt[3:5]=2</entry> <entry>2</entry> <entry>3</entry> <entry>5</entry> <entry>Turn 2nd alternate on for range</entry></row> jpayne@68: </tbody> jpayne@68: </tgroup> jpayne@68: </informaltable> jpayne@68: jpayne@68: jpayne@68: %true if @str is successfully parsed, %false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a string to parse jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: length of @str, or -1 if string is %NULL terminated jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_feature_t to initialize with the parsed values jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_feature_t is the structure that holds information about requested jpayne@68: feature application. The feature will be applied with the given value to all jpayne@68: glyphs which are in clusters between @start (inclusive) and @end (exclusive). jpayne@68: Setting start to @HB_FEATURE_GLOBAL_START and end to @HB_FEATURE_GLOBAL_END jpayne@68: specifies that the feature always applies to the entire buffer. jpayne@68: jpayne@68: jpayne@68: a feature tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: 0 disables the feature, non-zero (usually 1) enables the feature. jpayne@68: For features implemented as lookup type 3 (like 'salt') the @value is a one jpayne@68: based index into the alternates. jpayne@68: jpayne@68: jpayne@68: jpayne@68: the cluster to start applying this feature setting (inclusive). jpayne@68: jpayne@68: jpayne@68: jpayne@68: the cluster to end applying this feature setting (exclusive). jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts a #hb_feature_t into a %NULL-terminated string in the format jpayne@68: understood by hb_feature_from_string(). The client in responsible for jpayne@68: allocating big enough size for @buf, 128 bytes is more than enough. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_feature_t to convert jpayne@68: jpayne@68: jpayne@68: jpayne@68: output string jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the allocated size of @buf jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts a #hb_feature_t into a %NULL-terminated string in the format jpayne@68: understood by hb_feature_from_string(). The client in responsible for jpayne@68: allocating big enough size for @buf, 128 bytes is more than enough. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_feature_t to convert jpayne@68: jpayne@68: jpayne@68: jpayne@68: output string jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the allocated size of @buf jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: parent font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Deprecated. Use hb_font_funcs_set_nominal_glyph_func() and jpayne@68: hb_font_funcs_set_variation_glyph_func() instead. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: callback function. jpayne@68: jpayne@68: jpayne@68: jpayne@68: data to pass to @func. jpayne@68: jpayne@68: jpayne@68: jpayne@68: function to call when @user_data is not needed anymore. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Gets the "point size" of the font. A value of 0 means unset. jpayne@68: jpayne@68: jpayne@68: Point size. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Return value is valid as long as variation coordinates of the font jpayne@68: are not modified. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets font-face of @font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: new face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets parent font of @font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: new parent. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets "point size" of the font. Set to 0 to unset. jpayne@68: jpayne@68: There are 72 points in an inch. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: font size in points. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets design coords of a font from a named instance index. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: named instance index. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_face_t face object from the specified FT_Face. jpayne@68: jpayne@68: This variant of the function does not provide any life-cycle management. jpayne@68: jpayne@68: Most client programs should use hb_ft_face_create_referenced() jpayne@68: (or, perhaps, hb_ft_face_create_cached()) instead. jpayne@68: jpayne@68: If you know you have valid reasons not to use hb_ft_face_create_referenced(), jpayne@68: then it is the client program's responsibility to destroy @ft_face jpayne@68: after the #hb_face_t face object has been destroyed. jpayne@68: jpayne@68: jpayne@68: the new #hb_face_t face object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: FT_Face to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: A callback to call when the face object is not needed anymore jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_face_t face object from the specified FT_Face. jpayne@68: jpayne@68: This variant of the function caches the newly created #hb_face_t jpayne@68: face object, using the @generic pointer of @ft_face. Subsequent function jpayne@68: calls that are passed the same @ft_face parameter will have the same jpayne@68: #hb_face_t returned to them, and that #hb_face_t will be correctly jpayne@68: reference counted. jpayne@68: jpayne@68: However, client programs are still responsible for destroying jpayne@68: @ft_face after the last #hb_face_t face object has been destroyed. jpayne@68: jpayne@68: jpayne@68: the new #hb_face_t face object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: FT_Face to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_face_t face object from the specified FT_Face. jpayne@68: jpayne@68: This is the preferred variant of the hb_ft_face_create* jpayne@68: function family, because it calls FT_Reference_Face() on @ft_face, jpayne@68: ensuring that @ft_face remains alive as long as the resulting jpayne@68: #hb_face_t face object remains alive. Also calls FT_Done_Face() jpayne@68: when the #hb_face_t face object is destroyed. jpayne@68: jpayne@68: Use this version unless you know you have good reasons not to. jpayne@68: jpayne@68: jpayne@68: the new #hb_face_t face object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: FT_Face to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_font_t font object from the specified FT_Face. jpayne@68: jpayne@68: <note>Note: You must set the face size on @ft_face before calling jpayne@68: hb_ft_font_create() on it. Otherwise, HarfBuzz will not pick up jpayne@68: the face size.</note> jpayne@68: jpayne@68: This variant of the function does not provide any life-cycle management. jpayne@68: jpayne@68: Most client programs should use hb_ft_font_create_referenced() jpayne@68: instead. jpayne@68: jpayne@68: If you know you have valid reasons not to use hb_ft_font_create_referenced(), jpayne@68: then it is the client program's responsibility to destroy @ft_face jpayne@68: after the #hb_font_t font object has been destroyed. jpayne@68: jpayne@68: HarfBuzz will use the @destroy callback on the #hb_font_t font object jpayne@68: if it is supplied when you use this function. However, even if @destroy jpayne@68: is provided, it is the client program's responsibility to destroy @ft_face, jpayne@68: and it is the client program's responsibility to ensure that @ft_face is jpayne@68: destroyed only after the #hb_font_t font object has been destroyed. jpayne@68: jpayne@68: jpayne@68: the new #hb_font_t font object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: FT_Face to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: A callback to call when the font object is not needed anymore jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_font_t font object from the specified FT_Face. jpayne@68: jpayne@68: <note>Note: You must set the face size on @ft_face before calling jpayne@68: hb_ft_font_create_references() on it. Otherwise, HarfBuzz will not pick up jpayne@68: the face size.</note> jpayne@68: jpayne@68: This is the preferred variant of the hb_ft_font_create* jpayne@68: function family, because it calls FT_Reference_Face() on @ft_face, jpayne@68: ensuring that @ft_face remains alive as long as the resulting jpayne@68: #hb_font_t font object remains alive. jpayne@68: jpayne@68: Use this version unless you know you have good reasons not to. jpayne@68: jpayne@68: jpayne@68: the new #hb_font_t font object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: FT_Face to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the FT_Load_Glyph load flags of the specified #hb_font_t. jpayne@68: jpayne@68: For more information, see jpayne@68: https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx jpayne@68: jpayne@68: jpayne@68: FT_Load_Glyph flags found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Configures the font-functions structure of the specified jpayne@68: #hb_font_t font object to use FreeType font functions. jpayne@68: jpayne@68: In particular, you can use this function to configure an jpayne@68: existing #hb_face_t face object for use with FreeType font jpayne@68: functions even if that #hb_face_t face object was initially jpayne@68: created with hb_face_create(), and therefore was not jpayne@68: initially configured to use FreeType font functions. jpayne@68: jpayne@68: An #hb_face_t face object created with hb_ft_face_create() jpayne@68: is preconfigured for FreeType font functions and does not jpayne@68: require this function to be used. jpayne@68: jpayne@68: <note>Note: Internally, this function creates an FT_Face. jpayne@68: </note> jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Sets the FT_Load_Glyph load flags for the specified #hb_font_t. jpayne@68: jpayne@68: For more information, see jpayne@68: https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The FreeType load flags to set jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates an #hb_blob_t blob from the specified jpayne@68: GBytes data structure. jpayne@68: jpayne@68: jpayne@68: the new #hb_blob_t blob object jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the GBytes structure to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a Unicode-functions structure that is populated jpayne@68: with the appropriate GLib function for each method. jpayne@68: jpayne@68: jpayne@68: a pointer to the #hb_unicode_funcs_t Unicode-functions structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the GUnicodeScript identifier that corresponds to the jpayne@68: specified #hb_script_t script. jpayne@68: jpayne@68: jpayne@68: the GUnicodeScript identifier found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_script_t to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the #hb_script_t script that corresponds to the jpayne@68: specified GUnicodeScript identifier. jpayne@68: jpayne@68: jpayne@68: the #hb_script_t script found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The GUnicodeScript identifier to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Indicates that if input text is broken at the jpayne@68: beginning of the cluster this glyph is part of, jpayne@68: then both sides need to be re-shaped, as the jpayne@68: result might be different. On the flip side, jpayne@68: it means that when this flag is not present, jpayne@68: then it's safe to break the glyph-run at the jpayne@68: beginning of this cluster, and the two sides jpayne@68: represent the exact same result one would get jpayne@68: if breaking input text at the beginning of jpayne@68: this cluster and shaping the two sides jpayne@68: separately. This can be used to optimize jpayne@68: paragraph layout, by avoiding re-shaping jpayne@68: of each line after line-breaking, or limiting jpayne@68: the reshaping to a small piece around the jpayne@68: breaking point only. jpayne@68: jpayne@68: jpayne@68: All the currently defined flags. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns glyph flags encoded within a #hb_glyph_info_t. jpayne@68: jpayne@68: jpayne@68: The #hb_glyph_flags_t encoded within @info. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a #hb_glyph_info_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_glyph_info_t is the structure that holds information about the jpayne@68: glyphs and their relation to input text. jpayne@68: jpayne@68: jpayne@68: either a Unicode code point (before shaping) or a glyph index jpayne@68: (after shaping). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the index of the character in the original text that corresponds jpayne@68: to this #hb_glyph_info_t, or whatever the client passes to jpayne@68: hb_buffer_add(). More than one #hb_glyph_info_t can have the same jpayne@68: @cluster value, if they resulted from the same character (e.g. one jpayne@68: to many glyph substitution), and when more than one character gets jpayne@68: merged in the same glyph (e.g. many to one glyph substitution) the jpayne@68: #hb_glyph_info_t will have the smallest cluster value of them. jpayne@68: By default some characters are merged into the same cluster jpayne@68: (e.g. combining marks have the same cluster as their bases) jpayne@68: even if they are separate glyphs, hb_buffer_set_cluster_level() jpayne@68: allow selecting more fine-grained cluster handling. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_glyph_position_t is the structure that holds the positions of the jpayne@68: glyph in both horizontal and vertical directions. All positions in jpayne@68: #hb_glyph_position_t are relative to the current point. jpayne@68: jpayne@68: jpayne@68: how much the line advances after drawing this glyph when setting jpayne@68: text in horizontal direction. jpayne@68: jpayne@68: jpayne@68: jpayne@68: how much the line advances after drawing this glyph when setting jpayne@68: text in vertical direction. jpayne@68: jpayne@68: jpayne@68: jpayne@68: how much the glyph moves on the X-axis before drawing it, this jpayne@68: should not affect how much the line advances. jpayne@68: jpayne@68: jpayne@68: jpayne@68: how much the glyph moves on the Y-axis before drawing it, this jpayne@68: should not affect how much the line advances. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the Graphite2 gr_face corresponding to the specified jpayne@68: #hb_face_t face object. jpayne@68: jpayne@68: jpayne@68: the gr_face found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: @hb_face_t to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Functions for querying OpenType Layout features in the font face. jpayne@68: jpayne@68: jpayne@68: Blobs wrap a chunk of binary data to handle lifecycle management of data jpayne@68: while it is passed between client and HarfBuzz. Blobs are primarily used jpayne@68: to create font faces, but also to access font face tables, as well as jpayne@68: pass around other binary data. jpayne@68: jpayne@68: jpayne@68: Buffers serve dual role in HarfBuzz; they hold the input characters that are jpayne@68: passed to hb_shape(), and after shaping they hold the output glyphs. jpayne@68: jpayne@68: jpayne@68: Common data types used across HarfBuzz are defined here. jpayne@68: jpayne@68: jpayne@68: These API have been deprecated in favor of newer API, or because they jpayne@68: were deemed unnecessary. jpayne@68: jpayne@68: jpayne@68: Font face is objects represent a single face in a font family. jpayne@68: More exactly, a font face represents a single face in a binary font file. jpayne@68: Font faces are typically built from a binary blob and a face index. jpayne@68: Font faces are used to create fonts. jpayne@68: jpayne@68: jpayne@68: Font objects represent a font face at a certain size and other jpayne@68: parameters (pixels per EM, points per EM, variation settings.) jpayne@68: Fonts are created from font faces, and are used as input to jpayne@68: hb_shape() among other things. jpayne@68: jpayne@68: jpayne@68: Functions for using HarfBuzz with the FreeType library. jpayne@68: jpayne@68: HarfBuzz supports using FreeType to provide face and jpayne@68: font data. jpayne@68: jpayne@68: <note>Note that FreeType is not thread-safe, therefore these jpayne@68: functions are not thread-safe either.</note> jpayne@68: jpayne@68: jpayne@68: Functions for using HarfBuzz with the GLib library. jpayne@68: jpayne@68: HarfBuzz supports using GLib to provide Unicode data, by attaching jpayne@68: GLib functions to the virtual methods in a #hb_unicode_funcs_t function jpayne@68: structure. jpayne@68: jpayne@68: jpayne@68: Support for using HarfBuzz with the GObject library to provide jpayne@68: type data. jpayne@68: jpayne@68: The types and functions listed here are solely a linkage between jpayne@68: HarfBuzz's public data types and the GTypes used by the GObject framework. jpayne@68: HarfBuzz uses GObject introspection to generate its Python bindings jpayne@68: (and potentially other language bindings); client programs should never need jpayne@68: to access the GObject-integration mechanics. jpayne@68: jpayne@68: For client programs using the GNOME and GTK software stack, please see the jpayne@68: GLib and FreeType integration pages. jpayne@68: jpayne@68: jpayne@68: Functions for using HarfBuzz with fonts that include Graphite features. jpayne@68: jpayne@68: For Graphite features to work, you must be sure that HarfBuzz was compiled jpayne@68: with the `graphite2` shaping engine enabled. Currently, the default is to jpayne@68: not enable `graphite2` shaping. jpayne@68: jpayne@68: jpayne@68: Map objects are integer-to-integer hash-maps. Currently they are jpayne@68: not used in the HarfBuzz public API, but are provided for client's jpayne@68: use if desired. jpayne@68: jpayne@68: jpayne@68: Functions for fetching color-font information from OpenType font faces. jpayne@68: jpayne@68: HarfBuzz supports `COLR`/`CPAL`, `sbix`, `CBDT`, and `SVG` color fonts. jpayne@68: jpayne@68: jpayne@68: Functions for using OpenType fonts with hb_shape(). Note that fonts returned jpayne@68: by hb_font_create() default to using these functions, so most clients would jpayne@68: never need to call these functions directly. jpayne@68: jpayne@68: jpayne@68: Functions for querying OpenType Layout features in the font face. jpayne@68: jpayne@68: jpayne@68: Functions for fetching mathematics layout data from OpenType fonts. jpayne@68: jpayne@68: HarfBuzz itself does not implement a math layout solution. The jpayne@68: functions and types provided can be used by client programs to access jpayne@68: the font data necessary for typesetting OpenType Math layout. jpayne@68: jpayne@68: jpayne@68: Functions for fetching metadata from fonts. jpayne@68: jpayne@68: jpayne@68: Functions for fetching name strings from OpenType fonts. jpayne@68: jpayne@68: jpayne@68: Support functions for OpenType shaping related queries. jpayne@68: jpayne@68: jpayne@68: Functions for fetching information about OpenType Variable Fonts. jpayne@68: jpayne@68: jpayne@68: Set objects represent a mathematical set of integer values. They are jpayne@68: used in non-shaping API to query certain set of characters or glyphs, jpayne@68: or other integer values. jpayne@68: jpayne@68: jpayne@68: Shaping is the central operation of HarfBuzz. Shaping operates on buffers, jpayne@68: which are sequences of Unicode characters that use the same font and have jpayne@68: the same text direction, script, and language. After shaping the buffer jpayne@68: contains the output glyphs and their positions. jpayne@68: jpayne@68: jpayne@68: Shape plans are not used for shaping directly, but can be access to query jpayne@68: certain information about how shaping will perform given a set of input jpayne@68: parameters (script, language, direction, features, etc.) jpayne@68: Most client would not need to deal with shape plans directly. jpayne@68: jpayne@68: jpayne@68: Unicode functions are used to access Unicode character properties. jpayne@68: Client can pass its own Unicode functions to HarfBuzz, or access jpayne@68: the built-in Unicode functions that come with HarfBuzz. jpayne@68: jpayne@68: With the Unicode functions, one can query variour Unicode character jpayne@68: properties, such as General Category, Script, Combining Class, etc. jpayne@68: jpayne@68: jpayne@68: These functions and macros allow accessing version of the HarfBuzz jpayne@68: library used at compile- as well as run-time, and to direct code jpayne@68: conditionally based on those versions, again, at compile- or run-time. jpayne@68: jpayne@68: jpayne@68: Converts @str representing a BCP 47 language tag to the corresponding jpayne@68: #hb_language_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_language_t corresponding to the BCP 47 language tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a string representing jpayne@68: a BCP 47 language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: length of the @str, or -1 if it is %NULL-terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Get default language from current locale. jpayne@68: jpayne@68: Note that the first time this function is called, it calls jpayne@68: "setlocale (LC_CTYPE, nullptr)" to fetch current locale. The underlying jpayne@68: setlocale function is, in many implementations, NOT threadsafe. To avoid jpayne@68: problems, call this function once before multiple threads can call it. jpayne@68: This function is only used from hb_buffer_guess_segment_properties() by jpayne@68: HarfBuzz itself. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_language_from_string(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: A %NULL-terminated string representing the @language. Must not be freed by jpayne@68: the caller. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_language_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_language_from_string(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: A %NULL-terminated string representing the @language. Must not be freed by jpayne@68: the caller. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_language_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a map. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all color layers for the specified glyph index in the specified jpayne@68: face. The list returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: Total number of layers available for the glyph index queried jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The glyph index to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first layer to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of layers to return; jpayne@68: Output = the actual number of layers returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of layers found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the PNG image for a glyph. This function takes a font object, not a face object, jpayne@68: as input. To get an optimally sized PNG blob, the UPEM value must be set on the @font jpayne@68: object. If UPEM is unset, the blob returned will be the largest PNG available. jpayne@68: jpayne@68: jpayne@68: An #hb_blob_t containing the PNG image for the glyph, if available jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: a glyph index jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the SVG document for a glyph. The blob may be either plain text or gzip-encoded. jpayne@68: jpayne@68: jpayne@68: An #hb_blob_t containing the SVG document of the glyph, if available jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: a svg glyph index jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face includes any `COLR` color layers. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face includes a `CPAL` color-palette table. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face has PNG glyph images (either in `CBDT` or `sbix` tables). jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face includes any `SVG` glyph images. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Pairs of glyph and color index. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the `name` table Name ID that provides display names for jpayne@68: the specificed color in a face's `CPAL` color palette. jpayne@68: jpayne@68: Display names can be generic (e.g., "Background") or specific jpayne@68: (e.g., "Eye color"). jpayne@68: jpayne@68: jpayne@68: the Name ID found for the color. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the color jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Default indicating that there is nothing special jpayne@68: to note about a color palette. jpayne@68: jpayne@68: jpayne@68: Flag indicating that the color jpayne@68: palette is appropriate to use when displaying the font on a light background such as white. jpayne@68: jpayne@68: jpayne@68: Flag indicating that the color jpayne@68: palette is appropriate to use when displaying the font on a dark background such as black. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of the colors in a color palette. jpayne@68: jpayne@68: After calling this function, @colors will be filled with the palette jpayne@68: colors. If @colors is NULL, the function will just return the number jpayne@68: of total colors without storing any actual colors; this can be used jpayne@68: for allocating a buffer of suitable size before calling jpayne@68: hb_ot_color_palette_get_colors() a second time. jpayne@68: jpayne@68: jpayne@68: the total number of colors in the palette jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: the index of the color palette to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first color to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of colors to return; jpayne@68: Output = the actual number of colors returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of #hb_color_t records found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the number of color palettes in a face. jpayne@68: jpayne@68: jpayne@68: the number of palettes found jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the flags defined for a color palette. jpayne@68: jpayne@68: jpayne@68: the #hb_ot_color_palette_flags_t of the requested color palette jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the color palette jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the `name` table Name ID that provides display names for jpayne@68: a `CPAL` color palette. jpayne@68: jpayne@68: Palette display names can be generic (e.g., "Default") or provide jpayne@68: specific, themed names (e.g., "Spring", "Summer", "Fall", and "Winter"). jpayne@68: jpayne@68: jpayne@68: the Named ID found for the palette. jpayne@68: If the requested palette has no name the result is #HB_OT_NAME_ID_INVALID. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the color palette jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags jpayne@68: jpayne@68: The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek. jpayne@68: In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise. jpayne@68: (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these jpayne@68: characters are not rotated.) jpayne@68: jpayne@68: jpayne@68: The hanging baseline. In horizontal direction, this is the horizontal jpayne@68: line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode, jpayne@68: for Tibetan (or some other similar script) characters rotated 90 degrees clockwise. jpayne@68: jpayne@68: jpayne@68: Ideographic character face bottom or left edge, jpayne@68: if the direction is horizontal or vertical, respectively. jpayne@68: jpayne@68: jpayne@68: Ideographic character face top or right edge, jpayne@68: if the direction is horizontal or vertical, respectively. jpayne@68: jpayne@68: jpayne@68: Ideographic em-box bottom or left edge, jpayne@68: if the direction is horizontal or vertical, respectively. jpayne@68: jpayne@68: jpayne@68: Ideographic em-box top or right edge baseline, jpayne@68: if the direction is horizontal or vertical, respectively. jpayne@68: jpayne@68: jpayne@68: The baseline about which mathematical characters are centered. jpayne@68: In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all feature indexes in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified scripts, languages, and features. jpayne@68: If no list of scripts is provided, all scripts will be queried. If no list jpayne@68: of languages is provided, all languages will be queried. If no list of jpayne@68: features is provided, all features will be queried. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of scripts to collect features for jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of languages to collect features for jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of features to collect jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of feature indexes found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all feature-lookup indexes in the specified face's GSUB jpayne@68: table or GPOS table, underneath the specified scripts, languages, and jpayne@68: features. If no list of scripts is provided, all scripts will be queried. jpayne@68: If no list of languages is provided, all languages will be queried. If no jpayne@68: list of features is provided, all features will be queried. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of scripts to collect lookups for jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of languages to collect lookups for jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of features to collect lookups for jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of lookup indexes found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of the characters defined as having a variant under the specified jpayne@68: "Character Variant" ("cvXX") feature tag. jpayne@68: jpayne@68: jpayne@68: Number of total sample characters in the cvXX feature. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: table tag to query, "GSUB" or "GPOS". jpayne@68: jpayne@68: jpayne@68: jpayne@68: index of feature to query. jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first character to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of characters to return; jpayne@68: Output = the actual number of characters returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: A buffer pointer. jpayne@68: The Unicode codepoints of the characters for which this feature provides jpayne@68: glyph variants. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all lookups enumerated for the specified feature, in jpayne@68: the specified face's GSUB table or GPOS table. The list returned will jpayne@68: begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested feature jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first lookup to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of lookups to return; jpayne@68: Output = the actual number of lookups returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of lookup indexes found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches name indices from feature parameters for "Stylistic Set" ('ssXX') or jpayne@68: "Character Variant" ('cvXX') features. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: table tag to query, "GSUB" or "GPOS". jpayne@68: jpayne@68: jpayne@68: jpayne@68: index of feature to query. jpayne@68: jpayne@68: jpayne@68: jpayne@68: The ‘name’ table name ID that specifies a string jpayne@68: for a user-interface label for this feature. (May be NULL.) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The ‘name’ table name ID that specifies a string jpayne@68: that an application can use for tooltip text for this jpayne@68: feature. (May be NULL.) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The ‘name’ table name ID that specifies sample text jpayne@68: that illustrates the effect of this feature. (May be NULL.) jpayne@68: jpayne@68: jpayne@68: jpayne@68: Number of named parameters. (May be zero.) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The first ‘name’ table name ID used to specify jpayne@68: strings for user-interface labels for the feature jpayne@68: parameters. (Must be zero if numParameters is zero.) jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all lookups enumerated for the specified feature, in jpayne@68: the specified face's GSUB table or GPOS table, enabled at the specified jpayne@68: variations index. The list returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the feature to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the feature variation to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first lookup to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of lookups to return; jpayne@68: Output = the actual number of lookups returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of lookups found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all attachment points for the specified glyph in the GDEF jpayne@68: table of the face. The list returned will begin at the offset provided. jpayne@68: jpayne@68: Useful if the client program wishes to cache the list. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_face_t to work on jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_codepoint_t code point to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first attachment point to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of attachment points to return; jpayne@68: Output = the actual number of attachment points returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of attachment points found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a baseline value from the face. jpayne@68: jpayne@68: jpayne@68: if found baseline value in the font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font jpayne@68: jpayne@68: jpayne@68: jpayne@68: a baseline tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: text direction. jpayne@68: jpayne@68: jpayne@68: jpayne@68: script tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: language tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: baseline value if found. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the GDEF class of the requested glyph in the specified face. jpayne@68: jpayne@68: jpayne@68: The #hb_ot_layout_glyph_class_t glyph class of the given code jpayne@68: point in the GDEF table of the face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_face_t to work on jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_codepoint_t code point to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Retrieves the set of all glyphs from the face that belong to the requested jpayne@68: glyph class in the face's GDEF table. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_face_t to work on jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_ot_layout_glyph_class_t GDEF class to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_set_t set of all glyphs belonging to the requested jpayne@68: class. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of the caret positions defined for a ligature glyph in the GDEF jpayne@68: table of the font. The list returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_font_t to work on jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_direction_t text direction to use jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_codepoint_t code point to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first caret position to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of caret positions to return; jpayne@68: Output = the actual number of caret positions returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of caret positions found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches optical-size feature data (i.e., the `size` feature from GPOS). Note that jpayne@68: the subfamily_id and the subfamily name string (accessible via the subfamily_name_id) jpayne@68: as used here are defined as pertaining only to fonts within a font family that differ jpayne@68: specifically in their respective size ranges; other ways to differentiate fonts within jpayne@68: a subfamily are not covered by the `size` feature. jpayne@68: jpayne@68: For more information on this distinction, see the [`size` feature documentation]( jpayne@68: https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size). jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The design size of the face jpayne@68: jpayne@68: jpayne@68: jpayne@68: The identifier of the face within the font subfamily jpayne@68: jpayne@68: jpayne@68: jpayne@68: The ‘name’ table name ID of the face within the font subfamily jpayne@68: jpayne@68: jpayne@68: jpayne@68: The minimum size of the recommended size range for the face jpayne@68: jpayne@68: jpayne@68: jpayne@68: The maximum size of the recommended size range for the face jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The GDEF classes defined for glyphs. jpayne@68: jpayne@68: Glyphs not matching the other classifications jpayne@68: jpayne@68: jpayne@68: Spacing, single characters, capable of accepting marks jpayne@68: jpayne@68: jpayne@68: Glyphs that represent ligation of multiple characters jpayne@68: jpayne@68: jpayne@68: Non-spacing, combining glyphs that represent marks jpayne@68: jpayne@68: jpayne@68: Spacing glyphs that represent part of a single character jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face has any glyph classes defined in its GDEF table. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: true if the face has GPOS data, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether the specified face includes any GSUB substitutions. jpayne@68: jpayne@68: jpayne@68: true if data found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the index of a given feature tag in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified script and language. jpayne@68: jpayne@68: jpayne@68: true if the feature is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_tag_t of the feature tag requested jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested feature jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all features in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified script and language. The list jpayne@68: returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first feature tag to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of feature tags to return; jpayne@68: Output: the actual number of feature tags returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of feature indexes found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all features in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified script and language. The list jpayne@68: returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first feature tag to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of feature tags to return; jpayne@68: Output = the actual number of feature tags returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of #hb_tag_t feature tags found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the tag of a requested feature index in the given face's GSUB or GPOS table, jpayne@68: underneath the specified script and language. jpayne@68: jpayne@68: jpayne@68: true if the feature is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested feature jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_tag_t of the requested feature jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the index of a requested feature in the given face's GSUB or GPOS table, jpayne@68: underneath the specified script and language. jpayne@68: jpayne@68: jpayne@68: true if the feature is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested feature jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all glyphs affected by the specified lookup in the jpayne@68: specified face's GSUB table or GPOS table. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the feature lookup to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of glyphs preceding the substitution range jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of input glyphs that would be substituted by the lookup jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of glyphs following the substitution range jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of glyphs that would be the substitued output of the lookup jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches alternates of a glyph from a given GSUB lookup index. jpayne@68: jpayne@68: jpayne@68: total number of alternates found in the specific lookup index for the given glyph id. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: index of the feature lookup to query. jpayne@68: jpayne@68: jpayne@68: jpayne@68: a glyph id. jpayne@68: jpayne@68: jpayne@68: jpayne@68: starting offset. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of alternate glyphs to return; jpayne@68: Output = the actual number of alternate glyphs returned (may be zero). jpayne@68: jpayne@68: jpayne@68: jpayne@68: A glyphs buffer. jpayne@68: Alternate glyphs associated with the glyph id. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Compute the transitive closure of glyphs needed for a jpayne@68: specified lookup. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: index of the feature lookup to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of glyphs comprising the transitive closure of the lookup jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a specified lookup in the specified face would jpayne@68: trigger a substitution on the given glyph sequence. jpayne@68: jpayne@68: jpayne@68: true if a substitution would be triggered, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the lookup to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: The sequence of glyphs to query for substitution jpayne@68: jpayne@68: jpayne@68: jpayne@68: The length of the glyph sequence jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_bool_t indicating whether substitutions should be context-free jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Compute the transitive closure of glyphs needed for all of the jpayne@68: provided lookups. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The set of lookups to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of glyphs comprising the transitive closure of the lookups jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the index of a given language tag in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified script tag. jpayne@68: ?? jpayne@68: ?? jpayne@68: jpayne@68: jpayne@68: true if the language tag is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_tag_t of the requested language jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of language tags in the given face's GSUB or GPOS table, underneath jpayne@68: the specified script index. The list returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first language tag to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of language tags to return; jpayne@68: Output = the actual number of language tags returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of language tags found in the table jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the index of a given language tag in the specified face's GSUB table jpayne@68: or GPOS table, underneath the specified script index. jpayne@68: jpayne@68: jpayne@68: true if the language tag is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: The number of languages in the specified script jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of language tags jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested language jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Deprecated since 2.0.0 jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of #hb_tag_t script tags jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_tag_t of the script tag requested jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of feature variations in the specified face's GSUB table jpayne@68: or GPOS table, at the specified variation coordinates. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: The variation coordinates to query jpayne@68: jpayne@68: jpayne@68: jpayne@68: The number of variation coorinates jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of feature variations found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the index if a given script tag in the specified face's GSUB table jpayne@68: or GPOS table. jpayne@68: jpayne@68: jpayne@68: true if the script is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_tag_t of the script tag requested jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all feature tags in the given face's GSUB or GPOS table. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first feature tag to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of feature tags to return; jpayne@68: Output = the actual number of feature tags returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of feature tags found in the table jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the total number of lookups enumerated in the specified jpayne@68: face's GSUB table or GPOS table. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a list of all scripts enumerated in the specified face's GSUB table jpayne@68: or GPOS table. The list returned will begin at the offset provided. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first script tag to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of script tags to return; jpayne@68: Output = the actual number of script tags returned (may be zero) jpayne@68: jpayne@68: jpayne@68: jpayne@68: The array of #hb_tag_t script tags found for the query jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS jpayne@68: jpayne@68: jpayne@68: jpayne@68: Number of script tags in the array jpayne@68: jpayne@68: jpayne@68: jpayne@68: Array of #hb_tag_t script tags jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the requested script jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_tag_t of the requested script jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The 'MATH' table constants specified at jpayne@68: https://docs.microsoft.com/en-us/typography/opentype/spec/math jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the specified math constant. For most constants, the value returned jpayne@68: is an #hb_position_t. jpayne@68: jpayne@68: However, if the requested constant is #HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN, jpayne@68: #HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN or jpayne@68: #HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN, then the return value is jpayne@68: an integer between 0 and 100 representing that percentage. jpayne@68: jpayne@68: jpayne@68: the requested constant or zero jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_ot_math_constant_t the constant to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the GlyphAssembly for the specified font, glyph index, and direction. jpayne@68: Returned are a list of #hb_ot_math_glyph_part_t glyph parts that can be jpayne@68: used to draw the glyph and an italics-correction value (if one is defined jpayne@68: in the font). jpayne@68: jpayne@68: <note>The @direction parameter is only used to select between horizontal jpayne@68: or vertical directions for the construction. Even though all #hb_direction_t jpayne@68: values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is jpayne@68: considered.</note> jpayne@68: jpayne@68: jpayne@68: the total number of parts in the glyph assembly jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the glyph to stretch jpayne@68: jpayne@68: jpayne@68: jpayne@68: direction of the stretching (horizontal or vertical) jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first glyph part to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = maximum number of glyph parts to return; jpayne@68: Output = actual number of parts returned jpayne@68: jpayne@68: jpayne@68: jpayne@68: the glyph parts returned jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: italics correction of the glyph assembly jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches an italics-correction value (if one exists) for the specified jpayne@68: glyph index. jpayne@68: jpayne@68: jpayne@68: the italics correction of the glyph or zero jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The glyph index from which to retrieve the value jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the math kerning (cut-ins) value for the specified font, glyph index, and jpayne@68: @kern. jpayne@68: jpayne@68: If the MathKern table is found, the function examines it to find a height jpayne@68: value that is greater or equal to @correction_height. If such a height jpayne@68: value is found, corresponding kerning value from the table is returned. If jpayne@68: no such height value is found, the last kerning value is returned. jpayne@68: jpayne@68: jpayne@68: requested kerning value or zero jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The glyph index from which to retrieve the value jpayne@68: jpayne@68: jpayne@68: jpayne@68: The #hb_ot_math_kern_t from which to retrieve the value jpayne@68: jpayne@68: jpayne@68: jpayne@68: the correction height to use to determine the kerning. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a top-accent-attachment value (if one exists) for the specified jpayne@68: glyph index. jpayne@68: jpayne@68: For any glyph that does not have a top-accent-attachment value - that is, jpayne@68: a glyph not covered by the `MathTopAccentAttachment` table (or, when jpayne@68: @font has no `MathTopAccentAttachment` table or no `MATH` table, any jpayne@68: glyph) - the function synthesizes a value, returning the position at jpayne@68: one-half the glyph's advance width. jpayne@68: jpayne@68: jpayne@68: the top accent attachment of the glyph or 0.5 * the advance jpayne@68: width of @glyph jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The glyph index from which to retrieve the value jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the MathGlyphConstruction for the specified font, glyph index, and jpayne@68: direction. The corresponding list of size variants is returned as a list of jpayne@68: #hb_ot_math_glyph_variant_t structs. jpayne@68: jpayne@68: <note>The @direction parameter is only used to select between horizontal jpayne@68: or vertical directions for the construction. Even though all #hb_direction_t jpayne@68: values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is jpayne@68: considered.</note> jpayne@68: jpayne@68: jpayne@68: the total number of size variants available or zero jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The index of the glyph to stretch jpayne@68: jpayne@68: jpayne@68: jpayne@68: The direction of the stretching (horizontal or vertical) jpayne@68: jpayne@68: jpayne@68: jpayne@68: offset of the first variant to retrieve jpayne@68: jpayne@68: jpayne@68: jpayne@68: Input = the maximum number of variants to return; jpayne@68: Output = the actual number of variants returned jpayne@68: jpayne@68: jpayne@68: jpayne@68: array of variants returned jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches the MathVariants table for the specified font and returns the jpayne@68: minimum overlap of connecting glyphs that are required to draw a glyph jpayne@68: assembly in the specified direction. jpayne@68: jpayne@68: <note>The @direction parameter is only used to select between horizontal jpayne@68: or vertical directions for the construction. Even though all #hb_direction_t jpayne@68: values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is jpayne@68: considered.</note> jpayne@68: jpayne@68: jpayne@68: requested minimum connector overlap or zero jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_font_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: direction of the stretching (horizontal or vertical) jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Flags for math glyph parts. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Data type to hold information for a "part" component of a math-variant glyph. jpayne@68: Large variants for stretchable math glyphs (such as parentheses) can be constructed jpayne@68: on the fly from parts. jpayne@68: jpayne@68: jpayne@68: The glyph index of the variant part jpayne@68: jpayne@68: jpayne@68: jpayne@68: The length of the connector on the starting side of the variant part jpayne@68: jpayne@68: jpayne@68: jpayne@68: The length of the connector on the ending side of the variant part jpayne@68: jpayne@68: jpayne@68: jpayne@68: The total advance of the part jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_ot_math_glyph_part_flags_t flags for the part jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Data type to hold math-variant information for a glyph. jpayne@68: jpayne@68: jpayne@68: The glyph index of the variant jpayne@68: jpayne@68: jpayne@68: jpayne@68: The advance width of the variant jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether a face has a `MATH` table. jpayne@68: jpayne@68: jpayne@68: true if the table is found, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to test jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Tests whether the given glyph index is an extended shape in the face. jpayne@68: jpayne@68: jpayne@68: true if the glyph is an extended shape, false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to work upon jpayne@68: jpayne@68: jpayne@68: jpayne@68: The glyph index to test jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The math kerning-table types defined for the four corners jpayne@68: of a glyph. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Number of all available feature types. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a face object jpayne@68: jpayne@68: jpayne@68: jpayne@68: iteration's start offset jpayne@68: jpayne@68: jpayne@68: jpayne@68: buffer size as input, filled size as output jpayne@68: jpayne@68: jpayne@68: jpayne@68: entries tags buffer jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: It fetches metadata entry of a given tag from a font. jpayne@68: jpayne@68: jpayne@68: A blob containing the blob. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a #hb_face_t object. jpayne@68: jpayne@68: jpayne@68: jpayne@68: tag of metadata you like to have. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta jpayne@68: jpayne@68: Design languages. Text, using only jpayne@68: Basic Latin (ASCII) characters. Indicates languages and/or scripts jpayne@68: for the user audiences that the font was primarily designed for. jpayne@68: jpayne@68: jpayne@68: Supported languages. Text, using jpayne@68: only Basic Latin (ASCII) characters. Indicates languages and/or scripts jpayne@68: that the font is declared to be capable of supporting. jpayne@68: jpayne@68: jpayne@68: jpayne@68: It fetches metrics value corresponding to a given tag from a font. jpayne@68: jpayne@68: jpayne@68: Whether found the requested metrics in the font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a #hb_font_t object. jpayne@68: jpayne@68: jpayne@68: jpayne@68: tag of metrics value you like to fetch. jpayne@68: jpayne@68: jpayne@68: jpayne@68: result of metrics value from the font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags jpayne@68: jpayne@68: horizontal ascender. jpayne@68: jpayne@68: jpayne@68: horizontal descender. jpayne@68: jpayne@68: jpayne@68: horizontal line gap. jpayne@68: jpayne@68: jpayne@68: horizontal clipping ascent. jpayne@68: jpayne@68: jpayne@68: horizontal clipping descent. jpayne@68: jpayne@68: jpayne@68: vertical ascender. jpayne@68: jpayne@68: jpayne@68: vertical descender. jpayne@68: jpayne@68: jpayne@68: vertical line gap. jpayne@68: jpayne@68: jpayne@68: horizontal caret rise. jpayne@68: jpayne@68: jpayne@68: horizontal caret run. jpayne@68: jpayne@68: jpayne@68: horizontal caret offset. jpayne@68: jpayne@68: jpayne@68: vertical caret rise. jpayne@68: jpayne@68: jpayne@68: vertical caret run. jpayne@68: jpayne@68: jpayne@68: vertical caret offset. jpayne@68: jpayne@68: jpayne@68: x height. jpayne@68: jpayne@68: jpayne@68: cap height. jpayne@68: jpayne@68: jpayne@68: subscript em x size. jpayne@68: jpayne@68: jpayne@68: subscript em y size. jpayne@68: jpayne@68: jpayne@68: subscript em x offset. jpayne@68: jpayne@68: jpayne@68: subscript em y offset. jpayne@68: jpayne@68: jpayne@68: superscript em x size. jpayne@68: jpayne@68: jpayne@68: superscript em y size. jpayne@68: jpayne@68: jpayne@68: superscript em x offset. jpayne@68: jpayne@68: jpayne@68: superscript em y offset. jpayne@68: jpayne@68: jpayne@68: strikeout size. jpayne@68: jpayne@68: jpayne@68: strikeout offset. jpayne@68: jpayne@68: jpayne@68: underline size. jpayne@68: jpayne@68: jpayne@68: underline offset. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Structure representing a name ID in a particular language. jpayne@68: jpayne@68: jpayne@68: name ID jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: language jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a font name from the OpenType 'name' table. jpayne@68: If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed. jpayne@68: Returns string in UTF-16 encoding. jpayne@68: jpayne@68: jpayne@68: full length of the requested string, or 0 if not found. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: OpenType name identifier to fetch. jpayne@68: jpayne@68: jpayne@68: jpayne@68: language to fetch the name for. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input size of @text buffer, and output size of jpayne@68: text written to buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: buffer to write fetched name into. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a font name from the OpenType 'name' table. jpayne@68: If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed. jpayne@68: Returns string in UTF-32 encoding. jpayne@68: jpayne@68: jpayne@68: full length of the requested string, or 0 if not found. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: OpenType name identifier to fetch. jpayne@68: jpayne@68: jpayne@68: jpayne@68: language to fetch the name for. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input size of @text buffer, and output size of jpayne@68: text written to buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: buffer to write fetched name into. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fetches a font name from the OpenType 'name' table. jpayne@68: If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed. jpayne@68: Returns string in UTF-8 encoding. jpayne@68: jpayne@68: jpayne@68: full length of the requested string, or 0 if not found. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: OpenType name identifier to fetch. jpayne@68: jpayne@68: jpayne@68: jpayne@68: language to fetch the name for. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input size of @text buffer, and output size of jpayne@68: text written to buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: buffer to write fetched name into. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Enumerates all available name IDs and language combinations. Returned jpayne@68: array is owned by the @face and should not be modified. It can be jpayne@68: used as long as @face is alive. jpayne@68: jpayne@68: jpayne@68: Array of available name entries. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: font face. jpayne@68: jpayne@68: jpayne@68: jpayne@68: number of returned entries. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts an #hb_script_t and an #hb_language_t to script and language tags. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_script_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_language_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: maximum number of script tags to retrieve (IN) jpayne@68: and actual number of script tags retrieved (OUT) jpayne@68: jpayne@68: jpayne@68: jpayne@68: array of size at least @script_count to store the jpayne@68: script tag results jpayne@68: jpayne@68: jpayne@68: jpayne@68: maximum number of language tags to retrieve jpayne@68: (IN) and actual number of language tags retrieved (OUT) jpayne@68: jpayne@68: jpayne@68: jpayne@68: array of size at least @language_count to store jpayne@68: the language tag results jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts a script tag and a language tag to an #hb_script_t and an jpayne@68: #hb_language_t. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a script tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: a language tag jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_script_t corresponding to @script_tag (OUT). jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_language_t corresponding to @script_tag and jpayne@68: @language_tag (OUT). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The axis should not be exposed directly in user interfaces. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: This function allows to verify the presence of OpenType variation data on the face. jpayne@68: jpayne@68: jpayne@68: true if face has a `fvar' table and false otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_face_t to test jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts an ISO 15924 script tag to a corresponding #hb_script_t. jpayne@68: jpayne@68: jpayne@68: An #hb_script_t corresponding to the ISO 15924 tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_tag_t representing an ISO 15924 tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Converts a string @str representing an ISO 15924 script tag to a jpayne@68: corresponding #hb_script_t. Shorthand for hb_tag_from_string() then jpayne@68: hb_script_from_iso15924_tag(). jpayne@68: jpayne@68: jpayne@68: An #hb_script_t corresponding to the ISO 15924 tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a string representing an jpayne@68: ISO 15924 tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: length of the @str, or -1 if it is %NULL-terminated. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_script_from_iso15924_tag(). jpayne@68: jpayne@68: jpayne@68: An #hb_tag_t representing an ISO 15924 script tag. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_script_t to convert. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Checks the equality of two #hb_segment_properties_t's. jpayne@68: jpayne@68: jpayne@68: %true if all properties of @a equal those of @b, false otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: first #hb_segment_properties_t to compare. jpayne@68: jpayne@68: jpayne@68: jpayne@68: second #hb_segment_properties_t to compare. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Creates a hash representing @p. jpayne@68: jpayne@68: jpayne@68: A hash of @p. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: #hb_segment_properties_t to hash. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: The structure that holds various text properties of an #hb_buffer_t. Can be jpayne@68: set and retrieved using hb_buffer_set_segment_properties() and jpayne@68: hb_buffer_get_segment_properties(), respectively. jpayne@68: jpayne@68: jpayne@68: the #hb_direction_t of the buffer, see hb_buffer_set_direction(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_script_t of the buffer, see hb_buffer_set_script(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: the #hb_language_t of the buffer, see hb_buffer_set_language(). jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Finds the maximum number in the set. jpayne@68: jpayne@68: jpayne@68: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Finds the minimum number in the set. jpayne@68: jpayne@68: jpayne@68: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns the number of numbers in the set. jpayne@68: jpayne@68: jpayne@68: set population. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: %TRUE if the two sets are equal, %FALSE otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: other set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: %TRUE if the @set is a subset of (or equal to) @larger_set, %FALSE otherwise. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: other set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Gets the next number in @set that is greater than current value of @codepoint. jpayne@68: jpayne@68: Set @codepoint to %HB_SET_VALUE_INVALID to get started. jpayne@68: jpayne@68: jpayne@68: whether there was a next value. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Gets the next consecutive range of numbers in @set that jpayne@68: are greater than current value of @last. jpayne@68: jpayne@68: Set @last to %HB_SET_VALUE_INVALID to get started. jpayne@68: jpayne@68: jpayne@68: whether there was a next range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output first codepoint in the range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input current last and output last codepoint in the range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Gets the previous number in @set that is lower than current value of @codepoint. jpayne@68: jpayne@68: Set @codepoint to %HB_SET_VALUE_INVALID to get started. jpayne@68: jpayne@68: jpayne@68: whether there was a previous value. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Gets the previous consecutive range of numbers in @set that jpayne@68: are less than current value of @first. jpayne@68: jpayne@68: Set @first to %HB_SET_VALUE_INVALID to get started. jpayne@68: jpayne@68: jpayne@68: whether there was a previous range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: input current first and output first codepoint in the range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: output last codepoint in the range. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a set. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Shapes @buffer using @font turning its Unicode characters content to jpayne@68: positioned glyphs. If @features is not %NULL, it will be used to control the jpayne@68: features applied during shaping. If two @features have the same tag but jpayne@68: overlapping ranges the value of the feature with the higher index takes jpayne@68: precedence. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_font_t to use for shaping jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t to shape jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of user jpayne@68: specified #hb_feature_t or %NULL jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of @features array jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: See hb_shape() for details. If @shaper_list is not %NULL, the specified jpayne@68: shapers will be used in the given order, otherwise the default shapers list jpayne@68: will be used. jpayne@68: jpayne@68: jpayne@68: false if all shapers failed, true otherwise jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_font_t to use for shaping jpayne@68: jpayne@68: jpayne@68: jpayne@68: an #hb_buffer_t to shape jpayne@68: jpayne@68: jpayne@68: jpayne@68: an array of user jpayne@68: specified #hb_feature_t or %NULL jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: the length of @features array jpayne@68: jpayne@68: jpayne@68: jpayne@68: a %NULL-terminated jpayne@68: array of shapers to use or %NULL jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Retrieves the list of shapers supported by HarfBuzz. jpayne@68: jpayne@68: jpayne@68: an array of jpayne@68: constant strings jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: a font. jpayne@68: jpayne@68: jpayne@68: jpayne@68: a buffer. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a shape plan. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed. jpayne@68: The complete length of the decomposition will be returned. jpayne@68: jpayne@68: If @u has no compatibility decomposition, zero should be returned. jpayne@68: jpayne@68: The Unicode standard guarantees that a buffer of length %HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any jpayne@68: compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations jpayne@68: of this function type must ensure that they do not write past the provided array. jpayne@68: jpayne@68: jpayne@68: number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: codepoint to decompose jpayne@68: jpayne@68: jpayne@68: jpayne@68: address of codepoint array (of length %HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into jpayne@68: jpayne@68: jpayne@68: jpayne@68: user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func() jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: a Unicode function structure jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Unicode functions. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns library version as three integer components. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Library major version component. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Library minor version component. jpayne@68: jpayne@68: jpayne@68: jpayne@68: Library micro version component. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: Returns library version as a string with three components. jpayne@68: jpayne@68: jpayne@68: library version string. jpayne@68: jpayne@68: jpayne@68: jpayne@68: jpayne@68: