diff options
author | Charles Bos | 2018-02-02 15:21:53 +0000 |
---|---|---|
committer | Charles Bos | 2018-02-02 15:21:53 +0000 |
commit | 969a06dfe1e2c67d8b00738181dbf45adeaa7a89 (patch) | |
tree | 39ce36a50a5f6ed31775e2b69953b6e0f05300ce /fix_metrics_on_size_request.patch | |
parent | f0d87f1652f8e8972f016eeb06d5a30565f3b7cd (diff) | |
download | aur-969a06dfe1e2c67d8b00738181dbf45adeaa7a89.tar.gz |
Replace revert_allow_linear_scaling.patch with an equivalent patch from freebsd. this fixes crashes with mpv
Diffstat (limited to 'fix_metrics_on_size_request.patch')
-rw-r--r-- | fix_metrics_on_size_request.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/fix_metrics_on_size_request.patch b/fix_metrics_on_size_request.patch new file mode 100644 index 000000000000..6999f88ec101 --- /dev/null +++ b/fix_metrics_on_size_request.patch @@ -0,0 +1,41 @@ +--- a/src/truetype/ttdriver.c 2017-04-29 04:38:17 UTC ++++ b/src/truetype/ttdriver.c +@@ -357,6 +357,8 @@ + if ( FT_IS_SCALABLE( size->face ) ) + { + error = tt_size_reset( ttsize, 0 ); ++ if ( !error ) ++ ttsize->root.metrics = *ttsize->metrics; + + #ifdef TT_USE_BYTECODE_INTERPRETER + /* for the `MPS' bytecode instruction we need the point size */ +--- a/src/truetype/ttobjs.c 2017-05-07 11:05:56 UTC ++++ b/src/truetype/ttobjs.c +@@ -1262,6 +1262,13 @@ + /* */ + if ( face->header.Flags & 8 ) + { ++ if ( !only_height ) ++ { ++ size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6, ++ face->root.units_per_EM ); ++ size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6, ++ face->root.units_per_EM ); ++ } + /* the TT spec always asks for ROUND, not FLOOR or CEIL */ + size_metrics->ascender = FT_PIX_ROUND( + FT_MulFix( face->root.ascender, +@@ -1283,11 +1290,12 @@ + { + /* base scaling values on integer ppem values, */ + /* as mandated by the TrueType specification */ ++/* + size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6, + face->root.units_per_EM ); + size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6, + face->root.units_per_EM ); +- ++*/ + size_metrics->max_advance = FT_PIX_ROUND( + FT_MulFix( face->root.max_advance_width, + size_metrics->x_scale ) ); |