beta-0.89.2
[luatex.git] / source / texk / web2c / luatexdir / unilib / combiners.h
blobd26960feb95d80d8ba5438b649fb476b6bda1692
1 static const int poses300[] = {
2 _Above,
3 _Above,
4 _Above,
5 _Above,
6 _Above,
7 _Above,
8 _Above,
9 _Above,
10 _Above,
11 _Above,
12 _Above,
13 _Above,
14 _Above,
15 _Above,
16 _Above,
17 _Above,
18 _Above, /* 0x310 */
19 _Above,
20 _Above,
21 _Above,
22 _Above,
23 _Above|_CenterRight,
24 _Below,
25 _Below,
26 _Below,
27 _Below,
28 _Above,
29 _Above|_Right|_Touching,
30 _Below,
31 _Below,
32 _Below,
33 _Below,
34 _Below, /* 0x320 */
35 _Below|_Touching,
36 _Below|_Touching,
37 _Below,
38 _Below,
39 _Below,
40 _Below,
41 _Below|_Touching,
42 _Below|_Touching, /* 0x328 */
43 _Below,
44 _Below,
45 _Below,
46 _Below,
47 _Below,
48 _Below,
49 _Below,
50 _Below, /* 0x330 */
51 _Below,
52 _Below,
53 _Below,
54 _Overstrike,
55 _Overstrike,
56 _Overstrike,
57 _Overstrike,
58 _Overstrike, /* 0x338 */
59 _Below,
60 _Below,
61 _Below,
62 _Below,
63 _Above,
64 _Above,
65 _Above,
66 _Above|_Left, /* 0x340 */
67 _Above|_Right,
68 _Above,
69 _Above,
70 _Above,
71 _Below,
74 static const int poses360[] = {
75 _Above|_Joins2,
76 _Above|_Joins2,
77 _Below|_Joins2,
80 static const int poses385[] = {
81 _Above
83 static const int poses483[] = {
84 _Above|_CenterLeft,
85 _Above|_CenterLeft,
86 _Above|_CenterLeft,
87 _Above|_CenterLeft,
91 static const int poses488[] = {
92 _CenteredOutside, /* 8 down half-circles distributed in a circle around the character */
93 _CenteredOutside /* 8 commas rotated as moved around circle, bottom is normal comma */
96 static const int poses591[] = {
97 _Below,
98 _Above,
99 _Above,
100 _Above,
101 _Above,
102 _Below|_CenterRight,
103 _Above,
104 _Above,
105 _Above|_LeftEdge,
106 _Below|_RightEdge,
107 _Below,
108 _Above|_CenterRight,
109 _Above|_RightEdge,
110 _Above|_CenterRight,
111 _Above,
112 _Above|_RightEdge, /* 05a0 */
113 _Above|_LeftEdge
116 static const int poses5A3[] = {
117 _Below,
118 _Below,
119 _Below|_CenterLeft,
120 _Below|_CenterLeft,
121 _Below,
122 _Above|_CenterLeft,
123 _Above|_LeftEdge,
124 _Below,
125 _Above,
126 _Above,
127 _Below|_RightEdge,
128 _Above|_LeftEdge,
129 _Above,
130 _Below, /* 05b0 */
131 _Below,
132 _Below,
133 _Below,
134 _Below,
135 _Below,
136 _Below,
137 _Below,
138 _Below,
139 _Above|_LeftEdge
142 static const int poses5BB[] = {
143 _Below,
144 _Overstrike,
145 _Below
148 static const int poses5BF[] = {
149 _Above
152 static const int poses5C1[] = {
153 _Above|_RightEdge,
154 _Above|_LeftEdge
157 static const int poses5C4[] = {
158 _Above
161 static const int poses64b[] = {
162 _Above,
163 _Above,
164 _Below,
165 _Above,
166 _Above,
167 _Below,
168 _Above,
169 _Above,
173 static const int poses670[] = {
174 _Above
177 static const int poses6D6[] = {
178 _Above,
179 _Above,
180 _Above,
181 _Above,
182 _Above,
183 _Above,
184 _Above,
185 _Overstrike,
186 _Overstrike,
187 _Above,
188 _Above, /* 6e0 */
189 _Above,
190 _Above,
191 _Below,
192 _Above
195 static const int poses6E7[] = {
196 _Above,
197 _Above
200 static const int poses6EA[] = {
201 _Below,
202 _Above,
203 _Above,
204 _Below
207 static const int poses711[] = {
208 _Above
211 static const int poses730[] = {
212 _Above,
213 _Below,
214 _CenteredOutside, /* Two dots, one above CenterRight, one below CenterLeft */
215 _Above,
216 _Below,
217 _Above,
218 _Above,
219 _Below,
220 _Below,
221 _Below,
222 _Above,
223 _Below,
224 _Below,
225 _Above,
226 _Below,
227 _Above,
228 _Above|_LeftEdge, /* 0740 */
229 _Above,
230 _Below,
231 _Above,
232 _Below,
233 _Above,
234 _Below,
235 _Above,
236 _Below,
237 _Above,
238 _Above
241 static const int poses7A6[] = {
242 _Above|_CenterLeft,
243 _Above|_CenterLeft,
244 _Below|_CenterLeft,
245 _Below|_CenterLeft,
246 _Above|_CenterLeft,
247 _Above|_CenterLeft,
248 _Above|_CenterLeft,
249 _Above|_CenterLeft,
250 _Above|_CenterLeft,
251 _Above|_CenterLeft,
252 _Above|_CenterLeft,
255 static const int poses901[] = {
256 _Above,
257 _Above,
258 _Right
261 static const int poses93C[] = {
262 _Below
265 static const int poses93E[] = {
266 _Right,
267 _Left,
268 _Right, /* 940 */
269 _Below,
270 _Below,
271 _Below,
272 _Below,
273 _Above,
274 _Above|_CenterLeft,
275 _Above|_CenterLeft,
276 _Above|_CenterLeft,
277 _Right,
278 _Right,
279 _Right,
280 _Right,
281 _Below|_CenterRight
284 static const int poses951[] = {
285 _Above,
286 _Below,
287 _Above,
288 _Above
291 static const int poses962[] = {
292 _Below,
293 _Below
296 static const int poses981[] = {
297 _Above,
298 _Right,
299 _Right
302 static const int poses9BC[] = {
303 _Below
306 static const int poses9BE[] = {
307 _Right,
308 _Left,
309 _Right,
310 _Below,
311 _Below,
312 _Below,
313 _Below|_CenterRight
316 static const int poses9C7[] = {
317 _Left,
318 _Left
321 static const int poses9CB[] = {
322 _Overstrike,
323 _Overstrike,
324 _Below
327 static const int poses9D7[] = {
328 _Right
331 static const int poses9E2[] = {
332 _Below,
333 _Below
336 static const int posesA02[] = {
337 _Above
340 static const int posesA3C[] = {
341 _Below
344 static const int posesA3E[] = {
345 _Right,
346 _Left,
347 _Right, /* 0a40 */
348 _Below,
349 _Below
352 static const int posesA47[] = {
353 _Above|_CenterLeft,
354 _Above|_CenterLeft
357 static const int posesA4B[] = {
358 _Above|_CenterLeft,
359 _Above|_CenterLeft,
360 _Below
363 static const int posesA70[] = {
364 _Above,
365 _Above
368 static const int posesA81[] = {
369 _Above,
370 _Above,
371 _Right
374 static const int posesABC[] = {
375 _Below
378 static const int posesABE[] = {
379 _Right,
380 _Left,
381 _Right,
382 _Below,
383 _Below,
384 _Below,
385 _Below,
386 _Above
389 static const int posesAC7[] = {
390 _Above|_CenterLeft,
391 _Above|_CenterLeft,
392 _Right
395 static const int posesACB[] = {
396 _Right,
397 _Right,
398 _Below|_CenterRight
401 static const int posesB01[] = {
402 _Above,
403 _Above,
404 _Right
407 static const int posesB3C[] = {
408 _Below
411 static const int posesB3E[] = {
412 _Right,
413 _Above,
414 _Right, /* 0b40 */
415 _Below,
416 _Below,
417 _Below
420 static const int posesB47[] = {
421 _Left,
422 _Outside|_Left|_Above
425 static const int posesB4B[] = {
426 _CenteredOutside,
427 _CenteredOutside,
428 _Below
431 static const int posesB56[] = {
432 _Above,
433 _Right,
436 static const int posesB82[] = {
437 _Above,
438 _Right
441 static const int posesBBE[] = {
442 _Right,
443 _Right,
444 _Above,
445 _Right,
446 _Right
449 static const int posesBC6[] = {
450 _Left,
451 _Left,
452 _Left
455 static const int posesBCA[] = {
456 _CenteredOutside,
457 _CenteredOutside,
458 _CenteredOutside,
459 _Above
462 static const int posesBD7[] = {
463 _Right
466 static const int posesC01[] = {
467 _Right,
468 _Right,
469 _Right
472 static const int posesC3E[] = {
473 _Above|_CenterRight,
474 _Above,
475 _Above,
476 _Right,
477 _Right,
478 _Right,
479 _Right
482 static const int posesC46[] = {
483 _Above,
484 _Above,
485 _CenteredOutside
488 static const int posesC4A[] = {
489 _Above,
490 _Above,
491 _Above,
492 _Above
495 static const int posesC55[] = {
496 _Above,
497 _Below
500 static const int posesC82[] = {
501 _Right,
502 _Right
505 static const int posesCBE[] = {
506 _Right,
507 _Above,
508 _Outside|_Above|_Right,
509 _Right,
510 _Right,
511 _Right,
512 _Right
515 static const int posesCC6[] = {
516 _Above,
517 _Outside|_Above|_Right,
518 _Outside|_Above|_Right
521 static const int posesCCA[] = {
522 _Outside|_Above|_Right,
523 _Outside|_Above|_Right,
524 _Above,
525 _Above
528 static const int posesCD5[] = {
529 _Right,
530 _Right
533 static const int posesD02[] = {
534 _Right,
535 _Right
538 static const int posesD3E[] = {
539 _Right,
540 _Right,
541 _Right,
542 _Below|_Right,
543 _Below|_Right,
544 _Below
547 static const int posesD46[] = {
548 _Left,
549 _Left,
550 _Left
553 static const int posesD4A[] = {
554 _Outside|_Left|_Right,
555 _Outside|_Left|_Right,
556 _Outside|_Left|_Right,
557 _Above|_Right
560 static const int posesD57[] = {
561 _Right
564 static const int posesD82[] = {
565 _Right,
566 _Right
569 static const int posesDCA[] = {
570 _Right
573 static const int posesDCF[] = {
574 _Right,
575 _Right,
576 _Right,
577 _Above,
578 _Above,
579 _Below
582 static const int posesDD6[] = {
583 _Below
586 static const int posesDD8[] = {
587 _Right,
588 _Left,
589 _CenteredOutside,
590 _Left,
591 _CenteredOutside,
592 _CenteredOutside,
593 _CenteredOutside,
594 _Right
597 static const int posesDF2[] = {
598 _Right,
599 _Right
602 static const int posesE31[] = {
603 _Above
606 static const int posesE34[] = {
607 _Above,
608 _Above,
609 _Above,
610 _Above,
611 _Below|_Right,
612 _Below|_CenterRight,
613 _Below|_Right
616 static const int posesE47[] = {
617 _Above,
618 _Above|_Right,
619 _Above,
620 _Above,
621 _Above|_CenterRight,
622 _Above,
623 _Above|_Right,
624 _Above|_Right,
627 static const int posesEB1[] = {
628 _Above
631 static const int posesEB4[] = {
632 _Above,
633 _Above,
634 _Above,
635 _Above,
636 _Below,
637 _Below
640 static const int posesEBB[] = {
641 _Above,
642 _Below
645 static const int posesEC8[] = {
646 _Above,
647 _Above,
648 _Above,
649 _Above,
650 _Above,
651 _Above
654 static const int posesF18[] = {
655 _Below|_Right
658 static const int posesF35[] = {
659 _Below
662 static const int posesF37[] = {
663 _Below
666 static const int posesF39[] = {
667 _Above|_Right|_Touching
670 static const int posesF3E[] = {
671 _Below|_Right,
672 _Below|_Left
675 static const int posesF71[] = {
676 _Below,
677 _Above,
678 _Outside|_Above|_Below,
679 _Below,
680 _Below,
681 _Outside|_Above|_Below,
682 _Outside|_Above|_Below,
683 _Outside|_Above|_Below,
684 _Outside|_Above|_Below,
685 _Above|_CenterLeft,
686 _Above|_CenterLeft,
687 _Above,
688 _Above,
689 _Above,
690 _Right,
691 _Above, /* 0f80 */
692 _Outside|_Above|_Below,
693 _Above,
694 _Above,
695 _Below|_Left
698 static const int posesF86[] = {
699 _Above,
700 _Above,
701 _Above,
702 _Above,
703 _Above,
704 _Above
707 static const int posesF90[] = {
708 _Below,
709 _Below,
710 _Below,
711 _Below,
712 _Below,
713 _Below,
714 _Below,
715 _Below
718 static const int posesF99[] = {
719 _Below,
720 _Below,
721 _Below,
722 _Below,
723 _Below,
724 _Below,
725 _Below,
726 _Below,
727 _Below,
728 _Below,
729 _Below,
730 _Below,
731 _Below,
732 _Below,
733 _Below,
734 _Below,
735 _Below,
736 _Below,
737 _Below,
738 _Below,
739 _Below,
740 _Below,
741 _Below,
742 _Below,
743 _Below,
744 _Below,
745 _Below,
746 _Below,
747 _Below,
748 _Below,
749 _Below,
750 _Below,
751 _Below,
752 _Below,
753 _Below,
754 _Below
757 static const int posesFC6[] = {
758 _Below
761 static const int poses102C[] = {
762 _Right,
763 _Above,
764 _Above,
765 _Below,
766 _Below, /* 1030 */
767 _Left,
768 _Above
771 static const int poses1036[] = {
772 _Above,
773 _Below,
774 _Right,
775 _Above
778 static const int poses1056[] = {
779 _Right,
780 _Right,
781 _Below,
782 _Below
785 static const int poses17B4[] = {
786 _Overstrike,
787 _Overstrike,
788 _Right,
789 _Above,
790 _Above,
791 _Above,
792 _Above,
793 _Below,
794 _Below,
795 _Below,
796 _Outside|_Left|_Above,
797 _CenteredOutside,
798 _CenteredOutside, /* 17c0 */
799 _Left,
800 _Left,
801 _Left,
802 _CenteredOutside,
803 _CenteredOutside,
804 _Above,
805 _Right,
806 _Right,
807 _Above,
808 _Above,
809 _Above,
810 _Above,
811 _Above|_CenterRight,
812 _Above|_CenterRight,
813 _Above,
814 _Above|_CenterRight, /* 17d0 */
815 _Above,
816 _Below,
817 _Above
820 static const int poses18A9[] = {
821 _Above|_Left
824 static const int poses1FBD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */
825 _Above,
826 _Right,
827 _Above,
828 _Above,
829 _Above
832 static const int poses1FCD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */
833 _Above,
834 _Above,
835 _Above
838 static const int poses1FDD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */
839 _Above,
840 _Above,
841 _Above
844 static const int poses1FED[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */
845 _Above,
846 _Above,
847 _Above
850 static const int poses1FFD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */
851 _Above,
852 _Above
855 static const int poses20D0[] = {
856 _Above,
857 _Above,
858 _Overstrike,
859 _Overstrike,
860 _Above,
861 _Above,
862 _Above,
863 _Above,
864 _Overstrike,
865 _Overstrike,
866 _Overstrike,
867 _Above,
868 _Above,
869 _CenteredOutside,
870 _CenteredOutside,
871 _CenteredOutside,
872 _Overstrike,
873 _Above,
874 _CenteredOutside,
875 _CenteredOutside
878 static const int poses302A[] = {
879 _Below|_Left,
880 _Above|_Left,
881 _Above|_Right,
882 _Below|_Right,
883 _Left,
884 _Left
887 static const int poses3099[] = {
888 _Above|_Right,
889 _Above|_Right,
892 static const int posesFB1E[] = {
893 _Above
896 static const int posesFE20[] = {
897 _Above,
898 _Above,
899 _Above,
900 _Above
903 const static struct {
904 int low, high;
905 const int *pos;
906 } combiners[] = {
907 { 0x300, 0x345, poses300 },
908 { 0x360, 0x362, poses360 },
909 { 0x385, 0x385, poses385 },
910 { 0x483, 0x486, poses483 },
911 { 0x488, 0x489, poses488 },
912 { 0x591, 0x5A1, poses591 },
913 { 0x5A3, 0x5B9, poses5A3 },
914 { 0x5BB, 0x5BD, poses5BB },
915 { 0x5BF, 0x5BF, poses5BF },
916 { 0x5C1, 0x5C2, poses5C1 },
917 { 0x5C4, 0x5C4, poses5C4 },
918 { 0x64b, 0x655, poses64b },
919 { 0x670, 0x670, poses670 },
920 { 0x6D6, 0x6E4, poses6D6 },
921 { 0x6E7, 0x6E8, poses6E7 },
922 { 0x6EA, 0x6ED, poses6EA },
923 { 0x711, 0x711, poses711 },
924 { 0x730, 0x74A, poses730 },
925 { 0x7A6, 0x7B0, poses7A6 },
926 { 0x901, 0x903, poses901 },
927 { 0x93C, 0x93C, poses93C },
928 { 0x93E, 0x94D, poses93E },
929 { 0x951, 0x954, poses951 },
930 { 0x962, 0x963, poses962 },
931 { 0x981, 0x983, poses981 },
932 { 0x9BC, 0x9BC, poses9BC },
933 { 0x9BE, 0x9C4, poses9BE },
934 { 0x9C7, 0x9C8, poses9C7 },
935 { 0x9CB, 0x9CD, poses9CB },
936 { 0x9D7, 0x9D7, poses9D7 },
937 { 0x9E2, 0x9E3, poses9E2 },
938 { 0xA02, 0xA02, posesA02 },
939 { 0xA3C, 0xA3C, posesA3C },
940 { 0xA3E, 0xA42, posesA3E },
941 { 0xA47, 0xA48, posesA47 },
942 { 0xA4B, 0xA4D, posesA4B },
943 { 0xA70, 0xA71, posesA70 },
944 { 0xA81, 0xA83, posesA81 },
945 { 0xABC, 0xABC, posesABC },
946 { 0xABE, 0xAC5, posesABE },
947 { 0xAC7, 0xAC9, posesAC7 },
948 { 0xACB, 0xACD, posesACB },
949 { 0xB01, 0xB03, posesB01 },
950 { 0xB3C, 0xB3C, posesB3C },
951 { 0xB3E, 0xB43, posesB3E },
952 { 0xB47, 0xB48, posesB47 },
953 { 0xB4B, 0xB4D, posesB4B },
954 { 0xB56, 0xB56, posesB56 },
955 { 0xB82, 0xB83, posesB82 },
956 { 0xBBE, 0xBC2, posesBBE },
957 { 0xBC6, 0xBC8, posesBC6 },
958 { 0xBCA, 0xBCD, posesBCA },
959 { 0xBD7, 0xBD7, posesBD7 },
960 { 0xC01, 0xC03, posesC01 },
961 { 0xC3E, 0xC44, posesC3E },
962 { 0xC46, 0xC48, posesC46 },
963 { 0xC4A, 0xC4D, posesC4A },
964 { 0xC55, 0xC56, posesC55 },
965 { 0xC82, 0xC83, posesC82 },
966 { 0xCBE, 0xCC4, posesCBE },
967 { 0xCC6, 0xCC8, posesCC6 },
968 { 0xCCA, 0xCCD, posesCCA },
969 { 0xCD5, 0xCD6, posesCD5 },
970 { 0xD02, 0xD03, posesD02 },
971 { 0xD3E, 0xD43, posesD3E },
972 { 0xD46, 0xD48, posesD46 },
973 { 0xD4A, 0xD4D, posesD4A },
974 { 0xD57, 0xD57, posesD57 },
975 { 0xD82, 0xD83, posesD82 },
976 { 0xDCA, 0xDCA, posesDCA },
977 { 0xDCF, 0xDD4, posesDCF },
978 { 0xDD6, 0xDD6, posesDD6 },
979 { 0xDD8, 0xDDF, posesDD8 },
980 { 0xDF2, 0xDF3, posesDF2 },
981 { 0xE31, 0xE31, posesE31 },
982 { 0xE34, 0xE3A, posesE34 },
983 { 0xE47, 0xE4e, posesE47 },
984 { 0xEB1, 0xEB1, posesEB1 },
985 { 0xEB4, 0xEB9, posesEB4 },
986 { 0xEBB, 0xEBC, posesEBB },
987 { 0xEC8, 0xECD, posesEC8 },
988 { 0xF18, 0xF19, posesF18 },
989 { 0xF35, 0xF35, posesF35 },
990 { 0xF37, 0xF37, posesF37 },
991 { 0xF39, 0xF39, posesF39 },
992 { 0xF3E, 0xF3F, posesF3E },
993 { 0xF71, 0xF84, posesF71 },
994 { 0xF86, 0xF87, posesF86 },
995 { 0xF90, 0xF97, posesF90 },
996 { 0xF99, 0xFBC, posesF99 },
997 { 0xFC6, 0xFC6, posesFC6 },
998 { 0x102c, 0x1032, poses102C },
999 { 0x1036, 0x1039, poses1036 },
1000 { 0x1056, 0x1059, poses1056 },
1001 { 0x17B4, 0x17D3, poses17B4 },
1002 { 0x18A9, 0x18A9, poses18A9 },
1003 { 0x1FBD, 0x1FC2, poses1FBD },
1004 { 0x1FCD, 0x1FCF, poses1FCD },
1005 { 0x1FDD, 0x1FDF, poses1FDD },
1006 { 0x1FED, 0x1FEF, poses1FED },
1007 { 0x1FFD, 0x1FFE, poses1FFD },
1008 { 0x20D0, 0x20E3, poses20D0 },
1009 { 0x302A, 0x302F, poses302A },
1010 { 0x3099, 0x309A, poses3099 },
1011 { 0xFB1E, 0xFB1E, posesFB1E },
1012 { 0xFE20, 0xFB23, posesFE20 },
1013 { 0 }