harfbuzz-gdef-private.h revision 57e6107a9d66a9a97b146def0ef38c010f954be6
1/* 2 * Copyright (C) 1998-2004 David Turner and Werner Lemberg 3 * Copyright (C) 2006 Behdad Esfahbod 4 * 5 * This is part of HarfBuzz, an OpenType Layout engine 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 26#ifndef HARFBUZZ_GDEF_PRIVATE_H 27#define HARFBUZZ_GDEF_PRIVATE_H 28 29#include "harfbuzz-impl.h" 30#include "harfbuzz-stream-private.h" 31#include "harfbuzz-buffer-private.h" 32#include "harfbuzz-gdef.h" 33 34HB_BEGIN_HEADER 35 36 37#ifdef HB_USE_PACKED_STRUCTS 38#pragma pack(push, 1) 39#endif 40 41/* Attachment related structures */ 42 43struct HB_AttachPoint_ 44{ 45 HB_UShort* PointIndex; /* array of contour points */ 46 HB_UShort PointCount; /* size of the PointIndex array */ 47}; 48 49/* Ligature Caret related structures */ 50 51struct HB_CaretValueFormat1_ 52{ 53 HB_Short Coordinate; /* x or y value (in design units) */ 54}; 55 56typedef struct HB_CaretValueFormat1_ HB_CaretValueFormat1; 57 58 59struct HB_CaretValueFormat2_ 60{ 61 HB_UShort CaretValuePoint; /* contour point index on glyph */ 62}; 63 64typedef struct HB_CaretValueFormat2_ HB_CaretValueFormat2; 65 66 67struct HB_CaretValueFormat3_ 68{ 69 HB_Device* Device; /* Device table for x or y value */ 70 HB_Short Coordinate; /* x or y value (in design units) */ 71}; 72 73typedef struct HB_CaretValueFormat3_ HB_CaretValueFormat3; 74 75 76#ifdef HB_SUPPORT_MULTIPLE_MASTER 77struct HB_CaretValueFormat4_ 78{ 79 HB_UShort IdCaretValue; /* metric ID */ 80}; 81 82typedef struct HB_CaretValueFormat4_ HB_CaretValueFormat4; 83#endif 84 85 86struct HB_CaretValue_ 87{ 88 union 89 { 90 HB_CaretValueFormat1 cvf1; 91 HB_CaretValueFormat2 cvf2; 92 HB_CaretValueFormat3 cvf3; 93#ifdef HB_SUPPORT_MULTIPLE_MASTER 94 HB_CaretValueFormat4 cvf4; 95#endif 96 } cvf; 97 98 HB_Byte CaretValueFormat; /* 1, 2, 3, or 4 */ 99}; 100 101typedef struct HB_CaretValue_ HB_CaretValue; 102 103 104struct HB_LigGlyph_ 105{ 106 HB_CaretValue* CaretValue; /* array of caret values */ 107 HB_UShort CaretCount; /* number of caret values */ 108 HB_Bool loaded; 109}; 110 111 112HB_INTERNAL HB_Error 113_HB_GDEF_Add_Glyph_Property( HB_GDEFHeader* gdef, 114 HB_UShort glyphID, 115 HB_UShort property ); 116 117HB_INTERNAL HB_Error 118_HB_GDEF_Check_Property( HB_GDEFHeader* gdef, 119 HB_GlyphItem item, 120 HB_UShort flags, 121 HB_UShort* property ); 122 123HB_INTERNAL HB_Error 124_HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef, 125 HB_Stream input, 126 HB_Lookup* lo, 127 HB_UShort num_lookups ); 128 129#ifdef HB_USE_PACKED_STRUCTS 130#pragma pack(pop) 131#endif 132 133HB_END_HEADER 134 135#endif /* HARFBUZZ_GDEF_PRIVATE_H */ 136