Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright  2009  Red Hat, Inc.
      3  * Copyright  2012  Google, Inc.
      4  *
      5  *  This is part of HarfBuzz, a text shaping library.
      6  *
      7  * Permission is hereby granted, without written agreement and without
      8  * license or royalty fees, to use, copy, modify, and distribute this
      9  * software and its documentation for any purpose, provided that the
     10  * above copyright notice and the following two paragraphs appear in
     11  * all copies of this software.
     12  *
     13  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
     14  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
     15  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
     16  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
     17  * DAMAGE.
     18  *
     19  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
     20  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     21  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
     22  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
     23  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
     24  *
     25  * Red Hat Author(s): Behdad Esfahbod
     26  * Google Author(s): Behdad Esfahbod
     27  */
     28 
     29 #ifndef HB_H_IN
     30 #error "Include <hb.h> instead."
     31 #endif
     32 
     33 #ifndef HB_SHAPE_H
     34 #define HB_SHAPE_H
     35 
     36 #include "hb-common.h"
     37 #include "hb-buffer.h"
     38 #include "hb-font.h"
     39 
     40 HB_BEGIN_DECLS
     41 
     42 
     43 typedef struct hb_feature_t {
     44   hb_tag_t      tag;
     45   uint32_t      value;
     46   unsigned int  start;
     47   unsigned int  end;
     48 } hb_feature_t;
     49 
     50 /* len=-1 means str is NUL-terminated */
     51 hb_bool_t
     52 hb_feature_from_string (const char *str, int len,
     53 			hb_feature_t *feature);
     54 
     55 /* Something like 128 bytes is more than enough.
     56  * nul-terminates. */
     57 void
     58 hb_feature_to_string (hb_feature_t *feature,
     59 		      char *buf, unsigned int size);
     60 
     61 
     62 void
     63 hb_shape (hb_font_t           *font,
     64 	  hb_buffer_t         *buffer,
     65 	  const hb_feature_t  *features,
     66 	  unsigned int         num_features);
     67 
     68 hb_bool_t
     69 hb_shape_full (hb_font_t          *font,
     70 	       hb_buffer_t        *buffer,
     71 	       const hb_feature_t *features,
     72 	       unsigned int        num_features,
     73 	       const char * const *shaper_list);
     74 
     75 const char **
     76 hb_shape_list_shapers (void);
     77 
     78 
     79 HB_END_DECLS
     80 
     81 #endif /* HB_SHAPE_H */
     82