[docs] Complete hb-buffer docs a bit

This commit is contained in:
Khaled Hosny 2020-12-30 23:44:30 +02:00 committed by Behdad Esfahbod
parent 492a5a9096
commit 2fdab788ad
4 changed files with 102 additions and 29 deletions

View File

@ -516,6 +516,8 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
* @buf_size: the size of @buf. * @buf_size: the size of @buf.
* @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf. * @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf.
* @format: the #hb_buffer_serialize_format_t to use for formatting the output. * @format: the #hb_buffer_serialize_format_t to use for formatting the output.
* @flags: the #hb_buffer_serialize_flags_t that control what glyph properties
* to serialize.
* *
* Serializes @buffer into a textual representation of its content, * Serializes @buffer into a textual representation of its content,
* when the buffer contains Unicode codepoints (i.e., before shaping). This is * when the buffer contains Unicode codepoints (i.e., before shaping). This is
@ -724,15 +726,17 @@ parse_hex (const char *pp, const char *end, uint32_t *pv)
/** /**
* hb_buffer_deserialize_glyphs: * hb_buffer_deserialize_glyphs:
* @buffer: an #hb_buffer_t buffer. * @buffer: an #hb_buffer_t buffer.
* @buf: (array length=buf_len): * @buf: (array length=buf_len): string to deserialize
* @buf_len: * @buf_len: the size of @buf, or -1 if it is %NULL-terminated
* @end_ptr: (out): * @end_ptr: (out) (allow-none): output pointer to the character after last
* @font: * consumed one.
* @format: * @font: (allow-none): font for getting glyph IDs
* @format: the #hb_buffer_serialize_format_t of the input @buf
* *
* Deserializes glyphs @buffer from textual representation in the format
* produced by hb_buffer_serialize_glyphs().
* *
* * Return value: %true if @buf is not fully consumed, %false otherwise.
* Return value:
* *
* Since: 0.9.7 * Since: 0.9.7
**/ **/
@ -795,14 +799,16 @@ hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
/** /**
* hb_buffer_deserialize_unicode: * hb_buffer_deserialize_unicode:
* @buffer: an #hb_buffer_t buffer. * @buffer: an #hb_buffer_t buffer.
* @buf: (array length=buf_len): * @buf: (array length=buf_len): string to deserialize
* @buf_len: * @buf_len: the size of @buf, or -1 if it is %NULL-terminated
* @end_ptr: (out): * @end_ptr: (out) (allow-none): output pointer to the character after last
* @format: * consumed one.
* @format: the #hb_buffer_serialize_format_t of the input @buf
* *
* Deserializes Unicode @buffer from textual representation in the format
* produced by hb_buffer_serialize_unicode().
* *
* * Return value: %true if @buf is not fully consumed, %false otherwise.
* Return value:
* *
* Since: 2.7.3 * Since: 2.7.3
**/ **/

View File

