111138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod/* 211138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * Copyright © 2012 Google, Inc. 311138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * 411138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * This is part of HarfBuzz, a text shaping library. 511138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * 611138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * Permission is hereby granted, without written agreement and without 711138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 811138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * software and its documentation for any purpose, provided that the 911138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * above copyright notice and the following two paragraphs appear in 1011138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * all copies of this software. 1111138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * 1211138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 1311138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 1411138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 1511138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 1611138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * DAMAGE. 1711138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * 1811138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 1911138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 2011138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 2111138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 2211138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 2311138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * 2411138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod * Google Author(s): Behdad Esfahbod 2511138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod */ 2611138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 2711138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod#ifndef HB_OT_SHAPE_NORMALIZE_PRIVATE_HH 2811138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod#define HB_OT_SHAPE_NORMALIZE_PRIVATE_HH 2911138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 3011138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod#include "hb-private.hh" 3111138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 3211138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 33b00321ea78793d9b3592b5173a9800e6322424feBehdad Esfahbod/* buffer var allocations, used during the normalization process */ 34b00321ea78793d9b3592b5173a9800e6322424feBehdad Esfahbod#define glyph_index() var1.u32 3511138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 36eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbodstruct hb_ot_shape_plan_t; 370736915b8ed789a209205fec762997af3a8af89cBehdad Esfahbod 3811138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbodenum hb_ot_shape_normalization_mode_t { 398fc1f7fe74a25bf8549f5edd79c7da6b720eb064Behdad Esfahbod HB_OT_SHAPE_NORMALIZATION_MODE_NONE, 4011138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod HB_OT_SHAPE_NORMALIZATION_MODE_DECOMPOSED, 4111138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS, /* never composes base-to-base */ 42b85800f9de8976a7418ef9df467d3080c6ab0199Behdad Esfahbod HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, /* always fully decomposes and then recompose back */ 43693918ef8541014a5ef7dfb91c6ea0ae36d9c368Behdad Esfahbod 44030ac5022e8a43b9329c26e72527bafc582ef44bBehdad Esfahbod HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT = HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS 4511138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod}; 4611138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 47eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad EsfahbodHB_INTERNAL void _hb_ot_shape_normalize (const hb_ot_shape_plan_t *shaper, 4811138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod hb_buffer_t *buffer, 490736915b8ed789a209205fec762997af3a8af89cBehdad Esfahbod hb_font_t *font); 5011138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod 51eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod 52eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbodstruct hb_ot_shape_normalize_context_t 53eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod{ 54eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod const hb_ot_shape_plan_t *plan; 55eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_buffer_t *buffer; 56eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_font_t *font; 57eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_unicode_funcs_t *unicode; 58eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod bool (*decompose) (const hb_ot_shape_normalize_context_t *c, 59eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t ab, 60eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t *a, 61eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t *b); 62eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod bool (*compose) (const hb_ot_shape_normalize_context_t *c, 63eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t a, 64eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t b, 65eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod hb_codepoint_t *ab); 66eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod}; 67eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod 68eba312c8d1b2bbe8cb9b6414e843e78d2c521aa4Behdad Esfahbod 6911138ccff71f442da1fcf64faa0e1d22e083e775Behdad Esfahbod#endif /* HB_OT_SHAPE_NORMALIZE_PRIVATE_HH */ 70