1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* pshglob.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* PostScript hinter global hinting management. */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin/* Copyright 2001-2017 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#ifndef PSHGLOB_H_ 20055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#define PSHGLOB_H_ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_POSTSCRIPT_HINTS_H 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** GLOBAL HINTS INTERNALS *****/ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @constant: */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PS_GLOBALS_MAX_BLUE_ZONES */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @description: */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The maximum number of blue zones in a font global hints structure. */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* See @PS_Globals_BluesRec. */ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PS_GLOBALS_MAX_BLUE_ZONES 16 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @constant: */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PS_GLOBALS_MAX_STD_WIDTHS */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @description: */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The maximum number of standard and snap widths in either the */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal or vertical direction. See @PS_Globals_WidthsRec. */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PS_GLOBALS_MAX_STD_WIDTHS 16 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* standard and snap width */ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_WidthRec_ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org; 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos cur; 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos fit; 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_WidthRec, *PSH_Width; 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* standard and snap widths table */ 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_WidthsRec_ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt count; 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS]; 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_WidthsRec, *PSH_Widths; 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_DimensionRec_ 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_WidthsRec stdw; 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed scale_mult; 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed scale_delta; 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_DimensionRec, *PSH_Dimension; 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* blue zone descriptor */ 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_Blue_ZoneRec_ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org_ref; 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org_delta; 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org_top; 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org_bottom; 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos cur_ref; 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos cur_delta; 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos cur_bottom; 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos cur_top; 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_Blue_ZoneRec, *PSH_Blue_Zone; 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_Blue_TableRec_ 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt count; 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES]; 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_Blue_TableRec, *PSH_Blue_Table; 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* blue zones table */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_BluesRec_ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Blue_TableRec normal_top; 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Blue_TableRec normal_bottom; 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Blue_TableRec family_top; 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Blue_TableRec family_bottom; 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed blue_scale; 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int blue_shift; 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int blue_threshold; 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int blue_fuzz; 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool no_overshoots; 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_BluesRec, *PSH_Blues; 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* font globals. */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* dimension 0 => X coordinates + vertical hints/stems */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* dimension 1 => Y coordinates + horizontal hints/stems */ 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_GlobalsRec_ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_DimensionRec dimension[2]; 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_BluesRec blues; 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_GlobalsRec; 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PSH_BLUE_ALIGN_NONE 0 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PSH_BLUE_ALIGN_TOP 1 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PSH_BLUE_ALIGN_BOT 2 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_AlignmentRec_ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int align; 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos align_top; 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos align_bot; 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_AlignmentRec, *PSH_Alignment; 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_LOCAL( void ) 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ); 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* snap a stem width to fitter coordinates. `org_width' is in font */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* units. The result is in device pixels (26.6 format). */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_LOCAL( FT_Pos ) 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project psh_dimension_snap_width( PSH_Dimension dimension, 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int org_width ); 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 170fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_LOCAL( void ) 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project psh_globals_set_scale( PSH_Globals globals, 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed x_scale, 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed y_scale, 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed x_delta, 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed y_delta ); 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* snap a stem to one or two blue zones */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_LOCAL( void ) 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project psh_blues_snap_stem( PSH_Blues blues, 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int stem_top, 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int stem_bot, 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Alignment alignment ); 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef DEBUG_HINTER 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project extern PSH_Globals ps_debug_globals; 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 193055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#endif /* PSHGLOB_H_ */ 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 197