ports/opt (3.6): freetype: update to 2.11.1
commit 64684944de39a4c2db35bd47e1b3b37eaef66035 Author: Juergen Daubert <jue@jue.li> Date: Sat Dec 4 14:32:16 2021 +0100 freetype: update to 2.11.1 diff --git a/freetype/.footprint b/freetype/.footprint index 17a33138e..b942e4dc8 100644 --- a/freetype/.footprint +++ b/freetype/.footprint @@ -61,7 +61,7 @@ drwxr-xr-x root/root usr/include/freetype2/freetype/config/ -rw-r--r-- root/root usr/include/freetype2/ft2build.h drwxr-xr-x root/root usr/lib/ lrwxrwxrwx root/root usr/lib/libfreetype.so -> libfreetype.so.6 -lrwxrwxrwx root/root usr/lib/libfreetype.so.6 -> libfreetype.so.6.18.0 --rwxr-xr-x root/root usr/lib/libfreetype.so.6.18.0 +lrwxrwxrwx root/root usr/lib/libfreetype.so.6 -> libfreetype.so.6.18.1 +-rwxr-xr-x root/root usr/lib/libfreetype.so.6.18.1 drwxr-xr-x root/root usr/lib/pkgconfig/ -rw-r--r-- root/root usr/lib/pkgconfig/freetype2.pc diff --git a/freetype/.signature b/freetype/.signature index 1c9eed95c..68eafb4e9 100644 --- a/freetype/.signature +++ b/freetype/.signature @@ -1,16 +1,10 @@ untrusted comment: verify with /etc/ports/opt.pub -RWSE3ohX2g5d/THnwN6vnoNdeaXWGZRyk/xeSc7NImmauDAqIdjDsVTjJ9rEC4SO3QnpXnQKNXrS2f9Z5POJfjuIxBNXyq9vBw0= -SHA256 (Pkgfile) = 38f3d951de81beb295f3691810a3bfdb3ccc9508606d04d28f64eeecc47e9356 -SHA256 (.footprint) = a8bec42616674a83ffa67823566f97ea9753f385af12a02157efb4a865c10e56 -SHA256 (freetype-2.11.0.tar.xz) = 8bee39bd3968c4804b70614a0a3ad597299ad0e824bc8aad5ce8aaf48067bde7 +RWSE3ohX2g5d/ckDN55uix3OZvXL5tpfSL3FePnHZO3+xb6Wj97+by9V0x2GlWGxk5p2ROaN5ROyGFX2RrM+jpHCtKDmjBHALgc= +SHA256 (Pkgfile) = 12969d9481868693c618d87c03ee4668fa35823e7769c894710c3d87e6b5dbe5 +SHA256 (.footprint) = 9ce4b21d74f888bb882c5dced153f6cd6ceebdb064a43f08d112498024649c34 +SHA256 (freetype-2.11.1.tar.xz) = 3333ae7cfda88429c97a7ae63b7d01ab398076c3b67182e960e5684050f2c5c8 SHA256 (freetype2.sh) = f7f8e09c44f7552c883846e9a6a1efc50377c4932234e74adc4a8ff750606467 -SHA256 (dlg-0cc0d3eaed28483fc8036d90ac18878ebd83ed87.tar.gz) = 768b226c285698fe8d371b435c99165697c1bebff6463681cff11c4e91c1c557 SHA256 (0001-Enable-table-validation-modules.patch) = f41df4f336d5e82e58733c7a4594476c9216cfc85c096327745a7e1b559e17e1 SHA256 (0002-Enable-subpixel-rendering.patch) = dc77c1cfee4bf8e7e0690628c95d211df09e0d0750e4c8f075b78b5f105514f7 SHA256 (0003-Enable-infinality-subpixel-hinting.patch) = 21a62bc12b848320c686d602d8d4e3bcd51294a9def4dc9c301736e077b59f3f SHA256 (0004-Enable-long-PCF-family-names.patch) = 266384222f87a02fb02b2179828f6c26fe6d7b1fd09d1f7e3734e7fcb09cda2e -SHA256 (0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch) = 2b13b8cc9acc3e56be6b0f8102d648864227bf93637bc956d5052c77c8509782 -SHA256 (0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch) = 21a2d243bc6b44d1cdb88ef29af2bd5ceda8d0faaf928bdc2c078a474ddc61f1 -SHA256 (0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch) = 13aba5006db13522ff0f3ffc85f81058b6cfcc48671285b1a90ac041a6a51952 -SHA256 (0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch) = 09a01b99839fc864db7a2c0748b4703ac5b04897cbd35e0d8969024b4ba89649 -SHA256 (0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch) = fbabfb745db32e1d90f9798e1018da26578f3bce9714dac8e64c15b691e76f69 diff --git a/freetype/0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch b/freetype/0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch deleted file mode 100644 index 5e1d8dc52..000000000 --- a/freetype/0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch +++ /dev/null @@ -1,35 +0,0 @@ -From d7f649f283763af099256eb2d5e326df601c3e76 Mon Sep 17 00:00:00 2001 -From: Anuj Verma <anujv@iitbhilai.ac.in> -Date: Mon, 16 Aug 2021 07:48:09 +0530 -Subject: [PATCH] [sdf] Return `FT_Err_Ok` while trying to render bitmap. - - * src/sdf/ftsdfrend.c (ft_bsdf_render): Return OK if the slot is - a bitmap and the render mode is anything other than `FT_RENDER_MODE_SDF`. - This is for compatibility reasons. - - Fixes issue #1076 ---- - src/sdf/ftsdfrend.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/sdf/ftsdfrend.c b/src/sdf/ftsdfrend.c -index 30f2e62a4..5686c0bf5 100644 ---- a/src/sdf/ftsdfrend.c -+++ b/src/sdf/ftsdfrend.c -@@ -502,8 +502,11 @@ - /* check whether render mode is correct */ - if ( mode != FT_RENDER_MODE_SDF ) - { -- error = FT_THROW( Cannot_Render_Glyph ); -- goto Exit; -+ FT_TRACE0(( "ft_bsdf_render: trying to render bitmap\n" )); -+ -+ /* return OK since the slot is already a bitmap */ -+ error = FT_Err_Ok; -+ return error; - } - - if ( origin ) --- -GitLab - diff --git a/freetype/0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch b/freetype/0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch deleted file mode 100644 index 46206465f..000000000 --- a/freetype/0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6e9d8d314ff6ab23177b9162c0b96616460bb84e Mon Sep 17 00:00:00 2001 -From: Alexei Podtelezhnikov <apodtele@gmail.com> -Date: Fri, 20 Aug 2021 16:01:32 -0400 -Subject: [PATCH] [base] Restore quiet no-op rendering of bitmap glyphs. - -Fixes #1076. - -* src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when -rendering a bitmap glyph. ---- - src/base/ftobjs.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c -index 342ac4a27..7b40c6421 100644 ---- a/src/base/ftobjs.c -+++ b/src/base/ftobjs.c -@@ -4703,7 +4703,7 @@ - else - renderer = FT_Lookup_Renderer( library, slot->format, &node ); - -- error = FT_ERR( Unimplemented_Feature ); -+ error = FT_ERR( Cannot_Render_Glyph ); - while ( renderer ) - { - error = renderer->render( renderer, slot, render_mode, NULL ); -@@ -4719,6 +4719,11 @@ - /* format. */ - renderer = FT_Lookup_Renderer( library, slot->format, &node ); - } -+ -+ /* it is not an error if we cannot render a bitmat glyph */ -+ if ( FT_ERR_EQ( error, Cannot_Render_Glyph ) && -+ slot->format == FT_GLYPH_FORMAT_BITMAP ) -+ error = FT_Err_Ok; - } - } - --- -GitLab - diff --git a/freetype/0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch b/freetype/0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch deleted file mode 100644 index be0ad6973..000000000 --- a/freetype/0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch +++ /dev/null @@ -1,474 +0,0 @@ -From 47cf8ebf4a78ed42da455a98d77a92ce6a180d78 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= <drott@chromium.org> -Date: Wed, 28 Jul 2021 17:36:57 +0300 -Subject: [PATCH] [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. - -The optional 'COLR' v1 glyph-specific clip box helps upstream graphics -libraries allocate a sufficiently large bitmap for a glyph without having to -traverse the glyph graph for that. See - - https://github.com/googlefonts/colr-gradients-spec/issues/251 - -for background on the introduction of this specification change. - -* include/freetype/ftcolor.h (FT_ClipBox): New structure. -(FT_Get_Color_Glyph_ClipBox): New function declaration. - -* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): -New function type. -(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. - -* src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API -with SFNT implementation. - -* src/sfnt/sfdriver.c (sfnt_interface): Updated. -* src/sfnt/ttcolr.c (Colr): New field `clip_list`. -(tt_face_load_colr): Parse global clip list offset. -(tt_face_get_color_glyph_clipbox): New function to find the clip box for a -glyph id from the clip list array. -* src/sfnt/ttcolr.h: Updated. ---- - include/freetype/ftcolor.h | 86 +++++++++++++++++++++ - include/freetype/internal/sfnt.h | 63 +++++++++++++--- - src/base/ftobjs.c | 29 +++++++ - src/sfnt/sfdriver.c | 10 ++- - src/sfnt/ttcolr.c | 125 ++++++++++++++++++++++++++++++- - src/sfnt/ttcolr.h | 5 ++ - 6 files changed, 302 insertions(+), 16 deletions(-) - -diff --git a/include/freetype/ftcolor.h b/include/freetype/ftcolor.h -index a4bd62a26..b98289917 100644 ---- a/include/freetype/ftcolor.h -+++ b/include/freetype/ftcolor.h -@@ -1383,6 +1383,49 @@ FT_BEGIN_HEADER - } FT_Color_Root_Transform; - - -+ /************************************************************************** -+ * -+ * @struct: -+ * FT_ClipBox -+ * -+ * @description: -+ * A structure representing a 'COLR' v1 'ClipBox' table. 'COLR' v1 -+ * glyphs may optionally define a clip box for aiding allocation or -+ * defining a maximum drawable region. Use @FT_Get_Color_Glyph_ClipBox -+ * to retrieve it. -+ * -+ * @fields: -+ * bottom_left :: -+ * The bottom left corner of the clip box as an @FT_Vector with -+ * fixed-point coordinates in 26.6 format. -+ * -+ * top_left :: -+ * The top left corner of the clip box as an @FT_Vector with -+ * fixed-point coordinates in 26.6 format. -+ * -+ * top_right :: -+ * The top right corner of the clip box as an @FT_Vector with -+ * fixed-point coordinates in 26.6 format. -+ * -+ * bottom_right :: -+ * The bottom right corner of the clip box as an @FT_Vector with -+ * fixed-point coordinates in 26.6 format. -+ * -+ * @since: -+ * 2.12 -- **currently experimental only!** There might be changes -+ * without retaining backward compatibility of both the API and ABI. -+ * -+ */ -+ typedef struct FT_ClipBox_ -+ { -+ FT_Vector bottom_left; -+ FT_Vector top_left; -+ FT_Vector top_right; -+ FT_Vector bottom_right; -+ -+ } FT_ClipBox; -+ -+ - /************************************************************************** - * - * @function: -@@ -1475,6 +1518,49 @@ FT_BEGIN_HEADER - FT_OpaquePaint* paint ); - - -+ /************************************************************************** -+ * -+ * @function: -+ * FT_Get_Color_Glyph_ClipBox -+ * -+ * @description: -+ * Search for a 'COLR' v1 clip box for the specified `base_glyph` and -+ * fill the `clip_box` parameter with the 'COLR' v1 'ClipBox' information -+ * if one is found. -+ * -+ * @input: -+ * face :: -+ * A handle to the parent face object. -+ * -+ * base_glyph :: -+ * The glyph index for which to retrieve the clip box. -+ * -+ * @output: -+ * clip_box :: -+ * The clip box for the requested `base_glyph` if one is found. The -+ * clip box is computed taking scale and transformations configured on -+ * the @FT_Face into account. @FT_ClipBox contains @FT_Vector values -+ * in 26.6 format. -+ * -+ * @return: -+ * Value~1 if a clip box is found. If no clip box is found or an error -+ * occured, value~0 is returned. -+ * -+ * @note: -+ * To retrieve the clip box in font units, reset scale to units-per-em -+ * and remove transforms configured using @FT_Set_Transform. -+ * -+ * @since: -+ * 2.12 -- **currently experimental only!** There might be changes -+ * without retaining backward compatibility of both the API and ABI. -+ * -+ */ -+ FT_EXPORT( FT_Bool ) -+ FT_Get_Color_Glyph_ClipBox( FT_Face face, -+ FT_UInt base_glyph, -+ FT_ClipBox* clip_box ); -+ -+ - /************************************************************************** - * - * @function: -diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h -index 438ec897e..e8d77e232 100644 ---- a/include/freetype/internal/sfnt.h -+++ b/include/freetype/internal/sfnt.h -@@ -555,6 +555,44 @@ FT_BEGIN_HEADER - FT_OpaquePaint *paint ); - - -+ /************************************************************************** -+ * -+ * @functype: -+ * TT_Get_Color_Glyph_ClipBox_Func -+ * -+ * @description: -+ * Search for a 'COLR' v1 clip box for the specified `base_glyph` and -+ * fill the `clip_box` parameter with the 'COLR' v1 'ClipBox' information -+ * if one is found. -+ * -+ * @input: -+ * face :: -+ * A handle to the parent face object. -+ * -+ * base_glyph :: -+ * The glyph index for which to retrieve the clip box. -+ * -+ * @output: -+ * clip_box :: -+ * The clip box for the requested base_glyph if one is found. The clip -+ * box is computed taking scale and transformations configured on the -+ * @FT_Face into account. @FT_ClipBox contains @FT_Vector values in -+ * 26.6 format. -+ * -+ * @note: -+ * To retrieve the clip box in font units, reset scale to units-per-em -+ * and remove transforms configured using @FT_Set_Transform. -+ * -+ * @return: -+ * Value~1 if a ClipBox is found. If no clip box is found or an -+ * error occured, value~0 is returned. -+ */ -+ typedef FT_Bool -+ ( *TT_Get_Color_Glyph_ClipBox_Func )( TT_Face face, -+ FT_UInt base_glyph, -+ FT_ClipBox* clip_box ); -+ -+ - /************************************************************************** - * - * @functype: -@@ -890,17 +928,18 @@ FT_BEGIN_HEADER - TT_Set_SBit_Strike_Func set_sbit_strike; - TT_Load_Strike_Metrics_Func load_strike_metrics; - -- TT_Load_Table_Func load_cpal; -- TT_Load_Table_Func load_colr; -- TT_Free_Table_Func free_cpal; -- TT_Free_Table_Func free_colr; -- TT_Set_Palette_Func set_palette; -- TT_Get_Colr_Layer_Func get_colr_layer; -- TT_Get_Color_Glyph_Paint_Func get_colr_glyph_paint; -- TT_Get_Paint_Layers_Func get_paint_layers; -- TT_Get_Colorline_Stops_Func get_colorline_stops; -- TT_Get_Paint_Func get_paint; -- TT_Blend_Colr_Func colr_blend; -+ TT_Load_Table_Func load_cpal; -+ TT_Load_Table_Func load_colr; -+ TT_Free_Table_Func free_cpal; -+ TT_Free_Table_Func free_colr; -+ TT_Set_Palette_Func set_palette; -+ TT_Get_Colr_Layer_Func get_colr_layer; -+ TT_Get_Color_Glyph_Paint_Func get_colr_glyph_paint; -+ TT_Get_Color_Glyph_ClipBox_Func get_color_glyph_clipbox; -+ TT_Get_Paint_Layers_Func get_paint_layers; -+ TT_Get_Colorline_Stops_Func get_colorline_stops; -+ TT_Get_Paint_Func get_paint; -+ TT_Blend_Colr_Func colr_blend; - - TT_Get_Metrics_Func get_metrics; - -@@ -951,6 +990,7 @@ FT_BEGIN_HEADER - set_palette_, \ - get_colr_layer_, \ - get_colr_glyph_paint_, \ -+ get_color_glyph_clipbox, \ - get_paint_layers_, \ - get_colorline_stops_, \ - get_paint_, \ -@@ -995,6 +1035,7 @@ FT_BEGIN_HEADER - set_palette_, \ - get_colr_layer_, \ - get_colr_glyph_paint_, \ -+ get_color_glyph_clipbox, \ - get_paint_layers_, \ - get_colorline_stops_, \ - get_paint_, \ -diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c -index 0ded2440f..5c1a4d034 100644 ---- a/src/base/ftobjs.c -+++ b/src/base/ftobjs.c -@@ -5639,6 +5639,35 @@ - } - - -+ /* documentation is in ftcolor.h */ -+ -+ FT_EXPORT_DEF( FT_Bool ) -+ FT_Get_Color_Glyph_ClipBox( FT_Face face, -+ FT_UInt base_glyph, -+ FT_ClipBox* clip_box ) -+ { -+ TT_Face ttface; -+ SFNT_Service sfnt; -+ -+ -+ if ( !face || !clip_box ) -+ return 0; -+ -+ if ( !FT_IS_SFNT( face ) ) -+ return 0; -+ -+ ttface = (TT_Face)face; -+ sfnt = (SFNT_Service)ttface->sfnt; -+ -+ if ( sfnt->get_color_glyph_clipbox ) -+ return sfnt->get_color_glyph_clipbox( ttface, -+ base_glyph, -+ clip_box ); -+ else -+ return 0; -+ } -+ -+ - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Bool ) -diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c -index 824e709fa..d1d01c99e 100644 ---- a/src/sfnt/sfdriver.c -+++ b/src/sfnt/sfdriver.c -@@ -1292,13 +1292,15 @@ - /* TT_Get_Colr_Layer_Func get_colr_layer */ - - PUT_COLOR_LAYERS_V1( tt_face_get_colr_glyph_paint ), -- /* TT_Get_Colr_Glyph_Paint_Func get_colr_glyph_paint */ -+ /* TT_Get_Color_Glyph_Paint_Func get_colr_glyph_paint */ -+ PUT_COLOR_LAYERS_V1( tt_face_get_color_glyph_clipbox ), -+ /* TT_Get_Color_Glyph_ClipBox_Func get_clipbox */ - PUT_COLOR_LAYERS_V1( tt_face_get_paint_layers ), -- /* TT_Get_Paint_Layers_Func get_paint_layers */ -+ /* TT_Get_Paint_Layers_Func get_paint_layers */ - PUT_COLOR_LAYERS_V1( tt_face_get_colorline_stops ), -- /* TT_Get_Paint get_paint */ -+ /* TT_Get_Paint get_paint */ - PUT_COLOR_LAYERS_V1( tt_face_get_paint ), -- /* TT_Get_Colorline_Stops_Func get_colorline_stops */ -+ /* TT_Get_Colorline_Stops_Func get_colorline_stops */ - - PUT_COLOR_LAYERS( tt_face_colr_blend_layer ), - /* TT_Blend_Colr_Func colr_blend */ -diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c -index b8f4777ed..2f3e8846d 100644 ---- a/src/sfnt/ttcolr.c -+++ b/src/sfnt/ttcolr.c -@@ -94,6 +94,8 @@ - FT_ULong num_layers_v1; - FT_Byte* layers_v1; - -+ FT_Byte* clip_list; -+ - /* - * Paint tables start at the minimum of the end of the LayerList and the - * end of the BaseGlyphList. Record this location in a field here for -@@ -134,7 +136,7 @@ - - FT_ULong base_glyph_offset, layer_offset; - FT_ULong base_glyphs_offset_v1, num_base_glyphs_v1; -- FT_ULong layer_offset_v1, num_layers_v1; -+ FT_ULong layer_offset_v1, num_layers_v1, clip_list_offset; - FT_ULong table_size; - - -@@ -226,6 +228,16 @@ - colr->base_glyphs_v1 + - colr->num_base_glyphs_v1 * BASE_GLYPH_PAINT_RECORD_SIZE; - } -+ -+ clip_list_offset = FT_NEXT_ULONG( p ); -+ -+ if ( clip_list_offset >= table_size ) -+ goto InvalidTable; -+ -+ if ( clip_list_offset ) -+ colr->clip_list = (FT_Byte*)( table + clip_list_offset ); -+ else -+ colr->clip_list = 0; - } - - colr->base_glyphs = (FT_Byte*)( table + base_glyph_offset ); -@@ -796,6 +808,117 @@ - } - - -+ FT_LOCAL_DEF( FT_Bool ) -+ tt_face_get_color_glyph_clipbox( TT_Face face, -+ FT_UInt base_glyph, -+ FT_ClipBox* clip_box ) -+ { -+ Colr* colr; -+ -+ FT_Byte *p, *p1, *clip_base; -+ -+ FT_Byte clip_list_format; -+ FT_ULong num_clip_boxes, i; -+ FT_UShort gid_start, gid_end; -+ FT_UInt32 clip_box_offset; -+ FT_Byte format; -+ -+ const FT_Byte num_corners = 4; -+ FT_Vector corners[4]; -+ FT_Byte j; -+ FT_BBox font_clip_box; -+ -+ -+ colr = (Colr*)face->colr; -+ if ( !colr ) -+ return 0; -+ -+ if ( !colr->clip_list ) -+ return 0; -+ -+ p = colr->clip_list; -+ -+ clip_base = p; -+ clip_list_format = FT_NEXT_BYTE ( p ); -+ -+ /* Format byte used here to be able to upgrade ClipList for >16bit */ -+ /* glyph ids; for now we can expect it to be 0. */ -+ if ( !( clip_list_format == 0 ) ) -+ return 0; -+ -+ num_clip_boxes = FT_NEXT_ULONG( p ); -+ -+ for ( i = 0; i < num_clip_boxes; ++i ) -+ { -+ gid_start = FT_NEXT_USHORT( p ); -+ gid_end = FT_NEXT_USHORT( p ); -+ clip_box_offset = FT_NEXT_UOFF3( p ); -+ -+ if ( base_glyph >= gid_start && base_glyph <= gid_end ) -+ { -+ p1 = (FT_Byte*)( clip_base + clip_box_offset ); -+ -+ if ( p1 >= ( (FT_Byte*)colr->table + colr->table_size ) ) -+ return 0; -+ -+ format = FT_NEXT_BYTE( p1 ); -+ -+ if ( format < 0 || format > 1 ) -+ return 0; -+ -+ /* `face->root.size->metrics.x_scale` and `y_scale` are factors */ -+ /* that scale a font unit value in integers to a 26.6 fixed value */ -+ /* according to the requested size, see for example */ -+ /* `ft_recompute_scaled_metrics`. */ -+ font_clip_box.xMin = FT_MulFix( FT_NEXT_SHORT( p1 ), -+ face->root.size->metrics.x_scale ); -+ font_clip_box.yMin = FT_MulFix( FT_NEXT_SHORT( p1 ), -+ face->root.size->metrics.x_scale ); -+ font_clip_box.xMax = FT_MulFix( FT_NEXT_SHORT( p1 ), -+ face->root.size->metrics.x_scale ); -+ font_clip_box.yMax = FT_MulFix( FT_NEXT_SHORT( p1 ), -+ face->root.size->metrics.x_scale ); -+ -+ /* Make 4 corner points (xMin, yMin), (xMax, yMax) and transform */ -+ /* them. If we we would only transform two corner points and */ -+ /* span a rectangle based on those, the rectangle may become too */ -+ /* small to cover the glyph. */ -+ corners[0].x = font_clip_box.xMin; -+ corners[1].x = font_clip_box.xMin; -+ corners[2].x = font_clip_box.xMax; -+ corners[3].x = font_clip_box.xMax; -+ -+ corners[0].y = font_clip_box.yMin; -+ corners[1].y = font_clip_box.yMax; -+ corners[2].y = font_clip_box.yMax; -+ corners[3].y = font_clip_box.yMin; -+ -+ for ( j = 0; j < num_corners; ++j ) -+ { -+ if ( face->root.internal->transform_flags & 1 ) -+ FT_Vector_Transform( &corners[j], -+ &face->root.internal->transform_matrix ); -+ -+ if ( face->root.internal->transform_flags & 2 ) -+ { -+ corners[j].x += face->root.internal->transform_delta.x; -+ corners[j].y += face->root.internal->transform_delta.y; -+ } -+ } -+ -+ clip_box->bottom_left = corners[0]; -+ clip_box->top_left = corners[1]; -+ clip_box->top_right = corners[2]; -+ clip_box->bottom_right = corners[3]; -+ -+ return 1; -+ } -+ } -+ -+ return 0; -+ } -+ -+ - FT_LOCAL_DEF( FT_Bool ) - tt_face_get_paint_layers( TT_Face face, - FT_LayerIterator* iterator, -diff --git a/src/sfnt/ttcolr.h b/src/sfnt/ttcolr.h -index c91d2b172..b81e4cb95 100644 ---- a/src/sfnt/ttcolr.h -+++ b/src/sfnt/ttcolr.h -@@ -48,6 +48,11 @@ FT_BEGIN_HEADER - FT_Color_Root_Transform root_transform, - FT_OpaquePaint* paint ); - -+ FT_LOCAL( FT_Bool ) -+ tt_face_get_color_glyph_clipbox( TT_Face face, -+ FT_UInt base_glyph, -+ FT_ClipBox* clip_box ); -+ - FT_LOCAL( FT_Bool ) - tt_face_get_paint_layers( TT_Face face, - FT_LayerIterator* iterator, diff --git a/freetype/0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch b/freetype/0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch deleted file mode 100644 index 50b05a754..000000000 --- a/freetype/0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch +++ /dev/null @@ -1,23 +0,0 @@ -From fed5521016227bf8cc4475f66450a9963568d162 Mon Sep 17 00:00:00 2001 -From: Werner Lemberg <wl@gnu.org> -Date: Mon, 9 Aug 2021 19:27:34 +0200 -Subject: [PATCH] * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor - fix. - ---- - src/sfnt/ttcolr.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c -index 2f3e8846d..68807127f 100644 ---- a/src/sfnt/ttcolr.c -+++ b/src/sfnt/ttcolr.c -@@ -863,7 +863,7 @@ - - format = FT_NEXT_BYTE( p1 ); - -- if ( format < 0 || format > 1 ) -+ if ( format > 1 ) - return 0; - - /* `face->root.size->metrics.x_scale` and `y_scale` are factors */ diff --git a/freetype/0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch b/freetype/0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch deleted file mode 100644 index 0307f047a..000000000 --- a/freetype/0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch +++ /dev/null @@ -1,55 +0,0 @@ -From e40ae7569aa4ef591f66ff9066df2f91de75bb77 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= <drott@chromium.org> -Date: Mon, 9 Aug 2021 13:44:55 +0300 -Subject: [PATCH] [sfnt] Add missing blend mode 'plus' to 'COLR' v1. - -* include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode -'plus' after it was added to the spec. ---- - include/freetype/ftcolor.h | 33 +++++++++++++++++---------------- - 1 file changed, 17 insertions(+), 16 deletions(-) - -diff --git a/include/freetype/ftcolor.h b/include/freetype/ftcolor.h -index b98289917..cbd2d85bb 100644 ---- a/include/freetype/ftcolor.h -+++ b/include/freetype/ftcolor.h -@@ -740,22 +740,23 @@ FT_BEGIN_HEADER - FT_COLR_COMPOSITE_SRC_ATOP = 9, - FT_COLR_COMPOSITE_DEST_ATOP = 10, - FT_COLR_COMPOSITE_XOR = 11, -- FT_COLR_COMPOSITE_SCREEN = 12, -- FT_COLR_COMPOSITE_OVERLAY = 13, -- FT_COLR_COMPOSITE_DARKEN = 14, -- FT_COLR_COMPOSITE_LIGHTEN = 15, -- FT_COLR_COMPOSITE_COLOR_DODGE = 16, -- FT_COLR_COMPOSITE_COLOR_BURN = 17, -- FT_COLR_COMPOSITE_HARD_LIGHT = 18, -- FT_COLR_COMPOSITE_SOFT_LIGHT = 19, -- FT_COLR_COMPOSITE_DIFFERENCE = 20, -- FT_COLR_COMPOSITE_EXCLUSION = 21, -- FT_COLR_COMPOSITE_MULTIPLY = 22, -- FT_COLR_COMPOSITE_HSL_HUE = 23, -- FT_COLR_COMPOSITE_HSL_SATURATION = 24, -- FT_COLR_COMPOSITE_HSL_COLOR = 25, -- FT_COLR_COMPOSITE_HSL_LUMINOSITY = 26, -- FT_COLR_COMPOSITE_MAX = 27 -+ FT_COLR_COMPOSITE_PLUS = 12, -+ FT_COLR_COMPOSITE_SCREEN = 13, -+ FT_COLR_COMPOSITE_OVERLAY = 14, -+ FT_COLR_COMPOSITE_DARKEN = 15, -+ FT_COLR_COMPOSITE_LIGHTEN = 16, -+ FT_COLR_COMPOSITE_COLOR_DODGE = 17, -+ FT_COLR_COMPOSITE_COLOR_BURN = 18, -+ FT_COLR_COMPOSITE_HARD_LIGHT = 19, -+ FT_COLR_COMPOSITE_SOFT_LIGHT = 20, -+ FT_COLR_COMPOSITE_DIFFERENCE = 21, -+ FT_COLR_COMPOSITE_EXCLUSION = 22, -+ FT_COLR_COMPOSITE_MULTIPLY = 23, -+ FT_COLR_COMPOSITE_HSL_HUE = 24, -+ FT_COLR_COMPOSITE_HSL_SATURATION = 25, -+ FT_COLR_COMPOSITE_HSL_COLOR = 26, -+ FT_COLR_COMPOSITE_HSL_LUMINOSITY = 27, -+ FT_COLR_COMPOSITE_MAX = 28 - - } FT_Composite_Mode; - diff --git a/freetype/Pkgfile b/freetype/Pkgfile index f73b72db1..b9294fb40 100644 --- a/freetype/Pkgfile +++ b/freetype/Pkgfile @@ -2,54 +2,34 @@ # URL: https://www.freetype.org # Maintainer: CRUX System Team, core-ports at crux dot nu # Depends on: meson ninja libpng -# Optional: brotli harfbuzz libpng +# Optional: brotli harfbuzz name=freetype -version=2.11.0 -release=2 -_dlgversion=0cc0d3eaed28483fc8036d90ac18878ebd83ed87 +version=2.11.1 +release=1 -source=(https://download.savannah.gnu.org/releases/freetype/freetype-2.11.0.tar.xz - freetype2.sh - ## we don't want to depend on git but meson will try to pull this with git - ## installed when we allow downloads, therefor we sideload it using the - ## specific commit - # https://gitlab.freedesktop.org/freetype/freetype/-/tree/master/subprojects - https://github.com/nyorain/dlg/archive/$_dlgversion/dlg-$_dlgversion.tar.gz - # https://github.com/archlinux/svntogit-packages/tree/packages/freetype2/trunk - 0001-Enable-table-validation-modules.patch - 0002-Enable-subpixel-rendering.patch - 0003-Enable-infinality-subpixel-hinting.patch - 0004-Enable-long-PCF-family-names.patch - 0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch - 0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch - 0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch - 0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch - 0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch) +source=(https://download.savannah.gnu.org/releases/freetype/freetype-$version.tar.xz + freetype2.sh + 0001-Enable-table-validation-modules.patch + 0002-Enable-subpixel-rendering.patch + 0003-Enable-infinality-subpixel-hinting.patch + 0004-Enable-long-PCF-family-names.patch) build() { - mkdir -p $name-$version/subprojects - rsync -aR $SRC/dlg-$_dlgversion/ $name-$version/subprojects/dlg + patch -Np1 -d $name-$version -i $SRC/0001-Enable-table-validation-modules.patch + patch -Np1 -d $name-$version -i $SRC/0002-Enable-subpixel-rendering.patch + patch -Np1 -d $name-$version -i $SRC/0003-Enable-infinality-subpixel-hinting.patch + patch -Np1 -d $name-$version -i $SRC/0004-Enable-long-PCF-family-names.patch - patch -Np1 -d $name-$version -i $SRC/0001-Enable-table-validation-modules.patch - patch -Np1 -d $name-$version -i $SRC/0002-Enable-subpixel-rendering.patch - patch -Np1 -d $name-$version -i $SRC/0003-Enable-infinality-subpixel-hinting.patch - patch -Np1 -d $name-$version -i $SRC/0004-Enable-long-PCF-family-names.patch - patch -Np1 -d $name-$version -i $SRC/0006-Return_FT_Err_Ok_while_trying_to_render_bitmap.patch - patch -Np1 -d $name-$version -i $SRC/0007-Restore_quiet_no-op_rendering_of_bitmap_glyphs.patch - patch -Np1 -d $name-$version -i $SRC/0008-sfnt-Add-API-for-retrieving-a-COLR-v1-ClipBox-table.patch - patch -Np1 -d $name-$version -i $SRC/0009-src-sfnt-ttcolr.c-tt_face_get_color_glyph_clipbox-Mi.patch - patch -Np1 -d $name-$version -i $SRC/0010-sfnt-Add-missing-blend-mode-plus-to-COLR-v1.patch + meson setup $name-$version build \ + --prefix=/usr \ + --buildtype=plain \ + --wrap-mode=nodownload \ + -D b_lto=true \ + -D b_pie=true \ + -D default_library=shared + meson compile -C build -j ${JOBS:-1} + DESTDIR=$PKG meson install -C build - meson setup $name-$version build \ - --prefix=/usr \ - --buildtype=plain \ - --wrap-mode=nodownload \ - -D b_lto=true \ - -D b_pie=true \ - -D default_library=shared - meson compile -C build - DESTDIR=$PKG meson install -C build - - install -Dt $PKG/etc/profile.d -m644 $SRC/freetype2.sh + install -Dt $PKG/etc/profile.d -m644 $SRC/freetype2.sh }
participants (1)
-
crux@crux.nu