115232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod/* 22409d5f8d7dd8b535ce5ea29e933f7db27d33793Behdad Esfahbod * Copyright © 2009 Red Hat, Inc. 3e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod * Copyright © 2012 Google, Inc. 415232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * 5c755cb3e3ac55156d0d2ec05adea7a650b97cc41Behdad Esfahbod * This is part of HarfBuzz, a text shaping library. 615232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * 715232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * Permission is hereby granted, without written agreement and without 815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 915232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * software and its documentation for any purpose, provided that the 1015232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * above copyright notice and the following two paragraphs appear in 1115232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * all copies of this software. 1215232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * 1315232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 1415232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 1515232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 1615232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 1715232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * DAMAGE. 1815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * 1915232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 2015232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 2115232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 2215232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 2315232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 2415232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * 2515232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod * Red Hat Author(s): Behdad Esfahbod 26e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod * Google Author(s): Behdad Esfahbod 2715232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod */ 2815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 29d1c9eb458c843215da8df84b596bfae51fee135bBehdad Esfahbod#ifndef HB_H_IN 30d1c9eb458c843215da8df84b596bfae51fee135bBehdad Esfahbod#error "Include <hb.h> instead." 31d1c9eb458c843215da8df84b596bfae51fee135bBehdad Esfahbod#endif 32d1c9eb458c843215da8df84b596bfae51fee135bBehdad Esfahbod 3315232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#ifndef HB_SHAPE_H 3415232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#define HB_SHAPE_H 3515232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 3615232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#include "hb-common.h" 3715232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#include "hb-buffer.h" 3815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#include "hb-font.h" 3915232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 4015232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad EsfahbodHB_BEGIN_DECLS 4115232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 42acdba3f90b232fc12fcb200dca2584481b339118Behdad Esfahbod 431bc1cb3603167f5da309336f7018c8b0608ac104Behdad Esfahbodtypedef struct hb_feature_t { 440db299ccad346d9ea5573ea8408b78d9997bd379Behdad Esfahbod hb_tag_t tag; 450db299ccad346d9ea5573ea8408b78d9997bd379Behdad Esfahbod uint32_t value; 4615232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod unsigned int start; 4715232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod unsigned int end; 4815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod} hb_feature_t; 4915232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 50e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod/* len=-1 means str is NUL-terminated */ 51e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbodhb_bool_t 52e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbodhb_feature_from_string (const char *str, int len, 53e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod hb_feature_t *feature); 54e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod 556f69fa283e0a488da811df78bc83c41ed248b688Behdad Esfahbod/* Something like 128 bytes is more than enough. 56e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod * nul-terminates. */ 57e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbodvoid 58e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbodhb_feature_to_string (hb_feature_t *feature, 59e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod char *buf, unsigned int size); 60e30ebd2794b37bd8ec716a258d5cb017fb1dfadcBehdad Esfahbod 6102aeca985b570763342c35e99af90025bfa088d5Behdad Esfahbod 623ca6c4ecc299295b6682fa2b6b9f83b213223badBehdad Esfahbodvoid 6302aeca985b570763342c35e99af90025bfa088d5Behdad Esfahbodhb_shape (hb_font_t *font, 6402aeca985b570763342c35e99af90025bfa088d5Behdad Esfahbod hb_buffer_t *buffer, 6502aeca985b570763342c35e99af90025bfa088d5Behdad Esfahbod const hb_feature_t *features, 663ca6c4ecc299295b6682fa2b6b9f83b213223badBehdad Esfahbod unsigned int num_features); 673ca6c4ecc299295b6682fa2b6b9f83b213223badBehdad Esfahbod 683ca6c4ecc299295b6682fa2b6b9f83b213223badBehdad Esfahbodhb_bool_t 690501573deda3a8dcdfcea491392f554f21ed0154Behdad Esfahbodhb_shape_full (hb_font_t *font, 700501573deda3a8dcdfcea491392f554f21ed0154Behdad Esfahbod hb_buffer_t *buffer, 710501573deda3a8dcdfcea491392f554f21ed0154Behdad Esfahbod const hb_feature_t *features, 720501573deda3a8dcdfcea491392f554f21ed0154Behdad Esfahbod unsigned int num_features, 730501573deda3a8dcdfcea491392f554f21ed0154Behdad Esfahbod const char * const *shaper_list); 7415232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 759da554504e30a326fc57b28cdb0e57108bfa9555Behdad Esfahbodconst char ** 769da554504e30a326fc57b28cdb0e57108bfa9555Behdad Esfahbodhb_shape_list_shapers (void); 779da554504e30a326fc57b28cdb0e57108bfa9555Behdad Esfahbod 7815232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 7915232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad EsfahbodHB_END_DECLS 8015232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod 8115232e26f4a89dab1b6de35ad9d3d16e75bf93d0Behdad Esfahbod#endif /* HB_SHAPE_H */ 82