479 {
480
482
483
485
488
491
492
493 FT_Int known_othersubr_result_cnt = 0;
496
497#define PS_STORAGE_SIZE 3
500
501
503
507
510
511
512 FT_UInt32 instructionLimit = 20000000UL;
513
515
518
520
521
522
523
526
528#ifdef __REACTOS__
530 if (!glyphPath) return;
531
532#define glyphPath (*glyphPath)
533#else
535#endif
536
540
541
554
555
557
558
559
560
561
562
566 scaleY,
567
568 &hStemHintArray,
569 &vStemHintArray,
570 &hintMask,
571 hintOriginY,
573 translation );
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
595
596
597
598
599
600
601
602
603
607
608 if ( !opStack )
609 {
610 lastError =
FT_THROW( Out_Of_Memory );
612 }
613
614
615
616
617
619
622
623 charstringIndex = 0;
624
625
628
629
630 while ( 1 )
631 {
633 FT_ASSERT( known_othersubr_result_cnt == 0 ||
634 result_cnt == 0 );
635
637 {
638
639
640
641 if ( charstringIndex )
643 else
645 }
646 else
647 {
649
650
651
655 }
656
658 {
659 if ( !initial_map_ready &&
667 op1 >= 32 ) )
668 {
669
670
671
673 continue;
674 }
675
676 if ( result_cnt > 0 &&
680 op1 >= 32 ) )
681 {
682
683 result_cnt = 0;
684 }
685
686 if ( large_int && !( op1 >= 32 || op1 ==
cf2_escDIV ) )
687 {
688 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
689 " no `div' after large integer\n" ));
690
692 }
693 }
694
695
698
699 instructionLimit--;
700 if ( instructionLimit == 0 )
701 {
702 lastError =
FT_THROW( Invalid_Glyph_Format );
704 }
705
706 switch( op1 )
707 {
711
712 FT_TRACE4((
" unknown op (%d)\n", op1 ));
713 break;
714
717
719 break;
720
721 if (
font->blend.usedBV )
722 {
723
724 lastError =
FT_THROW( Invalid_Glyph_Format );
726 }
727
728 {
730
731
734 }
735 break;
736
738 {
740
741
743
745 break;
746
747
748 if ( !
font->blend.font )
749 {
750 lastError =
FT_THROW( Invalid_Glyph_Format );
752 }
753
754
755 if (
font->cffload->blend_check_vector( &
font->blend,
759 {
760 lastError =
font->cffload->blend_build_vector( &
font->blend,
764 if ( lastError )
766 }
767
768
770 if ( numBlends > stackSize )
771 {
772 lastError =
FT_THROW( Invalid_Glyph_Format );
774 }
775
777
779 }
780 continue;
781
785
787 {
788
789
791 {
793 " invalid horizontal hint mask\n" ));
794 break;
795 }
796 }
797
798
800 opStack,
801 &hStemHintArray,
803 &haveWidth,
805 : 0 );
806
809
810 break;
811
815
817 {
818
819
821 {
823 " invalid vertical hint mask\n" ));
824 break;
825 }
826 }
827
828
830 opStack,
831 &vStemHintArray,
833 &haveWidth,
835 : 0 );
836
839
840 break;
841
844
846 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
847 " No width. Use hsbw/sbw as first op\n" ));
848
851 nominalWidthX );
852
853
855
858
860
862
863 break;
864
866 {
869
870
872
874 {
879
881 }
882
884 }
885 continue;
886
889 {
892
894
895
896 FT_TRACE4(( isX ?
" hlineto\n" :
" vlineto\n" ));
897
899 {
901
902
903 if ( isX )
905 else
907
908 isX = !isX;
909
911 }
912
914 }
915 continue;
916
919 {
922
923
925 : " rrcurveto\n" ));
926
928 {
930
931
938
940
941 curX = x3;
942 curY = y3;
944 }
945
947 {
952
954 }
955
957 }
958 continue;
959
962 FT_TRACE4((
" unknown op (%d)\n", op1 ));
963 else
964 {
966
967
969
971 }
972 break;
973
976 {
978
979
981 : " callsubr" ));
982
985 {
986
987 lastError =
FT_THROW( Invalid_Glyph_Format );
989 }
990
991
994 &subrStack,
995 (size_t)charstringIndex + 1 );
996
997
999
1001 {
1004
1005
1008 else
1009 subrNum = -1;
1010 }
1011
1012 switch ( op1 )
1013 {
1015 FT_TRACE4((
" (idx %d, entering level %d)\n",
1017 charstringIndex + 1 ));
1018
1020 subrNum,
1021 charstring ) )
1022 {
1023 lastError =
FT_THROW( Invalid_Glyph_Format );
1025 }
1026 break;
1027
1028 default:
1029
1030 FT_TRACE4((
" (idx %d, entering level %d)\n",
1032 charstringIndex + 1 ));
1033
1035 subrNum,
1036 charstring ) )
1037 {
1038 lastError =
FT_THROW( Invalid_Glyph_Format );
1040 }
1041 }
1042
1043 charstringIndex += 1;
1044 }
1045 continue;
1046
1048 FT_TRACE4((
" return (leaving level %d)\n", charstringIndex ));
1049
1050 if ( charstringIndex < 1 )
1051 {
1052
1053 lastError =
FT_THROW( Invalid_Glyph_Format );
1055 }
1056
1057
1060 &subrStack,
1062 continue;
1063
1065 {
1067
1068
1069
1070
1071 switch ( op2 )
1072 {
1074 {
1075 static const FT_Bool readFromStack[12] =
1076 {
1083 };
1084
1085
1087
1089 &curX,
1090 &curY,
1091 &glyphPath,
1092 readFromStack,
1094 }
1095 continue;
1096
1098 {
1099 static const FT_Bool readFromStack[12] =
1100 {
1107 };
1108
1109
1111
1113 &curX,
1114 &curY,
1115 &glyphPath,
1116 readFromStack,
1118 }
1119 break;
1120
1122 {
1123 static const FT_Bool readFromStack[12] =
1124 {
1131 };
1132
1133
1135
1137 &curX,
1138 &curY,
1139 &glyphPath,
1140 readFromStack,
1142 }
1143 continue;
1144
1146 {
1147 static const FT_Bool readFromStack[12] =
1148 {
1155 };
1156
1157
1159
1161 &curX,
1162 &curY,
1163 &glyphPath,
1164 readFromStack,
1166 }
1167 continue;
1168
1169
1176 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1177 break;
1178
1179 default:
1180 {
1182 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1184 {
1185
1186 result_cnt = 0;
1187 }
1188 else
1189 {
1190
1191
1192 switch ( op2 )
1193 {
1194
1196
1198
1199 break;
1200
1203
1204
1205
1206
1207
1208
1209
1210 {
1212 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1213 else
1214 {
1216
1218
1219
1221 : " hstem3\n" ));
1222
1224
1228
1230 opStack, 2,
1234 opStack, 4,
1237
1238
1240 opStack,
1241 isV ? &vStemHintArray : &hStemHintArray,
1243 &haveWidth,
1246
1249 }
1250 }
1251 break;
1252
1254 {
1257
1258
1260
1263
1265 }
1266 continue;
1267
1269 {
1272
1273
1275
1278
1280 }
1281 continue;
1282
1284 {
1286
1287
1289
1291
1293 }
1294 continue;
1295
1298 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1299 else
1300 {
1302 CF2_Int bchar_index, achar_index;
1304
1305#ifdef FT_CONFIG_OPTION_INCREMENTAL
1307#endif
1310
1313
1317
1318
1320
1321 if ( doingSeac )
1322 {
1324 lastError =
FT_THROW( Invalid_Glyph_Format );
1326 }
1327
1329 {
1330 FT_ERROR((
" unexpected seac\n" ));
1331 lastError =
FT_THROW( Invalid_Glyph_Format );
1333 }
1334
1335
1336
1337
1338#ifdef FT_CONFIG_OPTION_INCREMENTAL
1340 !
face->root.internal->incremental_interface )
1341#else
1343#endif
1344 {
1346 "cf2_interpT2CharString: (Type 1 seac)"
1347 " glyph names table not available in this font\n" ));
1348 lastError =
FT_THROW( Invalid_Glyph_Format );
1350 }
1351
1352
1354
1355#ifdef FT_CONFIG_OPTION_INCREMENTAL
1356 if (
face->root.internal->incremental_interface )
1357 {
1358
1359 bchar_index = bchar;
1360 achar_index = achar;
1361 }
1362 else
1363#endif
1364 {
1366 decoder, bchar );
1368 decoder, achar );
1369 }
1370
1371 if ( bchar_index < 0 || achar_index < 0 )
1372 {
1374 "cf2_interpT2CharString: (Type 1 seac)"
1375 " invalid seac character code arguments\n" ));
1376 lastError =
FT_THROW( Invalid_Glyph_Format );
1378 }
1379
1380
1381
1382
1384 {
1388
1389
1390
1393 {
1396 }
1397
1398 subg = loader->current.subglyphs;
1399
1400
1401 subg->index = bchar_index;
1404 subg->arg1 = 0;
1405 subg->arg2 = 0;
1406 subg++;
1407
1408
1409 subg->index = achar_index;
1413
1414
1416 glyph->
subglyphs = loader->base.subglyphs;
1417 glyph->
format = FT_GLYPH_FORMAT_COMPOSITE;
1418
1419 loader->current.num_subglyphs = 2;
1420
1422 }
1423
1424
1425
1426
1427
1429
1432 &component );
1434 {
1437 }
1439 &component,
1441 translation,
1443 0,
1444 0,
1445 &dummyWidth );
1447
1448
1449
1450
1453
1456
1457
1458
1459
1462 &component );
1464 {
1467 }
1469 &component,
1471 translation,
1473 adx - asb,
1474 ady,
1475 &dummyWidth );
1477
1478
1479
1480
1483
1485 }
1486 break;
1487
1490 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1491 else
1492 {
1495
1496
1498
1500
1503
1506
1511
1513
1514
1515
1516
1517
1520
1521 if ( initial_map_ready )
1522 {
1525 }
1526 }
1527 break;
1528
1530 {
1532
1533
1535
1537
1540 else
1542 }
1543 continue;
1544
1546 {
1549
1550
1552
1555
1558 summand2 ) );
1559 }
1560 continue;
1561
1563 {
1566
1567
1569
1572
1575 }
1576 continue;
1577
1579 {
1582
1583
1585
1586 if (
font->isT1 && large_int )
1587 {
1590
1592 }
1593 else
1594 {
1597 }
1598
1601
1602 }
1603 continue;
1604
1606 {
1608
1609
1611
1613
1616 else
1618 }
1619 continue;
1620
1622 {
1625
1626
1628
1631
1633 }
1634 continue;
1635
1638 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
1639 else
1640 {
1645
1646
1648
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1665
1667
1668 known_othersubr_result_cnt = 0;
1669 result_cnt = 0;
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689 switch ( subr_no )
1690 {
1691 case 0:
1693 goto Unexpected_OtherSubr;
1694
1695 if ( initial_map_ready &&
1698 {
1699 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
1700 " unexpected flex end\n" ));
1701 lastError =
FT_THROW( Invalid_Glyph_Format );
1703 }
1704
1705
1706
1709 known_othersubr_result_cnt = 2;
1710 break;
1711
1712 case 1:
1714 goto Unexpected_OtherSubr;
1715
1716 if ( !initial_map_ready )
1717 break;
1718
1721
1724 break;
1725
1726 case 2:
1727 {
1730
1731
1733 goto Unexpected_OtherSubr;
1734
1735 if ( !initial_map_ready )
1736 break;
1737
1739 {
1740 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
1741 " missing flex start\n" ));
1742 lastError =
FT_THROW( Invalid_Glyph_Format );
1744 }
1745
1746
1747
1748
1749
1751 if (
idx > 0 &&
idx < 7 )
1752 {
1753
1754
1755
1756
1757
1759 1 ) )
1760 {
1761 lastError =
FT_THROW( Invalid_Glyph_Format );
1763 }
1764
1765
1767
1768 flexStore[idx2 - 2] = curX;
1769 flexStore[idx2 - 1] = curY;
1770
1771 if (
idx == 3 ||
idx == 6 )
1773 flexStore[0],
1774 flexStore[1],
1775 flexStore[2],
1776 flexStore[3],
1777 flexStore[4],
1778 flexStore[5] );
1779 }
1780 }
1781 break;
1782
1783 case 3:
1785 goto Unexpected_OtherSubr;
1786
1787 if ( initial_map_ready )
1788 {
1789
1790
1793
1797 }
1798
1799 known_othersubr_result_cnt = 1;
1800 break;
1801
1802 case 12:
1803 case 13:
1804
1806 break;
1807
1808 case 14:
1809 case 15:
1810 case 16:
1811 case 17:
1812 case 18:
1813 {
1818
1819
1820 if ( !blend )
1821 {
1823 "cf2_interpT2CharString:"
1824 " unexpected multiple masters operator\n" ));
1825 lastError =
FT_THROW( Invalid_Glyph_Format );
1827 }
1828
1829 num_points = (
FT_UInt)subr_no - 13 +
1830 ( subr_no == 18 );
1833 {
1835 "cf2_interpT2CharString:"
1836 " incorrect number of multiple masters arguments\n" ));
1837 lastError =
FT_THROW( Invalid_Glyph_Format );
1839 }
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857 delta = opIdx + num_points;
1859 for ( nn = 0; nn < num_points; nn++ )
1860 {
1863
1864
1869 delta++ ),
1871
1873 }
1876
1877 known_othersubr_result_cnt = (
FT_Int)num_points;
1878 break;
1879 }
1880
1881 case 19:
1882
1883
1884
1885
1886 {
1889
1890
1892 goto Unexpected_OtherSubr;
1893
1895
1899 goto Unexpected_OtherSubr;
1900
1905 }
1906 break;
1907
1908 case 20:
1909
1910
1911 {
1914
1915
1917 goto Unexpected_OtherSubr;
1918
1921
1924 summand2 ) );
1925 known_othersubr_result_cnt = 1;
1926 }
1927 break;
1928
1929 case 21:
1930
1931
1932 {
1935
1936
1938 goto Unexpected_OtherSubr;
1939
1942
1945 subtrahend ) );
1946 known_othersubr_result_cnt = 1;
1947 }
1948 break;
1949
1950 case 22:
1951
1952
1953 {
1956
1957
1959 goto Unexpected_OtherSubr;
1960
1963
1966 known_othersubr_result_cnt = 1;
1967 }
1968 break;
1969
1970 case 23:
1971
1972
1973 {
1976
1977
1979 goto Unexpected_OtherSubr;
1980
1983
1985 goto Unexpected_OtherSubr;
1986
1990 known_othersubr_result_cnt = 1;
1991 }
1992 break;
1993
1994 case 24:
1995
1996
1997 {
2000
2001
2003 goto Unexpected_OtherSubr;
2004
2006
2009 goto Unexpected_OtherSubr;
2010
2013 }
2014 break;
2015
2016 case 25:
2017
2018
2019
2020 {
2023
2024
2026 goto Unexpected_OtherSubr;
2027
2029
2032 goto Unexpected_OtherSubr;
2033
2036 known_othersubr_result_cnt = 1;
2037 }
2038 break;
2039
2040#if 0
2041 case 26:
2042
2043
2044
2045
2046
2049 break;
2050#endif
2051
2052 case 27:
2053
2054
2055
2056 {
2061
2062
2064 goto Unexpected_OtherSubr;
2065
2070
2073 known_othersubr_result_cnt = 1;
2074 }
2075 break;
2076
2077 case 28:
2078
2079
2080
2081 {
2083
2084
2086 goto Unexpected_OtherSubr;
2087
2088
2089
2092
2095
2097 known_othersubr_result_cnt = 1;
2098 }
2099 break;
2100
2101 default:
2102 if (
arg_cnt >= 0 && subr_no >= 0 )
2103 {
2105
2106
2108 "cf2_interpT2CharString (Type 1 mode):"
2109 " unknown othersubr [%d %d], wish me luck\n",
2111
2112
2113
2114
2118
2122
2123 break;
2124 }
2125
2126
2127 Unexpected_OtherSubr:
2128 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
2129 " invalid othersubr [%d %d]\n",
2131 lastError =
FT_THROW( Invalid_Glyph_Format );
2133 }
2134 }
2135 continue;
2136
2139 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
2140 else
2141 {
2143
2144 if ( known_othersubr_result_cnt > 0 )
2145 {
2146 known_othersubr_result_cnt--;
2147
2148 continue;
2149 }
2150
2151 if ( result_cnt == 0 )
2152 {
2153 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
2154 " no more operands for othersubr\n" ));
2155 lastError =
FT_THROW( Invalid_Glyph_Format );
2157 }
2158
2159 result_cnt--;
2161 }
2162 continue;
2163
2166
2168 continue;
2169
2171 {
2174
2175
2177
2180
2183 }
2184 continue;
2185
2187 {
2189
2190
2192
2194
2197 }
2198 continue;
2199
2201 {
2206
2207
2209
2214
2217 }
2218 continue;
2219
2221 {
2223
2224
2226
2227
2228
2231
2234
2236 }
2237 continue;
2238
2240 {
2243
2244
2246
2249
2252 }
2253 continue;
2254
2256 {
2258
2259
2261
2264 {
2265
2266
2269
2270
2271
2272 for (;;)
2273 {
2275 if ( new_root ==
root )
2276 break;
2278 }
2280 }
2281 else
2283
2285 }
2286 continue;
2287
2289 {
2291
2292
2294
2296
2299 }
2300 continue;
2301
2303 {
2306
2307
2309
2312
2315 }
2316 continue;
2317
2319 {
2322
2323
2325
2328
2330 {
2331
2332
2334
2335
2339 gr_idx = 0;
2340 else
2342
2345 gr_idx ) );
2346 }
2347 }
2348 continue;
2349
2351 {
2354
2355
2357
2360
2362 }
2363 continue;
2364
2367 FT_TRACE4((
" unknown op (12, %d)\n", op2 ));
2368 else
2369 {
2371
2372 if ( !initial_map_ready )
2373 break;
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388#if 0
2389
2391 {
2392 FT_ERROR((
"cf2_interpT2CharString:"
2393 " unexpected `setcurrentpoint'\n" ));
2394 goto Syntax_Error;
2395 }
2396 else
2397 ...
2398#endif
2399
2402
2404 }
2405 break;
2406
2407 }
2408 }
2409 }
2410 }
2411 }
2412
2413 break;
2414
2417 FT_TRACE4((
" unknown op (%d)\n", op1 ));
2418 else
2419 {
2422
2423
2425
2427
2430
2432
2434 lsb_x );
2435
2437
2438
2439
2440
2443
2444 if ( initial_map_ready )
2446 }
2447 break;
2448
2451
2452 if (
font->isT1 && !initial_map_ready )
2453 {
2454 FT_TRACE5((
"cf2_interpT2CharString (Type 1 mode): "
2455 "Build initial hintmap, rewinding...\n" ));
2456
2457
2459
2460 initial_map_ready =
TRUE;
2461
2462
2465
2469
2470
2471
2472
2473
2474 while ( charstringIndex > 0 )
2475 {
2476 FT_TRACE4((
" return (leaving level %d)\n", charstringIndex ));
2477
2478
2481 &subrStack,
2483 }
2484 charstring->ptr = charstring->start;
2485
2486 break;
2487 }
2488
2491 {
2492 if ( !haveWidth )
2494 nominalWidthX );
2495 }
2496
2497
2499
2502
2503
2505
2506
2507
2509 {
2510
2511
2512
2518
2519
2520 if ( doingSeac )
2521 {
2522 lastError =
FT_THROW( Invalid_Glyph_Format );
2524 }
2525
2528
2531
2534 {
2537 }
2539 &component,
2541 translation,
2543 curX,
2544 curY,
2545 &dummyWidth );
2547
2550 {
2553 }
2555 &component,
2557 translation,
2559 0,
2560 0,
2561 &dummyWidth );
2563 }
2565
2568
2569
2571
2572
2575 {
2576 FT_TRACE4((
"cf2_interpT2CharString: invalid hint mask\n" ));
2577 break;
2578 }
2579
2580
2581
2583 opStack,
2584 &vStemHintArray,
2586 &haveWidth,
2587 0 );
2588
2591
2593 {
2594
2596 charstring,
2599 }
2600 else
2601 {
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615#ifdef __REACTOS__
2618 if (!counterHintMap)
2619 {
2620 lastError = FT_Err_Out_Of_Memory;
2622 }
2623
2624#define counterHintMap (*counterHintMap)
2625#else
2628#endif
2629
2630
2635 scaleY );
2637
2639 charstring,
2643 &hStemHintArray,
2644 &vStemHintArray,
2645 &counterMask,
2646 0,
2648#ifdef __REACTOS__
2649 free(&counterHintMap);
2650#endif
2651 }
2652 break;
2653
2656
2658 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
2659 " No width. Use hsbw/sbw as first op\n" ));
2660
2663 nominalWidthX );
2664
2665
2667
2670
2673
2676
2677 break;
2678
2681
2683 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
2684 " No width. Use hsbw/sbw as first op\n" ));
2685
2688 nominalWidthX );
2689
2690
2692
2695
2697
2699
2700 break;
2701
2703 {
2706
2707
2709
2711 {
2716
2719 }
2720
2722 {
2724
2725
2732
2734
2735 curX = x3;
2736 curY = y3;
2738 }
2739
2741 }
2742 continue;
2743
2745 {
2748
2749
2750
2751
2752
2753 count = count1 & ~2U;
2755
2757
2759 {
2761
2762
2764 {
2766
2768 }
2769 else
2771
2777
2779
2780 curX = x3;
2781 curY = y3;
2783 }
2784
2786 }
2787 continue;
2788
2790 {
2793
2794
2795
2796
2797
2798 count = count1 & ~2U;
2800
2802
2804 {
2806
2807
2809 {
2811
2813 }
2814 else
2816
2822
2824
2825 curX = x3;
2826 curY = y3;
2828 }
2829
2831 }
2832 continue;
2833
2836 {
2839
2841
2842
2843
2844
2845
2846
2847 count = count1 & ~2U;
2849
2850 FT_TRACE4(( alternate ?
" hvcurveto\n" :
" vhcurveto\n" ));
2851
2853 {
2855
2856
2857 if ( alternate )
2858 {
2864
2866 {
2868
2870 }
2871 else
2873
2875 }
2876 else
2877 {
2883
2885 {
2887
2889 }
2890 else
2892
2894 }
2895
2897
2898 curX = x3;
2899 curY = y3;
2901 }
2902
2904 }
2905 continue;
2906
2908 {
2910
2913
2914
2916 byte2 );
2917
2919
2921 }
2922 continue;
2923
2924 default:
2925
2926 {
2927 if ( op1 <= 246 )
2928 {
2930
2931
2933
2935
2936
2938 }
2939
2940 else if ( op1 <= 250 )
2941 {
2943
2944
2950
2952
2953
2955 }
2956
2957 else if ( op1 <= 254 )
2958 {
2960
2961
2967
2969
2970
2972 }
2973
2974 else
2975 {
2977
2982
2983
2985 ( byte2 << 16 ) |
2986 ( byte3 << 8 ) |
2987 byte4 );
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3005 {
3006 if (
v > 32000 ||
v < -32000 )
3007 {
3008 if ( large_int )
3009 FT_ERROR((
"cf2_interpT2CharString (Type 1 mode):"
3010 " no `div' after large integer\n" ));
3011 else
3013 }
3014
3016
3018 }
3019 else
3020 {
3022
3024 }
3025 }
3026 }
3027 continue;
3028
3029 }
3030
3032
3033 }
3034
3035
3037 " charstring ends without ENDCHAR\n" ));
3038
3040
3042
3045
3046
3052
3054
3055#ifdef __REACTOS__
3057#undef counterHintMap
3058#undef glyphPath
3059#endif
3060
3061 return;
3062 }
static struct _test_info results[8]
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
#define T1_MAX_SUBRS_CALLS
FT_DivFix(FT_Long a, FT_Long b)
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS
struct FT_GlyphSlotRec_ * FT_GlyphSlot
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES
FT_MulFix(FT_Long a, FT_Long b)
#define FT_ERROR(varformat)
#define FT_TRACE5(varformat)
#define FT_TRACE4(varformat)
cannot open resource broken file module version is too low unimplemented feature broken offset within table missing module invalid glyph index unsupported glyph image format invalid outline too many hints invalid object handle invalid module handle invalid size handle invalid charmap handle invalid stream handle too many extensions unlisted object invalid stream seek invalid stream read invalid frame operation invalid frame read raster corrupted negative height while rastering invalid opcode stack overflow bad argument invalid reference found ENDF opcode in execution stream invalid code range too many function definitions SFNT font table missing name table missing horizontal PostScript(post) table missing" ) FT_ERRORDEF_( Invalid_Horiz_Metrics
FT_GlyphLoader_Prepare(FT_GlyphLoader loader)
FT_GlyphLoader_CheckSubGlyphs(FT_GlyphLoader loader, FT_UInt n_subs)
size_t * ft_hash_num_lookup(FT_Int num, FT_Hash hash)
FT_BEGIN_HEADER typedef signed long FT_Pos
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLuint GLuint GLsizei count
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLuint GLuint GLuint GLuint arg1
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
GLenum GLuint GLint GLenum face
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLfloat GLfloat GLfloat v2
int jpeg_marker_parser_method routine
static char memory[1024 *256]
cf2_arrstack_getPointer(const CF2_ArrStack arrstack, size_t idx)
cf2_arrstack_setCount(CF2_ArrStack arrstack, size_t numElements)
cf2_arrstack_finalize(CF2_ArrStack arrstack)
cf2_arrstack_init(CF2_ArrStack arrstack, FT_Memory memory, FT_Error *error, size_t sizeItem)
cf2_arrstack_getBuffer(const CF2_ArrStack arrstack)
cf2_arrstack_clear(CF2_ArrStack arrstack)
cf2_arrstack_size(const CF2_ArrStack arrstack)
FT_BEGIN_HEADER struct CF2_ArrStackRec_ CF2_ArrStackRec
cf2_setError(FT_Error *error, FT_Error value)
#define CF2_OPERAND_STACK_SIZE
cf2_freeSeacComponent(PS_Decoder *decoder, CF2_Buffer buf)
cf2_freeT1SeacComponent(PS_Decoder *decoder, CF2_Buffer buf)
cf2_initLocalRegionBuffer(PS_Decoder *decoder, CF2_Int subrNum, CF2_Buffer buf)
cf2_getNominalWidthX(PS_Decoder *decoder)
cf2_initGlobalRegionBuffer(PS_Decoder *decoder, CF2_Int subrNum, CF2_Buffer buf)
cf2_getT1SeacComponent(PS_Decoder *decoder, FT_UInt glyph_index, CF2_Buffer buf)
cf2_getMaxstack(PS_Decoder *decoder)
cf2_getDefaultWidthX(PS_Decoder *decoder)
cf2_getSeacComponent(PS_Decoder *decoder, CF2_Int code, CF2_Buffer buf)
cf2_glyphpath_moveTo(CF2_GlyphPath glyphpath, CF2_Fixed x, CF2_Fixed y)
cf2_glyphpath_finalize(CF2_GlyphPath glyphpath)
cf2_hintmap_build(CF2_HintMap hintmap, CF2_ArrStack hStemHintArray, CF2_ArrStack vStemHintArray, CF2_HintMask hintMask, CF2_Fixed hintOrigin, FT_Bool initialMap)
cf2_glyphpath_curveTo(CF2_GlyphPath glyphpath, CF2_Fixed x1, CF2_Fixed y1, CF2_Fixed x2, CF2_Fixed y2, CF2_Fixed x3, CF2_Fixed y3)
cf2_glyphpath_closeOpenPath(CF2_GlyphPath glyphpath)
cf2_glyphpath_lineTo(CF2_GlyphPath glyphpath, CF2_Fixed x, CF2_Fixed y)
cf2_hintmap_init(CF2_HintMap hintmap, CF2_Font font, CF2_HintMap initialMap, CF2_ArrStack hintMoves, CF2_Fixed scale)
cf2_glyphpath_init(CF2_GlyphPath glyphpath, CF2_Font font, CF2_OutlineCallbacks callbacks, CF2_Fixed scaleY, CF2_ArrStack hStemHintArray, CF2_ArrStack vStemHintArray, CF2_HintMask hintMask, CF2_Fixed hintOriginY, const CF2_Blues blues, const FT_Vector *fractionalTranslation)
static void cf2_doFlex(CF2_Stack opStack, CF2_Fixed *curX, CF2_Fixed *curY, CF2_GlyphPath glyphPath, const FT_Bool *readFromStack, FT_Bool doConditionalLastRead)
static void cf2_doStems(const CF2_Font font, CF2_Stack opStack, CF2_ArrStack stemHintArray, CF2_Fixed *width, FT_Bool *haveWidth, CF2_Fixed hintOffset)
static void cf2_doBlend(const CFF_Blend blend, CF2_Stack opStack, CF2_UInt numBlends)
static void cf2_hintmask_read(CF2_HintMask hintmask, CF2_Buffer charstring, size_t bitCount)
cf2_hintmask_isValid(const CF2_HintMask hintmask)
cf2_hintmask_init(CF2_HintMask hintmask, FT_Error *error)
cf2_interpT2CharString(CF2_Font font, CF2_Buffer buf, CF2_OutlineCallbacks callbacks, const FT_Vector *translation, FT_Bool doingSeac, CF2_Fixed curX, CF2_Fixed curY, CF2_Fixed *width)
ps_builder_close_contour(PS_Builder *builder)
ps_builder_check_points(PS_Builder *builder, FT_Int count)
cf2_buf_readByte(CF2_Buffer buf)
cf2_buf_isEnd(CF2_Buffer buf)
FT_BEGIN_HEADER struct CF2_BufferRec_ CF2_BufferRec
FT_BEGIN_HEADER struct CF2_BufferRec_ * CF2_Buffer
cf2_stack_pushInt(CF2_Stack stack, CF2_Int val)
cf2_stack_popFixed(CF2_Stack stack)
cf2_stack_count(CF2_Stack stack)
cf2_stack_setReal(CF2_Stack stack, CF2_UInt idx, CF2_Fixed val)
cf2_stack_clear(CF2_Stack stack)
cf2_stack_popInt(CF2_Stack stack)
cf2_stack_pop(CF2_Stack stack, CF2_UInt num)
cf2_stack_free(CF2_Stack stack)
cf2_stack_roll(CF2_Stack stack, CF2_Int count, CF2_Int shift)
cf2_stack_init(FT_Memory memory, FT_Error *e, FT_UInt stackSize)
cf2_stack_pushFixed(CF2_Stack stack, CF2_Fixed val)
cf2_stack_getReal(CF2_Stack stack, CF2_UInt idx)
CF2_ArrStackRec hintMoves
CF2_HintMapRec initialHintMap
FT_Slot_Internal internal
CFF_SubFont current_subfont
t1_lookup_glyph_by_stdcharcode_ps(PS_Decoder *decoder, FT_Int charcode)
struct T1_FaceRec_ * T1_Face
static unsigned arg_cnt(const DISPPARAMS *dp)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2