aboutsummaryrefslogtreecommitdiff
path: root/x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c')
-rw-r--r--x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c231
1 files changed, 0 insertions, 231 deletions
diff --git a/x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c b/x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c
deleted file mode 100644
index 68e18f831ec7..000000000000
--- a/x11-servers/xorg-server-snap/files/patch-font-FreeType-ftfuncs.c
+++ /dev/null
@@ -1,231 +0,0 @@
---- lib/font/FreeType/ftfuncs.c.orig 2005-10-23 19:32:05.000000000 +0100
-+++ lib/font/FreeType/ftfuncs.c 2006-06-01 23:21:34.000000000 +0100
-@@ -54,10 +54,7 @@
- #include FT_TYPE1_TABLES_H
- #include FT_XFREE86_H
- #include FT_BBOX_H
--#include FT_INTERNAL_TRUETYPE_TYPES_H
- #include FT_TRUETYPE_TAGS_H
--#include FT_INTERNAL_SFNT_H
--#include FT_INTERNAL_STREAM_H
- /*
- * If you want to use FT_Outline_Get_CBox instead of
- * FT_Outline_Get_BBox, define here.
-@@ -123,6 +120,46 @@
- };
-
-
-+/* read 2-byte value from a SFNT table */
-+static FT_UShort
-+sfnt_get_ushort( FT_Face face,
-+ FT_ULong table_tag,
-+ FT_ULong table_offset )
-+{
-+ FT_Byte buff[2];
-+ FT_ULong len = sizeof(buff);
-+ FT_UShort result = 0;
-+
-+ if ( !FT_Load_Sfnt_Table( face, table_tag, table_offset, buff, &len ) );
-+ result = (FT_UShort)( (buff[0] << 8) | buff[1] );
-+
-+ return result;
-+}
-+
-+#define sfnt_get_short(f,t,o) ((FT_Short)sfnt_get_ushort((f),(t),(o)))
-+
-+
-+#if 0
-+static FT_ULong
-+sfnt_get_ulong( FT_Face face,
-+ FT_ULong table_tag,
-+ FT_ULong table_offset )
-+{
-+ FT_Byte buff[4];
-+ FT_ULong len = sizeof(buff);
-+ FT_UShort result = 0;
-+
-+ if ( !FT_Load_Sfnt_Table( face, table_tag, table_offset, buff, &len );
-+ result = ((FT_ULong)buff[0] << 24) | ((FT_ULong)buff[1] << 16) |
-+ ((FT_ULong)buff[2] << 8) | (FT_ULong)buff[3];
-+
-+ return result;
-+}
-+#endif
-+
-+
-+
-+
- static int ftypeInitP = 0; /* is the engine initialised? */
- FT_Library ftypeLibrary;
-
-@@ -211,6 +248,10 @@
- if(maxp && maxp->maxContours == 0)
- face->bitmap = 1;
- }
-+
-+ face->num_hmetrics = (FT_UInt) sfnt_get_ushort( face->face,
-+ TTAG_hhea, 34 );
-+
- /* Insert face in hashtable and return it */
- face->next = faceTable[bucket];
- faceTable[bucket] = face;
-@@ -462,6 +503,29 @@
- }
-
- if( FT_IS_SFNT( face->face ) ) {
-+#if 1
-+ FT_F26Dot6 tt_char_width, tt_char_height, tt_dim_x, tt_dim_y;
-+ FT_UInt nn;
-+
-+ instance->strike_index=0xFFFFU;
-+
-+ tt_char_width = (int)(trans->scale*(1<<6) + 0.5);
-+ tt_char_height = (int)(trans->scale*(1<<6) + 0.5);
-+
-+ tt_dim_x = ( ( tt_char_width * trans->xres + (36+32*72) ) / 72 ) & -64;
-+ tt_dim_y = ( ( tt_char_height * trans->yres + (36+32*72) ) / 72 ) & -64;
-+
-+ for ( nn = 0; nn < face->face->num_fixed_sizes; nn++ )
-+ {
-+ FT_Bitmap_Size* sz = &face->face->available_sizes[nn];
-+
-+ if ( tt_dim_x == sz->x_ppem && tt_dim_y == sz->y_ppem )
-+ {
-+ instance->strike_index = nn;
-+ break;
-+ }
-+ }
-+#else
- /* See Set_Char_Sizes() in ttdriver.c */
- FT_Error err;
- TT_Face tt_face;
-@@ -486,6 +550,7 @@
- sfnt = (SFNT_Service)tt_face->sfnt;
- err = sfnt->set_sbit_strike(tt_face,tt_x_ppem,tt_y_ppem,&instance->strike_index);
- if ( err ) instance->strike_index=0xFFFFU;
-+#endif
- }
-
- /* maintain a linked list of instances */
-@@ -803,31 +868,36 @@
- * parse the htmx field in TrueType font.
- */
-
--/* from src/truetype/ttgload.c */
- static void
--tt_get_metrics( TT_HoriHeader* header,
-+tt_get_metrics( FT_Face face,
- FT_UInt idx,
-+ FT_UInt num_hmetrics,
- FT_Short* bearing,
- FT_UShort* advance )
--/* Copyright 1996-2001, 2002 by */
--/* David Turner, Robert Wilhelm, and Werner Lemberg. */
- {
-- TT_LongMetrics longs_m;
-- FT_UShort k = header->number_Of_HMetrics;
-+ /* read the metrics directly from the horizontal header, we
-+ * parse the SFNT table directly through the standard FreeType API.
-+ * this works with any version of the library and doesn't need to
-+ * peek at its internals. Maybe a bit less
-+ */
-+ FT_UInt count = num_hmetrics;
-
-- if ( k == 0 ) {
-- *bearing = *advance = 0;
-- return;
-+ if ( count == 0 )
-+ {
-+ *advance = 0;
-+ *bearing = 0;
- }
-+ else if ( idx < count )
-+ {
-+ FT_ULong offset = idx*4;
-
-- if ( idx < (FT_UInt)k ) {
-- longs_m = (TT_LongMetrics )header->long_metrics + idx;
-- *bearing = longs_m->bearing;
-- *advance = longs_m->advance;
-+ *advance = sfnt_get_ushort( face, TTAG_hmtx, offset );
-+ *bearing = sfnt_get_short ( face, TTAG_hmtx, offset+2 );
- }
-- else {
-- *bearing = ((TT_ShortMetrics*)header->short_metrics)[idx - k];
-- *advance = ((TT_LongMetrics )header->long_metrics)[k - 1].advance;
-+ else
-+ {
-+ *advance = sfnt_get_ushort( face, TTAG_hmtx, (count-1)*4 );
-+ *bearing = sfnt_get_short ( face, TTAG_hmtx, (count+idx)*2 );
- }
- }
-
-@@ -835,6 +905,7 @@
- ft_get_very_lazy_bbox( FT_UInt index,
- FT_Face face,
- FT_Size size,
-+ FT_UInt num_hmetrics,
- double slant,
- FT_Matrix *matrix,
- FT_BBox *bbox,
-@@ -842,14 +913,13 @@
- FT_Long *vertAdvance)
- {
- if ( FT_IS_SFNT( face ) ) {
-- TT_Face ttface = (TT_Face)face;
- FT_Size_Metrics *smetrics = &size->metrics;
- FT_Short leftBearing = 0;
- FT_UShort advance = 0;
- FT_Vector p0, p1, p2, p3;
-
- /* horizontal */
-- tt_get_metrics(&ttface->horizontal, index,
-+ tt_get_metrics( face, num_hmetrics, index,
- &leftBearing, &advance);
-
- #if 0
-@@ -910,7 +980,27 @@
- FT_UShort glyph_index, FT_Glyph_Metrics *metrics_return,
- int *sbitchk_incomplete_but_exist )
- {
--#if (FREETYPE_VERSION >= 2001008)
-+#if 1
-+ if ( strike_index != 0xFFFFU && ft_face->available_sizes != 0)
-+ {
-+ FT_Error error;
-+ FT_Bitmap_Size* sz = &ft_face->available_sizes[strike_index];
-+
-+ error = FT_Set_Pixel_Sizes( ft_face, sz->x_ppem/64, sz->y_ppem/64 );
-+ if ( !error )
-+ {
-+ error = FT_Load_Glyph( ft_face, glyph_index, FT_LOAD_SBITS_ONLY );
-+ if ( !error )
-+ {
-+ if ( metrics_return != NULL )
-+ *metrics_return = ft_face->glyph->metrics;
-+
-+ return 0;
-+ }
-+ }
-+ }
-+ return -1;
-+#elif (FREETYPE_VERSION >= 2001008)
- SFNT_Service sfnt;
- TT_Face face;
- FT_Error error;
-@@ -1043,6 +1133,7 @@
- if( bitmap_metrics == NULL ) {
- if ( sbitchk_incomplete_but_exist==0 && (instance->ttcap.flags & TTCAP_IS_VERY_LAZY) ) {
- if( ft_get_very_lazy_bbox( idx, face->face, instance->size,
-+ face->num_hmetrics,
- instance->ttcap.vl_slant,
- &instance->transformation.matrix,
- &bbox, &outline_hori_advance,
-@@ -1221,6 +1312,7 @@
- if( is_outline == 1 ){
- if( correct ){
- if( ft_get_very_lazy_bbox( idx, face->face, instance->size,
-+ face->num_hmetrics,
- instance->ttcap.vl_slant,
- &instance->transformation.matrix,
- &bbox, &outline_hori_advance,