Anurag Thakur pushed to branch gsoc-anurag-2023 at FreeType / FreeType
Commits:
-
d23d82d8
by Anurag Thakur at 2023-08-15T01:15:13+05:30
2 changed files:
Changes:
... | ... | @@ -2399,6 +2399,9 @@ FT_BEGIN_HEADER |
2399 | 2399 | * FT_OPEN_PARAMS ::
|
2400 | 2400 | * Use the `num_params` and `params` fields.
|
2401 | 2401 | *
|
2402 | + * FT_OPEN_PRELOAD ::
|
|
2403 | + * Preprocess the font outline to save cpu time later.
|
|
2404 | + *
|
|
2402 | 2405 | * @note:
|
2403 | 2406 | * The `FT_OPEN_MEMORY`, `FT_OPEN_STREAM`, and `FT_OPEN_PATHNAME` flags
|
2404 | 2407 | * are mutually exclusive.
|
... | ... | @@ -2408,7 +2411,7 @@ FT_BEGIN_HEADER |
2408 | 2411 | #define FT_OPEN_PATHNAME 0x4
|
2409 | 2412 | #define FT_OPEN_DRIVER 0x8
|
2410 | 2413 | #define FT_OPEN_PARAMS 0x10
|
2411 | - |
|
2414 | +#define FT_OPEN_PRELOAD 0x20
|
|
2412 | 2415 | |
2413 | 2416 | /* these constants are deprecated; use the corresponding `FT_OPEN_XXX` */
|
2414 | 2417 | /* values instead */
|
... | ... | @@ -2572,6 +2575,12 @@ FT_BEGIN_HEADER |
2572 | 2575 | FT_Long face_index,
|
2573 | 2576 | FT_Face *aface );
|
2574 | 2577 | |
2578 | + FT_EXPORT( FT_Error )
|
|
2579 | + FT_New_Face2( FT_Library library,
|
|
2580 | + const char* filepathname,
|
|
2581 | + FT_Long face_index,
|
|
2582 | + FT_Face *aface,
|
|
2583 | + FT_UInt flags);
|
|
2575 | 2584 | |
2576 | 2585 | /**************************************************************************
|
2577 | 2586 | *
|
... | ... | @@ -1610,18 +1610,40 @@ |
1610 | 1610 | {
|
1611 | 1611 | FT_Open_Args args;
|
1612 | 1612 | |
1613 | + /* test for valid `library' and `aface' delayed to `FT_Open_Face' */
|
|
1614 | + if ( !pathname )
|
|
1615 | + return FT_THROW( Invalid_Argument );
|
|
1616 | + |
|
1617 | + args.flags = FT_OPEN_PATHNAME;
|
|
1618 | + args.pathname = (char*)pathname;
|
|
1619 | + args.stream = NULL;
|
|
1620 | + |
|
1621 | + return ft_open_face_internal( library, &args, face_index, aface, 1 );
|
|
1622 | + }
|
|
1623 | + |
|
1624 | + |
|
1625 | + FT_EXPORT_DEF( FT_Error )
|
|
1626 | + FT_New_Face2( FT_Library library,
|
|
1627 | + const char* pathname,
|
|
1628 | + FT_Long face_index,
|
|
1629 | + FT_Face *aface,
|
|
1630 | + FT_UInt flags)
|
|
1631 | + {
|
|
1632 | + FT_Open_Args args;
|
|
1613 | 1633 | |
1614 | 1634 | /* test for valid `library' and `aface' delayed to `FT_Open_Face' */
|
1615 | 1635 | if ( !pathname )
|
1616 | 1636 | return FT_THROW( Invalid_Argument );
|
1617 | 1637 | |
1618 | 1638 | args.flags = FT_OPEN_PATHNAME;
|
1639 | + args.flags |= flags;
|
|
1619 | 1640 | args.pathname = (char*)pathname;
|
1620 | 1641 | args.stream = NULL;
|
1621 | 1642 | |
1622 | 1643 | return ft_open_face_internal( library, &args, face_index, aface, 1 );
|
1623 | 1644 | }
|
1624 | 1645 | |
1646 | + |
|
1625 | 1647 | #endif
|
1626 | 1648 | |
1627 | 1649 | |
... | ... | @@ -2540,7 +2562,11 @@ |
2540 | 2562 | FT_UNUSED( test_mac_fonts );
|
2541 | 2563 | #endif
|
2542 | 2564 | |
2543 | - |
|
2565 | + if (args->flags & FT_OPEN_PRELOAD)
|
|
2566 | + {
|
|
2567 | + FT_TRACE0(("Requested Preload\n"));
|
|
2568 | + }
|
|
2569 | +
|
|
2544 | 2570 | /* only use lower 31 bits together with sign bit */
|
2545 | 2571 | if ( face_index > 0 )
|
2546 | 2572 | face_index &= 0x7FFFFFFFL;
|
... | ... | @@ -2636,7 +2662,6 @@ |
2636 | 2662 | |
2637 | 2663 | driver = FT_DRIVER( cur[0] );
|
2638 | 2664 | |
2639 | - // TODO: Check the args for a "preload" flag and act accordingly
|
|
2640 | 2665 | if ( args->flags & FT_OPEN_PARAMS )
|
2641 | 2666 | {
|
2642 | 2667 | num_params = args->num_params;
|
... | ... | @@ -2727,7 +2752,12 @@ |
2727 | 2752 | /* face->driver instead. */
|
2728 | 2753 | FT_List_Add( &face->driver->faces_list, node );
|
2729 | 2754 | |
2730 | - // TODO: The preload logic should be performed here
|
|
2755 | + if (args->flags & FT_OPEN_PRELOAD)
|
|
2756 | + {
|
|
2757 | + /* Preload the font here */
|
|
2758 | + }
|
|
2759 | +
|
|
2760 | + |
|
2731 | 2761 | /* now allocate a glyph slot object for the face */
|
2732 | 2762 | FT_TRACE4(( "FT_Open_Face: Creating glyph slot\n" ));
|
2733 | 2763 | |
... | ... | @@ -2749,6 +2779,8 @@ |
2749 | 2779 | goto Fail;
|
2750 | 2780 | |
2751 | 2781 | face->size = size;
|
2782 | + // FT_Outline_Decompose here
|
|
2783 | + |
|
2752 | 2784 | }
|
2753 | 2785 | }
|
2754 | 2786 |