Home | History | Annotate | Download | only in dev
      1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  */
      5 
      6 /**
      7  * This file defines the <code>PPB_TrueTypeFont_Dev</code> interface. This
      8  * interface exposes font table data for 'sfnt' fonts on the host system. These
      9  * include TrueType and OpenType fonts.
     10  */
     11 
     12 [generate_thunk,thunk_include="ppapi/thunk/ppb_truetype_font_singleton_api.h"]
     13 
     14 label Chrome {
     15   M26 = 0.1
     16 };
     17 
     18 /**
     19  * The PP_TrueTypeFontFamily_Dev defines generic font families. These can be
     20  * used to create generic fonts consistent with the user's browser settings.
     21  */
     22 [assert_size(4)]
     23 enum PP_TrueTypeFontFamily_Dev {
     24   /**
     25    * For a description of these default families, see the
     26    * <a href="http://www.w3.org/TR/css3-fonts/#generic-font-families">
     27    * 3.1.1 Generic font families</a> documentation.
     28    */
     29   PP_TRUETYPEFONTFAMILY_SERIF = 0,
     30   PP_TRUETYPEFONTFAMILY_SANSSERIF = 1,
     31   PP_TRUETYPEFONTFAMILY_CURSIVE = 2,
     32   PP_TRUETYPEFONTFAMILY_FANTASY = 3,
     33   PP_TRUETYPEFONTFAMILY_MONOSPACE = 4
     34 };
     35 
     36 /**
     37  * The PP_TrueTypeFontStyle_Dev enum defines font styles.
     38  */
     39 [assert_size(4)]
     40 enum PP_TrueTypeFontStyle_Dev {
     41   PP_TRUETYPEFONTSTYLE_NORMAL = 0,
     42   PP_TRUETYPEFONTSTYLE_ITALIC = 1
     43 };
     44 
     45 /**
     46  * The PP_TrueTypeFontWeight_Dev enum defines font weights.
     47  */
     48 [assert_size(4)]
     49 enum PP_TrueTypeFontWeight_Dev {
     50   PP_TRUETYPEFONTWEIGHT_THIN = 100,
     51   PP_TRUETYPEFONTWEIGHT_ULTRALIGHT = 200,
     52   PP_TRUETYPEFONTWEIGHT_LIGHT = 300,
     53   PP_TRUETYPEFONTWEIGHT_NORMAL = 400,
     54   PP_TRUETYPEFONTWEIGHT_MEDIUM = 500,
     55   PP_TRUETYPEFONTWEIGHT_SEMIBOLD = 600,
     56   PP_TRUETYPEFONTWEIGHT_BOLD = 700,
     57   PP_TRUETYPEFONTWEIGHT_ULTRABOLD = 800,
     58   PP_TRUETYPEFONTWEIGHT_HEAVY = 900
     59 };
     60 
     61 /**
     62  * The PP_TrueTypeFontWidth_Dev enum defines font widths.
     63  */
     64 [assert_size(4)]
     65 enum PP_TrueTypeFontWidth_Dev {
     66   PP_TRUETYPEFONTWIDTH_ULTRACONDENSED = 0,
     67   PP_TRUETYPEFONTWIDTH_EXTRACONDENSED = 1,
     68   PP_TRUETYPEFONTWIDTH_CONDENSED = 2,
     69   PP_TRUETYPEFONTWIDTH_SEMICONDENSED = 3,
     70   PP_TRUETYPEFONTWIDTH_NORMAL = 4,
     71   PP_TRUETYPEFONTWIDTH_SEMIEXPANDED = 5,
     72   PP_TRUETYPEFONTWIDTH_EXPANDED = 6,
     73   PP_TRUETYPEFONTWIDTH_EXTRAEXPANDED = 7,
     74   PP_TRUETYPEFONTWIDTH_ULTRAEXPANDED = 8
     75 };
     76 
     77 /**
     78  * The PP_TrueTypeFontCharset enum defines font character sets.
     79  */
     80 [assert_size(4)]
     81 enum PP_TrueTypeFontCharset_Dev {
     82   PP_TRUETYPEFONTCHARSET_ANSI = 0,
     83   PP_TRUETYPEFONTCHARSET_DEFAULT = 1,
     84   PP_TRUETYPEFONTCHARSET_SYMBOL = 2,
     85   PP_TRUETYPEFONTCHARSET_MAC = 77,
     86   PP_TRUETYPEFONTCHARSET_SHIFTJIS = 128,
     87   PP_TRUETYPEFONTCHARSET_HANGUL = 129,
     88   PP_TRUETYPEFONTCHARSET_JOHAB = 130,
     89   PP_TRUETYPEFONTCHARSET_GB2312 =134,
     90   PP_TRUETYPEFONTCHARSET_CHINESEBIG5 = 136,
     91   PP_TRUETYPEFONTCHARSET_GREEK = 161,
     92   PP_TRUETYPEFONTCHARSET_TURKISH = 162,
     93   PP_TRUETYPEFONTCHARSET_VIETNAMESE = 163,
     94   PP_TRUETYPEFONTCHARSET_HEBREW = 177,
     95   PP_TRUETYPEFONTCHARSET_ARABIC = 178,
     96   PP_TRUETYPEFONTCHARSET_BALTIC = 186,
     97   PP_TRUETYPEFONTCHARSET_RUSSIAN = 204,
     98   PP_TRUETYPEFONTCHARSET_THAI = 222,
     99   PP_TRUETYPEFONTCHARSET_EASTEUROPE = 238,
    100   PP_TRUETYPEFONTCHARSET_OEM = 255
    101 };
    102 
    103 /**
    104  * The <code>PP_TrueTypeFontDesc</code> struct describes a TrueType font. It is
    105  * passed to Create(), and returned by Describe().
    106  */
    107 [assert_size(40)]
    108 struct PP_TrueTypeFontDesc_Dev {
    109    /**
    110    * Font family name as a string. This can also be an undefined var, in which
    111    * case the generic family will be obeyed. If the face is not available on
    112    * the system, the browser will attempt to do font fallback or pick a default
    113    * font.
    114    */
    115   PP_Var family;
    116 
    117   /** This value specifies a generic font family. If a family name string is
    118    * provided when creating a font, this is ignored. */
    119   PP_TrueTypeFontFamily_Dev generic_family;
    120 
    121   /** This value specifies the font style. */
    122   PP_TrueTypeFontStyle_Dev style;
    123 
    124   /** This value specifies the font weight. */
    125   PP_TrueTypeFontWeight_Dev weight;
    126 
    127   /** This value specifies the font width, for condensed or expanded fonts */
    128   PP_TrueTypeFontWidth_Dev width;
    129 
    130   /** This value specifies a character set. */
    131   PP_TrueTypeFontCharset_Dev charset;
    132 
    133   /**
    134    * Ensure that this struct is 40-bytes wide by padding the end.  In some
    135    * compilers, PP_Var is 8-byte aligned, so those compilers align this struct
    136    * on 8-byte boundaries as well and pad it to 16 bytes even without this
    137    * padding attribute.  This padding makes its size consistent across
    138    * compilers.
    139    */
    140   int32_t padding;
    141 };
    142 
    143 interface PPB_TrueTypeFont_Dev {
    144   /**
    145    * Gets an array of TrueType font family names available on the host.
    146    * These names can be used to create a font from a specific family.
    147    *
    148    * @param[in] instance A <code>PP_Instance</code> requesting the family names.
    149    * @param[in] output A <code>PP_ArrayOutput</code> to hold the names.
    150    * The output is an array of PP_Vars, each holding a family name.
    151    * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
    152    * completion of GetFontFamilies.
    153    *
    154    * @return If >= 0, the number of family names returned, otherwise an error
    155    * code from <code>pp_errors.h</code>.
    156    */
    157   [singleton,api=PPB_TrueTypeFont_Singleton_API]
    158   int32_t GetFontFamilies([in] PP_Instance instance,
    159                           [in] PP_ArrayOutput output,
    160                           [in] PP_CompletionCallback callback);
    161 
    162   /**
    163    * Gets an array of TrueType font descriptors for a given font family. These
    164    * descriptors can be used to create a font in that family and matching the
    165    * descriptor attributes.
    166    *
    167    * @param[in] instance A <code>PP_Instance</code> requesting the font
    168    * descriptors.
    169    * @param[in] family A <code>PP_Var</code> holding a string specifying the
    170    * font family.
    171    * @param[in] output A <code>PP_ArrayOutput</code> to hold the descriptors.
    172    * The output is an array of <code>PP_TrueTypeFontDesc</code> structs. Each
    173    * desc contains a PP_Var for the family name which must be released.
    174    * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
    175    * completion of GetFontsInFamily.
    176    *
    177    * @return If >= 0, the number of font descriptors returned, otherwise an
    178    * error code from <code>pp_errors.h</code>.
    179    */
    180   [singleton,api=PPB_TrueTypeFont_Singleton_API]
    181   int32_t GetFontsInFamily([in] PP_Instance instance,
    182                            [in] PP_Var family,
    183                            [in] PP_ArrayOutput output,
    184                            [in] PP_CompletionCallback callback);
    185 
    186   /**
    187    * Creates a font resource matching the given font characteristics. The
    188    * resource id will be non-zero on success, or zero on failure.
    189    *
    190    * @param[in] instance A <code>PP_Instance</code> to own the font.
    191    * @param[in] desc A pointer to a <code>PP_TrueTypeFontDesc</code> describing
    192    * the font.
    193    */
    194   PP_Resource Create([in] PP_Instance instance,
    195                      [in] PP_TrueTypeFontDesc_Dev desc);
    196 
    197   /**
    198    * Determines if the given resource is a TrueType font.
    199    *
    200    * @param[in] resource A <code>PP_Resource</code> corresponding to a resource.
    201    *
    202    * @return <code>PP_TRUE</code> if the resource is a
    203    * <code>PPB_TrueTypeFont_Dev</code>, <code>PP_FALSE</code> otherwise.
    204    */
    205   PP_Bool IsTrueTypeFont([in] PP_Resource resource);
    206 
    207   /**
    208    * Returns a description of the given font resource. This description may
    209    * differ from the description passed to Create, reflecting the host's font
    210    * matching and fallback algorithm.
    211    *
    212    * @param[in] font A <code>PP_Resource</code> corresponding to a font.
    213    * @param[out] desc A pointer to a <code>PP_TrueTypeFontDesc</code> to hold
    214    * the description. The internal 'family' PP_Var should be set to undefined,
    215    * since this function overwrites the <code>PP_TrueTypeFontDesc</code>. After
    216    * successful completion, the family will be set to a PP_Var with a single
    217    * reference, which the caller must release after use.
    218    * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
    219    * completion of Describe.
    220    *
    221    * @return A return code from <code>pp_errors.h</code>. If an error code is
    222    * returned, the <code>PP_TrueTypeFontDesc</code> will be unchanged.
    223    */
    224   int32_t Describe([in] PP_Resource font,
    225                    [out] PP_TrueTypeFontDesc_Dev desc,
    226                    [in] PP_CompletionCallback callback);
    227 
    228   /**
    229    * Gets an array of identifying tags for each table in the font. These tags
    230    * can be used to request specific tables using GetTable.
    231    *
    232    * @param[in] font A <code>PP_Resource</code> corresponding to a font.
    233    * @param[in] output A <code>PP_ArrayOutput</code> to hold the tags.
    234    * The output is an array of 4 byte integers, each representing a table tag.
    235    * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
    236    * completion of GetTableTags.
    237    *
    238    * @return If >= 0, the number of table tags returned, otherwise an error
    239    * code from <code>pp_errors.h</code>.
    240    */
    241   int32_t GetTableTags([in] PP_Resource font,
    242                        [in] PP_ArrayOutput output,
    243                        [in] PP_CompletionCallback callback);
    244 
    245   /**
    246    * Copies the given font table into client memory.
    247    *
    248    * @param[in] font A <code>PP_Resource</code> corresponding to a font.
    249    * @param[in] table A 4 byte value indicating which table to copy.
    250    * For example, 'glyf' will cause the outline table to be copied into the
    251    * output array. A zero tag value will cause the entire font to be copied.
    252    * @param[in] offset The offset into the font table.
    253    * @param[in] max_data_length The maximum number of bytes to transfer from
    254    * <code>offset</code>.
    255    * @param[in] output A <code>PP_ArrayOutput</code> to hold the font data.
    256    * The output is an array of bytes.
    257    * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
    258    * completion of GetTable.
    259    *
    260    * @return If >= 0, the table size in bytes, otherwise an error code from
    261    * <code>pp_errors.h</code>.
    262    */
    263   int32_t GetTable([in] PP_Resource font,
    264                    [in] uint32_t table,
    265                    [in] int32_t offset,
    266                    [in] int32_t max_data_length,
    267                    [in] PP_ArrayOutput output,
    268                    [in] PP_CompletionCallback callback);
    269 };
    270