freetype.h: Improve Unicode Variation Sequence documentation.

This commit is contained in:
Werner Lemberg 2017-01-28 11:39:51 +01:00
parent 464b16ba46
commit 1c19b54999
1 changed files with 46 additions and 35 deletions

View File

@ -3804,40 +3804,51 @@ FT_BEGIN_HEADER
/* glyph_variants */ /* glyph_variants */
/* */ /* */
/* <Title> */ /* <Title> */
/* Glyph Variants */ /* Unicode Variation Sequences */
/* */ /* */
/* <Abstract> */ /* <Abstract> */
/* The FreeType~2 interface to Unicode Ideographic Variation */ /* The FreeType~2 interface to Unicode Variation Sequences (UVS), */
/* Sequences (IVS), using the SFNT cmap format~14. */ /* using the SFNT cmap format~14. */
/* */ /* */
/* <Description> */ /* <Description> */
/* Many CJK characters have variant forms. They are a sort of grey */ /* Many characters, especially for CJK scripts, have variant forms. */
/* area somewhere between being totally irrelevant and semantically */ /* They are a sort of grey area somewhere between being totally */
/* distinct; for this reason, the Unicode consortium decided to */ /* irrelevant and semantically distinct; for this reason, the Unicode */
/* introduce Ideographic Variation Sequences (IVS), consisting of a */ /* consortium decided to introduce Variation Sequences (VS), */
/* Unicode base character and one of 240 variant selectors */ /* consisting of a Unicode base character and a variation selector */
/* (U+E0100-U+E01EF), instead of further extending the already huge */ /* instead of further extending the already huge number of */
/* code range for CJK characters. */ /* characters. */
/* */ /* */
/* An IVS is registered and unique; for further details please refer */ /* Unicode maintains two different sets, namely `Standardized */
/* to Unicode Technical Standard #37, the Ideographic Variation */ /* Variation Sequences' and registered `Ideographic Variation */
/* Database: */ /* Sequences' (IVS), collected in the `Ideographic Variation */
/* Database' (IVD). */
/* */ /* */
/* http://www.unicode.org/reports/tr37/ */ /* http://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt */
/* http://www.unicode.org/ivd/ */ /* http://unicode.org/reports/tr37/ */
/* http://unicode.org/ivd/ */
/* */ /* */
/* To date (January 2017), the character with the most variants is */ /* To date (January 2017), the character with the most ideographic */
/* U+9089, having 32 such IVS. */ /* variations is U+9089, having 32 such IVS. */
/* */ /* */
/* Adobe and MS decided to support IVS with a new cmap subtable */ /* Three Mongolian Variation Selectors have the values U+180B-U+180D; */
/* (format~14). It is an odd subtable because it is not a mapping of */ /* 256 generic Variation Selectors are encoded in the ranges */
/* input code points to glyphs, but contains lists of all variants */ /* U+FE00-U+FE0F and U+E0100-U+E01EF. IVS currently use Variation */
/* supported by the font. */ /* Selectors from the range U+E0100-U+E01EF only. */
/* */ /* */
/* A variant may be either `default' or `non-default'. A default */ /* A VS consists of the base character value followed by a single */
/* variant is the one you will get for that code point if you look it */ /* Variation Selector. For example, to get the first variation of */
/* up in the standard Unicode cmap. A non-default variant is a */ /* U+9089, you have to write the character sequence `U+9089 U+E0100'. */
/* different glyph. */ /* */
/* Adobe and MS decided to support both standardized and ideographic */
/* VS with a new cmap subtable (format~14). It is an odd subtable */
/* because it is not a mapping of input code points to glyphs, but */
/* contains lists of all variations supported by the font. */
/* */
/* A variation may be either `default' or `non-default' for a given */
/* font. A default variation is the one you will get for that code */
/* point if you look it up in the standard Unicode cmap. A */
/* non-default variation is a different glyph. */
/* */ /* */
/*************************************************************************/ /*************************************************************************/
@ -3893,8 +3904,8 @@ FT_BEGIN_HEADER
/* FT_Face_GetCharVariantIsDefault */ /* FT_Face_GetCharVariantIsDefault */
/* */ /* */
/* <Description> */ /* <Description> */
/* Check whether this variant of this Unicode character is the one to */ /* Check whether this variation of this Unicode character is the one */
/* be found in the `cmap'. */ /* to be found in the `cmap'. */
/* */ /* */
/* <Input> */ /* <Input> */
/* face :: */ /* face :: */
@ -3908,7 +3919,7 @@ FT_BEGIN_HEADER
/* */ /* */
/* <Return> */ /* <Return> */
/* 1~if found in the standard (Unicode) cmap, 0~if found in the */ /* 1~if found in the standard (Unicode) cmap, 0~if found in the */
/* variation selector cmap, or -1 if it is not a variant. */ /* variation selector cmap, or -1 if it is not a variation. */
/* */ /* */
/* <Note> */ /* <Note> */
/* This function is only meaningful if the font has a variation */ /* This function is only meaningful if the font has a variation */
@ -3929,7 +3940,7 @@ FT_BEGIN_HEADER
/* FT_Face_GetVariantSelectors */ /* FT_Face_GetVariantSelectors */
/* */ /* */
/* <Description> */ /* <Description> */
/* Return a zero-terminated list of Unicode variant selectors found */ /* Return a zero-terminated list of Unicode variation selectors found */
/* in the font. */ /* in the font. */
/* */ /* */
/* <Input> */ /* <Input> */
@ -3938,7 +3949,7 @@ FT_BEGIN_HEADER
/* */ /* */
/* <Return> */ /* <Return> */
/* A pointer to an array of selector code points, or NULL if there is */ /* A pointer to an array of selector code points, or NULL if there is */
/* no valid variant selector cmap subtable. */ /* no valid variation selector cmap subtable. */
/* */ /* */
/* <Note> */ /* <Note> */
/* The last item in the array is~0; the array is owned by the */ /* The last item in the array is~0; the array is owned by the */
@ -3958,7 +3969,7 @@ FT_BEGIN_HEADER
/* FT_Face_GetVariantsOfChar */ /* FT_Face_GetVariantsOfChar */
/* */ /* */
/* <Description> */ /* <Description> */
/* Return a zero-terminated list of Unicode variant selectors found */ /* Return a zero-terminated list of Unicode variation selectors found */
/* for the specified character code. */ /* for the specified character code. */
/* */ /* */
/* <Input> */ /* <Input> */
@ -3969,7 +3980,7 @@ FT_BEGIN_HEADER
/* The character codepoint in Unicode. */ /* The character codepoint in Unicode. */
/* */ /* */
/* <Return> */ /* <Return> */
/* A pointer to an array of variant selector code points that are */ /* A pointer to an array of variation selector code points that are */
/* active for the given character, or NULL if the corresponding list */ /* active for the given character, or NULL if the corresponding list */
/* is empty. */ /* is empty. */
/* */ /* */
@ -3993,19 +4004,19 @@ FT_BEGIN_HEADER
/* */ /* */
/* <Description> */ /* <Description> */
/* Return a zero-terminated list of Unicode character codes found for */ /* Return a zero-terminated list of Unicode character codes found for */
/* the specified variant selector. */ /* the specified variation selector. */
/* */ /* */
/* <Input> */ /* <Input> */
/* face :: */ /* face :: */
/* A handle to the source face object. */ /* A handle to the source face object. */
/* */ /* */
/* variantSelector :: */ /* variantSelector :: */
/* The variant selector code point in Unicode. */ /* The variation selector code point in Unicode. */
/* */ /* */
/* <Return> */ /* <Return> */
/* A list of all the code points that are specified by this selector */ /* A list of all the code points that are specified by this selector */
/* (both default and non-default codes are returned) or NULL if there */ /* (both default and non-default codes are returned) or NULL if there */
/* is no valid cmap or the variant selector is invalid. */ /* is no valid cmap or the variation selector is invalid. */
/* */ /* */
/* <Note> */ /* <Note> */
/* The last item in the array is~0; the array is owned by the */ /* The last item in the array is~0; the array is owned by the */