diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt index 3549ea406..bcad37a77 100644 --- a/docs/harfbuzz-sections.txt +++ b/docs/harfbuzz-sections.txt @@ -714,12 +714,6 @@ hb_shape_plan_set_user_data hb_shape_plan_t -
-hb-style -hb_style_tag_t -hb_style_get_value -
-
hb-unicode HB_UNICODE_MAX diff --git a/src/gen-def.py b/src/gen-def.py index b6b8b20c5..1ff3f48a8 100755 --- a/src/gen-def.py +++ b/src/gen-def.py @@ -36,6 +36,7 @@ hb_draw_funcs_set_cubic_to_func hb_draw_funcs_set_line_to_func hb_draw_funcs_set_move_to_func hb_draw_funcs_set_quadratic_to_func +hb_style_get_value hb_font_get_var_coords_design hb_ot_layout_closure_lookups hb_ot_layout_closure_features""".splitlines () diff --git a/src/hb-style.cc b/src/hb-style.cc index afa4a9f8f..69f5beeb2 100644 --- a/src/hb-style.cc +++ b/src/hb-style.cc @@ -25,6 +25,7 @@ #include "hb.hh" #ifndef HB_NO_STYLE +#ifdef HB_EXPERIMENTAL_API #include "hb-aat-fdsc-table.hh" #include "hb-ot-var-avar-table.hh" @@ -35,6 +36,39 @@ #include "hb-ot-post-table.hh" #include "hb-ot-face.hh" +/** + * hb_style_tag_t: + * @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic. + * A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can + * be interpreted as (fully) italic. + * @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes. + * Non-zero. Values can be interpreted as text size, in points. + * @HB_STYLE_TAG_SLANT: Used to vary between upright and slanted text. Values + * must be greater than -90 and less than +90. Values can be interpreted as + * the angle, in counter-clockwise degrees, of oblique slant from whatever the + * designer considers to be upright for that font design. + * @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider. + * Non-zero. Values can be interpreted as a percentage of whatever the font + * designer considers “normal width” for that font design. + * @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details + * to give variation from lighter to blacker. Values can be interpreted in direct + * comparison to values for usWeightClass in the OS/2 table, + * or the CSS font-weight property. + * + * Defined by https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg + * + * Since: EXPERIMENTAL + **/ +typedef enum { + HB_STYLE_TAG_ITALIC = HB_TAG ('i','t','a','l'), + HB_STYLE_TAG_OPTICAL_SIZE = HB_TAG ('o','p','s','z'), + HB_STYLE_TAG_SLANT = HB_TAG ('s','l','n','t'), + HB_STYLE_TAG_WIDTH = HB_TAG ('w','d','t','h'), + HB_STYLE_TAG_WEIGHT = HB_TAG ('w','g','h','t'), + + _HB_STYLE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ +} hb_style_tag_t; + /** * hb_style_get_value: * @font: a #hb_font_t object. @@ -46,11 +80,12 @@ * * Returns: Corresponding axis or default value to a style tag. * - * Since: REPLACEME + * Since: EXPERIMENTAL **/ float -hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag) +hb_style_get_value (hb_font_t *font, hb_tag_t tag) { + hb_style_tag_t style_tag = (hb_style_tag_t) tag; hb_face_t *face = font->face; #ifndef HB_NO_VAR @@ -111,3 +146,4 @@ hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag) } #endif +#endif diff --git a/src/hb-style.h b/src/hb-style.h index ee84b7232..1209c79e9 100644 --- a/src/hb-style.h +++ b/src/hb-style.h @@ -33,42 +33,10 @@ HB_BEGIN_DECLS - -/** - * hb_style_tag_t: - * @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic. - * A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can - * be interpreted as (fully) italic. - * @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes. - * Non-zero. Values can be interpreted as text size, in points. - * @HB_STYLE_TAG_SLANT: Used to vary between upright and slanted text. Values - * must be greater than -90 and less than +90. Values can be interpreted as - * the angle, in counter-clockwise degrees, of oblique slant from whatever the - * designer considers to be upright for that font design. - * @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider. - * Non-zero. Values can be interpreted as a percentage of whatever the font - * designer considers “normal width” for that font design. - * @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details - * to give variation from lighter to blacker. Values can be interpreted in direct - * comparison to values for usWeightClass in the OS/2 table, - * or the CSS font-weight property. - * - * Defined by https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg - * - * Since: REPLACEME - **/ -typedef enum { - HB_STYLE_TAG_ITALIC = HB_TAG ('i','t','a','l'), - HB_STYLE_TAG_OPTICAL_SIZE = HB_TAG ('o','p','s','z'), - HB_STYLE_TAG_SLANT = HB_TAG ('s','l','n','t'), - HB_STYLE_TAG_WIDTH = HB_TAG ('w','d','t','h'), - HB_STYLE_TAG_WEIGHT = HB_TAG ('w','g','h','t'), - - _HB_STYLE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ -} hb_style_tag_t; - +#ifdef HB_EXPERIMENTAL_API HB_EXTERN float -hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag); +hb_style_get_value (hb_font_t *font, hb_tag_t style_tag); +#endif HB_END_DECLS diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c index 155d1ff14..fb31ed2b8 100644 --- a/test/api/test-ot-face.c +++ b/test/api/test-ot-face.c @@ -131,11 +131,13 @@ test_font (hb_font_t *font, hb_codepoint_t cp) hb_ot_name_get_utf16 (face, cp, NULL, NULL, NULL); hb_ot_name_get_utf32 (face, cp, NULL, NULL, NULL); +#if 0 hb_style_get_value (font, HB_STYLE_TAG_ITALIC); hb_style_get_value (font, HB_STYLE_TAG_OPTICAL_SIZE); hb_style_get_value (font, HB_STYLE_TAG_SLANT); hb_style_get_value (font, HB_STYLE_TAG_WIDTH); hb_style_get_value (font, HB_STYLE_TAG_WEIGHT); +#endif hb_ot_var_get_axis_count (face); hb_ot_var_get_axis_infos (face, 0, NULL, NULL); diff --git a/test/api/test-style.c b/test/api/test-style.c index 9225a0a09..b9a406b5e 100644 --- a/test/api/test-style.c +++ b/test/api/test-style.c @@ -22,6 +22,7 @@ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ +#ifdef HB_EXPERIMENTAL_API #include "hb-test.h" #include @@ -30,6 +31,12 @@ #define assert_cmpfloat(n1, n2) g_assert_cmpint ((int) (n1 * 100.f), ==, (int) (n2 * 100.f)) +#define HB_STYLE_TAG_ITALIC HB_TAG ('i','t','a','l') +#define HB_STYLE_TAG_OPTICAL_SIZE HB_TAG ('o','p','s','z') +#define HB_STYLE_TAG_SLANT HB_TAG ('s','l','n','t') +#define HB_STYLE_TAG_WIDTH HB_TAG ('w','d','t','h') +#define HB_STYLE_TAG_WEIGHT HB_TAG ('w','g','h','t') + static void test_empty_face (void) { @@ -178,3 +185,6 @@ main (int argc, char **argv) return hb_test_run (); } +#else +int main () {} +#endif