Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: third_party/harfbuzz/src/harfbuzz-gpos-private.h

Issue 7595001: Update (old) harfbuzz to ToT (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/harfbuzz/src/harfbuzz-gpos.c ('k') | third_party/harfbuzz/src/harfbuzz-greek.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998-2004 David Turner and Werner Lemberg 2 * Copyright (C) 1998-2004 David Turner and Werner Lemberg
3 * Copyright (C) 2006 Behdad Esfahbod 3 * Copyright (C) 2006 Behdad Esfahbod
4 * 4 *
5 * This is part of HarfBuzz, an OpenType Layout engine library. 5 * This is part of HarfBuzz, an OpenType Layout engine library.
6 * 6 *
7 * Permission is hereby granted, without written agreement and without 7 * Permission is hereby granted, without written agreement and without
8 * license or royalty fees, to use, copy, modify, and distribute this 8 * license or royalty fees, to use, copy, modify, and distribute this
9 * software and its documentation for any purpose, provided that the 9 * software and its documentation for any purpose, provided that the
10 * above copyright notice and the following two paragraphs appear in 10 * above copyright notice and the following two paragraphs appear in
(...skipping 14 matching lines...) Expand all
25 25
26 #ifndef HARFBUZZ_GPOS_PRIVATE_H 26 #ifndef HARFBUZZ_GPOS_PRIVATE_H
27 #define HARFBUZZ_GPOS_PRIVATE_H 27 #define HARFBUZZ_GPOS_PRIVATE_H
28 28
29 #include "harfbuzz-impl.h" 29 #include "harfbuzz-impl.h"
30 #include "harfbuzz-stream-private.h" 30 #include "harfbuzz-stream-private.h"
31 #include "harfbuzz-gpos.h" 31 #include "harfbuzz-gpos.h"
32 32
33 HB_BEGIN_HEADER 33 HB_BEGIN_HEADER
34 34
35 #ifdef HB_USE_PACKED_STRUCTS
36 #pragma pack(push, 1)
37 #endif
35 38
36 /* shared tables */ 39 /* shared tables */
37 40
41 #define VR_X_PLACEMENT_DEVICE 0
42 #define VR_Y_PLACEMENT_DEVICE 1
43 #define VR_X_ADVANCE_DEVICE 2
44 #define VR_Y_ADVANCE_DEVICE 3
45
38 struct HB_ValueRecord_ 46 struct HB_ValueRecord_
39 { 47 {
40 HB_Short XPlacement; /* horizontal adjustment for 48 HB_Short XPlacement; /* horizontal adjustment for
41 placement */ 49 placement */
42 HB_Short YPlacement; /* vertical adjustment for 50 HB_Short YPlacement; /* vertical adjustment for
43 placement */ 51 placement */
44 HB_Short XAdvance; /* horizontal adjustment for 52 HB_Short XAdvance; /* horizontal adjustment for
45 advance */ 53 advance */
46 HB_Short YAdvance; /* vertical adjustment for 54 HB_Short YAdvance; /* vertical adjustment for
47 advance */ 55 advance */
48 HB_Device XPlacementDevice; /* device table for horizontal 56
49 » » » » » placement */ 57 HB_Device** DeviceTables; /* device tables for placement
50 HB_Device YPlacementDevice; /* device table for vertical 58 » » » » » and advance */
51 » » » » » placement */ 59
52 HB_Device XAdvanceDevice; /* device table for horizontal 60 #ifdef HB_SUPPORT_MULTIPLE_MASTER
53 » » » » » advance */
54 HB_Device YAdvanceDevice; /* device table for vertical
55 » » » » » advance */
56 HB_UShort XIdPlacement; /* horizontal placement metric ID */ 61 HB_UShort XIdPlacement; /* horizontal placement metric ID */
57 HB_UShort YIdPlacement; /* vertical placement metric ID */ 62 HB_UShort YIdPlacement; /* vertical placement metric ID */
58 HB_UShort XIdAdvance; /* horizontal advance metric ID */ 63 HB_UShort XIdAdvance; /* horizontal advance metric ID */
59 HB_UShort YIdAdvance; /* vertical advance metric ID */ 64 HB_UShort YIdAdvance; /* vertical advance metric ID */
65 #endif
60 }; 66 };
61 67
62 typedef struct HB_ValueRecord_ HB_ValueRecord; 68 typedef struct HB_ValueRecord_ HB_ValueRecord;
63 69
64 70
65 /* Mask values to scan the value format of the ValueRecord structure. 71 /* Mask values to scan the value format of the ValueRecord structure.
66 We always expand compressed ValueRecords of the font. */ 72 We always expand compressed ValueRecords of the font. */
67 73
74 #define HB_GPOS_FORMAT_HAVE_DEVICE_TABLES 0x00F0
75
68 #define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001 76 #define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001
69 #define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002 77 #define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002
70 #define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004 78 #define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004
71 #define HB_GPOS_FORMAT_HAVE_Y_ADVANCE 0x0008 79 #define HB_GPOS_FORMAT_HAVE_Y_ADVANCE 0x0008
72 #define HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE 0x0010 80 #define HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE 0x0010
73 #define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE 0x0020 81 #define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE 0x0020
74 #define HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE 0x0040 82 #define HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE 0x0040
75 #define HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE 0x0080 83 #define HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE 0x0080
76 #define HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT 0x0100 84 #define HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT 0x0100
77 #define HB_GPOS_FORMAT_HAVE_Y_ID_PLACEMENT 0x0200 85 #define HB_GPOS_FORMAT_HAVE_Y_ID_PLACEMENT 0x0200
(...skipping 12 matching lines...) Expand all
90 98
91 struct HB_AnchorFormat2_ 99 struct HB_AnchorFormat2_
92 { 100 {
93 HB_Short XCoordinate; /* horizontal value */ 101 HB_Short XCoordinate; /* horizontal value */
94 HB_Short YCoordinate; /* vertical value */ 102 HB_Short YCoordinate; /* vertical value */
95 HB_UShort AnchorPoint; /* index to glyph contour point */ 103 HB_UShort AnchorPoint; /* index to glyph contour point */
96 }; 104 };
97 105
98 typedef struct HB_AnchorFormat2_ HB_AnchorFormat2; 106 typedef struct HB_AnchorFormat2_ HB_AnchorFormat2;
99 107
108 #define AF3_X_DEVICE_TABLE 0
109 #define AF3_Y_DEVICE_TABLE 1
100 110
101 struct HB_AnchorFormat3_ 111 struct HB_AnchorFormat3_
102 { 112 {
103 HB_Short XCoordinate; /* horizontal value */ 113 HB_Short XCoordinate; /* horizontal value */
104 HB_Short YCoordinate; /* vertical value */ 114 HB_Short YCoordinate; /* vertical value */
105 HB_Device XDeviceTable; /* device table for X coordinate */ 115 HB_Device** DeviceTables; /* device tables for coordinates */
106 HB_Device YDeviceTable; /* device table for Y coordinate */
107 }; 116 };
108 117
109 typedef struct HB_AnchorFormat3_ HB_AnchorFormat3; 118 typedef struct HB_AnchorFormat3_ HB_AnchorFormat3;
110 119
111 120
121 #ifdef HB_SUPPORT_MULTIPLE_MASTER
112 struct HB_AnchorFormat4_ 122 struct HB_AnchorFormat4_
113 { 123 {
114 HB_UShort XIdAnchor; /* horizontal metric ID */ 124 HB_UShort XIdAnchor; /* horizontal metric ID */
115 HB_UShort YIdAnchor; /* vertical metric ID */ 125 HB_UShort YIdAnchor; /* vertical metric ID */
116 }; 126 };
117 127
118 typedef struct HB_AnchorFormat4_ HB_AnchorFormat4; 128 typedef struct HB_AnchorFormat4_ HB_AnchorFormat4;
129 #endif
119 130
120 131
121 struct HB_Anchor_ 132 struct HB_Anchor_
122 { 133 {
123 HB_UShort PosFormat; /* 1, 2, 3, or 4 -- 0 indicates 134 HB_Byte PosFormat; /* 1, 2, 3, or 4 -- 0 indicates
124 that there is no Anchor table */ 135 that there is no Anchor table */
125 136
126 union 137 union
127 { 138 {
128 HB_AnchorFormat1 af1; 139 HB_AnchorFormat1 af1;
129 HB_AnchorFormat2 af2; 140 HB_AnchorFormat2 af2;
130 HB_AnchorFormat3 af3; 141 HB_AnchorFormat3 af3;
142 #ifdef HB_SUPPORT_MULTIPLE_MASTER
131 HB_AnchorFormat4 af4; 143 HB_AnchorFormat4 af4;
144 #endif
132 } af; 145 } af;
133 }; 146 };
134 147
135 typedef struct HB_Anchor_ HB_Anchor; 148 typedef struct HB_Anchor_ HB_Anchor;
136 149
137 150
138 struct HB_MarkRecord_ 151 struct HB_MarkRecord_
139 { 152 {
140 HB_UShort Class; /* mark class */ 153 HB_UShort Class; /* mark class */
141 HB_Anchor MarkAnchor; /* anchor table */ 154 HB_Anchor MarkAnchor; /* anchor table */
(...skipping 26 matching lines...) Expand all
168 { 181 {
169 HB_UShort ValueCount; /* number of ValueRecord tables */ 182 HB_UShort ValueCount; /* number of ValueRecord tables */
170 HB_ValueRecord* Value; /* array of ValueRecord tables */ 183 HB_ValueRecord* Value; /* array of ValueRecord tables */
171 }; 184 };
172 185
173 typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2; 186 typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2;
174 187
175 188
176 struct HB_SinglePos_ 189 struct HB_SinglePos_
177 { 190 {
178 HB_UShort PosFormat; /* 1 or 2 */ 191 HB_Byte PosFormat; /* 1 or 2 */
179 HB_Coverage Coverage; /* Coverage table */ 192 HB_Coverage Coverage; /* Coverage table */
180 193
181 HB_UShort ValueFormat; /* format of ValueRecord table */ 194 HB_UShort ValueFormat; /* format of ValueRecord table */
182 195
183 union 196 union
184 { 197 {
185 HB_SinglePosFormat1 spf1; 198 HB_SinglePosFormat1 spf1;
186 HB_SinglePosFormat2 spf2; 199 HB_SinglePosFormat2 spf2;
187 } spf; 200 } spf;
188 }; 201 };
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 HB_UShort Class2Count; /* number of classes in ClassDef2 261 HB_UShort Class2Count; /* number of classes in ClassDef2
249 table */ 262 table */
250 HB_Class1Record* Class1Record; /* array of Class1Record tables */ 263 HB_Class1Record* Class1Record; /* array of Class1Record tables */
251 }; 264 };
252 265
253 typedef struct HB_PairPosFormat2_ HB_PairPosFormat2; 266 typedef struct HB_PairPosFormat2_ HB_PairPosFormat2;
254 267
255 268
256 struct HB_PairPos_ 269 struct HB_PairPos_
257 { 270 {
258 HB_UShort PosFormat; /* 1 or 2 */ 271 HB_Byte PosFormat; /* 1 or 2 */
259 HB_Coverage Coverage; /* Coverage table */ 272 HB_Coverage Coverage; /* Coverage table */
260 HB_UShort ValueFormat1; /* format of ValueRecord table 273 HB_UShort ValueFormat1; /* format of ValueRecord table
261 for first glyph */ 274 for first glyph */
262 HB_UShort ValueFormat2; /* format of ValueRecord table 275 HB_UShort ValueFormat2; /* format of ValueRecord table
263 for second glyph */ 276 for second glyph */
264 277
265 union 278 union
266 { 279 {
267 HB_PairPosFormat1 ppf1; 280 HB_PairPosFormat1 ppf1;
268 HB_PairPosFormat2 ppf2; 281 HB_PairPosFormat2 ppf2;
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 HB_Coverage* Coverage; /* array of Coverage tables */ 513 HB_Coverage* Coverage; /* array of Coverage tables */
501 HB_PosLookupRecord* PosLookupRecord; 514 HB_PosLookupRecord* PosLookupRecord;
502 /* array of PosLookupRecord tables */ 515 /* array of PosLookupRecord tables */
503 }; 516 };
504 517
505 typedef struct HB_ContextPosFormat3_ HB_ContextPosFormat3; 518 typedef struct HB_ContextPosFormat3_ HB_ContextPosFormat3;
506 519
507 520
508 struct HB_ContextPos_ 521 struct HB_ContextPos_
509 { 522 {
510 HB_UShort PosFormat; /* 1, 2, or 3 */ 523 HB_Byte PosFormat; /* 1, 2, or 3 */
511 524
512 union 525 union
513 { 526 {
514 HB_ContextPosFormat1 cpf1; 527 HB_ContextPosFormat1 cpf1;
515 HB_ContextPosFormat2 cpf2; 528 HB_ContextPosFormat2 cpf2;
516 HB_ContextPosFormat3 cpf3; 529 HB_ContextPosFormat3 cpf3;
517 } cpf; 530 } cpf;
518 }; 531 };
519 532
520 typedef struct HB_ContextPos_ HB_ContextPos; 533 typedef struct HB_ContextPos_ HB_ContextPos;
521 534
522 535
523 /* LookupType 8 */ 536 /* LookupType 8 */
524 537
525 struct HB_ChainPosRule_ 538 struct HB_ChainPosRule_
526 { 539 {
540 HB_UShort* Backtrack; /* array of backtrack glyph IDs */
541 HB_UShort* Input; /* array of input glyph IDs */
542 HB_UShort* Lookahead; /* array of lookahead glyph IDs */
543 HB_PosLookupRecord* PosLookupRecord;
544 /* array of PosLookupRecords */
527 HB_UShort BacktrackGlyphCount; 545 HB_UShort BacktrackGlyphCount;
528 /* total number of backtrack glyphs */ 546 /* total number of backtrack glyphs */
529 HB_UShort* Backtrack; /* array of backtrack glyph IDs */
530 HB_UShort InputGlyphCount; 547 HB_UShort InputGlyphCount;
531 /* total number of input glyphs */ 548 /* total number of input glyphs */
532 HB_UShort* Input; /* array of input glyph IDs */
533 HB_UShort LookaheadGlyphCount; 549 HB_UShort LookaheadGlyphCount;
534 /* total number of lookahead glyphs */ 550 /* total number of lookahead glyphs */
535 HB_UShort* Lookahead; /* array of lookahead glyph IDs */
536 HB_UShort PosCount; /* number of PosLookupRecords */ 551 HB_UShort PosCount; /* number of PosLookupRecords */
537 HB_PosLookupRecord* PosLookupRecord;
538 /* array of PosLookupRecords */
539 }; 552 };
540 553
541 typedef struct HB_ChainPosRule_ HB_ChainPosRule; 554 typedef struct HB_ChainPosRule_ HB_ChainPosRule;
542 555
543 556
544 struct HB_ChainPosRuleSet_ 557 struct HB_ChainPosRuleSet_
545 { 558 {
546 HB_UShort ChainPosRuleCount; 559 HB_UShort ChainPosRuleCount;
547 /* number of ChainPosRule tables */ 560 /* number of ChainPosRule tables */
548 HB_ChainPosRule* ChainPosRule; /* array of ChainPosRule tables */ 561 HB_ChainPosRule* ChainPosRule; /* array of ChainPosRule tables */
549 }; 562 };
550 563
551 typedef struct HB_ChainPosRuleSet_ HB_ChainPosRuleSet; 564 typedef struct HB_ChainPosRuleSet_ HB_ChainPosRuleSet;
552 565
553 566
554 struct HB_ChainContextPosFormat1_ 567 struct HB_ChainContextPosFormat1_
555 { 568 {
556 HB_Coverage Coverage; /* Coverage table */ 569 HB_Coverage Coverage; /* Coverage table */
557 HB_UShort ChainPosRuleSetCount; 570 HB_UShort ChainPosRuleSetCount;
558 /* number of ChainPosRuleSet tables */ 571 /* number of ChainPosRuleSet tables */
559 HB_ChainPosRuleSet* ChainPosRuleSet; 572 HB_ChainPosRuleSet* ChainPosRuleSet;
560 /* array of ChainPosRuleSet tables */ 573 /* array of ChainPosRuleSet tables */
561 }; 574 };
562 575
563 typedef struct HB_ChainContextPosFormat1_ HB_ChainContextPosFormat1; 576 typedef struct HB_ChainContextPosFormat1_ HB_ChainContextPosFormat1;
564 577
565 578
566 struct HB_ChainPosClassRule_ 579 struct HB_ChainPosClassRule_
567 { 580 {
581 HB_UShort* Backtrack; /* array of backtrack classes */
582 HB_UShort* Input; /* array of context classes */
583 HB_UShort* Lookahead; /* array of lookahead classes */
584 HB_PosLookupRecord* PosLookupRecord;
585 /* array of substitution lookups */
568 HB_UShort BacktrackGlyphCount; 586 HB_UShort BacktrackGlyphCount;
569 /* total number of backtrack 587 /* total number of backtrack
570 classes */ 588 classes */
571 HB_UShort* Backtrack; /* array of backtrack classes */
572 HB_UShort InputGlyphCount; 589 HB_UShort InputGlyphCount;
573 /* total number of context classes */ 590 /* total number of context classes */
574 HB_UShort* Input; /* array of context classes */
575 HB_UShort LookaheadGlyphCount; 591 HB_UShort LookaheadGlyphCount;
576 /* total number of lookahead 592 /* total number of lookahead
577 classes */ 593 classes */
578 HB_UShort* Lookahead; /* array of lookahead classes */
579 HB_UShort PosCount; /* number of PosLookupRecords */ 594 HB_UShort PosCount; /* number of PosLookupRecords */
580 HB_PosLookupRecord* PosLookupRecord;
581 /* array of substitution lookups */
582 }; 595 };
583 596
584 typedef struct HB_ChainPosClassRule_ HB_ChainPosClassRule; 597 typedef struct HB_ChainPosClassRule_ HB_ChainPosClassRule;
585 598
586 599
587 struct HB_ChainPosClassSet_ 600 struct HB_ChainPosClassSet_
588 { 601 {
589 HB_UShort ChainPosClassRuleCount; 602 HB_UShort ChainPosClassRuleCount;
590 /* number of ChainPosClassRule 603 /* number of ChainPosClassRule
591 tables */ 604 tables */
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 HB_UShort PosCount; /* number of PosLookupRecords */ 662 HB_UShort PosCount; /* number of PosLookupRecords */
650 HB_PosLookupRecord* PosLookupRecord; 663 HB_PosLookupRecord* PosLookupRecord;
651 /* array of substitution lookups */ 664 /* array of substitution lookups */
652 }; 665 };
653 666
654 typedef struct HB_ChainContextPosFormat3_ HB_ChainContextPosFormat3; 667 typedef struct HB_ChainContextPosFormat3_ HB_ChainContextPosFormat3;
655 668
656 669
657 struct HB_ChainContextPos_ 670 struct HB_ChainContextPos_
658 { 671 {
659 HB_UShort PosFormat; /* 1, 2, or 3 */ 672 HB_Byte PosFormat; /* 1, 2, or 3 */
660 673
661 union 674 union
662 { 675 {
663 HB_ChainContextPosFormat1 ccpf1; 676 HB_ChainContextPosFormat1 ccpf1;
664 HB_ChainContextPosFormat2 ccpf2; 677 HB_ChainContextPosFormat2 ccpf2;
665 HB_ChainContextPosFormat3 ccpf3; 678 HB_ChainContextPosFormat3 ccpf3;
666 } ccpf; 679 } ccpf;
667 }; 680 };
668 681
669 typedef struct HB_ChainContextPos_ HB_ChainContextPos; 682 typedef struct HB_ChainContextPos_ HB_ChainContextPos;
(...skipping 30 matching lines...) Expand all
700 713
701 HB_INTERNAL HB_Error 714 HB_INTERNAL HB_Error
702 _HB_GPOS_Load_SubTable( HB_GPOS_SubTable* st, 715 _HB_GPOS_Load_SubTable( HB_GPOS_SubTable* st,
703 HB_Stream stream, 716 HB_Stream stream,
704 HB_UShort lookup_type ); 717 HB_UShort lookup_type );
705 718
706 HB_INTERNAL void 719 HB_INTERNAL void
707 _HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st, 720 _HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st,
708 HB_UShort lookup_type ); 721 HB_UShort lookup_type );
709 722
723 #ifdef HB_USE_PACKED_STRUCTS
724 #pragma pack(pop)
725 #endif
726
710 HB_END_HEADER 727 HB_END_HEADER
711 728
712 #endif /* HARFBUZZ_GPOS_PRIVATE_H */ 729 #endif /* HARFBUZZ_GPOS_PRIVATE_H */
OLDNEW
« no previous file with comments | « third_party/harfbuzz/src/harfbuzz-gpos.c ('k') | third_party/harfbuzz/src/harfbuzz-greek.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698