@ -795,7 +795,7 @@ hb_buffer_set_user_data (hb_buffer_t *buffer,
* Fetches the user data associated with the specified key, * Fetches the user data associated with the specified key,
* attached to the specified buffer. * attached to the specified buffer.
* *
* Return value: (transfer-none): A pointer to the user data * Return value: (transfer none): A pointer to the user data
* *
* Since: 0.9.2 * Since: 0.9.2
**/ **/
@ -1137,7 +1137,7 @@ hb_buffer_get_cluster_level (hb_buffer_t *buffer)
* Sets the #hb_codepoint_t that replaces invalid entries for a given encoding * Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
* when adding text to @buffer. * when adding text to @buffer.
* *
* Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT. * Default is #HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.
* *
* Since: 0.9.31 * Since: 0.9.31
**/ **/
@ -1501,20 +1501,20 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer)
* *
* Sets unset buffer segment properties based on buffer Unicode * Sets unset buffer segment properties based on buffer Unicode
* contents. If buffer is not empty, it must have content type * contents. If buffer is not empty, it must have content type
* %HB_BUFFER_CONTENT_TYPE_UNICODE. * #HB_BUFFER_CONTENT_TYPE_UNICODE.
* *
* If buffer script is not set (ie. is %HB_SCRIPT_INVALID), it * If buffer script is not set (ie. is #HB_SCRIPT_INVALID), it
* will be set to the Unicode script of the first character in * will be set to the Unicode script of the first character in
* the buffer that has a script other than %HB_SCRIPT_COMMON, * the buffer that has a script other than #HB_SCRIPT_COMMON,
* %HB_SCRIPT_INHERITED, and %HB_SCRIPT_UNKNOWN. * #HB_SCRIPT_INHERITED, and #HB_SCRIPT_UNKNOWN.
* *
* Next, if buffer direction is not set (ie. is %HB_DIRECTION_INVALID), * Next, if buffer direction is not set (ie. is #HB_DIRECTION_INVALID),
* it will be set to the natural horizontal direction of the * it will be set to the natural horizontal direction of the
* buffer script as returned by hb_script_get_horizontal_direction(). * buffer script as returned by hb_script_get_horizontal_direction().
* If hb_script_get_horizontal_direction() returns %HB_DIRECTION_INVALID, * If hb_script_get_horizontal_direction() returns #HB_DIRECTION_INVALID,
* then %HB_DIRECTION_LTR is used. * then #HB_DIRECTION_LTR is used.
* *
* Finally, if buffer language is not set (ie. is %HB_LANGUAGE_INVALID), * Finally, if buffer language is not set (ie. is #HB_LANGUAGE_INVALID),
* it will be set to the process's default language as returned by * it will be set to the process's default language as returned by
* hb_language_get_default(). This may change in the future by * hb_language_get_default(). This may change in the future by
* taking buffer script into consideration when choosing a language. * taking buffer script into consideration when choosing a language.
@ -1902,8 +1902,8 @@ hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_g
* @dottedcircle_glyph: glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1. * @dottedcircle_glyph: glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1.
* @position_fuzz: allowed absolute difference in position values. * @position_fuzz: allowed absolute difference in position values.
* *
* If dottedcircle_glyph is (hb_codepoint_t) -1 then %HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT * If dottedcircle_glyph is (hb_codepoint_t) -1 then #HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
* and %HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT are never returned. This should be used by most * and #HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT are never returned. This should be used by most
* callers if just comparing two buffers is needed. * callers if just comparing two buffers is needed.
* *
* Since: 1.5.0 * Since: 1.5.0
@ -1994,11 +1994,11 @@ hb_buffer_diff (hb_buffer_t *buffer,
/** /**
* hb_buffer_set_message_func: * hb_buffer_set_message_func:
* @buffer: An #hb_buffer_t * @buffer: An #hb_buffer_t
* @func: (closure user_data) (destroy destroy) (scope notified): * @func: (closure user_data) (destroy destroy) (scope notified): Callback function
* @user_data: * @user_data: (nullable): Data to pass to @func
* @destroy: * @destroy: (optional): The function to call when @user_data is not needed anymore
*
* *
* Sets the implementation function for #hb_buffer_message_func_t.
* *
* Since: 1.1.3 * Since: 1.1.3
**/ **/

View File

@ -90,6 +90,8 @@ typedef struct hb_glyph_info_t {
* breaking point only. * breaking point only.
* @HB_GLYPH_FLAG_DEFINED: All the currently defined flags. * @HB_GLYPH_FLAG_DEFINED: All the currently defined flags.
* *
* Flags for #hb_glyph_info_t.
*
* Since: 1.5.0 * Since: 1.5.0
*/ */
typedef enum { /*< flags >*/ typedef enum { /*< flags >*/
@ -150,6 +152,11 @@ typedef struct hb_segment_properties_t {
void *reserved2; void *reserved2;
} hb_segment_properties_t; } hb_segment_properties_t;
/**
* HB_SEGMENT_PROPERTIES_DEFAULT:
*
* The default #hb_segment_properties_t of of freshly created #hb_buffer_t.
*/
#define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, \ #define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, \
HB_SCRIPT_INVALID, \ HB_SCRIPT_INVALID, \
HB_LANGUAGE_INVALID, \ HB_LANGUAGE_INVALID, \
@ -203,6 +210,8 @@ hb_buffer_get_user_data (hb_buffer_t *buffer,
* @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer. * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer.
* @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping). * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping).
* @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping). * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping).
*
* The type of #hb_buffer_t contents.
*/ */
typedef enum { typedef enum {
HB_BUFFER_CONTENT_TYPE_INVALID = 0, HB_BUFFER_CONTENT_TYPE_INVALID = 0,
@ -288,6 +297,8 @@ hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
* not be inserted in the rendering of incorrect * not be inserted in the rendering of incorrect
* character sequences (such at <0905 093E>). Since: 2.4 * character sequences (such at <0905 093E>). Since: 2.4
* *
* Flags for #hb_buffer_t.
*
* Since: 0.9.20 * Since: 0.9.20
*/ */
typedef enum { /*< flags >*/ typedef enum { /*< flags >*/
@ -579,6 +590,35 @@ hb_buffer_deserialize_unicode (hb_buffer_t *buffer,
* Compare buffers * Compare buffers
*/ */
/**
* hb_buffer_diff_flags_t:
* @HB_BUFFER_DIFF_FLAG_EQUAL: equal buffers.
* @HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH: buffers with different
* #hb_buffer_content_type_t.
* @HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH: buffers with differing length.
* @HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT: `.notdef` glyph is present in the
* reference buffer.
* @HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT: dotted circle glyph is present
* in the reference buffer.
* @HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH: difference in #hb_glyph_info_t.codepoint
* @HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH: difference in #hb_glyph_info_t.cluster
* @HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH: difference in #hb_glyph_flags_t.
* @HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH: difference in #hb_glyph_position_t.
*
* Flags from comparing two #hb_buffer_t's.
*
* Buffer with different #hb_buffer_content_type_t cannot be meaningfully
* compared in any further detail.
*
* For buffers with differing length, the per-glyph comparison is not
* attempted, though we do still scan reference buffer for dotted circle and
* `.notdef` glyphs.
*
* If the buffers have the same length, we compare them glyph-by-glyph and
* report which aspect(s) of the glyph info/position are different.
*
* Since: 1.5.0
*/
typedef enum { /*< flags >*/ typedef enum { /*< flags >*/
HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000, HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000,
@ -618,6 +658,23 @@ hb_buffer_diff (hb_buffer_t *buffer,
* Debugging. * Debugging.
*/ */
/**
* hb_buffer_message_func_t:
* @buffer: An #hb_buffer_t to work upon
* @font: The #hb_font_t the @buffer is shaped with
* @message: %NULL-terminated message passed to the function
* @user_data: User data pointer passed by the caller
*
* A callback method for #hb_buffer_t. The method gets called with the
* #hb_buffer_t it was set on, the #hb_font_t the buffer is shaped with and a
* message describing what step of the shaping process will be performed.
* Returning %false from this method will skip this shaping step and move to
* the next one.
*
* Return value: %true to perform the shaping step, %false to skip it.
*
* Since: 1.1.3
*/
typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer,
hb_font_t *font, hb_font_t *font,
const char *message, const char *message,

View File

@ -55,7 +55,17 @@ HB_BEGIN_DECLS
#define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS #define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS
/**
* HB_BUFFER_FLAGS_DEFAULT:
*
* Use #HB_BUFFER_FLAG_DEFAULT instead.
*/
#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT #define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT
/**
* HB_BUFFER_SERIALIZE_FLAGS_DEFAULT:
*
* Use HB_BUFFER_SERIALIZE_FLAG_DEFAULT instead.
*/
#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT #define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT
/** /**