/* * Copyright © 2010,2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #include "hb.hh" #ifndef HB_NO_OT_SHAPE #include "hb-ot-shaper.hh" /* Thai / Lao shaper */ /* PUA shaping */ enum thai_consonant_type_t { … }; static thai_consonant_type_t get_consonant_type (hb_codepoint_t u) { … } enum thai_mark_type_t { … }; static thai_mark_type_t get_mark_type (hb_codepoint_t u) { … } enum thai_action_t { … }; static hb_codepoint_t thai_pua_shape (hb_codepoint_t u, thai_action_t action, hb_font_t *font) { … } static enum thai_above_state_t { … } thai_above_start_state[NUM_CONSONANT_TYPES + 1/* For NOT_CONSONANT */] = …; static const struct thai_above_state_machine_edge_t { … } thai_above_state_machine[NUM_ABOVE_STATES][NUM_MARK_TYPES] = …; static enum thai_below_state_t { … } thai_below_start_state[NUM_CONSONANT_TYPES + 1/* For NOT_CONSONANT */] = …; static const struct thai_below_state_machine_edge_t { … } thai_below_state_machine[NUM_BELOW_STATES][NUM_MARK_TYPES] = …; static void do_thai_pua_shaping (const hb_ot_shape_plan_t *plan HB_UNUSED, hb_buffer_t *buffer, hb_font_t *font) { … } static void preprocess_text_thai (const hb_ot_shape_plan_t *plan, hb_buffer_t *buffer, hb_font_t *font) { … } const hb_ot_shaper_t _hb_ot_shaper_thai = …; #endif