summarylogtreecommitdiffstats
path: root/fix_metrics_on_size_request.patch
diff options
context:
space:
mode:
authorCharles Bos2018-02-02 15:21:53 +0000
committerCharles Bos2018-02-02 15:21:53 +0000
commit969a06dfe1e2c67d8b00738181dbf45adeaa7a89 (patch)
tree39ce36a50a5f6ed31775e2b69953b6e0f05300ce /fix_metrics_on_size_request.patch
parentf0d87f1652f8e8972f016eeb06d5a30565f3b7cd (diff)
downloadaur-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.patch41
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 ) );