diff options
author | Erik Dubois | 2017-05-23 19:42:24 -0400 |
---|---|---|
committer | Erik Dubois | 2017-05-23 19:42:24 -0400 |
commit | ffcf31530facfd0906663453d17db97aaec1c3d5 (patch) | |
tree | 7635d6e1ef4a111b63bcf0ed636b57cb7af51be5 | |
parent | 5f838ddcf49b3550edadac17d7c68552e8d58b65 (diff) | |
download | aur-ffcf31530facfd0906663453d17db97aaec1c3d5.tar.gz |
updating to 2.8
-rw-r--r-- | .SRCINFO | 53 | ||||
-rw-r--r-- | 0001-Enable-table-validation-modules.patch | 28 | ||||
-rw-r--r-- | 0002-infinality-2.8-2017.05.22.patch (renamed from 0002-infinality-2.7.1-2017.01.11.patch) | 2586 | ||||
-rw-r--r-- | 0003-inf.patch | 2089 | ||||
-rw-r--r-- | 0004-Enable-long-PCF-family-names.patch | 25 | ||||
-rw-r--r-- | 0005-freetype-2.5.2-more-demos.patch | 17 | ||||
-rw-r--r-- | 0005-freetype-2.5.2-more-demos.patch.html | 606 | ||||
-rw-r--r-- | PKGBUILD | 79 |
8 files changed, 3169 insertions, 2314 deletions
@@ -1,38 +1,55 @@ # Generated by mksrcinfo v8 -# Wed May 3 22:54:06 UTC 2017 +# Tue May 23 23:42:11 UTC 2017 pkgbase = freetype2-infinality-ultimate pkgdesc = TrueType font rendering library with Infinality patches and custom settings by bohoomil - pkgver = 2.7.1 - pkgrel = 5 + pkgver = 2.8 + pkgrel = 1 url = http://www.freetype.org/ install = freetype2.install arch = i686 arch = x86_64 - groups = infinality-bundle license = GPL makedepends = libx11 + source = https://download.savannah.gnu.org/releases/freetype/freetype-2.8.tar.bz2 + source = https://download.savannah.gnu.org/releases/freetype/freetype-doc-2.8.tar.bz2 + source = https://download-mirror.savannah.gnu.org/releases/freetype/ft2demos-2.8.tar.bz2 + source = 0001-Enable-table-validation-modules.patch + source = 0002-infinality-2.8-2017.05.22.patch + source = 0003-inf.patch + source = 0004-Enable-long-PCF-family-names.patch + source = 0005-freetype-2.5.2-more-demos.patch + source = freetype2.sh + source = infinality-settings.sh + source = xft-settings.sh + sha256sums = a3c603ed84c3c2495f9c9331fe6bba3bb0ee65e06ec331e0a0fb52158291b40b + sha256sums = 427ba04d11f450df4bac4c95fec247be1b835ccdcf85d8b081f3f39d31811154 + sha256sums = 2b6ce0d36bcb43fcc8aac07a0287982d855571ee271c3803c768e501f9c1a233 + sha256sums = 515d52643fa47bb96c99792c81d4c05694b4e08494d36c5f81f6d05b61d4f287 + sha256sums = 72329f1efbc0a8a06c072d81f7c75464a2874a3d95e9319d0ab42bf5786fe4de + sha256sums = 9d65d9c6eee7ecf993bfada7aa5530f09a44dec6796a23f2f186d29c2acf775a + sha256sums = 7f5aa51a67a68002226f8e869eaa3f6b870c04d19135a14c64a6c355eb023a39 + sha256sums = 36484db4b926ed026e7f32570573493b5a9793a129f08d54383a26d65a6af89b + sha256sums = f7f8e09c44f7552c883846e9a6a1efc50377c4932234e74adc4a8ff750606467 + sha256sums = 2041947007b27d58101b5aebdf225d79d2c6d64cf8ac07a71c225d9e027578a0 + sha256sums = a4b3db6882de85304c5e4099fca5832a598607f90e582bcd030df0e9b526cd0b + +pkgname = freetype2-infinality-ultimate + groups = infinality-bundle depends = zlib depends = bzip2 depends = sh depends = libpng depends = harfbuzz - provides = freetype2=2.7.1 + provides = freetype2=2.8 provides = freetype2-infinality provides = libfreetype.so conflicts = freetype2 conflicts = freetype2-infinality - source = https://download.savannah.gnu.org/releases/freetype/freetype-2.7.1.tar.bz2 - source = 0001-Enable-table-validation-modules.patch - source = 0002-infinality-2.7.1-2017.01.11.patch - source = freetype2.sh - source = infinality-settings.sh - source = xft-settings.sh - sha256sums = 3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88 - sha256sums = 6d273254fd925d284e5f66e3861eaef69a4393f34872398b2c93af0d5e15d34e - sha256sums = 0d7e15b94a20ebcc4c857b062219118ae8f7f50f4c8ad108d1abaca99cdf2304 - sha256sums = f7f8e09c44f7552c883846e9a6a1efc50377c4932234e74adc4a8ff750606467 - sha256sums = 2041947007b27d58101b5aebdf225d79d2c6d64cf8ac07a71c225d9e027578a0 - sha256sums = a4b3db6882de85304c5e4099fca5832a598607f90e582bcd030df0e9b526cd0b -pkgname = freetype2-infinality-ultimate +pkgname = freetype2-demos-infinality + pkgdesc = Freetype tools and demos + depends = freetype2 + depends = libx11 + conflicts = freetyp2-demos + conflicts = freetyp2-demos-kagayaki diff --git a/0001-Enable-table-validation-modules.patch b/0001-Enable-table-validation-modules.patch index 3e9451fa8b82..d03ec67e19cf 100644 --- a/0001-Enable-table-validation-modules.patch +++ b/0001-Enable-table-validation-modules.patch @@ -1,17 +1,17 @@ -From c3680bf8d38cf759c1e33dcc2d2d51e0a4fea2f9 Mon Sep 17 00:00:00 2001 +From 17dd2751813c3c8b37dac474cc5024473eb9bece Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Tue, 23 Jun 2015 08:40:29 +0200 -Subject: [PATCH 1/3] Enable table validation modules +Subject: [PATCH 1/4] Enable table validation modules --- modules.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.cfg b/modules.cfg -index f30049c38cc45159..7b8e50fe1b34584a 100644 +index 517111efeb642459..64b2a34d510ce8f7 100644 --- a/modules.cfg +++ b/modules.cfg -@@ -120,7 +120,7 @@ AUX_MODULES += cache +@@ -120,30 +120,30 @@ AUX_MODULES += cache # TrueType GX/AAT table validation. Needs ftgxval.c below. # # No FT_CONFIG_OPTION_PIC support. @@ -20,7 +20,22 @@ index f30049c38cc45159..7b8e50fe1b34584a 100644 # Support for streams compressed with gzip (files with suffix .gz). # -@@ -143,7 +143,7 @@ AUX_MODULES += bzip2 + # See include/freetype/ftgzip.h for the API. + # No FT_CONFIG_OPTION_PIC support. + AUX_MODULES += gzip + + # Support for streams compressed with LZW (files with suffix .Z). + # + # See include/freetype/ftlzw.h for the API. + # No FT_CONFIG_OPTION_PIC support. + AUX_MODULES += lzw + + # Support for streams compressed with bzip2 (files with suffix .bz2). + # + # See include/freetype/ftbzip2.h for the API. + # No FT_CONFIG_OPTION_PIC support. + AUX_MODULES += bzip2 + # OpenType table validation. Needs ftotval.c below. # # No FT_CONFIG_OPTION_PIC support. @@ -30,5 +45,4 @@ index f30049c38cc45159..7b8e50fe1b34584a 100644 # Auxiliary PostScript driver component to share common code. # -- -2.9.3 - +2.13.0 diff --git a/0002-infinality-2.7.1-2017.01.11.patch b/0002-infinality-2.8-2017.05.22.patch index fbb7db2e34ea..d8e63ec23834 100644 --- a/0002-infinality-2.7.1-2017.01.11.patch +++ b/0002-infinality-2.8-2017.05.22.patch @@ -1,7 +1,34 @@ -diff -ruN freetype-2.7.1-orig/builds/freetype.mk freetype-2.7.1/builds/freetype.mk ---- freetype-2.7.1-orig/builds/freetype.mk 2017-01-11 12:28:16.720016867 +0100 -+++ freetype-2.7.1/builds/freetype.mk 2017-01-11 12:28:34.873016390 +0100 -@@ -161,6 +161,7 @@ +From b0f880b8216e56ad48d4c3b59a0d565fcace8e12 Mon Sep 17 00:00:00 2001 +From: "Devin J. Pohly" <djpohly@gmail.com> +Date: Mon, 22 May 2017 12:39:32 -0500 +Subject: [PATCH] infinality 2.8 2017.05.22 + +--- + builds/freetype.mk | 1 + + configure | 2 + + devel/ftoption.h | 10 + + include/freetype/config/ftoption.h | 17 +- + src/autofit/aflatin.c | 170 ++- + src/autofit/aflatin.h | 3 + + src/autofit/afmodule.c | 7 + + src/base/Jamfile | 1 + + src/base/ftbase.c | 3 + + src/base/ftinit.c | 14 +- + src/base/ftlcdfil.c | 36 +- + src/base/ftobjs.c | 67 +- + src/base/ftoutln.c | 10 +- + src/base/ftsynth.c | 22 +- + src/base/rules.mk | 1 + + src/cff/cffobjs.c | 6 + + src/smooth/ftsmooth.c | 2808 ++++++++++++++++++++++++++++++++++-- + src/truetype/ttinterp.c | 1 + + 18 files changed, 3057 insertions(+), 122 deletions(-) + +diff --git a/builds/freetype.mk b/builds/freetype.mk +index f8cfd41..7e7ac5b 100644 +--- a/builds/freetype.mk ++++ b/builds/freetype.mk +@@ -161,6 +161,7 @@ FT_CFLAGS = $(CPPFLAGS) \ $(CFLAGS) \ $DFT2_BUILD_LIBRARY \ $DFT_CONFIG_MODULES_H="<ftmodule.h>" \ @@ -9,9 +36,10 @@ diff -ruN freetype-2.7.1-orig/builds/freetype.mk freetype-2.7.1/builds/freetype. $(FTOPTION_FLAG) -diff -ruN freetype-2.7.1-orig/configure freetype-2.7.1/configure ---- freetype-2.7.1-orig/configure 2017-01-11 12:28:16.730016867 +0100 -+++ freetype-2.7.1/configure 2017-01-11 12:28:34.873016390 +0100 +diff --git a/configure b/configure +index 68dbd99..165703c 100755 +--- a/configure ++++ b/configure @@ -13,6 +13,8 @@ # Call the `configure' script located in `builds/unix'. # @@ -20,11 +48,12 @@ diff -ruN freetype-2.7.1-orig/configure freetype-2.7.1/configure + rm -f config.mk builds/unix/unix-def.mk builds/unix/unix-cc.mk - # respect GNUMAKE environment variable for backwards compatibility -diff -ruN freetype-2.7.1-orig/devel/ftoption.h freetype-2.7.1/devel/ftoption.h ---- freetype-2.7.1-orig/devel/ftoption.h 2017-01-11 12:28:16.713016867 +0100 -+++ freetype-2.7.1/devel/ftoption.h 2017-01-11 12:28:34.874016390 +0100 -@@ -626,6 +626,16 @@ + # respect GNUMAKE environment variable for backward compatibility +diff --git a/devel/ftoption.h b/devel/ftoption.h +index db661e7..911f411 100644 +--- a/devel/ftoption.h ++++ b/devel/ftoption.h +@@ -626,6 +626,16 @@ FT_BEGIN_HEADER /* */ #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER @@ -41,10 +70,11 @@ diff -ruN freetype-2.7.1-orig/devel/ftoption.h freetype-2.7.1/devel/ftoption.h /*************************************************************************/ /* */ -diff -ruN freetype-2.7.1-orig/include/freetype/config/ftoption.h freetype-2.7.1/include/freetype/config/ftoption.h ---- freetype-2.7.1-orig/include/freetype/config/ftoption.h 2017-01-11 12:28:16.720016867 +0100 -+++ freetype-2.7.1/include/freetype/config/ftoption.h 2017-01-11 12:31:27.676011855 +0100 -@@ -122,7 +122,7 @@ +diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h +index 1bf6e8f..c565b36 100644 +--- a/include/freetype/config/ftoption.h ++++ b/include/freetype/config/ftoption.h +@@ -122,7 +122,7 @@ FT_BEGIN_HEADER /* This is done to allow FreeType clients to run unmodified, forcing */ /* them to display normal gray-level anti-aliased glyphs. */ /* */ @@ -53,7 +83,7 @@ diff -ruN freetype-2.7.1-orig/include/freetype/config/ftoption.h freetype-2.7.1/ /*************************************************************************/ -@@ -626,6 +626,17 @@ +@@ -626,6 +626,17 @@ FT_BEGIN_HEADER /* */ #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER @@ -71,7 +101,7 @@ diff -ruN freetype-2.7.1-orig/include/freetype/config/ftoption.h freetype-2.7.1/ /*************************************************************************/ /* */ -@@ -675,8 +686,8 @@ +@@ -684,8 +695,8 @@ FT_BEGIN_HEADER /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ /* */ /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ @@ -82,9 +112,10 @@ diff -ruN freetype-2.7.1-orig/include/freetype/config/ftoption.h freetype-2.7.1/ /*************************************************************************/ -diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/aflatin.c ---- freetype-2.7.1-orig/src/autofit/aflatin.c 2017-01-11 12:28:16.724016867 +0100 -+++ freetype-2.7.1/src/autofit/aflatin.c 2017-01-11 12:28:34.876016390 +0100 +diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c +index 11fa523..9036fc4 100644 +--- a/src/autofit/aflatin.c ++++ b/src/autofit/aflatin.c @@ -24,7 +24,10 @@ #include "afpic.h" #include "aflatin.h" @@ -108,7 +139,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a /* needed for computation of round vs. flat segments */ #define FLAT_THRESHOLD( x ) ( x / 14 ) -@@ -1028,7 +1035,10 @@ +@@ -1121,7 +1128,10 @@ FT_Pos delta; AF_LatinAxis axis; FT_UInt nn; @@ -120,7 +151,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a if ( dim == AF_DIMENSION_HORZ ) { -@@ -1056,7 +1066,7 @@ +@@ -1149,7 +1159,7 @@ { AF_LatinAxis Axis = &metrics->axis[AF_DIMENSION_VERT]; AF_LatinBlue blue = NULL; @@ -129,7 +160,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a for ( nn = 0; nn < Axis->blue_count; nn++ ) { -@@ -1066,7 +1076,12 @@ +@@ -1159,7 +1169,12 @@ break; } } @@ -143,7 +174,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a if ( blue ) { FT_Pos scaled; -@@ -1222,7 +1237,13 @@ +@@ -1315,7 +1330,13 @@ /* a blue zone is only active if it is less than 3/4 pixels tall */ dist = FT_MulFix( blue->ref.org - blue->shoot.org, scale ); @@ -157,7 +188,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a { #if 0 FT_Pos delta1; -@@ -1273,7 +1294,12 @@ +@@ -1366,7 +1387,12 @@ delta2 = -delta2; blue->ref.fit = FT_PIX_ROUND( blue->ref.cur ); @@ -170,7 +201,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a #endif -@@ -2407,7 +2433,10 @@ +@@ -2504,7 +2530,10 @@ dist = edge->fpos - blue->shoot.org; if ( dist < 0 ) dist = -dist; @@ -182,10 +213,12 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a dist = FT_MulFix( dist, scale ); if ( dist < best_dist ) { -@@ -2583,8 +2612,17 @@ +@@ -2680,8 +2709,17 @@ FT_Pos dist = width; FT_Int sign = 0; FT_Int vertical = ( dim == AF_DIMENSION_VERT ); +- +- +#ifdef FT_CONFIG_OPTION_INFINALITY_PATCHSET + FT_Int infinality_dist = 0; + FT_UInt autohint_snap_stem_height = 0; @@ -194,14 +227,13 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a + autohint_snap_stem_height = 100; + else if ( autohint_snap_stem_height < 0 ) + autohint_snap_stem_height = 0; - -- ++ + if ( autohint_snap_stem_height == 0 ) +#endif /* FT_CONFIG_OPTION_INFINALITY_PATCHSET */ if ( !AF_LATIN_HINTS_DO_STEM_ADJUST( hints ) || axis->extra_light ) return width; -@@ -2594,9 +2632,76 @@ +@@ -2691,9 +2729,76 @@ dist = -width; sign = 1; } @@ -279,7 +311,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a { /* smooth hinting process: very lightly quantize the stem width */ -@@ -2688,6 +2793,9 @@ +@@ -2785,6 +2890,9 @@ } } else @@ -289,7 +321,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a { /* strong hinting process: snap the stem width to integer pixels */ -@@ -2695,7 +2803,10 @@ +@@ -2792,7 +2900,10 @@ dist = af_latin_snap_width( axis->widths, axis->width_count, dist ); @@ -301,7 +333,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a if ( vertical ) { /* in the case of vertical hinting, always round */ -@@ -2758,6 +2869,32 @@ +@@ -2855,6 +2966,32 @@ } Done_Width: @@ -334,7 +366,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a if ( sign ) dist = -dist; -@@ -2776,6 +2913,8 @@ +@@ -2873,6 +3010,8 @@ FT_Pos dist, base_delta; FT_Pos fitted_width; @@ -343,7 +375,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a dist = stem_edge->opos - base_edge->opos; base_delta = base_edge->pos - base_edge->opos; -@@ -3384,8 +3523,11 @@ +@@ -3485,8 +3624,11 @@ int dim; AF_LatinAxis axis; @@ -357,7 +389,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a error = af_glyph_hints_reload( hints, outline ); if ( error ) goto Exit; -@@ -3455,7 +3597,11 @@ +@@ -3556,7 +3698,11 @@ } af_glyph_hints_save( hints, outline ); @@ -370,10 +402,11 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.c freetype-2.7.1/src/autofit/a Exit: return error; } -diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.h freetype-2.7.1/src/autofit/aflatin.h ---- freetype-2.7.1-orig/src/autofit/aflatin.h 2017-01-11 12:28:16.724016867 +0100 -+++ freetype-2.7.1/src/autofit/aflatin.h 2017-01-11 12:28:34.877016390 +0100 -@@ -64,6 +64,9 @@ +diff --git a/src/autofit/aflatin.h b/src/autofit/aflatin.h +index d80e125..3ca779b 100644 +--- a/src/autofit/aflatin.h ++++ b/src/autofit/aflatin.h +@@ -64,6 +64,9 @@ FT_BEGIN_HEADER #define AF_LATIN_MAX_WIDTHS 16 @@ -383,9 +416,10 @@ diff -ruN freetype-2.7.1-orig/src/autofit/aflatin.h freetype-2.7.1/src/autofit/a #define AF_LATIN_BLUE_ACTIVE ( 1U << 0 ) /* zone height is <= 3/4px */ #define AF_LATIN_BLUE_TOP ( 1U << 1 ) /* we have a top blue zone */ -diff -ruN freetype-2.7.1-orig/src/autofit/afmodule.c freetype-2.7.1/src/autofit/afmodule.c ---- freetype-2.7.1-orig/src/autofit/afmodule.c 2017-01-11 12:28:16.724016867 +0100 -+++ freetype-2.7.1/src/autofit/afmodule.c 2017-01-11 12:28:34.877016390 +0100 +diff --git a/src/autofit/afmodule.c b/src/autofit/afmodule.c +index 9d7ba22..abe2367 100644 +--- a/src/autofit/afmodule.c ++++ b/src/autofit/afmodule.c @@ -22,6 +22,10 @@ #include "aferrors.h" #include "afpic.h" @@ -397,7 +431,7 @@ diff -ruN freetype-2.7.1-orig/src/autofit/afmodule.c freetype-2.7.1/src/autofit/ #ifdef FT_DEBUG_AUTOFIT #ifndef FT_MAKE_OPTION_SINGLE_OBJECT -@@ -466,6 +470,9 @@ +@@ -477,6 +481,9 @@ module->warping = 0; #endif module->no_stem_darkening = TRUE; @@ -407,9 +441,22 @@ diff -ruN freetype-2.7.1-orig/src/autofit/afmodule.c freetype-2.7.1/src/autofit/ module->darken_params[0] = CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1; module->darken_params[1] = CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1; -diff -ruN freetype-2.7.1-orig/src/base/ftbase.c freetype-2.7.1/src/base/ftbase.c ---- freetype-2.7.1-orig/src/base/ftbase.c 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/ftbase.c 2017-01-11 12:28:34.878016390 +0100 +diff --git a/src/base/Jamfile b/src/base/Jamfile +index 9e9a91b..5217651 100644 +--- a/src/base/Jamfile ++++ b/src/base/Jamfile +@@ -56,6 +56,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ; + ftglyph + ftgxval + ftinit ++ ftinf + ftlcdfil + ftmm + ftotval +diff --git a/src/base/ftbase.c b/src/base/ftbase.c +index 55f7359..4d50dca 100644 +--- a/src/base/ftbase.c ++++ b/src/base/ftbase.c @@ -34,6 +34,9 @@ #include "ftstream.c" #include "fttrigon.c" @@ -418,2100 +465,12 @@ diff -ruN freetype-2.7.1-orig/src/base/ftbase.c freetype-2.7.1/src/base/ftbase.c +#include "ftinf.c" +#endif - #ifdef FT_MACINTOSH - #include "ftmac.c" -diff -ruN freetype-2.7.1-orig/src/base/ftinf.c freetype-2.7.1/src/base/ftinf.c ---- freetype-2.7.1-orig/src/base/ftinf.c 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf.c 2017-01-11 12:28:34.879016390 +0100 -@@ -0,0 +1,363 @@ -+#include <stdlib.h> -+#include "ftinf.h" -+#define true 1 -+#define false 0 -+ -+#define on 1 -+#define off 0 -+#define end (-128) -+ -+#define sw2pv 18 /* STEM_WIDTH_2_PPEM */ -+#define maxp 100 /* MAX_PPEM */ -+ -+typedef signed char pv; /* ppm and values type */ -+/* the arrays start with existence flag + values */ -+typedef struct sa_rules_s { -+ const char *name; -+ pv always_use_100[1+4+1]; -+ pv brightness[1+2+1]; -+ pv contrast[1+2+1]; -+ pv edge_detection[1+4+1]; -+ pv m[1+4+1]; -+ pv bearing_correction[1+2+1]; -+ pv spacing[1+5+1]; -+ pv start[1+5+1]; -+ pv stem_scaling[1+6+1]; -+ pv stem_translating[1+2+1]; -+ pv stem_translating_only[1+10+1]; -+ pv stem_widths[1+4]; /* these end with maxp */ -+ pv synthesize_stems[1+2+1]; -+} sa_rules_t; -+ -+#pragma GCC diagnostic ignored "-Wpedantic" /* C99 struct initializer tags are needed */ -+#pragma GCC diagnostic ignored "-Wunused-function" -+ -+const ftinf_t *ftinf; -+/* final settings, updated from environment */ -+ftinf_t _env; -+ -+/* rules and hashing function */ -+#include "ftinf_rh.c" -+ -+/* rules selection */ -+void ftinf_fill_stem_values( Stem_Data *stem_values, -+ const char *family, int ppem, int use_known ){ -+ /* set the defaults */ -+ stem_values->bearing_correction = TRUE; -+ stem_values->brightness = 0.0; -+ stem_values->contrast = 0.0; -+ stem_values->edge_detection = FALSE; -+ stem_values->m = -1; -+ stem_values->stem_scaling = -1; -+ stem_values->stem_spacing = -1; -+ stem_values->stem_start = -1; -+ stem_values->stem_translating = 0; -+ stem_values->stem_translating_only = -1024; -+ stem_values->stem_width = -1; -+ stem_values->synth_stems = FALSE; -+ stem_values->use_100 = FALSE; -+ /* pick from known rules if requested and they exist for current family */ -+ if( !use_known ) -+ return; -+ else { -+ const sa_rules_t *r=ftinf_rules( family ); -+ int i; -+ if( r==NULL ) return; -+ if( r->stem_widths[0]==on ) -+ for( i=1; r->stem_widths[i]!=maxp; ++i ) -+ if( ppem < r->stem_widths[i] ){ -+ stem_values->stem_width = i-1; -+ break; -+ } -+ -+ if( r->stem_scaling[0]==on ) -+ for( i=1; r->stem_scaling[i]!=end; i+=2 ) -+ if( ppem==r->stem_scaling[i] ){ -+ stem_values->stem_scaling = r->stem_scaling[i+1]; -+ break; -+ } -+ -+ if( r->m[0]==on ) -+ for( i=1; r->m[i]!=end; i+=2 ) -+ if( ppem==r->m[i] ){ -+ stem_values->m = r->m[i+1]; -+ break; -+ } -+ -+ if( r->stem_translating_only[0]==on ) -+ for( i=1; r->stem_translating_only[i]!=end; i+=2 ) -+ if( ppem==r->stem_translating_only[i] || r->stem_translating_only[i]==0 ){ -+ stem_values->stem_translating_only = r->stem_translating_only[i+1]; -+ break; -+ } -+ -+ if( r->stem_translating[0]==on ) -+ for( i=1; r->stem_translating[i]!=end; i+=2 ) -+ if( ppem==r->stem_translating[i] || r->stem_translating[i]==0 ){ -+ stem_values->stem_translating = r->stem_translating[i+1]; -+ break; -+ } -+ -+ if( r->always_use_100[0]==on ) -+ for( i=1; r->always_use_100[i]!=end; i+=2 ) -+ if( ppem>=r->always_use_100[i] && ppem<=r->always_use_100[i+1] ){ -+ stem_values->use_100 = TRUE; -+ break; -+ } -+ -+ if( r->synthesize_stems[0]==on ) -+ for( i=1; r->synthesize_stems[i]!=end; i+=2 ) -+ if( ppem>=r->synthesize_stems[i] && ppem<=r->synthesize_stems[i+1] ){ -+ stem_values->synth_stems = TRUE; -+ break; -+ } -+ -+ if( r->edge_detection[0]==on ) -+ for( i=1; r->edge_detection[i]!=end; i+=2 ) -+ if( ppem>=r->edge_detection[i] && ppem<=r->edge_detection[i+1] ){ -+ stem_values->edge_detection = TRUE; -+ break; -+ } -+ -+ if( r->bearing_correction[0]==on ) -+ for( i=1; r->bearing_correction[i]!=end; i+=2 ) -+ if( ppem>=r->bearing_correction[i] && ppem<=r->bearing_correction[i+1] ){ -+ stem_values->bearing_correction = FALSE; -+ break; -+ } -+ -+#if(0) -+ if( r->brightness[0]==on ) -+ for( i=1; r->brightness[i]!=end; i+=2 ) -+ if( ppem==r->brightness[i]||r->brightness[i]==0 ){ -+ stem_values->brightness=r->brightness[i+1]*(1.0f/300.0f); -+ break; -+ } -+ -+ if( r->contrast[0]==on ) -+ for( i=1; r->contrast[i]!=end; i+=2 ) -+ if( ppem==r->contrast[i]||r->contrast[i]==0 ){ -+ stem_values->contrast=r->contrast[i+1]*(1.0f/300.0f); -+ break; -+ } -+ if( r->spacing[0]==on ){ -+ /* not used by original code */ -+ } -+ if( r->start[0]==on ){ -+ /* not used by original code */ -+ } -+#endif -+ } -+ return; -+} -+ -+void ftinf_get_bc( const char *family, int ppem, float *brightness, float *contrast ){ -+ const sa_rules_t *r=ftinf_rules( family ); -+ *brightness=0; -+ *contrast=0; -+ if( r ){ -+ int i; -+ if( r->brightness[0]==on ) -+ for( i=1; r->brightness[i]!=end; i+=2 ) -+ if( ppem==r->brightness[i]||r->brightness[i]==0 ){ -+ *brightness=r->brightness[i+1]*(1.0f/300.0f); -+ break; -+ } -+ -+ if( r->contrast[0]==on ) -+ for( i=1; r->contrast[i]!=end; i+=2 ) -+ if( ppem==r->contrast[i]||r->contrast[i]==0 ){ -+ *contrast=r->contrast[i+1]*(1.0f/300.0f); -+ break; -+ } -+ } -+ return; -+} -+ -+static int -+bool_val( const char *s ){ -+ if ( s != NULL ) -+ return strcasecmp(s, "true") == 0 -+ || strcasecmp(s, "1") == 0 -+ || strcasecmp(s, "on") == 0 -+ || strcasecmp(s, "yes") ==0; -+ else -+ return 0; -+} -+ -+static int -+int_val( const char *s, int min, int max ){ -+ int val; -+ sscanf ( s, "%d", &val ); -+ if ( val > max ) -+ val = max; -+ else if ( val < min ) -+ val = min; -+ return val; -+} -+ -+/* settings and hashing function */ -+#include "ftinf_sh.c" -+ -+/* -+ Get active Infinality settings -+ */ -+void ftinf_env(){ -+ const char *s; -+ ftinf=ftinf_settings( getenv( "INFINALITY_FT" ) ); -+ -+ if( ftinf==NULL ){ -+ ftinf=ftinf_settings( "ultimate3" ); -+ /* this should always succeed */ -+#if(0) -+ if( ftinf==NULL ){ -+ /* put an error here */ -+ exit(-1); -+ } -+#endif -+ } -+ _env=ftinf[0]; /* copy as defaults */ -+ -+ /* check if custom environment values are set and update with them */ -+ s=getenv( "INFINALITY_FT_AUTOHINT_INCREASE_GLYPH_HEIGHTS" ); -+ if( s ) _env.autohint_increase_glyph_heights=bool_val( s ); -+ s=getenv( "INFINALITY_FT_AUTOHINT_SNAP_STEM_HEIGHT" ); -+ if( s ) _env.autohint_snap_stem_height=int_val( s, 0, 100 ); -+ s=getenv( "INFINALITY_FT_USE_VARIOUS_TWEAKS" ); -+ if( s ) _env.use_various_tweaks=bool_val( s ); -+ s=getenv( "INFINALITY_FT_USE_KNOWN_SETTINGS_ON_SELECTED_FONTS" ); -+ if( s ) _env.use_known_settings_on_selected_fonts=bool_val(s); -+#if(0) /* not used (naming error also) */ -+ s=getenv( "INFINALITY_FT_AUTOHINT_MINIMUM_STEM_WIDTH" ); -+ if( s ) _env.autohint_minimum_stem_height=int_val( s, 0, 100 ); -+#endif -+ s=getenv( "INFINALITY_FT_STEM_SNAPPING_SLIDING_SCALE" ); -+ if( s ) sscanf( s, "%d", &_env.stem_snapping_sliding_scale ); -+ s=getenv( "INFINALITY_FT_STEM_ALIGNMENT_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.stem_alignment_strength ); -+ s=getenv( "INFINALITY_FT_STEM_DARKENING_AUTOFIT" ); -+ if( s ) _env.stem_darkening_autofit=bool_val( s ); -+ s=getenv( "INFINALITY_FT_STEM_DARKENING_CFF" ); -+ if( s ) _env.stem_darkening_cff=bool_val( s ); -+ s=getenv( "INFINALITY_FT_STEM_FITTING_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.stem_fitting_strength ); -+ s=getenv( "INFINALITY_FT_CHROMEOS_STYLE_SHARPENING_STRENGTH" ); -+ if( s ) _env.chromeos_style_sharpening_strength=int_val( s, 0, 100 ); -+ s=getenv( "INFINALITY_FT_BRIGHTNESS" ); -+ if( s ) sscanf( s, "%d", &_env.brightness ); -+ s=getenv( "INFINALITY_FT_CONTRAST" ); -+ if( s ) sscanf( s, "%d", &_env.contrast ); -+ s=getenv( "INFINALITY_FT_WINDOWS_STYLE_SHARPENING_STRENGTH" ); -+ if( s ) _env.windows_style_sharpening_strength=int_val( s, 0, 100 ); -+ s=getenv( "INFINALITY_FT_GAMMA_CORRECTION" ); -+ if( s ){ -+ float *f=_env.gamma_correction; -+ sscanf ( s, "%f %f", &f[0], &f[1] ); -+ if( f[1] < 1.0f ) f[1]=1.0f; -+ } -+ s=getenv( "INFINALITY_FT_FRINGE_FILTER_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.fringe_filter_strength ); -+ s=getenv( "INFINALITY_FT_GRAYSCALE_FILTER_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.grayscale_filter_strength ); -+ s=getenv( "INFINALITY_FT_AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.autohint_horizontal_stem_darken_strength ); -+ s=getenv( "INFINALITY_FT_AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH" ); -+ if( s ) sscanf( s, "%d", &_env.autohint_vertical_stem_darken_strength ); -+ s=getenv( "INFINALITY_FT_GLOBAL_EMBOLDEN_X_VALUE" ); -+ if( s ) sscanf( s, "%d", &_env.global_embolden_x_value ); -+ s=getenv( "INFINALITY_FT_GLOBAL_EMBOLDEN_Y_VALUE" ); -+ if( s ) sscanf( s, "%d", &_env.global_embolden_y_value ); -+ s=getenv( "INFINALITY_FT_BOLD_EMBOLDEN_X_VALUE" ); -+ if( s ) sscanf( s, "%d", &_env.bold_embolden_x_value ); -+ s=getenv( "INFINALITY_FT_BOLD_EMBOLDEN_Y_VALUE" ); -+ if( s ) sscanf( s, "%d", &_env.bold_embolden_y_value ); -+ s=getenv( "INFINALITY_FT_FILTER_PARAMS" ); -+ if( s ) { -+ int *f=_env.filter_params; -+ if( sscanf( s, "%d %d %d %d %d", f+1, f+2, f+3, f+4, f+5 )==5 ) -+ f[0]=on; -+ else -+ f[0]=off; /* FIXME: put a warning? */ -+ } -+ /* do the range verifications as in original code */ -+ if ( _env.stem_snapping_sliding_scale > maxp ) -+ _env.stem_snapping_sliding_scale = 0; -+ else if ( _env.stem_snapping_sliding_scale < 0 ) -+ _env.stem_snapping_sliding_scale = 0; -+ if (_env.stem_snapping_sliding_scale < 11 && -+ _env.stem_snapping_sliding_scale > 0 ) -+ _env.stem_snapping_sliding_scale = 11; -+ -+ if ( _env.stem_alignment_strength > 100 ) -+ _env.stem_alignment_strength = 100; -+ else if ( _env.stem_alignment_strength < 0 ) -+ _env.stem_alignment_strength = 0; -+ -+ if ( _env.stem_fitting_strength > 100 ) -+ _env.stem_fitting_strength = 100; -+ else if ( _env.stem_fitting_strength < 0 ) -+ _env.stem_fitting_strength = 0; -+ -+ if ( _env.chromeos_style_sharpening_strength > 100 ) -+ _env.chromeos_style_sharpening_strength = 100; -+ else if ( _env.chromeos_style_sharpening_strength < 0 ) -+ _env.chromeos_style_sharpening_strength = 0; -+ -+ if ( _env.brightness > 100 ) -+ _env.brightness = 100; -+ else if ( _env.brightness < -100 ) -+ _env.brightness = 0; -+ -+ if ( _env.contrast > 100 ) -+ _env.contrast = 100; -+ else if ( _env.contrast < -100 ) -+ _env.contrast = 0; -+ -+ if ( _env.windows_style_sharpening_strength > 100 ) -+ _env.windows_style_sharpening_strength = 100; -+ else if ( _env.windows_style_sharpening_strength < 0 ) -+ _env.windows_style_sharpening_strength = 0; -+ -+ if ( _env.fringe_filter_strength > 100 ) -+ _env.fringe_filter_strength = 100; -+ else if ( _env.fringe_filter_strength < 0 ) -+ _env.fringe_filter_strength = 0; -+ -+ if ( _env.grayscale_filter_strength > 100 ) -+ _env.grayscale_filter_strength = 100; -+ else if ( _env.grayscale_filter_strength < 0 ) -+ _env.grayscale_filter_strength = 0; -+ -+ if ( _env.autohint_horizontal_stem_darken_strength > 100 ) -+ _env.autohint_horizontal_stem_darken_strength = 100; -+ else if ( _env.autohint_horizontal_stem_darken_strength < 0 ) -+ _env.autohint_horizontal_stem_darken_strength = 0; -+ -+ if ( _env.autohint_vertical_stem_darken_strength > 100 ) -+ _env.autohint_vertical_stem_darken_strength = 100; -+ else if ( _env.autohint_horizontal_stem_darken_strength < 0 ) -+ _env.autohint_vertical_stem_darken_strength = 0; -+ -+ if ( _env.global_embolden_x_value > 128 ) -+ _env.global_embolden_x_value = 128; -+ else if ( _env.global_embolden_x_value < -128 ) -+ _env.global_embolden_x_value = -128; -+ -+ if ( _env.global_embolden_y_value > 128 ) -+ _env.global_embolden_y_value = 128; -+ else if ( _env.global_embolden_y_value < -128 ) -+ _env.global_embolden_y_value = -128; -+ -+ if ( _env.bold_embolden_x_value > 128 ) -+ _env.bold_embolden_x_value = 128; -+ else if (_env.bold_embolden_x_value < -128 ) -+ _env.bold_embolden_x_value = -128; -+ -+ if ( _env.bold_embolden_y_value > 128 ) -+ _env.bold_embolden_y_value = 128; -+ else if ( _env.bold_embolden_y_value < -128 ) -+ _env.bold_embolden_y_value = -128; -+ -+ /* point to the combined and checked settings */ -+ ftinf=&_env; -+} -diff -ruN freetype-2.7.1-orig/src/base/ftinf.h freetype-2.7.1/src/base/ftinf.h ---- freetype-2.7.1-orig/src/base/ftinf.h 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf.h 2017-01-11 12:28:34.879016390 +0100 -@@ -0,0 +1,66 @@ -+#ifndef _FTINF_H_ -+#define _FTINF_H_ -+/* -+ Stem snapping rules -+ (base freetype typedefs assumed already included) -+ */ -+typedef struct -+{ -+ FT_Int stem_width; -+ FT_Int stem_spacing; -+ FT_Int stem_start; -+ FT_Int stem_scaling; -+ FT_Int stem_translating_only; -+ FT_Int stem_translating; -+ float brightness; -+ float contrast; -+ FT_Bool use_100; -+ FT_Bool synth_stems; -+ FT_Bool edge_detection; -+ FT_Bool bearing_correction; -+ FT_Int m; -+} Stem_Data; -+ -+/* -+ Infinality settings -+ */ -+typedef struct ftinf_s { -+ const char *name; -+ int autohint_horizontal_stem_darken_strength; -+ int autohint_snap_stem_height; -+ int autohint_increase_glyph_heights; -+ int autohint_vertical_stem_darken_strength; -+ int bold_embolden_x_value; -+ int bold_embolden_y_value; -+ int brightness; -+ int chromeos_style_sharpening_strength; -+ int contrast; -+ int filter_params[6]; /* 1st one used as existence flag */ -+ int fringe_filter_strength; -+ float gamma_correction[2]; -+ int global_embolden_x_value; -+ int global_embolden_y_value; -+ int grayscale_filter_strength; -+ int stem_alignment_strength; -+ int stem_darkening_autofit; -+ int stem_darkening_cff; -+ int stem_fitting_strength; -+ int stem_snapping_sliding_scale; -+ int use_known_settings_on_selected_fonts; -+ int use_various_tweaks; -+ int windows_style_sharpening_strength; -+} ftinf_t; -+ -+extern FT_Pos infinality_cur_width; /* defined in aflatin.c */ -+ -+extern const ftinf_t *ftinf; /* active settings */ -+ -+extern void ftinf_fill_stem_values( Stem_Data *stem_values, -+ const char *family, int ppem, int use_known ); -+extern void ftinf_get_bc( const char *family, int ppem, -+ float *brightness, float *contrast ); -+ -+/* get values from environment (FIXME: maybe update with using user files) */ -+extern void ftinf_env(); -+ -+#endif -diff -ruN freetype-2.7.1-orig/src/base/ftinf_rh.c freetype-2.7.1/src/base/ftinf_rh.c ---- freetype-2.7.1-orig/src/base/ftinf_rh.c 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf_rh.c 2017-01-11 12:28:34.880016390 +0100 -@@ -0,0 +1,626 @@ -+/* ANSI-C code produced by gperf version 3.1 */ -+/* Command-line: gperf --output-file=ftinf_rh.c ftinf_rh.gperf */ -+/* Computed positions: -k'1,$' */ -+ -+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ -+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ -+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ -+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ -+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ -+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ -+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ -+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ -+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ -+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ -+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ -+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ -+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ -+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ -+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ -+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ -+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ -+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ -+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ -+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ -+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ -+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ -+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -+/* The character set is not based on ISO-646. */ -+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." -+#endif -+ -+#line 9 "ftinf_rh.gperf" -+ -+#include <ctype.h> -+static const struct sa_rules_s* _rules_get( const char*str, unsigned len ); -+/* maximum key range = 82, duplicates = 0 */ -+ -+#ifdef __GNUC__ -+__inline -+#else -+#ifdef __cplusplus -+inline -+#endif -+#endif -+static unsigned int -+_rules_hash (register const char *str, register unsigned int len) -+{ -+ static const unsigned char asso_values[] = -+ { -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 0, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 5, 45, 5, -+ 35, 25, 35, 35, 50, 45, 85, 85, 0, 25, -+ 40, 5, 0, 85, 50, 20, 20, 0, 10, 10, -+ 85, 10, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, -+ 85, 85, 85, 85, 85, 85 -+ }; -+ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; -+} -+ -+#ifdef __GNUC__ -+__inline -+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -+__attribute__ ((__gnu_inline__)) -+#endif -+#endif -+const struct sa_rules_s * -+_rules_get (register const char *str, register unsigned int len) -+{ -+ enum -+ { -+ TOTAL_KEYWORDS = 58, -+ MIN_WORD_LENGTH = 3, -+ MAX_WORD_LENGTH = 24, -+ MIN_HASH_VALUE = 3, -+ MAX_HASH_VALUE = 84 -+ }; -+ -+ static const struct sa_rules_s wordlist[] = -+ { -+#line 15 "ftinf_rh.gperf" -+{ .name="---", -+ .synthesize_stems={on, 13, 13, end} -+}, -+#line 253 "ftinf_rh.gperf" -+{ .name="ubuntu", -+ .always_use_100={on, 12, 13, 15, 15, end} -+}, -+#line 31 "ftinf_rh.gperf" -+{ .name="arial", -+ .always_use_100={on, 0, maxp, end}, -+ .edge_detection={on, 11, 11, 13, 13, end}, -+ .spacing={on, 10, 11, 23, 25, 30, end}, -+ .start={on, 11, 18, 23, 30, 30, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, 16, -24, end} -+}, -+#line 87 "ftinf_rh.gperf" -+{ .name="corbel", -+ .stem_translating_only={on, 10, 16, end}, -+ .stem_widths={on, 10, 21, maxp} -+}, -+#line 71 "ftinf_rh.gperf" -+{ .name="canwell", -+ .stem_scaling={on, 13, 0, end} -+}, -+#line 216 "ftinf_rh.gperf" -+{ .name="pragmata", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 67 "ftinf_rh.gperf" -+{ .name="cantarell", -+ .stem_translating_only={on, 11, 0, 12, 0, end}, -+ .stem_widths={on, 10, 22, maxp,} -+}, -+#line 39 "ftinf_rh.gperf" -+{ .name="arimo", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end} -+}, -+#line 207 "ftinf_rh.gperf" -+{ .name="optima", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end}, -+ .stem_scaling={on, 17, 1, end}, -+ .stem_translating_only={on, 10, 0, 11, 0, 12, 0, end} -+}, -+#line 63 "ftinf_rh.gperf" -+{ .name="candara", -+ .stem_scaling={on, 14, 1, 17, 1, end}, -+ .stem_translating_only={on, 10, 16, end} -+}, -+#line 77 "ftinf_rh.gperf" -+{ .name="comfortaa", -+ .stem_widths={on, 10, 19, 22, maxp}, -+ .stem_scaling={on, 11, 0, end} -+}, -+#line 161 "ftinf_rh.gperf" -+{ .name="liberation mono", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 18 "ftinf_rh.gperf" -+{ .name="andale mono", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_scaling={on, 11, 1, end}, -+ .stem_widths={on, 10, 21, maxp,} -+}, -+#line 256 "ftinf_rh.gperf" -+{ .name="verdana", -+ .always_use_100={on, 0, 14, 16, maxp, end}, -+ .stem_scaling={on, 12, 1, 15, 1, end}, -+ .stem_translating_only={on, 8, 16, 15, 16, 14, 32, 18, 32, 19, 24, end} -+}, -+#line 74 "ftinf_rh.gperf" -+{ .name="century gothic", -+ .stem_widths={on, 10, 22, maxp,} -+}, -+#line 91 "ftinf_rh.gperf" -+{ .name="courier new", -+ .always_use_100={on, 12, 12, end}, -+ .edge_detection={on, 10, 12, end}, -+ .m={on, 13, 1, 14, 1, end} -+}, -+#line 23 "ftinf_rh.gperf" -+{ .name="arial narrow", -+ .stem_widths={on, 10, 21, maxp,} -+}, -+#line 185 "ftinf_rh.gperf" -+{ .name="luxi sans", -+ .always_use_100={on, 13, 13, end}, -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+#line 225 "ftinf_rh.gperf" -+{ .name="samba", -+ .stem_scaling={on, 11, 0, end} -+}, -+#line 233 "ftinf_rh.gperf" -+{ .name="tahoma", -+ .always_use_100={on, 11, 11, 14, maxp, end}, -+ .edge_detection={on, 11, 11, end}, -+ .spacing={on, 10, 12, 18, 18, 30, end}, -+ .start={on, 14, 17, 30, 100, 100, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 7, 32, 8, 32, 9, 32, end}, -+}, -+#line 164 "ftinf_rh.gperf" -+{ .name="liberation sans narrow", -+ .stem_widths={on,10, 22, maxp,} -+}, -+#line 81 "ftinf_rh.gperf" -+{ .name="consolas", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 8, 32, 9, 32, end}, -+ .stem_widths={on, 10, 20, maxp,}, -+ .stem_scaling={on, 11, 1, end} -+}, -+#line 203 "ftinf_rh.gperf" -+{ .name="open sans", -+ .stem_translating_only={on, 10, 16, 9, 16, end}, -+ .stem_widths={on, 10, 20, maxp,} -+}, -+#line 167 "ftinf_rh.gperf" -+{ .name="liberation sans", -+ .edge_detection={on, 11, 11, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end}, -+ .stem_widths={on,10, 19, maxp,} -+}, -+#line 193 "ftinf_rh.gperf" -+{ .name="monaco", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 101 "ftinf_rh.gperf" -+{ .name="cousine", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 176 "ftinf_rh.gperf" -+{ .name="lucida grande", -+ .stem_scaling={on, 13, 1, end}, -+ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, -+ .stem_widths={on, 10, 16, sw2pv, maxp}, -+}, -+#line 173 "ftinf_rh.gperf" -+{ .name="lucida console", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 196 "ftinf_rh.gperf" -+{ .name="myriad pro", -+ .stem_scaling={on, 14, 1, 17, 1, end}, -+ .stem_translating_only={on, 10, 16, 11, 0, 9, 16, end} -+}, -+#line 26 "ftinf_rh.gperf" -+{ .name="arial unicode ms", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} -+}, -+#line 213 "ftinf_rh.gperf" -+{ .name="palatino linotype", -+ .edge_detection={on, 0, 100, end} -+}, -+#line 181 "ftinf_rh.gperf" -+{ .name="lucida sans unicode", -+ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, -+ .stem_widths={on,10, 16, sw2pv, maxp,} -+}, -+#line 140 "ftinf_rh.gperf" -+{ .name="futura", -+ .stem_widths={on, 10, 14, sw2pv, maxp,} -+}, -+#line 147 "ftinf_rh.gperf" -+{ .name="georgia", -+ .stem_translating_only={on, 13, 16, 14, 16, 15, 0, end} -+}, -+#line 125 "ftinf_rh.gperf" -+{ .name="freemono", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 200 "ftinf_rh.gperf" -+{ .name="nina", -+ .stem_scaling={on, 11, 0, 12, 0, 13, 0, end} -+}, -+#line 121 "ftinf_rh.gperf" -+{ .name="essential pragmatapro", -+ .always_use_100={on, 0, maxp, end}, -+ .m={on, 13, 0, 14, 0, end} -+}, -+#line 247 "ftinf_rh.gperf" -+{ .name="trebuchet ms", -+ .always_use_100={on, 13, 13, end}, -+ .stem_scaling={on, 13, 0, 17, 0, 20, 1, end}, -+ .stem_translating_only={on, 10, 16, 11, 0, 8, 32, 9, 32, end}, -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+#line 114 "ftinf_rh.gperf" -+{ .name="droid sans mono", -+ .m={on, 12, 0, end} -+}, -+#line 104 "ftinf_rh.gperf" -+{ .name="dejavu sans mono", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 7, 16, 8, 32, 9, 16, end} -+}, -+#line 57 "ftinf_rh.gperf" -+{ .name="calibri", -+ .always_use_100={on, 23, maxp, end}, -+ .stem_scaling={on, 15, 1, 17, 1, 18, 1, end}, -+ .stem_translating_only={on, 10, 16, 15, 0, end}, -+ .stem_widths={on, 1, 10, 19, maxp,} -+}, -+#line 156 "ftinf_rh.gperf" -+{ .name="inconsolata", -+ .stem_scaling={on, 12, 1, 15, 1, end}, -+ .stem_translating_only={on, 10, 24, 9, 32, end}, -+ .stem_widths={on, 10, 23, maxp,}, -+}, -+#line 96 "ftinf_rh.gperf" -+{ .name="courier", -+ .always_use_100={on, 0, maxp, end}, -+ .m={on, 13, 1, 14, 1, end}, -+ .stem_translating_only={on, 13, 16, 15, 0, end} -+}, -+#line 128 "ftinf_rh.gperf" -+{ .name="freesans", -+ .always_use_100={on, 0, maxp, end}, -+ .edge_detection={on, 11, 11, 13, 13, end}, -+ .spacing={on, 10, 12, 18, 18, 30, end}, -+ .start={on, 10, 18, 18, 25, 30, end}, -+ .stem_scaling={on, 16, 0, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 9, 8, end} -+}, -+#line 150 "ftinf_rh.gperf" -+{ .name="gill sans", -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+#line 117 "ftinf_rh.gperf" -+{ .name="droid sans", -+ .always_use_100={on, 12, 12, 15, 15, end}, -+ .stem_translating_only={on, 8, 16, 9, 16, end} -+}, -+#line 108 "ftinf_rh.gperf" -+{ .name="dejavu sans", -+ .always_use_100={on, 10, 14, 16, 17, end}, -+ .m={on, 12, 0, end}, -+ .stem_scaling={on, 12, 1, end}, -+ .stem_translating_only={on, 8, 16, 15, -20, end} -+}, -+#line 219 "ftinf_rh.gperf" -+{ .name="raleway", -+ .stem_scaling={on, 15, 0, end} -+}, -+#line 153 "ftinf_rh.gperf" -+{ .name="helvetica cy", -+ .stem_widths={on, 10, 23, maxp,} -+}, -+#line 228 "ftinf_rh.gperf" -+{ .name="segoe ui", -+ .always_use_100={on, 11, 12, 14, 14, end}, -+ .stem_translating_only={on, 10, 0, 7, 32, 8, 16, 9, 24, end}, -+ .stem_widths={on, 10, 23, maxp,} -+}, -+#line 48 "ftinf_rh.gperf" -+{ .name="bitstream vera sans mono", -+ .always_use_100={on, 0, maxp, end} -+}, -+#line 241 "ftinf_rh.gperf" -+{ .name="times new roman", -+ .always_use_100={on, 14, 14, 16, 16, end}, -+ .bearing_correction={0, 100, end}, -+ .stem_scaling={on, 17, 1, end}, -+ .stem_translating_only={on, 17, 8, end} -+}, -+#line 222 "ftinf_rh.gperf" -+{ .name="rokkitt", -+ .stem_widths={on, 10, 21, maxp,} -+}, -+#line 143 "ftinf_rh.gperf" -+{ .name="garamond", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end} -+}, -+#line 137 "ftinf_rh.gperf" -+{ .name="freeserif", -+ .stem_scaling={on, 13, 1, 17, 1, end} -+}, -+#line 189 "ftinf_rh.gperf" -+{ .name="microsoft sans serif", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} -+}, -+#line 44 "ftinf_rh.gperf" -+{ .name="baskerville", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end} -+}, -+#line 51 "ftinf_rh.gperf" -+{ .name="bitstream vera sans", -+ .always_use_100={on, 10, 14, 16, 17, end}, -+ .m={on, 12, 0, end}, -+ .stem_scaling={on ,12, 1, end}, -+ .stem_translating_only={on, 8, 16, end} -+} -+ }; -+ -+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) -+ { -+ register int key = _rules_hash (str, len); -+ -+ if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE) -+ { -+ register const struct sa_rules_s *resword; -+ -+ switch (key - 3) -+ { -+ case 0: -+ resword = &wordlist[0]; -+ goto compare; -+ case 3: -+ resword = &wordlist[1]; -+ goto compare; -+ case 7: -+ resword = &wordlist[2]; -+ goto compare; -+ case 8: -+ resword = &wordlist[3]; -+ goto compare; -+ case 9: -+ resword = &wordlist[4]; -+ goto compare; -+ case 10: -+ resword = &wordlist[5]; -+ goto compare; -+ case 11: -+ resword = &wordlist[6]; -+ goto compare; -+ case 12: -+ resword = &wordlist[7]; -+ goto compare; -+ case 13: -+ resword = &wordlist[8]; -+ goto compare; -+ case 14: -+ resword = &wordlist[9]; -+ goto compare; -+ case 16: -+ resword = &wordlist[10]; -+ goto compare; -+ case 17: -+ resword = &wordlist[11]; -+ goto compare; -+ case 18: -+ resword = &wordlist[12]; -+ goto compare; -+ case 19: -+ resword = &wordlist[13]; -+ goto compare; -+ case 21: -+ resword = &wordlist[14]; -+ goto compare; -+ case 23: -+ resword = &wordlist[15]; -+ goto compare; -+ case 24: -+ resword = &wordlist[16]; -+ goto compare; -+ case 26: -+ resword = &wordlist[17]; -+ goto compare; -+ case 27: -+ resword = &wordlist[18]; -+ goto compare; -+ case 28: -+ resword = &wordlist[19]; -+ goto compare; -+ case 29: -+ resword = &wordlist[20]; -+ goto compare; -+ case 30: -+ resword = &wordlist[21]; -+ goto compare; -+ case 31: -+ resword = &wordlist[22]; -+ goto compare; -+ case 32: -+ resword = &wordlist[23]; -+ goto compare; -+ case 33: -+ resword = &wordlist[24]; -+ goto compare; -+ case 34: -+ resword = &wordlist[25]; -+ goto compare; -+ case 35: -+ resword = &wordlist[26]; -+ goto compare; -+ case 36: -+ resword = &wordlist[27]; -+ goto compare; -+ case 37: -+ resword = &wordlist[28]; -+ goto compare; -+ case 38: -+ resword = &wordlist[29]; -+ goto compare; -+ case 39: -+ resword = &wordlist[30]; -+ goto compare; -+ case 41: -+ resword = &wordlist[31]; -+ goto compare; -+ case 43: -+ resword = &wordlist[32]; -+ goto compare; -+ case 44: -+ resword = &wordlist[33]; -+ goto compare; -+ case 45: -+ resword = &wordlist[34]; -+ goto compare; -+ case 46: -+ resword = &wordlist[35]; -+ goto compare; -+ case 48: -+ resword = &wordlist[36]; -+ goto compare; -+ case 49: -+ resword = &wordlist[37]; -+ goto compare; -+ case 52: -+ resword = &wordlist[38]; -+ goto compare; -+ case 53: -+ resword = &wordlist[39]; -+ goto compare; -+ case 54: -+ resword = &wordlist[40]; -+ goto compare; -+ case 58: -+ resword = &wordlist[41]; -+ goto compare; -+ case 59: -+ resword = &wordlist[42]; -+ goto compare; -+ case 60: -+ resword = &wordlist[43]; -+ goto compare; -+ case 61: -+ resword = &wordlist[44]; -+ goto compare; -+ case 62: -+ resword = &wordlist[45]; -+ goto compare; -+ case 63: -+ resword = &wordlist[46]; -+ goto compare; -+ case 64: -+ resword = &wordlist[47]; -+ goto compare; -+ case 69: -+ resword = &wordlist[48]; -+ goto compare; -+ case 70: -+ resword = &wordlist[49]; -+ goto compare; -+ case 71: -+ resword = &wordlist[50]; -+ goto compare; -+ case 72: -+ resword = &wordlist[51]; -+ goto compare; -+ case 74: -+ resword = &wordlist[52]; -+ goto compare; -+ case 75: -+ resword = &wordlist[53]; -+ goto compare; -+ case 76: -+ resword = &wordlist[54]; -+ goto compare; -+ case 77: -+ resword = &wordlist[55]; -+ goto compare; -+ case 78: -+ resword = &wordlist[56]; -+ goto compare; -+ case 81: -+ resword = &wordlist[57]; -+ goto compare; -+ } -+ return 0; -+ compare: -+ { -+ register const char *s = resword->name; -+ -+ if (*str == *s && !strcmp (str + 1, s + 1)) -+ return resword; -+ } -+ } -+ } -+ return 0; -+} -+#line 261 "ftinf_rh.gperf" -+ -+ -+static const sa_rules_t* -+ftinf_rules( const char *name ){ -+ if( name ){ -+ enum { -+ max_wlen=31 -+ }; -+ char buf[max_wlen+1]; -+ int len=strlen( name ); -+ if( len <= max_wlen ){ -+ int i; -+ for( i=0; i<len; ++i ) -+ buf[i]=tolower( name[i] ); -+ buf[len]='\0'; -+ return _rules_get( buf, len ); -+ } -+ } -+ return NULL; -+} -+/* -+ gperf --output-file=ftinf_rh.c ftinf_rh.gperf -+*/ -diff -ruN freetype-2.7.1-orig/src/base/ftinf_rh.gperf freetype-2.7.1/src/base/ftinf_rh.gperf ---- freetype-2.7.1-orig/src/base/ftinf_rh.gperf 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf_rh.gperf 2017-01-11 12:28:34.880016390 +0100 -@@ -0,0 +1,283 @@ -+%struct-type -+%define slot-name name -+%enum -+%switch=1 -+%readonly-tables -+%omit-struct-type -+%define lookup-function-name _rules_get -+%define hash-function-name _rules_hash -+%{ -+#include <ctype.h> -+static const struct sa_rules_s* _rules_get( const char*str, unsigned len ); -+%} -+struct sa_rules_s; -+%% -+{ .name="---", -+ .synthesize_stems={on, 13, 13, end} -+}, -+{ .name="andale mono", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_scaling={on, 11, 1, end}, -+ .stem_widths={on, 10, 21, maxp,} -+}, -+{ .name="arial narrow", -+ .stem_widths={on, 10, 21, maxp,} -+}, -+{ .name="arial unicode ms", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} -+}, -+{ .name="arial", -+ .always_use_100={on, 0, maxp, end}, -+ .edge_detection={on, 11, 11, 13, 13, end}, -+ .spacing={on, 10, 11, 23, 25, 30, end}, -+ .start={on, 11, 18, 23, 30, 30, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, 16, -24, end} -+}, -+{ .name="arimo", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end} -+}, -+{ .name="baskerville", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end} -+}, -+{ .name="bitstream vera sans mono", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="bitstream vera sans", -+ .always_use_100={on, 10, 14, 16, 17, end}, -+ .m={on, 12, 0, end}, -+ .stem_scaling={on ,12, 1, end}, -+ .stem_translating_only={on, 8, 16, end} -+}, -+{ .name="calibri", -+ .always_use_100={on, 23, maxp, end}, -+ .stem_scaling={on, 15, 1, 17, 1, 18, 1, end}, -+ .stem_translating_only={on, 10, 16, 15, 0, end}, -+ .stem_widths={on, 1, 10, 19, maxp,} -+}, -+{ .name="candara", -+ .stem_scaling={on, 14, 1, 17, 1, end}, -+ .stem_translating_only={on, 10, 16, end} -+}, -+{ .name="cantarell", -+ .stem_translating_only={on, 11, 0, 12, 0, end}, -+ .stem_widths={on, 10, 22, maxp,} -+}, -+{ .name="canwell", -+ .stem_scaling={on, 13, 0, end} -+}, -+{ .name="century gothic", -+ .stem_widths={on, 10, 22, maxp,} -+}, -+{ .name="comfortaa", -+ .stem_widths={on, 10, 19, 22, maxp}, -+ .stem_scaling={on, 11, 0, end} -+}, -+{ .name="consolas", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 8, 32, 9, 32, end}, -+ .stem_widths={on, 10, 20, maxp,}, -+ .stem_scaling={on, 11, 1, end} -+}, -+{ .name="corbel", -+ .stem_translating_only={on, 10, 16, end}, -+ .stem_widths={on, 10, 21, maxp} -+}, -+{ .name="courier new", -+ .always_use_100={on, 12, 12, end}, -+ .edge_detection={on, 10, 12, end}, -+ .m={on, 13, 1, 14, 1, end} -+}, -+{ .name="courier", -+ .always_use_100={on, 0, maxp, end}, -+ .m={on, 13, 1, 14, 1, end}, -+ .stem_translating_only={on, 13, 16, 15, 0, end} -+}, -+{ .name="cousine", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="dejavu sans mono", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 7, 16, 8, 32, 9, 16, end} -+}, -+{ .name="dejavu sans", -+ .always_use_100={on, 10, 14, 16, 17, end}, -+ .m={on, 12, 0, end}, -+ .stem_scaling={on, 12, 1, end}, -+ .stem_translating_only={on, 8, 16, 15, -20, end} -+}, -+{ .name="droid sans mono", -+ .m={on, 12, 0, end} -+}, -+{ .name="droid sans", -+ .always_use_100={on, 12, 12, 15, 15, end}, -+ .stem_translating_only={on, 8, 16, 9, 16, end} -+}, -+{ .name="essential pragmatapro", -+ .always_use_100={on, 0, maxp, end}, -+ .m={on, 13, 0, 14, 0, end} -+}, -+{ .name="freemono", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="freesans", -+ .always_use_100={on, 0, maxp, end}, -+ .edge_detection={on, 11, 11, 13, 13, end}, -+ .spacing={on, 10, 12, 18, 18, 30, end}, -+ .start={on, 10, 18, 18, 25, 30, end}, -+ .stem_scaling={on, 16, 0, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 16, 9, 8, end} -+}, -+{ .name="freeserif", -+ .stem_scaling={on, 13, 1, 17, 1, end} -+}, -+{ .name="futura", -+ .stem_widths={on, 10, 14, sw2pv, maxp,} -+}, -+{ .name="garamond", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end} -+}, -+{ .name="georgia", -+ .stem_translating_only={on, 13, 16, 14, 16, 15, 0, end} -+}, -+{ .name="gill sans", -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+{ .name="helvetica cy", -+ .stem_widths={on, 10, 23, maxp,} -+}, -+{ .name="inconsolata", -+ .stem_scaling={on, 12, 1, 15, 1, end}, -+ .stem_translating_only={on, 10, 24, 9, 32, end}, -+ .stem_widths={on, 10, 23, maxp,}, -+}, -+{ .name="liberation mono", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="liberation sans narrow", -+ .stem_widths={on,10, 22, maxp,} -+}, -+{ .name="liberation sans", -+ .edge_detection={on, 11, 11, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end}, -+ .stem_widths={on,10, 19, maxp,} -+}, -+{ .name="lucida console", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="lucida grande", -+ .stem_scaling={on, 13, 1, end}, -+ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, -+ .stem_widths={on, 10, 16, sw2pv, maxp}, -+}, -+{ .name="lucida sans unicode", -+ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, -+ .stem_widths={on,10, 16, sw2pv, maxp,} -+}, -+{ .name="luxi sans", -+ .always_use_100={on, 13, 13, end}, -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+{ .name="microsoft sans serif", -+ .always_use_100={on, 0, maxp, end}, -+ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} -+}, -+{ .name="monaco", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="myriad pro", -+ .stem_scaling={on, 14, 1, 17, 1, end}, -+ .stem_translating_only={on, 10, 16, 11, 0, 9, 16, end} -+}, -+{ .name="nina", -+ .stem_scaling={on, 11, 0, 12, 0, 13, 0, end} -+}, -+{ .name="open sans", -+ .stem_translating_only={on, 10, 16, 9, 16, end}, -+ .stem_widths={on, 10, 20, maxp,} -+}, -+{ .name="optima", -+ .brightness={on, 0, -20, end}, -+ .contrast={on, 0, 25, end}, -+ .stem_scaling={on, 17, 1, end}, -+ .stem_translating_only={on, 10, 0, 11, 0, 12, 0, end} -+}, -+{ .name="palatino linotype", -+ .edge_detection={on, 0, 100, end} -+}, -+{ .name="pragmata", -+ .always_use_100={on, 0, maxp, end} -+}, -+{ .name="raleway", -+ .stem_scaling={on, 15, 0, end} -+}, -+{ .name="rokkitt", -+ .stem_widths={on, 10, 21, maxp,} -+}, -+{ .name="samba", -+ .stem_scaling={on, 11, 0, end} -+}, -+{ .name="segoe ui", -+ .always_use_100={on, 11, 12, 14, 14, end}, -+ .stem_translating_only={on, 10, 0, 7, 32, 8, 16, 9, 24, end}, -+ .stem_widths={on, 10, 23, maxp,} -+}, -+{ .name="tahoma", -+ .always_use_100={on, 11, 11, 14, maxp, end}, -+ .edge_detection={on, 11, 11, end}, -+ .spacing={on, 10, 12, 18, 18, 30, end}, -+ .start={on, 14, 17, 30, 100, 100, end}, -+ .stem_translating={on, 11, 32, end}, -+ .stem_translating_only={on, 7, 32, 8, 32, 9, 32, end}, -+}, -+{ .name="times new roman", -+ .always_use_100={on, 14, 14, 16, 16, end}, -+ .bearing_correction={0, 100, end}, -+ .stem_scaling={on, 17, 1, end}, -+ .stem_translating_only={on, 17, 8, end} -+}, -+{ .name="trebuchet ms", -+ .always_use_100={on, 13, 13, end}, -+ .stem_scaling={on, 13, 0, 17, 0, 20, 1, end}, -+ .stem_translating_only={on, 10, 16, 11, 0, 8, 32, 9, 32, end}, -+ .stem_widths={on, 10, 17, sw2pv, maxp,} -+}, -+{ .name="ubuntu", -+ .always_use_100={on, 12, 13, 15, 15, end} -+}, -+{ .name="verdana", -+ .always_use_100={on, 0, 14, 16, maxp, end}, -+ .stem_scaling={on, 12, 1, 15, 1, end}, -+ .stem_translating_only={on, 8, 16, 15, 16, 14, 32, 18, 32, 19, 24, end} -+}, -+%% -+ -+static const sa_rules_t* -+ftinf_rules( const char *name ){ -+ if( name ){ -+ enum { -+ max_wlen=31 -+ }; -+ char buf[max_wlen+1]; -+ int len=strlen( name ); -+ if( len <= max_wlen ){ -+ int i; -+ for( i=0; i<len; ++i ) -+ buf[i]=tolower( name[i] ); -+ buf[len]='\0'; -+ return _rules_get( buf, len ); -+ } -+ } -+ return NULL; -+} -+/* -+ gperf --output-file=ftinf_rh.c ftinf_rh.gperf -+*/ -diff -ruN freetype-2.7.1-orig/src/base/ftinf_sh.c freetype-2.7.1/src/base/ftinf_sh.c ---- freetype-2.7.1-orig/src/base/ftinf_sh.c 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf_sh.c 2017-01-11 12:28:34.881016390 +0100 -@@ -0,0 +1,463 @@ -+/* ANSI-C code produced by gperf version 3.1 */ -+/* Command-line: gperf --output-file=ftinf_sh.c ftinf_sh.gperf */ -+/* Computed positions: -k'1,$' */ -+ -+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ -+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ -+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ -+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ -+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ -+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ -+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ -+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ -+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ -+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ -+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ -+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ -+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ -+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ -+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ -+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ -+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ -+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ -+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ -+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ -+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ -+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ -+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -+/* The character set is not based on ISO-646. */ -+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." -+#endif -+ -+#line 9 "ftinf_sh.gperf" -+ -+#include <ctype.h> -+static const struct ftinf_s* _settings_get( const char*str, unsigned len); -+/* maximum key range = 37, duplicates = 0 */ -+ -+#ifdef __GNUC__ -+__inline -+#else -+#ifdef __cplusplus -+inline -+#endif -+#endif -+static unsigned int -+_settings_hash (register const char *str, register unsigned int len) -+{ -+ static const unsigned char asso_values[] = -+ { -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 13, -+ 8, 30, 25, 20, 40, 10, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 5, 40, 0, -+ 0, 0, 40, 40, 10, 0, 40, 40, 15, 5, -+ 10, 0, 10, 40, 40, 0, 0, 0, 0, 0, -+ 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -+ 40, 40, 40, 40, 40, 40 -+ }; -+ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; -+} -+ -+#ifdef __GNUC__ -+__inline -+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -+__attribute__ ((__gnu_inline__)) -+#endif -+#endif -+const struct ftinf_s * -+_settings_get (register const char *str, register unsigned int len) -+{ -+ enum -+ { -+ TOTAL_KEYWORDS = 22, -+ MIN_WORD_LENGTH = 3, -+ MAX_WORD_LENGTH = 14, -+ MIN_HASH_VALUE = 3, -+ MAX_HASH_VALUE = 39 -+ }; -+ -+ static const struct ftinf_s wordlist[] = -+ { -+#line 76 "ftinf_sh.gperf" -+{ .name="osx", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .bold_embolden_x_value=16, -+ .brightness=10, -+ .contrast=20, -+ .filter_params={on, 3, 32, 38, 32, 3}, -+ .gamma_correction={1000, 80}, -+ .global_embolden_y_value=8, -+ .grayscale_filter_strength=25, -+}, -+#line 37 "ftinf_sh.gperf" -+{ .name="ipad", -+ .filter_params={on, 0, 0, 100, 0, 0}, -+ .gamma_correction={1000, 80}, -+ .grayscale_filter_strength=100 -+}, -+#line 114 "ftinf_sh.gperf" -+{ .name="shove", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=100, -+ .stem_fitting_strength=100, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+#line 126 "ftinf_sh.gperf" -+{ .name="ubuntu", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=-10, -+ .contrast=15, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={1000, 80}, -+ .use_various_tweaks=true -+}, -+#line 27 "ftinf_sh.gperf" -+{ .name="classic", -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .filter_params={on, 6, 25, 38, 25, 6}, -+ .gamma_correction={0, 100}, -+ .use_various_tweaks=true -+}, -+#line 34 "ftinf_sh.gperf" -+{ .name="disabled", -+ .gamma_correction={0, 100}, -+}, -+#line 100 "ftinf_sh.gperf" -+{ .name="sharpened", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=25, -+ .stem_snapping_sliding_scale=40, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+#line 42 "ftinf_sh.gperf" -+{ .name="infinality", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=25, -+ .stem_snapping_sliding_scale=40, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=5 -+}, -+#line 15 "ftinf_sh.gperf" -+{ .name="custom", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 8, 24, 48, 24, 8}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=75, -+ .stem_fitting_strength=50, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+#line 180 "ftinf_sh.gperf" -+{ .name="vanilla", -+ .filter_params={on, 6, 25, 38, 25, 6}, -+ .gamma_correction={0, 100}, -+}, -+#line 184 "ftinf_sh.gperf" -+{ .name="windows7light", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .contrast=20, -+ .filter_params={on, 20, 25, 38, 25, 05}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 160}, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=100 -+}, -+#line 226 "ftinf_sh.gperf" -+{ .name="windowsxplight", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=20, -+ .contrast=30, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 120}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+#line 64 "ftinf_sh.gperf" -+{ .name="nudge", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_various_tweaks=true, -+}, -+#line 144 "ftinf_sh.gperf" -+{ .name="ultimate2", -+ .filter_params={on, 6, 22, 36, 22, 6}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+#line 197 "ftinf_sh.gperf" -+{ .name="windows7", -+ .filter_params={on, 20, 25, 42, 25, 06}, -+ .fringe_filter_strength=100, -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .windows_style_sharpening_strength=65, -+ .gamma_correction={1000, 120}, -+ .brightness=10, -+ .contrast=20, -+ .use_various_tweaks=true, -+ .autohint_snap_stem_height=100, -+ .use_known_settings_on_selected_fonts=true, -+}, -+#line 210 "ftinf_sh.gperf" -+{ .name="windowsxp", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=10, -+ .contrast=20, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 120}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+#line 56 "ftinf_sh.gperf" -+{ .name="linux", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .gamma_correction={0, 100}, -+ .use_various_tweaks=true -+}, -+#line 135 "ftinf_sh.gperf" -+{ .name="ultimate1", -+ .filter_params={on, 4, 22, 38, 22, 4}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+#line 87 "ftinf_sh.gperf" -+{ .name="push", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=75, -+ .stem_fitting_strength=50, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+#line 171 "ftinf_sh.gperf" -+{ .name="ultimate5", -+ .filter_params={on, 12, 28, 42, 28, 12}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+#line 162 "ftinf_sh.gperf" -+{ .name="ultimate4", -+ .filter_params={on, 10, 25, 37, 25, 10}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+#line 153 "ftinf_sh.gperf" -+{ .name="ultimate3", -+ .filter_params={on, 8, 24, 36, 24, 8}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+} -+ }; -+ -+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) -+ { -+ register int key = _settings_hash (str, len); -+ -+ if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE) -+ { -+ register const struct ftinf_s *resword; -+ -+ switch (key - 3) -+ { -+ case 0: -+ resword = &wordlist[0]; -+ goto compare; -+ case 1: -+ resword = &wordlist[1]; -+ goto compare; -+ case 2: -+ resword = &wordlist[2]; -+ goto compare; -+ case 3: -+ resword = &wordlist[3]; -+ goto compare; -+ case 4: -+ resword = &wordlist[4]; -+ goto compare; -+ case 5: -+ resword = &wordlist[5]; -+ goto compare; -+ case 6: -+ resword = &wordlist[6]; -+ goto compare; -+ case 7: -+ resword = &wordlist[7]; -+ goto compare; -+ case 8: -+ resword = &wordlist[8]; -+ goto compare; -+ case 9: -+ resword = &wordlist[9]; -+ goto compare; -+ case 10: -+ resword = &wordlist[10]; -+ goto compare; -+ case 11: -+ resword = &wordlist[11]; -+ goto compare; -+ case 12: -+ resword = &wordlist[12]; -+ goto compare; -+ case 14: -+ resword = &wordlist[13]; -+ goto compare; -+ case 15: -+ resword = &wordlist[14]; -+ goto compare; -+ case 16: -+ resword = &wordlist[15]; -+ goto compare; -+ case 17: -+ resword = &wordlist[16]; -+ goto compare; -+ case 19: -+ resword = &wordlist[17]; -+ goto compare; -+ case 21: -+ resword = &wordlist[18]; -+ goto compare; -+ case 26: -+ resword = &wordlist[19]; -+ goto compare; -+ case 31: -+ resword = &wordlist[20]; -+ goto compare; -+ case 36: -+ resword = &wordlist[21]; -+ goto compare; -+ } -+ return 0; -+ compare: -+ { -+ register const char *s = resword->name; -+ -+ if (*str == *s && !strcmp (str + 1, s + 1)) -+ return resword; -+ } -+ } -+ } -+ return 0; -+} -+#line 242 "ftinf_sh.gperf" -+ -+ -+static const ftinf_t* -+ftinf_settings( const char *name ){ -+ if( name ){ -+ enum { -+ max_wlen=31 -+ }; -+ char buf[max_wlen+1]; -+ int len=strlen( name ); -+ if( len <= max_wlen ){ -+ int i; -+ for( i=0; i<len; ++i ) -+ buf[i]=tolower( name[i] ); -+ buf[len]='\0'; -+ return _settings_get( buf, len ); -+ } -+ } -+ return NULL; -+} -+/* -+ gperf --output-file=ftinf_sh.c ftinf_sh.gperf -+*/ -diff -ruN freetype-2.7.1-orig/src/base/ftinf_sh.gperf freetype-2.7.1/src/base/ftinf_sh.gperf ---- freetype-2.7.1-orig/src/base/ftinf_sh.gperf 1970-01-01 01:00:00.000000000 +0100 -+++ freetype-2.7.1/src/base/ftinf_sh.gperf 2017-01-11 12:28:34.881016390 +0100 -@@ -0,0 +1,264 @@ -+%struct-type -+%define slot-name name -+%enum -+%switch=1 -+%readonly-tables -+%omit-struct-type -+%define lookup-function-name _settings_get -+%define hash-function-name _settings_hash -+%{ -+#include <ctype.h> -+static const struct ftinf_s* _settings_get( const char*str, unsigned len); -+%} -+struct ftinf_s; -+%% -+{ .name="custom", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 8, 24, 48, 24, 8}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=75, -+ .stem_fitting_strength=50, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+{ .name="classic", -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .filter_params={on, 6, 25, 38, 25, 6}, -+ .gamma_correction={0, 100}, -+ .use_various_tweaks=true -+}, -+{ .name="disabled", -+ .gamma_correction={0, 100}, -+}, -+{ .name="ipad", -+ .filter_params={on, 0, 0, 100, 0, 0}, -+ .gamma_correction={1000, 80}, -+ .grayscale_filter_strength=100 -+}, -+{ .name="infinality", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=25, -+ .stem_snapping_sliding_scale=40, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=5 -+}, -+{ .name="linux", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .gamma_correction={0, 100}, -+ .use_various_tweaks=true -+}, -+{ .name="nudge", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_various_tweaks=true, -+}, -+{ .name="osx", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .bold_embolden_x_value=16, -+ .brightness=10, -+ .contrast=20, -+ .filter_params={on, 3, 32, 38, 32, 3}, -+ .gamma_correction={1000, 80}, -+ .global_embolden_y_value=8, -+ .grayscale_filter_strength=25, -+}, -+{ .name="push", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=75, -+ .stem_fitting_strength=50, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+{ .name="sharpened", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=25, -+ .stem_fitting_strength=25, -+ .stem_snapping_sliding_scale=40, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+{ .name="shove", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_increase_glyph_heights=true, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=100, -+ .stem_fitting_strength=100, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true -+}, -+{ .name="ubuntu", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=-10, -+ .contrast=15, -+ .filter_params={on, 11, 22, 38, 22, 11}, -+ .gamma_correction={1000, 80}, -+ .use_various_tweaks=true -+}, -+{ .name="ultimate1", -+ .filter_params={on, 4, 22, 38, 22, 4}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+{ .name="ultimate2", -+ .filter_params={on, 6, 22, 36, 22, 6}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+{ .name="ultimate3", -+ .filter_params={on, 8, 24, 36, 24, 8}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+{ .name="ultimate4", -+ .filter_params={on, 10, 25, 37, 25, 10}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+{ .name="ultimate5", -+ .filter_params={on, 12, 28, 42, 28, 12}, -+ .fringe_filter_strength=25, -+ .gamma_correction={0, 100}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=25 -+}, -+{ .name="vanilla", -+ .filter_params={on, 6, 25, 38, 25, 6}, -+ .gamma_correction={0, 100}, -+}, -+{ .name="windows7light", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .contrast=20, -+ .filter_params={on, 20, 25, 38, 25, 05}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 160}, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=100 -+}, -+{ .name="windows7", -+ .filter_params={on, 20, 25, 42, 25, 06}, -+ .fringe_filter_strength=100, -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_vertical_stem_darken_strength=25, -+ .windows_style_sharpening_strength=65, -+ .gamma_correction={1000, 120}, -+ .brightness=10, -+ .contrast=20, -+ .use_various_tweaks=true, -+ .autohint_snap_stem_height=100, -+ .use_known_settings_on_selected_fonts=true, -+}, -+{ .name="windowsxp", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=10, -+ .contrast=20, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 120}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+{ .name="windowsxplight", -+ .autohint_horizontal_stem_darken_strength=10, -+ .autohint_snap_stem_height=100, -+ .autohint_vertical_stem_darken_strength=25, -+ .brightness=20, -+ .contrast=30, -+ .filter_params={on, 6, 25, 44, 25, 6}, -+ .fringe_filter_strength=100, -+ .gamma_correction={1000, 120}, -+ .stem_alignment_strength=15, -+ .stem_fitting_strength=15, -+ .stem_snapping_sliding_scale=30, -+ .use_known_settings_on_selected_fonts=true, -+ .use_various_tweaks=true, -+ .windows_style_sharpening_strength=65 -+}, -+%% -+ -+static const ftinf_t* -+ftinf_settings( const char *name ){ -+ if( name ){ -+ enum { -+ max_wlen=31 -+ }; -+ char buf[max_wlen+1]; -+ int len=strlen( name ); -+ if( len <= max_wlen ){ -+ int i; -+ for( i=0; i<len; ++i ) -+ buf[i]=tolower( name[i] ); -+ buf[len]='\0'; -+ return _settings_get( buf, len ); -+ } -+ } -+ return NULL; -+} -+/* -+ gperf --output-file=ftinf_sh.c ftinf_sh.gperf -+*/ -diff -ruN freetype-2.7.1-orig/src/base/ftinit.c freetype-2.7.1/src/base/ftinit.c ---- freetype-2.7.1-orig/src/base/ftinit.c 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/ftinit.c 2017-01-11 12:28:34.882016390 +0100 + + /* END */ +diff --git a/src/base/ftinit.c b/src/base/ftinit.c +index b3b08fa..c125db9 100644 +--- a/src/base/ftinit.c ++++ b/src/base/ftinit.c @@ -43,7 +43,9 @@ #include FT_INTERNAL_DEBUG_H #include FT_MODULE_H @@ -2523,7 +482,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftinit.c freetype-2.7.1/src/base/ftinit.c /*************************************************************************/ /* */ -@@ -362,11 +364,14 @@ +@@ -341,10 +343,14 @@ error = FT_New_Library( memory, alibrary ); if ( error ) FT_Done_Memory( memory ); @@ -2531,20 +490,20 @@ diff -ruN freetype-2.7.1-orig/src/base/ftinit.c freetype-2.7.1/src/base/ftinit.c + else { FT_Add_Default_Modules( *alibrary ); - -- ft_set_default_properties( *alibrary ); -- -+ ft_set_default_properties( *alibrary ); +- FT_Set_Default_Properties( *alibrary ); ++ FT_Set_Default_Properties( *alibrary ); +#ifdef FT_CONFIG_OPTION_INFINALITY_PATCHSET -+ /* get Infinality settings */ -+ ftinf_env(); ++ /* get Infinality settings */ ++ ftinf_env(); +#endif + } + return error; } - -diff -ruN freetype-2.7.1-orig/src/base/ftlcdfil.c freetype-2.7.1/src/base/ftlcdfil.c ---- freetype-2.7.1-orig/src/base/ftlcdfil.c 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/ftlcdfil.c 2017-01-11 12:28:34.882016390 +0100 +diff --git a/src/base/ftlcdfil.c b/src/base/ftlcdfil.c +index 611b39f..0e7048c 100644 +--- a/src/base/ftlcdfil.c ++++ b/src/base/ftlcdfil.c @@ -22,7 +22,10 @@ #include FT_LCD_FILTER_H #include FT_IMAGE_H @@ -2557,50 +516,51 @@ diff -ruN freetype-2.7.1-orig/src/base/ftlcdfil.c freetype-2.7.1/src/base/ftlcdf #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING -@@ -307,11 +310,36 @@ +@@ -306,11 +309,36 @@ FT_Library_SetLcdFilter( FT_Library library, FT_LcdFilter filter ) { -- static const FT_Byte default_filter[5] = -- { 0x08, 0x4d, 0x56, 0x4d, 0x08 }; - static const FT_Byte light_filter[5] = - { 0x00, 0x55, 0x56, 0x55, 0x00 }; +- static const FT_LcdFiveTapFilter default_weights = +- { 0x08, 0x4d, 0x56, 0x4d, 0x08 }; + static const FT_LcdFiveTapFilter light_weights = + { 0x00, 0x55, 0x56, 0x55, 0x00 }; - +#ifndef FT_CONFIG_OPTION_INFINALITY_PATCHSET -+ static const FT_Byte default_filter[5] = ++ static const FT_LcdFiveTapFilter default_weights = + { 0x08, 0x4d, 0x56, 0x4d, 0x08 }; +#else -+ FT_Byte default_filter[5]; ++ FT_LcdFiveTapFilter default_weights; + if( ftinf && ftinf->filter_params[0] ) + { + const int *f=ftinf->filter_params; + /* Assume we were given integers [0-100] get them to [0-255] */ + int val; /* 2611=2.55*1024 */ + val=(f[1]*2611+512)>>10; if( val > 255 ) val=255; -+ default_filter[0] = (FT_Byte) val; ++ default_weights[0] = (FT_Byte) val; + val=(f[2]*2611+512)>>10; if( val > 255 ) val=255; -+ default_filter[1] = (FT_Byte) val; ++ default_weights[1] = (FT_Byte) val; + val=(f[3]*2611+512)>>10; if( val > 255 ) val=255; -+ default_filter[2] = (FT_Byte) val; ++ default_weights[2] = (FT_Byte) val; + val=(f[4]*2611+512)>>10; if( val > 255 ) val=255; -+ default_filter[3] = (FT_Byte) val; ++ default_weights[3] = (FT_Byte) val; + val=(f[5]*2611+512)>>10; if( val > 255 ) val=255; -+ default_filter[4] = (FT_Byte) val; ++ default_weights[4] = (FT_Byte) val; + } else { -+ default_filter[0]=0x08; -+ default_filter[1]=0x4d; -+ default_filter[2]=0x56; -+ default_filter[3]=0x4d; -+ default_filter[4]=0x08; ++ default_weights[0]=0x08; ++ default_weights[1]=0x4d; ++ default_weights[2]=0x56; ++ default_weights[3]=0x4d; ++ default_weights[4]=0x08; + } +#endif if ( !library ) return FT_THROW( Invalid_Library_Handle ); -diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c ---- freetype-2.7.1-orig/src/base/ftobjs.c 2017-01-11 12:28:16.727016867 +0100 -+++ freetype-2.7.1/src/base/ftobjs.c 2017-01-11 12:28:34.885016390 +0100 -@@ -40,7 +40,9 @@ +diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c +index 539116e..c86b348 100644 +--- a/src/base/ftobjs.c ++++ b/src/base/ftobjs.c +@@ -43,7 +43,9 @@ #ifdef FT_CONFIG_OPTION_MAC_FONTS #include "ftbase.h" #endif @@ -2611,7 +571,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c #ifdef FT_DEBUG_LEVEL_TRACE -@@ -78,6 +80,11 @@ +@@ -81,6 +83,11 @@ #define GRID_FIT_METRICS @@ -2623,7 +583,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c /* forward declaration */ static FT_Error -@@ -563,6 +570,25 @@ +@@ -567,6 +574,25 @@ ft_lookup_glyph_renderer( FT_GlyphSlot slot ); @@ -2649,7 +609,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c #ifdef GRID_FIT_METRICS static void ft_glyphslot_grid_fit_metrics( FT_GlyphSlot slot, -@@ -621,8 +647,18 @@ +@@ -625,8 +651,18 @@ FT_Bool autohint = FALSE; FT_Module hinter; TT_Face ttface = (TT_Face)face; @@ -2668,7 +628,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c if ( !face || !face->size || !face->glyph ) return FT_THROW( Invalid_Face_Handle ); -@@ -713,6 +749,18 @@ +@@ -717,6 +753,18 @@ { FT_AutoHinter_Interface hinting; @@ -2687,7 +647,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c /* try to load embedded bitmaps first if available */ /* */ -@@ -758,6 +806,18 @@ +@@ -762,6 +810,18 @@ if ( error ) goto Exit; @@ -2706,7 +666,7 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) { /* check that the loaded outline is correct */ -@@ -4874,6 +4934,11 @@ +@@ -4986,6 +5046,11 @@ /* That's ok now */ *alibrary = library; @@ -2718,9 +678,10 @@ diff -ruN freetype-2.7.1-orig/src/base/ftobjs.c freetype-2.7.1/src/base/ftobjs.c return FT_Err_Ok; #ifdef FT_CONFIG_OPTION_PIC -diff -ruN freetype-2.7.1-orig/src/base/ftoutln.c freetype-2.7.1/src/base/ftoutln.c ---- freetype-2.7.1-orig/src/base/ftoutln.c 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/ftoutln.c 2017-01-11 12:28:34.886016390 +0100 +diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c +index 464a066..d84a82a 100644 +--- a/src/base/ftoutln.c ++++ b/src/base/ftoutln.c @@ -29,7 +29,9 @@ #include FT_INTERNAL_CALC_H #include FT_INTERNAL_DEBUG_H @@ -2736,20 +697,20 @@ diff -ruN freetype-2.7.1-orig/src/base/ftoutln.c freetype-2.7.1/src/base/ftoutln FT_Vector* points; FT_Int c, first, last; FT_Int orientation; -- +#ifdef FT_CONFIG_OPTION_INFINALITY_PATCHSET + FT_Bool use_various_tweaks = FALSE; + if( ftinf ) use_various_tweaks=ftinf->use_various_tweaks; -+ + + if ( use_various_tweaks ) + ystrength = FT_PIX_FLOOR ( ystrength ); +#endif if ( !outline ) return FT_THROW( Invalid_Outline ); -diff -ruN freetype-2.7.1-orig/src/base/ftsynth.c freetype-2.7.1/src/base/ftsynth.c ---- freetype-2.7.1-orig/src/base/ftsynth.c 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/ftsynth.c 2017-01-11 12:28:34.886016390 +0100 +diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c +index 66dae60..89124f1 100644 +--- a/src/base/ftsynth.c ++++ b/src/base/ftsynth.c @@ -22,7 +22,9 @@ #include FT_INTERNAL_OBJECTS_H #include FT_OUTLINE_H @@ -2801,21 +762,11 @@ diff -ruN freetype-2.7.1-orig/src/base/ftsynth.c freetype-2.7.1/src/base/ftsynth slot->metrics.horiAdvance += xstr; slot->metrics.vertAdvance += ystr; slot->metrics.horiBearingY += ystr; -diff -ruN freetype-2.7.1-orig/src/base/Jamfile freetype-2.7.1/src/base/Jamfile ---- freetype-2.7.1-orig/src/base/Jamfile 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/Jamfile 2017-01-11 12:28:34.886016390 +0100 -@@ -56,6 +56,7 @@ - ftglyph - ftgxval - ftinit -+ ftinf - ftlcdfil - ftmm - ftotval -diff -ruN freetype-2.7.1-orig/src/base/rules.mk freetype-2.7.1/src/base/rules.mk ---- freetype-2.7.1-orig/src/base/rules.mk 2017-01-11 12:28:16.726016867 +0100 -+++ freetype-2.7.1/src/base/rules.mk 2017-01-11 12:28:34.887016390 +0100 -@@ -42,6 +42,7 @@ +diff --git a/src/base/rules.mk b/src/base/rules.mk +index 2a1e93c..1a38d49 100644 +--- a/src/base/rules.mk ++++ b/src/base/rules.mk +@@ -42,6 +42,7 @@ BASE_SRC := $(BASE_DIR)/basepic.c \ $(BASE_DIR)/ftdbgmem.c \ $(BASE_DIR)/ftgloadr.c \ $(BASE_DIR)/fthash.c \ @@ -2823,10 +774,11 @@ diff -ruN freetype-2.7.1-orig/src/base/rules.mk freetype-2.7.1/src/base/rules.mk $(BASE_DIR)/ftobjs.c \ $(BASE_DIR)/ftoutln.c \ $(BASE_DIR)/ftpic.c \ -diff -ruN freetype-2.7.1-orig/src/cff/cffobjs.c freetype-2.7.1/src/cff/cffobjs.c ---- freetype-2.7.1-orig/src/cff/cffobjs.c 2017-01-11 12:28:16.725016867 +0100 -+++ freetype-2.7.1/src/cff/cffobjs.c 2017-01-11 12:28:34.887016390 +0100 -@@ -34,6 +34,9 @@ +diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c +index 6161393..8c00aa9 100644 +--- a/src/cff/cffobjs.c ++++ b/src/cff/cffobjs.c +@@ -39,6 +39,9 @@ #include "cfferrs.h" @@ -2836,7 +788,7 @@ diff -ruN freetype-2.7.1-orig/src/cff/cffobjs.c freetype-2.7.1/src/cff/cffobjs.c /*************************************************************************/ /* */ -@@ -1173,6 +1176,9 @@ +@@ -1172,6 +1175,9 @@ #endif driver->no_stem_darkening = TRUE; @@ -2846,9 +798,10 @@ diff -ruN freetype-2.7.1-orig/src/cff/cffobjs.c freetype-2.7.1/src/cff/cffobjs.c driver->darken_params[0] = CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1; driver->darken_params[1] = CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1; -diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ftsmooth.c ---- freetype-2.7.1-orig/src/smooth/ftsmooth.c 2017-01-11 12:28:16.725016867 +0100 -+++ freetype-2.7.1/src/smooth/ftsmooth.c 2017-01-11 12:41:51.510995480 +0100 +diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c +index 435854e..5d79844 100644 +--- a/src/smooth/ftsmooth.c ++++ b/src/smooth/ftsmooth.c @@ -26,6 +26,18 @@ #include "ftsmerrs.h" @@ -2868,10 +821,72 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft /* initialize renderer -- init its raster */ static FT_Error -@@ -93,6 +105,2219 @@ - FT_Outline_Get_CBox( &slot->outline, cbox ); - } +@@ -34,65 +46,2278 @@ + FT_Library library = FT_MODULE_LIBRARY( render ); + +- render->clazz->raster_class->raster_reset( render->raster, +- library->raster_pool, +- library->raster_pool_size ); ++ render->clazz->raster_class->raster_reset( render->raster, ++ library->raster_pool, ++ library->raster_pool_size ); ++ ++ return 0; ++ } ++ ++ ++ /* sets render-specific mode */ ++ static FT_Error ++ ft_smooth_set_mode( FT_Renderer render, ++ FT_ULong mode_tag, ++ FT_Pointer data ) ++ { ++ /* we simply pass it to the raster */ ++ return render->clazz->raster_class->raster_set_mode( render->raster, ++ mode_tag, ++ data ); ++ } ++ ++ /* transform a given glyph image */ ++ static FT_Error ++ ft_smooth_transform( FT_Renderer render, ++ FT_GlyphSlot slot, ++ const FT_Matrix* matrix, ++ const FT_Vector* delta ) ++ { ++ FT_Error error = FT_Err_Ok; ++ ++ ++ if ( slot->format != render->glyph_format ) ++ { ++ error = FT_THROW( Invalid_Argument ); ++ goto Exit; ++ } ++ ++ if ( matrix ) ++ FT_Outline_Transform( &slot->outline, matrix ); ++ ++ if ( delta ) ++ FT_Outline_Translate( &slot->outline, delta->x, delta->y ); ++ ++ Exit: ++ return error; ++ } ++ ++ ++ /* return the glyph's control box */ ++ static void ++ ft_smooth_get_cbox( FT_Renderer render, ++ FT_GlyphSlot slot, ++ FT_BBox* cbox ) ++ { ++ FT_ZERO( cbox ); ++ ++ if ( slot->format == render->glyph_format ) ++ FT_Outline_Get_CBox( &slot->outline, cbox ); ++ } ++ +#ifdef FT_CONFIG_OPTION_INFINALITY_PATCHSET + static FT_Fixed FT_FixedFromFloat(float f) + { @@ -4537,24 +2552,46 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + stems[valid_stems].generated = TRUE; + valid_stems += 1; + } -+ + +- return 0; +- } + } -+ + + /* sort stems in x direction */ + if ( valid_stems > 1 && stems[0].center > stems[1].center ) + swap_stem ( &stems[0], &stems[1] ); -+ + +- /* sets render-specific mode */ +- static FT_Error +- ft_smooth_set_mode( FT_Renderer render, +- FT_ULong mode_tag, +- FT_Pointer data ) +- { +- /* we simply pass it to the raster */ +- return render->clazz->raster_class->raster_set_mode( render->raster, +- mode_tag, +- data ); +- } + if ( valid_stems == 0 && known_stem_values->stem_translating != 0 ) + { + *translate_value += known_stem_values->stem_translating; -+ + +- /* transform a given glyph image */ +- static FT_Error +- ft_smooth_transform( FT_Renderer render, +- FT_GlyphSlot slot, +- const FT_Matrix* matrix, +- const FT_Vector* delta ) +- { +- FT_Error error = FT_Err_Ok; + if ( strategy_use_strengths ) + { + /* consider 1/2 pixel the max when strength is at 100%, + unless translate is already greater than that */ + FT_Int strength_cutoff = 32; -+ -+ + + +- if ( slot->format != render->glyph_format ) + if ( abs ( *translate_value ) > strength_cutoff) + strength_cutoff = *translate_value; + @@ -4568,7 +2605,8 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + } + else + /* Start snapping */ -+ { + { +- error = FT_THROW( Invalid_Argument ); + FT_Int center_offset; + FT_Int modulus; + FT_Int delta, delta2; @@ -5006,13 +3044,19 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + printf ( "TRANSLATING -64 " ); + } + } -+ goto Exit; -+ } -+ + goto Exit; + } + +- if ( matrix ) +- FT_Outline_Transform( &slot->outline, matrix ); + Exit: -+ + +- if ( delta ) +- FT_Outline_Translate( &slot->outline, delta->x, delta->y ); +#define transformed_point( point ) point * *scale_value + *translate_value * 12 -+ + +- Exit: +- return error; + if ( strategy_correct_out_of_bounds_outlines ) + { + /* Correct if outside bitmap */ @@ -5034,24 +3078,31 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + free ( stem_centers ); + free ( stems ); + free ( leftmost_segment ); -+ } -+ -+ + } + + +- /* return the glyph's control box */ + /* Gamma correction */ -+ static void + static void +- ft_smooth_get_cbox( FT_Renderer render, +- FT_GlyphSlot slot, +- FT_BBox* cbox ) + _ft_lcd_gamma_correction_correction ( FT_Bitmap* bitmap, + FT_Render_Mode mode, + FT_GlyphSlot slot, + float gamma_correction_lt, + float gamma_correction_value ) -+ { + { +- FT_ZERO( cbox ); + if ( gamma_correction_value != 1.0 ) + { + FT_UInt width = (FT_UInt)bitmap->width; + FT_UInt height = (FT_UInt)bitmap->rows; + FT_Byte* line = bitmap->buffer; + float ppem = (float)slot->face->size->metrics.x_ppem; -+ + +- if ( slot->format == render->glyph_format ) +- FT_Outline_Get_CBox( &slot->outline, cbox ); + + if ( !slot->face || !slot->face->size ) return; + @@ -5082,8 +3133,8 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + } + } + } -+ } -+ + } + +#endif /* convert a slot's glyph image into a bitmap */ @@ -5258,9 +3309,9 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + +#endif + #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - /* check glyph image format */ -@@ -137,26 +2500,119 @@ +@@ -191,26 +2554,119 @@ goto Exit; } @@ -5393,7 +3444,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft width = (FT_ULong)( cbox.xMax - cbox.xMin ) >> 6; height = (FT_ULong)( cbox.yMax - cbox.yMin ) >> 6; -@@ -166,16 +2622,29 @@ +@@ -220,22 +2676,35 @@ height_org = height; #endif @@ -5423,30 +3474,25 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + y_top = cbox.yMax >> 6; + #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - - if ( slot->library->lcd_filter_func ) -@@ -185,33 +2654,25 @@ - + if ( lcd_filter_func ) + { if ( hmul ) { -- x_shift += 64 * ( extra >> 1 ); -- x_left -= extra >> 1; -+ x_shift -= 64 * ( extra >> 1 ); - width += 3 * extra; +- x_shift += 64 * ( lcd_extra >> 1 ); ++ x_shift -= 64 * ( lcd_extra >> 1 ); + x_left -= lcd_extra >> 1; + width += 3 * lcd_extra; pitch = FT_PAD_CEIL( width, 4 ); -+ x_left -= extra >> 1; - } +@@ -243,24 +2712,17 @@ if ( vmul ) { -- y_shift += 64 * ( extra >> 1 ); -- y_top += extra >> 1; -+ y_shift -= 64 * ( extra >> 1 ); - height += 3 * extra; -+ y_top += extra >> 1; +- y_shift += 64 * ( lcd_extra >> 1 ); ++ y_shift -= 64 * ( lcd_extra >> 1 ); + y_top += lcd_extra >> 1; + height += 3 * lcd_extra; } } -- #endif - - /* @@ -5466,7 +3512,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft /* Required check is (pitch * height < FT_ULONG_MAX), */ /* but we care realistic cases only. Always pitch <= width. */ if ( width > 0x7FFF || height > 0x7FFF ) -@@ -222,6 +2683,22 @@ +@@ -271,6 +2733,22 @@ goto Exit; } @@ -5489,7 +3535,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft /* release old bitmap buffer */ if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) { -@@ -229,7 +2706,6 @@ +@@ -278,7 +2756,6 @@ slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; } @@ -5497,7 +3543,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft if ( FT_ALLOC( bitmap->buffer, (FT_ULong)( pitch * height ) ) ) goto Exit; else -@@ -237,23 +2713,6 @@ +@@ -286,23 +2763,6 @@ slot->internal->flags |= FT_GLYPH_OWN_BITMAP; @@ -5521,7 +3567,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft /* set up parameters */ params.target = bitmap; params.source = outline; -@@ -299,9 +2758,153 @@ +@@ -348,9 +2808,153 @@ if ( error ) goto Exit; @@ -5645,8 +3691,8 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + } + + -+ if ( slot->library->lcd_filter_func ) -+ slot->library->lcd_filter_func( bitmap, mode, slot->library ); ++ if ( lcd_filter_func ) ++ lcd_filter_func( bitmap, mode, slot->library ); + + if ( grayscale_filter_strength > 0 ) + _ft_lcd_grayscale_filter( bitmap, @@ -5665,17 +3711,17 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft + FT_Outline_Done( slot->library, outline_orig ); + } + else if ( mode == FT_RENDER_MODE_LCD && -+ slot->library->lcd_filter_func ) -+ slot->library->lcd_filter_func( bitmap, mode, slot->library ); ++ lcd_filter_func ) ++ lcd_filter_func( bitmap, mode, slot->library ); +#else - if ( slot->library->lcd_filter_func ) - slot->library->lcd_filter_func( bitmap, mode, slot->library ); + if ( lcd_filter_func ) + lcd_filter_func( bitmap, mode, lcd_weights ); +#endif /* FT_CONFIG_OPTION_INFINALITY_PATCHSET */ #else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ /* render outline into bitmap */ -@@ -359,6 +2962,20 @@ +@@ -408,6 +3012,20 @@ #endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ @@ -5696,7 +3742,7 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft /* everything is fine; don't deallocate buffer */ have_buffer = FALSE; -@@ -366,7 +2983,9 @@ +@@ -415,7 +3033,9 @@ Exit: if ( have_outline_shifted ) @@ -5707,10 +3753,11 @@ diff -ruN freetype-2.7.1-orig/src/smooth/ftsmooth.c freetype-2.7.1/src/smooth/ft if ( have_buffer ) { FT_FREE( bitmap->buffer ); -diff -ruN freetype-2.7.1-orig/src/truetype/ttinterp.c freetype-2.7.1/src/truetype/ttinterp.c ---- freetype-2.7.1-orig/src/truetype/ttinterp.c 2017-01-11 12:28:16.728016867 +0100 -+++ freetype-2.7.1/src/truetype/ttinterp.c 2017-01-11 12:28:34.895016390 +0100 -@@ -5739,6 +5739,7 @@ +diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c +index af31408..6380d83 100644 +--- a/src/truetype/ttinterp.c ++++ b/src/truetype/ttinterp.c +@@ -5753,6 +5753,7 @@ if ( exc->ignore_x_mode && exc->GS.freeVector.x != 0 && @@ -5718,3 +3765,6 @@ diff -ruN freetype-2.7.1-orig/src/truetype/ttinterp.c freetype-2.7.1/src/truetyp !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) control_value_cutin = 0; } +-- +2.13.0 + diff --git a/0003-inf.patch b/0003-inf.patch new file mode 100644 index 000000000000..8b289f7a7c6c --- /dev/null +++ b/0003-inf.patch @@ -0,0 +1,2089 @@ +diff -ruN freetype2.orig/src/base/ftinf.c freetype2.new/src/base/ftinf.c +--- freetype2.orig/src/base/ftinf.c 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf.c 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,363 @@ ++#include <stdlib.h> ++#include "ftinf.h" ++#define true 1 ++#define false 0 ++ ++#define on 1 ++#define off 0 ++#define end (-128) ++ ++#define sw2pv 18 /* STEM_WIDTH_2_PPEM */ ++#define maxp 100 /* MAX_PPEM */ ++ ++typedef signed char pv; /* ppm and values type */ ++/* the arrays start with existence flag + values */ ++typedef struct sa_rules_s { ++ const char *name; ++ pv always_use_100[1+4+1]; ++ pv brightness[1+2+1]; ++ pv contrast[1+2+1]; ++ pv edge_detection[1+4+1]; ++ pv m[1+4+1]; ++ pv bearing_correction[1+2+1]; ++ pv spacing[1+5+1]; ++ pv start[1+5+1]; ++ pv stem_scaling[1+6+1]; ++ pv stem_translating[1+2+1]; ++ pv stem_translating_only[1+10+1]; ++ pv stem_widths[1+4]; /* these end with maxp */ ++ pv synthesize_stems[1+2+1]; ++} sa_rules_t; ++ ++#pragma GCC diagnostic ignored "-Wpedantic" /* C99 struct initializer tags are needed */ ++#pragma GCC diagnostic ignored "-Wunused-function" ++ ++const ftinf_t *ftinf; ++/* final settings, updated from environment */ ++ftinf_t _env; ++ ++/* rules and hashing function */ ++#include "ftinf_rh.c" ++ ++/* rules selection */ ++void ftinf_fill_stem_values( Stem_Data *stem_values, ++ const char *family, int ppem, int use_known ){ ++ /* set the defaults */ ++ stem_values->bearing_correction = TRUE; ++ stem_values->brightness = 0.0; ++ stem_values->contrast = 0.0; ++ stem_values->edge_detection = FALSE; ++ stem_values->m = -1; ++ stem_values->stem_scaling = -1; ++ stem_values->stem_spacing = -1; ++ stem_values->stem_start = -1; ++ stem_values->stem_translating = 0; ++ stem_values->stem_translating_only = -1024; ++ stem_values->stem_width = -1; ++ stem_values->synth_stems = FALSE; ++ stem_values->use_100 = FALSE; ++ /* pick from known rules if requested and they exist for current family */ ++ if( !use_known ) ++ return; ++ else { ++ const sa_rules_t *r=ftinf_rules( family ); ++ int i; ++ if( r==NULL ) return; ++ if( r->stem_widths[0]==on ) ++ for( i=1; r->stem_widths[i]!=maxp; ++i ) ++ if( ppem < r->stem_widths[i] ){ ++ stem_values->stem_width = i-1; ++ break; ++ } ++ ++ if( r->stem_scaling[0]==on ) ++ for( i=1; r->stem_scaling[i]!=end; i+=2 ) ++ if( ppem==r->stem_scaling[i] ){ ++ stem_values->stem_scaling = r->stem_scaling[i+1]; ++ break; ++ } ++ ++ if( r->m[0]==on ) ++ for( i=1; r->m[i]!=end; i+=2 ) ++ if( ppem==r->m[i] ){ ++ stem_values->m = r->m[i+1]; ++ break; ++ } ++ ++ if( r->stem_translating_only[0]==on ) ++ for( i=1; r->stem_translating_only[i]!=end; i+=2 ) ++ if( ppem==r->stem_translating_only[i] || r->stem_translating_only[i]==0 ){ ++ stem_values->stem_translating_only = r->stem_translating_only[i+1]; ++ break; ++ } ++ ++ if( r->stem_translating[0]==on ) ++ for( i=1; r->stem_translating[i]!=end; i+=2 ) ++ if( ppem==r->stem_translating[i] || r->stem_translating[i]==0 ){ ++ stem_values->stem_translating = r->stem_translating[i+1]; ++ break; ++ } ++ ++ if( r->always_use_100[0]==on ) ++ for( i=1; r->always_use_100[i]!=end; i+=2 ) ++ if( ppem>=r->always_use_100[i] && ppem<=r->always_use_100[i+1] ){ ++ stem_values->use_100 = TRUE; ++ break; ++ } ++ ++ if( r->synthesize_stems[0]==on ) ++ for( i=1; r->synthesize_stems[i]!=end; i+=2 ) ++ if( ppem>=r->synthesize_stems[i] && ppem<=r->synthesize_stems[i+1] ){ ++ stem_values->synth_stems = TRUE; ++ break; ++ } ++ ++ if( r->edge_detection[0]==on ) ++ for( i=1; r->edge_detection[i]!=end; i+=2 ) ++ if( ppem>=r->edge_detection[i] && ppem<=r->edge_detection[i+1] ){ ++ stem_values->edge_detection = TRUE; ++ break; ++ } ++ ++ if( r->bearing_correction[0]==on ) ++ for( i=1; r->bearing_correction[i]!=end; i+=2 ) ++ if( ppem>=r->bearing_correction[i] && ppem<=r->bearing_correction[i+1] ){ ++ stem_values->bearing_correction = FALSE; ++ break; ++ } ++ ++#if(0) ++ if( r->brightness[0]==on ) ++ for( i=1; r->brightness[i]!=end; i+=2 ) ++ if( ppem==r->brightness[i]||r->brightness[i]==0 ){ ++ stem_values->brightness=r->brightness[i+1]*(1.0f/300.0f); ++ break; ++ } ++ ++ if( r->contrast[0]==on ) ++ for( i=1; r->contrast[i]!=end; i+=2 ) ++ if( ppem==r->contrast[i]||r->contrast[i]==0 ){ ++ stem_values->contrast=r->contrast[i+1]*(1.0f/300.0f); ++ break; ++ } ++ if( r->spacing[0]==on ){ ++ /* not used by original code */ ++ } ++ if( r->start[0]==on ){ ++ /* not used by original code */ ++ } ++#endif ++ } ++ return; ++} ++ ++void ftinf_get_bc( const char *family, int ppem, float *brightness, float *contrast ){ ++ const sa_rules_t *r=ftinf_rules( family ); ++ *brightness=0; ++ *contrast=0; ++ if( r ){ ++ int i; ++ if( r->brightness[0]==on ) ++ for( i=1; r->brightness[i]!=end; i+=2 ) ++ if( ppem==r->brightness[i]||r->brightness[i]==0 ){ ++ *brightness=r->brightness[i+1]*(1.0f/300.0f); ++ break; ++ } ++ ++ if( r->contrast[0]==on ) ++ for( i=1; r->contrast[i]!=end; i+=2 ) ++ if( ppem==r->contrast[i]||r->contrast[i]==0 ){ ++ *contrast=r->contrast[i+1]*(1.0f/300.0f); ++ break; ++ } ++ } ++ return; ++} ++ ++static int ++bool_val( const char *s ){ ++ if ( s != NULL ) ++ return strcasecmp(s, "true") == 0 ++ || strcasecmp(s, "1") == 0 ++ || strcasecmp(s, "on") == 0 ++ || strcasecmp(s, "yes") ==0; ++ else ++ return 0; ++} ++ ++static int ++int_val( const char *s, int min, int max ){ ++ int val; ++ sscanf ( s, "%d", &val ); ++ if ( val > max ) ++ val = max; ++ else if ( val < min ) ++ val = min; ++ return val; ++} ++ ++/* settings and hashing function */ ++#include "ftinf_sh.c" ++ ++/* ++ Get active Infinality settings ++ */ ++void ftinf_env(){ ++ const char *s; ++ ftinf=ftinf_settings( getenv( "INFINALITY_FT" ) ); ++ ++ if( ftinf==NULL ){ ++ ftinf=ftinf_settings( "ultimate3" ); ++ /* this should always succeed */ ++#if(0) ++ if( ftinf==NULL ){ ++ /* put an error here */ ++ exit(-1); ++ } ++#endif ++ } ++ _env=ftinf[0]; /* copy as defaults */ ++ ++ /* check if custom environment values are set and update with them */ ++ s=getenv( "INFINALITY_FT_AUTOHINT_INCREASE_GLYPH_HEIGHTS" ); ++ if( s ) _env.autohint_increase_glyph_heights=bool_val( s ); ++ s=getenv( "INFINALITY_FT_AUTOHINT_SNAP_STEM_HEIGHT" ); ++ if( s ) _env.autohint_snap_stem_height=int_val( s, 0, 100 ); ++ s=getenv( "INFINALITY_FT_USE_VARIOUS_TWEAKS" ); ++ if( s ) _env.use_various_tweaks=bool_val( s ); ++ s=getenv( "INFINALITY_FT_USE_KNOWN_SETTINGS_ON_SELECTED_FONTS" ); ++ if( s ) _env.use_known_settings_on_selected_fonts=bool_val(s); ++#if(0) /* not used (naming error also) */ ++ s=getenv( "INFINALITY_FT_AUTOHINT_MINIMUM_STEM_WIDTH" ); ++ if( s ) _env.autohint_minimum_stem_height=int_val( s, 0, 100 ); ++#endif ++ s=getenv( "INFINALITY_FT_STEM_SNAPPING_SLIDING_SCALE" ); ++ if( s ) sscanf( s, "%d", &_env.stem_snapping_sliding_scale ); ++ s=getenv( "INFINALITY_FT_STEM_ALIGNMENT_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.stem_alignment_strength ); ++ s=getenv( "INFINALITY_FT_STEM_DARKENING_AUTOFIT" ); ++ if( s ) _env.stem_darkening_autofit=bool_val( s ); ++ s=getenv( "INFINALITY_FT_STEM_DARKENING_CFF" ); ++ if( s ) _env.stem_darkening_cff=bool_val( s ); ++ s=getenv( "INFINALITY_FT_STEM_FITTING_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.stem_fitting_strength ); ++ s=getenv( "INFINALITY_FT_CHROMEOS_STYLE_SHARPENING_STRENGTH" ); ++ if( s ) _env.chromeos_style_sharpening_strength=int_val( s, 0, 100 ); ++ s=getenv( "INFINALITY_FT_BRIGHTNESS" ); ++ if( s ) sscanf( s, "%d", &_env.brightness ); ++ s=getenv( "INFINALITY_FT_CONTRAST" ); ++ if( s ) sscanf( s, "%d", &_env.contrast ); ++ s=getenv( "INFINALITY_FT_WINDOWS_STYLE_SHARPENING_STRENGTH" ); ++ if( s ) _env.windows_style_sharpening_strength=int_val( s, 0, 100 ); ++ s=getenv( "INFINALITY_FT_GAMMA_CORRECTION" ); ++ if( s ){ ++ float *f=_env.gamma_correction; ++ sscanf ( s, "%f %f", &f[0], &f[1] ); ++ if( f[1] < 1.0f ) f[1]=1.0f; ++ } ++ s=getenv( "INFINALITY_FT_FRINGE_FILTER_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.fringe_filter_strength ); ++ s=getenv( "INFINALITY_FT_GRAYSCALE_FILTER_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.grayscale_filter_strength ); ++ s=getenv( "INFINALITY_FT_AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.autohint_horizontal_stem_darken_strength ); ++ s=getenv( "INFINALITY_FT_AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH" ); ++ if( s ) sscanf( s, "%d", &_env.autohint_vertical_stem_darken_strength ); ++ s=getenv( "INFINALITY_FT_GLOBAL_EMBOLDEN_X_VALUE" ); ++ if( s ) sscanf( s, "%d", &_env.global_embolden_x_value ); ++ s=getenv( "INFINALITY_FT_GLOBAL_EMBOLDEN_Y_VALUE" ); ++ if( s ) sscanf( s, "%d", &_env.global_embolden_y_value ); ++ s=getenv( "INFINALITY_FT_BOLD_EMBOLDEN_X_VALUE" ); ++ if( s ) sscanf( s, "%d", &_env.bold_embolden_x_value ); ++ s=getenv( "INFINALITY_FT_BOLD_EMBOLDEN_Y_VALUE" ); ++ if( s ) sscanf( s, "%d", &_env.bold_embolden_y_value ); ++ s=getenv( "INFINALITY_FT_FILTER_PARAMS" ); ++ if( s ) { ++ int *f=_env.filter_params; ++ if( sscanf( s, "%d %d %d %d %d", f+1, f+2, f+3, f+4, f+5 )==5 ) ++ f[0]=on; ++ else ++ f[0]=off; /* FIXME: put a warning? */ ++ } ++ /* do the range verifications as in original code */ ++ if ( _env.stem_snapping_sliding_scale > maxp ) ++ _env.stem_snapping_sliding_scale = 0; ++ else if ( _env.stem_snapping_sliding_scale < 0 ) ++ _env.stem_snapping_sliding_scale = 0; ++ if (_env.stem_snapping_sliding_scale < 11 && ++ _env.stem_snapping_sliding_scale > 0 ) ++ _env.stem_snapping_sliding_scale = 11; ++ ++ if ( _env.stem_alignment_strength > 100 ) ++ _env.stem_alignment_strength = 100; ++ else if ( _env.stem_alignment_strength < 0 ) ++ _env.stem_alignment_strength = 0; ++ ++ if ( _env.stem_fitting_strength > 100 ) ++ _env.stem_fitting_strength = 100; ++ else if ( _env.stem_fitting_strength < 0 ) ++ _env.stem_fitting_strength = 0; ++ ++ if ( _env.chromeos_style_sharpening_strength > 100 ) ++ _env.chromeos_style_sharpening_strength = 100; ++ else if ( _env.chromeos_style_sharpening_strength < 0 ) ++ _env.chromeos_style_sharpening_strength = 0; ++ ++ if ( _env.brightness > 100 ) ++ _env.brightness = 100; ++ else if ( _env.brightness < -100 ) ++ _env.brightness = 0; ++ ++ if ( _env.contrast > 100 ) ++ _env.contrast = 100; ++ else if ( _env.contrast < -100 ) ++ _env.contrast = 0; ++ ++ if ( _env.windows_style_sharpening_strength > 100 ) ++ _env.windows_style_sharpening_strength = 100; ++ else if ( _env.windows_style_sharpening_strength < 0 ) ++ _env.windows_style_sharpening_strength = 0; ++ ++ if ( _env.fringe_filter_strength > 100 ) ++ _env.fringe_filter_strength = 100; ++ else if ( _env.fringe_filter_strength < 0 ) ++ _env.fringe_filter_strength = 0; ++ ++ if ( _env.grayscale_filter_strength > 100 ) ++ _env.grayscale_filter_strength = 100; ++ else if ( _env.grayscale_filter_strength < 0 ) ++ _env.grayscale_filter_strength = 0; ++ ++ if ( _env.autohint_horizontal_stem_darken_strength > 100 ) ++ _env.autohint_horizontal_stem_darken_strength = 100; ++ else if ( _env.autohint_horizontal_stem_darken_strength < 0 ) ++ _env.autohint_horizontal_stem_darken_strength = 0; ++ ++ if ( _env.autohint_vertical_stem_darken_strength > 100 ) ++ _env.autohint_vertical_stem_darken_strength = 100; ++ else if ( _env.autohint_horizontal_stem_darken_strength < 0 ) ++ _env.autohint_vertical_stem_darken_strength = 0; ++ ++ if ( _env.global_embolden_x_value > 128 ) ++ _env.global_embolden_x_value = 128; ++ else if ( _env.global_embolden_x_value < -128 ) ++ _env.global_embolden_x_value = -128; ++ ++ if ( _env.global_embolden_y_value > 128 ) ++ _env.global_embolden_y_value = 128; ++ else if ( _env.global_embolden_y_value < -128 ) ++ _env.global_embolden_y_value = -128; ++ ++ if ( _env.bold_embolden_x_value > 128 ) ++ _env.bold_embolden_x_value = 128; ++ else if (_env.bold_embolden_x_value < -128 ) ++ _env.bold_embolden_x_value = -128; ++ ++ if ( _env.bold_embolden_y_value > 128 ) ++ _env.bold_embolden_y_value = 128; ++ else if ( _env.bold_embolden_y_value < -128 ) ++ _env.bold_embolden_y_value = -128; ++ ++ /* point to the combined and checked settings */ ++ ftinf=&_env; ++} +diff -ruN freetype2.orig/src/base/ftinf.h freetype2.new/src/base/ftinf.h +--- freetype2.orig/src/base/ftinf.h 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf.h 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,66 @@ ++#ifndef _FTINF_H_ ++#define _FTINF_H_ ++/* ++ Stem snapping rules ++ (base freetype typedefs assumed already included) ++ */ ++typedef struct ++{ ++ FT_Int stem_width; ++ FT_Int stem_spacing; ++ FT_Int stem_start; ++ FT_Int stem_scaling; ++ FT_Int stem_translating_only; ++ FT_Int stem_translating; ++ float brightness; ++ float contrast; ++ FT_Bool use_100; ++ FT_Bool synth_stems; ++ FT_Bool edge_detection; ++ FT_Bool bearing_correction; ++ FT_Int m; ++} Stem_Data; ++ ++/* ++ Infinality settings ++ */ ++typedef struct ftinf_s { ++ const char *name; ++ int autohint_horizontal_stem_darken_strength; ++ int autohint_snap_stem_height; ++ int autohint_increase_glyph_heights; ++ int autohint_vertical_stem_darken_strength; ++ int bold_embolden_x_value; ++ int bold_embolden_y_value; ++ int brightness; ++ int chromeos_style_sharpening_strength; ++ int contrast; ++ int filter_params[6]; /* 1st one used as existence flag */ ++ int fringe_filter_strength; ++ float gamma_correction[2]; ++ int global_embolden_x_value; ++ int global_embolden_y_value; ++ int grayscale_filter_strength; ++ int stem_alignment_strength; ++ int stem_darkening_autofit; ++ int stem_darkening_cff; ++ int stem_fitting_strength; ++ int stem_snapping_sliding_scale; ++ int use_known_settings_on_selected_fonts; ++ int use_various_tweaks; ++ int windows_style_sharpening_strength; ++} ftinf_t; ++ ++extern FT_Pos infinality_cur_width; /* defined in aflatin.c */ ++ ++extern const ftinf_t *ftinf; /* active settings */ ++ ++extern void ftinf_fill_stem_values( Stem_Data *stem_values, ++ const char *family, int ppem, int use_known ); ++extern void ftinf_get_bc( const char *family, int ppem, ++ float *brightness, float *contrast ); ++ ++/* get values from environment (FIXME: maybe update with using user files) */ ++extern void ftinf_env(); ++ ++#endif +diff -ruN freetype2.orig/src/base/ftinf_rh.c freetype2.new/src/base/ftinf_rh.c +--- freetype2.orig/src/base/ftinf_rh.c 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf_rh.c 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,626 @@ ++/* ANSI-C code produced by gperf version 3.1 */ ++/* Command-line: gperf --output-file=ftinf_rh.c ftinf_rh.gperf */ ++/* Computed positions: -k'1,$' */ ++ ++#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ ++ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ ++ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ ++ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ ++ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ ++ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ ++ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ ++ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ ++ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ ++ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ ++ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ ++ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ ++ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ ++ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ ++ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ ++ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ ++ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ ++ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ ++ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ ++ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ ++ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ ++ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ ++ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) ++/* The character set is not based on ISO-646. */ ++#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." ++#endif ++ ++#line 9 "ftinf_rh.gperf" ++ ++#include <ctype.h> ++static const struct sa_rules_s* _rules_get( const char*str, unsigned len ); ++/* maximum key range = 82, duplicates = 0 */ ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static unsigned int ++_rules_hash (register const char *str, register unsigned int len) ++{ ++ static const unsigned char asso_values[] = ++ { ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 0, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 5, 45, 5, ++ 35, 25, 35, 35, 50, 45, 85, 85, 0, 25, ++ 40, 5, 0, 85, 50, 20, 20, 0, 10, 10, ++ 85, 10, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, ++ 85, 85, 85, 85, 85, 85 ++ }; ++ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; ++} ++ ++#ifdef __GNUC__ ++__inline ++#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ ++__attribute__ ((__gnu_inline__)) ++#endif ++#endif ++const struct sa_rules_s * ++_rules_get (register const char *str, register unsigned int len) ++{ ++ enum ++ { ++ TOTAL_KEYWORDS = 58, ++ MIN_WORD_LENGTH = 3, ++ MAX_WORD_LENGTH = 24, ++ MIN_HASH_VALUE = 3, ++ MAX_HASH_VALUE = 84 ++ }; ++ ++ static const struct sa_rules_s wordlist[] = ++ { ++#line 15 "ftinf_rh.gperf" ++{ .name="---", ++ .synthesize_stems={on, 13, 13, end} ++}, ++#line 253 "ftinf_rh.gperf" ++{ .name="ubuntu", ++ .always_use_100={on, 12, 13, 15, 15, end} ++}, ++#line 31 "ftinf_rh.gperf" ++{ .name="arial", ++ .always_use_100={on, 0, maxp, end}, ++ .edge_detection={on, 11, 11, 13, 13, end}, ++ .spacing={on, 10, 11, 23, 25, 30, end}, ++ .start={on, 11, 18, 23, 30, 30, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, 16, -24, end} ++}, ++#line 87 "ftinf_rh.gperf" ++{ .name="corbel", ++ .stem_translating_only={on, 10, 16, end}, ++ .stem_widths={on, 10, 21, maxp} ++}, ++#line 71 "ftinf_rh.gperf" ++{ .name="canwell", ++ .stem_scaling={on, 13, 0, end} ++}, ++#line 216 "ftinf_rh.gperf" ++{ .name="pragmata", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 67 "ftinf_rh.gperf" ++{ .name="cantarell", ++ .stem_translating_only={on, 11, 0, 12, 0, end}, ++ .stem_widths={on, 10, 22, maxp,} ++}, ++#line 39 "ftinf_rh.gperf" ++{ .name="arimo", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end} ++}, ++#line 207 "ftinf_rh.gperf" ++{ .name="optima", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end}, ++ .stem_scaling={on, 17, 1, end}, ++ .stem_translating_only={on, 10, 0, 11, 0, 12, 0, end} ++}, ++#line 63 "ftinf_rh.gperf" ++{ .name="candara", ++ .stem_scaling={on, 14, 1, 17, 1, end}, ++ .stem_translating_only={on, 10, 16, end} ++}, ++#line 77 "ftinf_rh.gperf" ++{ .name="comfortaa", ++ .stem_widths={on, 10, 19, 22, maxp}, ++ .stem_scaling={on, 11, 0, end} ++}, ++#line 161 "ftinf_rh.gperf" ++{ .name="liberation mono", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 18 "ftinf_rh.gperf" ++{ .name="andale mono", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_scaling={on, 11, 1, end}, ++ .stem_widths={on, 10, 21, maxp,} ++}, ++#line 256 "ftinf_rh.gperf" ++{ .name="verdana", ++ .always_use_100={on, 0, 14, 16, maxp, end}, ++ .stem_scaling={on, 12, 1, 15, 1, end}, ++ .stem_translating_only={on, 8, 16, 15, 16, 14, 32, 18, 32, 19, 24, end} ++}, ++#line 74 "ftinf_rh.gperf" ++{ .name="century gothic", ++ .stem_widths={on, 10, 22, maxp,} ++}, ++#line 91 "ftinf_rh.gperf" ++{ .name="courier new", ++ .always_use_100={on, 12, 12, end}, ++ .edge_detection={on, 10, 12, end}, ++ .m={on, 13, 1, 14, 1, end} ++}, ++#line 23 "ftinf_rh.gperf" ++{ .name="arial narrow", ++ .stem_widths={on, 10, 21, maxp,} ++}, ++#line 185 "ftinf_rh.gperf" ++{ .name="luxi sans", ++ .always_use_100={on, 13, 13, end}, ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++#line 225 "ftinf_rh.gperf" ++{ .name="samba", ++ .stem_scaling={on, 11, 0, end} ++}, ++#line 233 "ftinf_rh.gperf" ++{ .name="tahoma", ++ .always_use_100={on, 11, 11, 14, maxp, end}, ++ .edge_detection={on, 11, 11, end}, ++ .spacing={on, 10, 12, 18, 18, 30, end}, ++ .start={on, 14, 17, 30, 100, 100, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 7, 32, 8, 32, 9, 32, end}, ++}, ++#line 164 "ftinf_rh.gperf" ++{ .name="liberation sans narrow", ++ .stem_widths={on,10, 22, maxp,} ++}, ++#line 81 "ftinf_rh.gperf" ++{ .name="consolas", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 8, 32, 9, 32, end}, ++ .stem_widths={on, 10, 20, maxp,}, ++ .stem_scaling={on, 11, 1, end} ++}, ++#line 203 "ftinf_rh.gperf" ++{ .name="open sans", ++ .stem_translating_only={on, 10, 16, 9, 16, end}, ++ .stem_widths={on, 10, 20, maxp,} ++}, ++#line 167 "ftinf_rh.gperf" ++{ .name="liberation sans", ++ .edge_detection={on, 11, 11, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end}, ++ .stem_widths={on,10, 19, maxp,} ++}, ++#line 193 "ftinf_rh.gperf" ++{ .name="monaco", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 101 "ftinf_rh.gperf" ++{ .name="cousine", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 176 "ftinf_rh.gperf" ++{ .name="lucida grande", ++ .stem_scaling={on, 13, 1, end}, ++ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, ++ .stem_widths={on, 10, 16, sw2pv, maxp}, ++}, ++#line 173 "ftinf_rh.gperf" ++{ .name="lucida console", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 196 "ftinf_rh.gperf" ++{ .name="myriad pro", ++ .stem_scaling={on, 14, 1, 17, 1, end}, ++ .stem_translating_only={on, 10, 16, 11, 0, 9, 16, end} ++}, ++#line 26 "ftinf_rh.gperf" ++{ .name="arial unicode ms", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} ++}, ++#line 213 "ftinf_rh.gperf" ++{ .name="palatino linotype", ++ .edge_detection={on, 0, 100, end} ++}, ++#line 181 "ftinf_rh.gperf" ++{ .name="lucida sans unicode", ++ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, ++ .stem_widths={on,10, 16, sw2pv, maxp,} ++}, ++#line 140 "ftinf_rh.gperf" ++{ .name="futura", ++ .stem_widths={on, 10, 14, sw2pv, maxp,} ++}, ++#line 147 "ftinf_rh.gperf" ++{ .name="georgia", ++ .stem_translating_only={on, 13, 16, 14, 16, 15, 0, end} ++}, ++#line 125 "ftinf_rh.gperf" ++{ .name="freemono", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 200 "ftinf_rh.gperf" ++{ .name="nina", ++ .stem_scaling={on, 11, 0, 12, 0, 13, 0, end} ++}, ++#line 121 "ftinf_rh.gperf" ++{ .name="essential pragmatapro", ++ .always_use_100={on, 0, maxp, end}, ++ .m={on, 13, 0, 14, 0, end} ++}, ++#line 247 "ftinf_rh.gperf" ++{ .name="trebuchet ms", ++ .always_use_100={on, 13, 13, end}, ++ .stem_scaling={on, 13, 0, 17, 0, 20, 1, end}, ++ .stem_translating_only={on, 10, 16, 11, 0, 8, 32, 9, 32, end}, ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++#line 114 "ftinf_rh.gperf" ++{ .name="droid sans mono", ++ .m={on, 12, 0, end} ++}, ++#line 104 "ftinf_rh.gperf" ++{ .name="dejavu sans mono", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 7, 16, 8, 32, 9, 16, end} ++}, ++#line 57 "ftinf_rh.gperf" ++{ .name="calibri", ++ .always_use_100={on, 23, maxp, end}, ++ .stem_scaling={on, 15, 1, 17, 1, 18, 1, end}, ++ .stem_translating_only={on, 10, 16, 15, 0, end}, ++ .stem_widths={on, 1, 10, 19, maxp,} ++}, ++#line 156 "ftinf_rh.gperf" ++{ .name="inconsolata", ++ .stem_scaling={on, 12, 1, 15, 1, end}, ++ .stem_translating_only={on, 10, 24, 9, 32, end}, ++ .stem_widths={on, 10, 23, maxp,}, ++}, ++#line 96 "ftinf_rh.gperf" ++{ .name="courier", ++ .always_use_100={on, 0, maxp, end}, ++ .m={on, 13, 1, 14, 1, end}, ++ .stem_translating_only={on, 13, 16, 15, 0, end} ++}, ++#line 128 "ftinf_rh.gperf" ++{ .name="freesans", ++ .always_use_100={on, 0, maxp, end}, ++ .edge_detection={on, 11, 11, 13, 13, end}, ++ .spacing={on, 10, 12, 18, 18, 30, end}, ++ .start={on, 10, 18, 18, 25, 30, end}, ++ .stem_scaling={on, 16, 0, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 9, 8, end} ++}, ++#line 150 "ftinf_rh.gperf" ++{ .name="gill sans", ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++#line 117 "ftinf_rh.gperf" ++{ .name="droid sans", ++ .always_use_100={on, 12, 12, 15, 15, end}, ++ .stem_translating_only={on, 8, 16, 9, 16, end} ++}, ++#line 108 "ftinf_rh.gperf" ++{ .name="dejavu sans", ++ .always_use_100={on, 10, 14, 16, 17, end}, ++ .m={on, 12, 0, end}, ++ .stem_scaling={on, 12, 1, end}, ++ .stem_translating_only={on, 8, 16, 15, -20, end} ++}, ++#line 219 "ftinf_rh.gperf" ++{ .name="raleway", ++ .stem_scaling={on, 15, 0, end} ++}, ++#line 153 "ftinf_rh.gperf" ++{ .name="helvetica cy", ++ .stem_widths={on, 10, 23, maxp,} ++}, ++#line 228 "ftinf_rh.gperf" ++{ .name="segoe ui", ++ .always_use_100={on, 11, 12, 14, 14, end}, ++ .stem_translating_only={on, 10, 0, 7, 32, 8, 16, 9, 24, end}, ++ .stem_widths={on, 10, 23, maxp,} ++}, ++#line 48 "ftinf_rh.gperf" ++{ .name="bitstream vera sans mono", ++ .always_use_100={on, 0, maxp, end} ++}, ++#line 241 "ftinf_rh.gperf" ++{ .name="times new roman", ++ .always_use_100={on, 14, 14, 16, 16, end}, ++ .bearing_correction={0, 100, end}, ++ .stem_scaling={on, 17, 1, end}, ++ .stem_translating_only={on, 17, 8, end} ++}, ++#line 222 "ftinf_rh.gperf" ++{ .name="rokkitt", ++ .stem_widths={on, 10, 21, maxp,} ++}, ++#line 143 "ftinf_rh.gperf" ++{ .name="garamond", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end} ++}, ++#line 137 "ftinf_rh.gperf" ++{ .name="freeserif", ++ .stem_scaling={on, 13, 1, 17, 1, end} ++}, ++#line 189 "ftinf_rh.gperf" ++{ .name="microsoft sans serif", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} ++}, ++#line 44 "ftinf_rh.gperf" ++{ .name="baskerville", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end} ++}, ++#line 51 "ftinf_rh.gperf" ++{ .name="bitstream vera sans", ++ .always_use_100={on, 10, 14, 16, 17, end}, ++ .m={on, 12, 0, end}, ++ .stem_scaling={on ,12, 1, end}, ++ .stem_translating_only={on, 8, 16, end} ++} ++ }; ++ ++ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) ++ { ++ register int key = _rules_hash (str, len); ++ ++ if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE) ++ { ++ register const struct sa_rules_s *resword; ++ ++ switch (key - 3) ++ { ++ case 0: ++ resword = &wordlist[0]; ++ goto compare; ++ case 3: ++ resword = &wordlist[1]; ++ goto compare; ++ case 7: ++ resword = &wordlist[2]; ++ goto compare; ++ case 8: ++ resword = &wordlist[3]; ++ goto compare; ++ case 9: ++ resword = &wordlist[4]; ++ goto compare; ++ case 10: ++ resword = &wordlist[5]; ++ goto compare; ++ case 11: ++ resword = &wordlist[6]; ++ goto compare; ++ case 12: ++ resword = &wordlist[7]; ++ goto compare; ++ case 13: ++ resword = &wordlist[8]; ++ goto compare; ++ case 14: ++ resword = &wordlist[9]; ++ goto compare; ++ case 16: ++ resword = &wordlist[10]; ++ goto compare; ++ case 17: ++ resword = &wordlist[11]; ++ goto compare; ++ case 18: ++ resword = &wordlist[12]; ++ goto compare; ++ case 19: ++ resword = &wordlist[13]; ++ goto compare; ++ case 21: ++ resword = &wordlist[14]; ++ goto compare; ++ case 23: ++ resword = &wordlist[15]; ++ goto compare; ++ case 24: ++ resword = &wordlist[16]; ++ goto compare; ++ case 26: ++ resword = &wordlist[17]; ++ goto compare; ++ case 27: ++ resword = &wordlist[18]; ++ goto compare; ++ case 28: ++ resword = &wordlist[19]; ++ goto compare; ++ case 29: ++ resword = &wordlist[20]; ++ goto compare; ++ case 30: ++ resword = &wordlist[21]; ++ goto compare; ++ case 31: ++ resword = &wordlist[22]; ++ goto compare; ++ case 32: ++ resword = &wordlist[23]; ++ goto compare; ++ case 33: ++ resword = &wordlist[24]; ++ goto compare; ++ case 34: ++ resword = &wordlist[25]; ++ goto compare; ++ case 35: ++ resword = &wordlist[26]; ++ goto compare; ++ case 36: ++ resword = &wordlist[27]; ++ goto compare; ++ case 37: ++ resword = &wordlist[28]; ++ goto compare; ++ case 38: ++ resword = &wordlist[29]; ++ goto compare; ++ case 39: ++ resword = &wordlist[30]; ++ goto compare; ++ case 41: ++ resword = &wordlist[31]; ++ goto compare; ++ case 43: ++ resword = &wordlist[32]; ++ goto compare; ++ case 44: ++ resword = &wordlist[33]; ++ goto compare; ++ case 45: ++ resword = &wordlist[34]; ++ goto compare; ++ case 46: ++ resword = &wordlist[35]; ++ goto compare; ++ case 48: ++ resword = &wordlist[36]; ++ goto compare; ++ case 49: ++ resword = &wordlist[37]; ++ goto compare; ++ case 52: ++ resword = &wordlist[38]; ++ goto compare; ++ case 53: ++ resword = &wordlist[39]; ++ goto compare; ++ case 54: ++ resword = &wordlist[40]; ++ goto compare; ++ case 58: ++ resword = &wordlist[41]; ++ goto compare; ++ case 59: ++ resword = &wordlist[42]; ++ goto compare; ++ case 60: ++ resword = &wordlist[43]; ++ goto compare; ++ case 61: ++ resword = &wordlist[44]; ++ goto compare; ++ case 62: ++ resword = &wordlist[45]; ++ goto compare; ++ case 63: ++ resword = &wordlist[46]; ++ goto compare; ++ case 64: ++ resword = &wordlist[47]; ++ goto compare; ++ case 69: ++ resword = &wordlist[48]; ++ goto compare; ++ case 70: ++ resword = &wordlist[49]; ++ goto compare; ++ case 71: ++ resword = &wordlist[50]; ++ goto compare; ++ case 72: ++ resword = &wordlist[51]; ++ goto compare; ++ case 74: ++ resword = &wordlist[52]; ++ goto compare; ++ case 75: ++ resword = &wordlist[53]; ++ goto compare; ++ case 76: ++ resword = &wordlist[54]; ++ goto compare; ++ case 77: ++ resword = &wordlist[55]; ++ goto compare; ++ case 78: ++ resword = &wordlist[56]; ++ goto compare; ++ case 81: ++ resword = &wordlist[57]; ++ goto compare; ++ } ++ return 0; ++ compare: ++ { ++ register const char *s = resword->name; ++ ++ if (*str == *s && !strcmp (str + 1, s + 1)) ++ return resword; ++ } ++ } ++ } ++ return 0; ++} ++#line 261 "ftinf_rh.gperf" ++ ++ ++static const sa_rules_t* ++ftinf_rules( const char *name ){ ++ if( name ){ ++ enum { ++ max_wlen=31 ++ }; ++ char buf[max_wlen+1]; ++ int len=strlen( name ); ++ if( len <= max_wlen ){ ++ int i; ++ for( i=0; i<len; ++i ) ++ buf[i]=tolower( name[i] ); ++ buf[len]='\0'; ++ return _rules_get( buf, len ); ++ } ++ } ++ return NULL; ++} ++/* ++ gperf --output-file=ftinf_rh.c ftinf_rh.gperf ++*/ +diff -ruN freetype2.orig/src/base/ftinf_rh.gperf freetype2.new/src/base/ftinf_rh.gperf +--- freetype2.orig/src/base/ftinf_rh.gperf 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf_rh.gperf 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,283 @@ ++%struct-type ++%define slot-name name ++%enum ++%switch=1 ++%readonly-tables ++%omit-struct-type ++%define lookup-function-name _rules_get ++%define hash-function-name _rules_hash ++%{ ++#include <ctype.h> ++static const struct sa_rules_s* _rules_get( const char*str, unsigned len ); ++%} ++struct sa_rules_s; ++%% ++{ .name="---", ++ .synthesize_stems={on, 13, 13, end} ++}, ++{ .name="andale mono", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_scaling={on, 11, 1, end}, ++ .stem_widths={on, 10, 21, maxp,} ++}, ++{ .name="arial narrow", ++ .stem_widths={on, 10, 21, maxp,} ++}, ++{ .name="arial unicode ms", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} ++}, ++{ .name="arial", ++ .always_use_100={on, 0, maxp, end}, ++ .edge_detection={on, 11, 11, 13, 13, end}, ++ .spacing={on, 10, 11, 23, 25, 30, end}, ++ .start={on, 11, 18, 23, 30, 30, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, 16, -24, end} ++}, ++{ .name="arimo", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end} ++}, ++{ .name="baskerville", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end} ++}, ++{ .name="bitstream vera sans mono", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="bitstream vera sans", ++ .always_use_100={on, 10, 14, 16, 17, end}, ++ .m={on, 12, 0, end}, ++ .stem_scaling={on ,12, 1, end}, ++ .stem_translating_only={on, 8, 16, end} ++}, ++{ .name="calibri", ++ .always_use_100={on, 23, maxp, end}, ++ .stem_scaling={on, 15, 1, 17, 1, 18, 1, end}, ++ .stem_translating_only={on, 10, 16, 15, 0, end}, ++ .stem_widths={on, 1, 10, 19, maxp,} ++}, ++{ .name="candara", ++ .stem_scaling={on, 14, 1, 17, 1, end}, ++ .stem_translating_only={on, 10, 16, end} ++}, ++{ .name="cantarell", ++ .stem_translating_only={on, 11, 0, 12, 0, end}, ++ .stem_widths={on, 10, 22, maxp,} ++}, ++{ .name="canwell", ++ .stem_scaling={on, 13, 0, end} ++}, ++{ .name="century gothic", ++ .stem_widths={on, 10, 22, maxp,} ++}, ++{ .name="comfortaa", ++ .stem_widths={on, 10, 19, 22, maxp}, ++ .stem_scaling={on, 11, 0, end} ++}, ++{ .name="consolas", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 8, 32, 9, 32, end}, ++ .stem_widths={on, 10, 20, maxp,}, ++ .stem_scaling={on, 11, 1, end} ++}, ++{ .name="corbel", ++ .stem_translating_only={on, 10, 16, end}, ++ .stem_widths={on, 10, 21, maxp} ++}, ++{ .name="courier new", ++ .always_use_100={on, 12, 12, end}, ++ .edge_detection={on, 10, 12, end}, ++ .m={on, 13, 1, 14, 1, end} ++}, ++{ .name="courier", ++ .always_use_100={on, 0, maxp, end}, ++ .m={on, 13, 1, 14, 1, end}, ++ .stem_translating_only={on, 13, 16, 15, 0, end} ++}, ++{ .name="cousine", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="dejavu sans mono", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 7, 16, 8, 32, 9, 16, end} ++}, ++{ .name="dejavu sans", ++ .always_use_100={on, 10, 14, 16, 17, end}, ++ .m={on, 12, 0, end}, ++ .stem_scaling={on, 12, 1, end}, ++ .stem_translating_only={on, 8, 16, 15, -20, end} ++}, ++{ .name="droid sans mono", ++ .m={on, 12, 0, end} ++}, ++{ .name="droid sans", ++ .always_use_100={on, 12, 12, 15, 15, end}, ++ .stem_translating_only={on, 8, 16, 9, 16, end} ++}, ++{ .name="essential pragmatapro", ++ .always_use_100={on, 0, maxp, end}, ++ .m={on, 13, 0, 14, 0, end} ++}, ++{ .name="freemono", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="freesans", ++ .always_use_100={on, 0, maxp, end}, ++ .edge_detection={on, 11, 11, 13, 13, end}, ++ .spacing={on, 10, 12, 18, 18, 30, end}, ++ .start={on, 10, 18, 18, 25, 30, end}, ++ .stem_scaling={on, 16, 0, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 16, 9, 8, end} ++}, ++{ .name="freeserif", ++ .stem_scaling={on, 13, 1, 17, 1, end} ++}, ++{ .name="futura", ++ .stem_widths={on, 10, 14, sw2pv, maxp,} ++}, ++{ .name="garamond", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end} ++}, ++{ .name="georgia", ++ .stem_translating_only={on, 13, 16, 14, 16, 15, 0, end} ++}, ++{ .name="gill sans", ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++{ .name="helvetica cy", ++ .stem_widths={on, 10, 23, maxp,} ++}, ++{ .name="inconsolata", ++ .stem_scaling={on, 12, 1, 15, 1, end}, ++ .stem_translating_only={on, 10, 24, 9, 32, end}, ++ .stem_widths={on, 10, 23, maxp,}, ++}, ++{ .name="liberation mono", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="liberation sans narrow", ++ .stem_widths={on,10, 22, maxp,} ++}, ++{ .name="liberation sans", ++ .edge_detection={on, 11, 11, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 10, 8, 8, 32, 9, 32, end}, ++ .stem_widths={on,10, 19, maxp,} ++}, ++{ .name="lucida console", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="lucida grande", ++ .stem_scaling={on, 13, 1, end}, ++ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, ++ .stem_widths={on, 10, 16, sw2pv, maxp}, ++}, ++{ .name="lucida sans unicode", ++ .stem_translating_only={on, 13, 24, 14, 24, 8, 16, 9, 16, end}, ++ .stem_widths={on,10, 16, sw2pv, maxp,} ++}, ++{ .name="luxi sans", ++ .always_use_100={on, 13, 13, end}, ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++{ .name="microsoft sans serif", ++ .always_use_100={on, 0, maxp, end}, ++ .stem_translating_only={on, 10, 16, 8, 32, 9, 32, end} ++}, ++{ .name="monaco", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="myriad pro", ++ .stem_scaling={on, 14, 1, 17, 1, end}, ++ .stem_translating_only={on, 10, 16, 11, 0, 9, 16, end} ++}, ++{ .name="nina", ++ .stem_scaling={on, 11, 0, 12, 0, 13, 0, end} ++}, ++{ .name="open sans", ++ .stem_translating_only={on, 10, 16, 9, 16, end}, ++ .stem_widths={on, 10, 20, maxp,} ++}, ++{ .name="optima", ++ .brightness={on, 0, -20, end}, ++ .contrast={on, 0, 25, end}, ++ .stem_scaling={on, 17, 1, end}, ++ .stem_translating_only={on, 10, 0, 11, 0, 12, 0, end} ++}, ++{ .name="palatino linotype", ++ .edge_detection={on, 0, 100, end} ++}, ++{ .name="pragmata", ++ .always_use_100={on, 0, maxp, end} ++}, ++{ .name="raleway", ++ .stem_scaling={on, 15, 0, end} ++}, ++{ .name="rokkitt", ++ .stem_widths={on, 10, 21, maxp,} ++}, ++{ .name="samba", ++ .stem_scaling={on, 11, 0, end} ++}, ++{ .name="segoe ui", ++ .always_use_100={on, 11, 12, 14, 14, end}, ++ .stem_translating_only={on, 10, 0, 7, 32, 8, 16, 9, 24, end}, ++ .stem_widths={on, 10, 23, maxp,} ++}, ++{ .name="tahoma", ++ .always_use_100={on, 11, 11, 14, maxp, end}, ++ .edge_detection={on, 11, 11, end}, ++ .spacing={on, 10, 12, 18, 18, 30, end}, ++ .start={on, 14, 17, 30, 100, 100, end}, ++ .stem_translating={on, 11, 32, end}, ++ .stem_translating_only={on, 7, 32, 8, 32, 9, 32, end}, ++}, ++{ .name="times new roman", ++ .always_use_100={on, 14, 14, 16, 16, end}, ++ .bearing_correction={0, 100, end}, ++ .stem_scaling={on, 17, 1, end}, ++ .stem_translating_only={on, 17, 8, end} ++}, ++{ .name="trebuchet ms", ++ .always_use_100={on, 13, 13, end}, ++ .stem_scaling={on, 13, 0, 17, 0, 20, 1, end}, ++ .stem_translating_only={on, 10, 16, 11, 0, 8, 32, 9, 32, end}, ++ .stem_widths={on, 10, 17, sw2pv, maxp,} ++}, ++{ .name="ubuntu", ++ .always_use_100={on, 12, 13, 15, 15, end} ++}, ++{ .name="verdana", ++ .always_use_100={on, 0, 14, 16, maxp, end}, ++ .stem_scaling={on, 12, 1, 15, 1, end}, ++ .stem_translating_only={on, 8, 16, 15, 16, 14, 32, 18, 32, 19, 24, end} ++}, ++%% ++ ++static const sa_rules_t* ++ftinf_rules( const char *name ){ ++ if( name ){ ++ enum { ++ max_wlen=31 ++ }; ++ char buf[max_wlen+1]; ++ int len=strlen( name ); ++ if( len <= max_wlen ){ ++ int i; ++ for( i=0; i<len; ++i ) ++ buf[i]=tolower( name[i] ); ++ buf[len]='\0'; ++ return _rules_get( buf, len ); ++ } ++ } ++ return NULL; ++} ++/* ++ gperf --output-file=ftinf_rh.c ftinf_rh.gperf ++*/ +diff -ruN freetype2.orig/src/base/ftinf_sh.c freetype2.new/src/base/ftinf_sh.c +--- freetype2.orig/src/base/ftinf_sh.c 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf_sh.c 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,463 @@ ++/* ANSI-C code produced by gperf version 3.1 */ ++/* Command-line: gperf --output-file=ftinf_sh.c ftinf_sh.gperf */ ++/* Computed positions: -k'1,$' */ ++ ++#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ ++ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ ++ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ ++ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ ++ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ ++ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ ++ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ ++ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ ++ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ ++ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ ++ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ ++ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ ++ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ ++ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ ++ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ ++ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ ++ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ ++ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ ++ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ ++ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ ++ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ ++ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ ++ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) ++/* The character set is not based on ISO-646. */ ++#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." ++#endif ++ ++#line 9 "ftinf_sh.gperf" ++ ++#include <ctype.h> ++static const struct ftinf_s* _settings_get( const char*str, unsigned len); ++/* maximum key range = 37, duplicates = 0 */ ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static unsigned int ++_settings_hash (register const char *str, register unsigned int len) ++{ ++ static const unsigned char asso_values[] = ++ { ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 13, ++ 8, 30, 25, 20, 40, 10, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 5, 40, 0, ++ 0, 0, 40, 40, 10, 0, 40, 40, 15, 5, ++ 10, 0, 10, 40, 40, 0, 0, 0, 0, 0, ++ 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, ++ 40, 40, 40, 40, 40, 40 ++ }; ++ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; ++} ++ ++#ifdef __GNUC__ ++__inline ++#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ ++__attribute__ ((__gnu_inline__)) ++#endif ++#endif ++const struct ftinf_s * ++_settings_get (register const char *str, register unsigned int len) ++{ ++ enum ++ { ++ TOTAL_KEYWORDS = 22, ++ MIN_WORD_LENGTH = 3, ++ MAX_WORD_LENGTH = 14, ++ MIN_HASH_VALUE = 3, ++ MAX_HASH_VALUE = 39 ++ }; ++ ++ static const struct ftinf_s wordlist[] = ++ { ++#line 76 "ftinf_sh.gperf" ++{ .name="osx", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .bold_embolden_x_value=16, ++ .brightness=10, ++ .contrast=20, ++ .filter_params={on, 3, 32, 38, 32, 3}, ++ .gamma_correction={1000, 80}, ++ .global_embolden_y_value=8, ++ .grayscale_filter_strength=25, ++}, ++#line 37 "ftinf_sh.gperf" ++{ .name="ipad", ++ .filter_params={on, 0, 0, 100, 0, 0}, ++ .gamma_correction={1000, 80}, ++ .grayscale_filter_strength=100 ++}, ++#line 114 "ftinf_sh.gperf" ++{ .name="shove", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=100, ++ .stem_fitting_strength=100, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++#line 126 "ftinf_sh.gperf" ++{ .name="ubuntu", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=-10, ++ .contrast=15, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={1000, 80}, ++ .use_various_tweaks=true ++}, ++#line 27 "ftinf_sh.gperf" ++{ .name="classic", ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .filter_params={on, 6, 25, 38, 25, 6}, ++ .gamma_correction={0, 100}, ++ .use_various_tweaks=true ++}, ++#line 34 "ftinf_sh.gperf" ++{ .name="disabled", ++ .gamma_correction={0, 100}, ++}, ++#line 100 "ftinf_sh.gperf" ++{ .name="sharpened", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=25, ++ .stem_snapping_sliding_scale=40, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++#line 42 "ftinf_sh.gperf" ++{ .name="infinality", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=25, ++ .stem_snapping_sliding_scale=40, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=5 ++}, ++#line 15 "ftinf_sh.gperf" ++{ .name="custom", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 8, 24, 48, 24, 8}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=75, ++ .stem_fitting_strength=50, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++#line 180 "ftinf_sh.gperf" ++{ .name="vanilla", ++ .filter_params={on, 6, 25, 38, 25, 6}, ++ .gamma_correction={0, 100}, ++}, ++#line 184 "ftinf_sh.gperf" ++{ .name="windows7light", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .contrast=20, ++ .filter_params={on, 20, 25, 38, 25, 05}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 160}, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=100 ++}, ++#line 226 "ftinf_sh.gperf" ++{ .name="windowsxplight", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=20, ++ .contrast=30, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 120}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++#line 64 "ftinf_sh.gperf" ++{ .name="nudge", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_various_tweaks=true, ++}, ++#line 144 "ftinf_sh.gperf" ++{ .name="ultimate2", ++ .filter_params={on, 6, 22, 36, 22, 6}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++#line 197 "ftinf_sh.gperf" ++{ .name="windows7", ++ .filter_params={on, 20, 25, 42, 25, 06}, ++ .fringe_filter_strength=100, ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .windows_style_sharpening_strength=65, ++ .gamma_correction={1000, 120}, ++ .brightness=10, ++ .contrast=20, ++ .use_various_tweaks=true, ++ .autohint_snap_stem_height=100, ++ .use_known_settings_on_selected_fonts=true, ++}, ++#line 210 "ftinf_sh.gperf" ++{ .name="windowsxp", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=10, ++ .contrast=20, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 120}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++#line 56 "ftinf_sh.gperf" ++{ .name="linux", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .gamma_correction={0, 100}, ++ .use_various_tweaks=true ++}, ++#line 135 "ftinf_sh.gperf" ++{ .name="ultimate1", ++ .filter_params={on, 4, 22, 38, 22, 4}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++#line 87 "ftinf_sh.gperf" ++{ .name="push", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=75, ++ .stem_fitting_strength=50, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++#line 171 "ftinf_sh.gperf" ++{ .name="ultimate5", ++ .filter_params={on, 12, 28, 42, 28, 12}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++#line 162 "ftinf_sh.gperf" ++{ .name="ultimate4", ++ .filter_params={on, 10, 25, 37, 25, 10}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++#line 153 "ftinf_sh.gperf" ++{ .name="ultimate3", ++ .filter_params={on, 8, 24, 36, 24, 8}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++} ++ }; ++ ++ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) ++ { ++ register int key = _settings_hash (str, len); ++ ++ if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE) ++ { ++ register const struct ftinf_s *resword; ++ ++ switch (key - 3) ++ { ++ case 0: ++ resword = &wordlist[0]; ++ goto compare; ++ case 1: ++ resword = &wordlist[1]; ++ goto compare; ++ case 2: ++ resword = &wordlist[2]; ++ goto compare; ++ case 3: ++ resword = &wordlist[3]; ++ goto compare; ++ case 4: ++ resword = &wordlist[4]; ++ goto compare; ++ case 5: ++ resword = &wordlist[5]; ++ goto compare; ++ case 6: ++ resword = &wordlist[6]; ++ goto compare; ++ case 7: ++ resword = &wordlist[7]; ++ goto compare; ++ case 8: ++ resword = &wordlist[8]; ++ goto compare; ++ case 9: ++ resword = &wordlist[9]; ++ goto compare; ++ case 10: ++ resword = &wordlist[10]; ++ goto compare; ++ case 11: ++ resword = &wordlist[11]; ++ goto compare; ++ case 12: ++ resword = &wordlist[12]; ++ goto compare; ++ case 14: ++ resword = &wordlist[13]; ++ goto compare; ++ case 15: ++ resword = &wordlist[14]; ++ goto compare; ++ case 16: ++ resword = &wordlist[15]; ++ goto compare; ++ case 17: ++ resword = &wordlist[16]; ++ goto compare; ++ case 19: ++ resword = &wordlist[17]; ++ goto compare; ++ case 21: ++ resword = &wordlist[18]; ++ goto compare; ++ case 26: ++ resword = &wordlist[19]; ++ goto compare; ++ case 31: ++ resword = &wordlist[20]; ++ goto compare; ++ case 36: ++ resword = &wordlist[21]; ++ goto compare; ++ } ++ return 0; ++ compare: ++ { ++ register const char *s = resword->name; ++ ++ if (*str == *s && !strcmp (str + 1, s + 1)) ++ return resword; ++ } ++ } ++ } ++ return 0; ++} ++#line 242 "ftinf_sh.gperf" ++ ++ ++static const ftinf_t* ++ftinf_settings( const char *name ){ ++ if( name ){ ++ enum { ++ max_wlen=31 ++ }; ++ char buf[max_wlen+1]; ++ int len=strlen( name ); ++ if( len <= max_wlen ){ ++ int i; ++ for( i=0; i<len; ++i ) ++ buf[i]=tolower( name[i] ); ++ buf[len]='\0'; ++ return _settings_get( buf, len ); ++ } ++ } ++ return NULL; ++} ++/* ++ gperf --output-file=ftinf_sh.c ftinf_sh.gperf ++*/ +diff -ruN freetype2.orig/src/base/ftinf_sh.gperf freetype2.new/src/base/ftinf_sh.gperf +--- freetype2.orig/src/base/ftinf_sh.gperf 1969-12-31 19:00:00.000000000 -0500 ++++ freetype2.new/src/base/ftinf_sh.gperf 2017-05-23 17:10:16.903407566 -0400 +@@ -0,0 +1,264 @@ ++%struct-type ++%define slot-name name ++%enum ++%switch=1 ++%readonly-tables ++%omit-struct-type ++%define lookup-function-name _settings_get ++%define hash-function-name _settings_hash ++%{ ++#include <ctype.h> ++static const struct ftinf_s* _settings_get( const char*str, unsigned len); ++%} ++struct ftinf_s; ++%% ++{ .name="custom", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 8, 24, 48, 24, 8}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=75, ++ .stem_fitting_strength=50, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++{ .name="classic", ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .filter_params={on, 6, 25, 38, 25, 6}, ++ .gamma_correction={0, 100}, ++ .use_various_tweaks=true ++}, ++{ .name="disabled", ++ .gamma_correction={0, 100}, ++}, ++{ .name="ipad", ++ .filter_params={on, 0, 0, 100, 0, 0}, ++ .gamma_correction={1000, 80}, ++ .grayscale_filter_strength=100 ++}, ++{ .name="infinality", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=25, ++ .stem_snapping_sliding_scale=40, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=5 ++}, ++{ .name="linux", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .gamma_correction={0, 100}, ++ .use_various_tweaks=true ++}, ++{ .name="nudge", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_various_tweaks=true, ++}, ++{ .name="osx", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .bold_embolden_x_value=16, ++ .brightness=10, ++ .contrast=20, ++ .filter_params={on, 3, 32, 38, 32, 3}, ++ .gamma_correction={1000, 80}, ++ .global_embolden_y_value=8, ++ .grayscale_filter_strength=25, ++}, ++{ .name="push", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=75, ++ .stem_fitting_strength=50, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++{ .name="sharpened", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=25, ++ .stem_fitting_strength=25, ++ .stem_snapping_sliding_scale=40, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++{ .name="shove", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_increase_glyph_heights=true, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=100, ++ .stem_fitting_strength=100, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true ++}, ++{ .name="ubuntu", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=-10, ++ .contrast=15, ++ .filter_params={on, 11, 22, 38, 22, 11}, ++ .gamma_correction={1000, 80}, ++ .use_various_tweaks=true ++}, ++{ .name="ultimate1", ++ .filter_params={on, 4, 22, 38, 22, 4}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++{ .name="ultimate2", ++ .filter_params={on, 6, 22, 36, 22, 6}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++{ .name="ultimate3", ++ .filter_params={on, 8, 24, 36, 24, 8}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++{ .name="ultimate4", ++ .filter_params={on, 10, 25, 37, 25, 10}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++{ .name="ultimate5", ++ .filter_params={on, 12, 28, 42, 28, 12}, ++ .fringe_filter_strength=25, ++ .gamma_correction={0, 100}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=25 ++}, ++{ .name="vanilla", ++ .filter_params={on, 6, 25, 38, 25, 6}, ++ .gamma_correction={0, 100}, ++}, ++{ .name="windows7light", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .contrast=20, ++ .filter_params={on, 20, 25, 38, 25, 05}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 160}, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=100 ++}, ++{ .name="windows7", ++ .filter_params={on, 20, 25, 42, 25, 06}, ++ .fringe_filter_strength=100, ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_vertical_stem_darken_strength=25, ++ .windows_style_sharpening_strength=65, ++ .gamma_correction={1000, 120}, ++ .brightness=10, ++ .contrast=20, ++ .use_various_tweaks=true, ++ .autohint_snap_stem_height=100, ++ .use_known_settings_on_selected_fonts=true, ++}, ++{ .name="windowsxp", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=10, ++ .contrast=20, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 120}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++{ .name="windowsxplight", ++ .autohint_horizontal_stem_darken_strength=10, ++ .autohint_snap_stem_height=100, ++ .autohint_vertical_stem_darken_strength=25, ++ .brightness=20, ++ .contrast=30, ++ .filter_params={on, 6, 25, 44, 25, 6}, ++ .fringe_filter_strength=100, ++ .gamma_correction={1000, 120}, ++ .stem_alignment_strength=15, ++ .stem_fitting_strength=15, ++ .stem_snapping_sliding_scale=30, ++ .use_known_settings_on_selected_fonts=true, ++ .use_various_tweaks=true, ++ .windows_style_sharpening_strength=65 ++}, ++%% ++ ++static const ftinf_t* ++ftinf_settings( const char *name ){ ++ if( name ){ ++ enum { ++ max_wlen=31 ++ }; ++ char buf[max_wlen+1]; ++ int len=strlen( name ); ++ if( len <= max_wlen ){ ++ int i; ++ for( i=0; i<len; ++i ) ++ buf[i]=tolower( name[i] ); ++ buf[len]='\0'; ++ return _settings_get( buf, len ); ++ } ++ } ++ return NULL; ++} ++/* ++ gperf --output-file=ftinf_sh.c ftinf_sh.gperf ++*/ diff --git a/0004-Enable-long-PCF-family-names.patch b/0004-Enable-long-PCF-family-names.patch new file mode 100644 index 000000000000..675423a7c472 --- /dev/null +++ b/0004-Enable-long-PCF-family-names.patch @@ -0,0 +1,25 @@ +From 62da6a0f7f5cb77859a793863c386c452411e2a6 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> +Date: Sun, 14 May 2017 18:09:31 +0200 +Subject: [PATCH 4/4] Enable long PCF family names + +--- + include/freetype/config/ftoption.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h +index ebb44acdbbef9a47..0b39b417162707e4 100644 +--- a/include/freetype/config/ftoption.h ++++ b/include/freetype/config/ftoption.h +@@ -865,7 +865,7 @@ FT_BEGIN_HEADER + /* If this option is activated, it can be controlled with the */ + /* `no-long-family-names' property of the pcf driver module. */ + /* */ +-/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ ++#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES + + + /*************************************************************************/ +-- +2.13.0 + diff --git a/0005-freetype-2.5.2-more-demos.patch b/0005-freetype-2.5.2-more-demos.patch new file mode 100644 index 000000000000..e737cb7dafe7 --- /dev/null +++ b/0005-freetype-2.5.2-more-demos.patch @@ -0,0 +1,17 @@ +--- ft2demos-2.5.2/Makefile ++++ ft2demos-2.5.2/Makefile +@@ -296,10 +296,10 @@ else + # The following programs are not compiled automatically; either comment + # out the affected line or use the program name as a Makefile target. + # +- # EXES += ftchkwd +- # EXES += ftmemchk +- # EXES += ftpatchk +- # EXES += fttimer ++ EXES += ftchkwd ++ EXES += ftmemchk ++ EXES += ftpatchk ++ EXES += fttimer + # EXES += testname + + exes: $(EXES:%=$(BIN_DIR_2)/%$E) diff --git a/0005-freetype-2.5.2-more-demos.patch.html b/0005-freetype-2.5.2-more-demos.patch.html new file mode 100644 index 000000000000..5f117fae2cb3 --- /dev/null +++ b/0005-freetype-2.5.2-more-demos.patch.html @@ -0,0 +1,606 @@ + + + + + + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + + + + <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-81a59bf26d881d29286674f6deefe779c444382fff322085b50ba455460ccae5.css" media="all" rel="stylesheet" /> + <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-cc9de0e8eacc2e4692137e919b3627e9d539401c99d4e78b4a344c5fe153899a.css" media="all" rel="stylesheet" /> + + + <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/site-0047c348443848937ad9891b690c4acb6ee0d96263d91e9b1725194e65869e91.css" media="all" rel="stylesheet" /> + + + <meta name="viewport" content="width=device-width"> + + <title>kagayaki/0005-freetype-2.5.2-more-demos.patch at master · julroy67/kagayaki · GitHub</title> + <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> + <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> + <meta property="fb:app_id" content="1401488693436528"> + + + <meta content="https://avatars3.githubusercontent.com/u/198724?v=3&s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="julroy67/kagayaki" property="og:title" /><meta content="https://github.com/julroy67/kagayaki" property="og:url" /><meta content="kagayaki - Kagayaki font configuration for Archlinux (infinality)" property="og:description" /> + + <link rel="assets" href="https://assets-cdn.github.com/"> + + <meta name="pjax-timeout" content="1000"> + + <meta name="request-id" content="E9E8:6851:5E95DE0:8EBF122:5924A7C7" data-pjax-transient> + + + <meta name="selected-link" value="repo_source" data-pjax-transient> + + <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> +<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> + <meta name="google-analytics" content="UA-3769691-2"> + +<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="https://collector.githubapp.com/github-external/browser_event" name="octolytics-event-url" /><meta content="E9E8:6851:5E95DE0:8EBF122:5924A7C7" name="octolytics-dimension-request_id" /> +<meta content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" name="analytics-location" /> + + + + + <meta class="js-ga-set" name="dimension1" content="Logged Out"> + + + + + <meta name="hostname" content="github.com"> + <meta name="user-login" content=""> + + <meta name="expected-hostname" content="github.com"> + <meta name="js-proxy-site-detection-payload" content="NzlhYjY4MTUxMTMxNTQ2ODlhMDkyMmNhZjE3MjkyY2Y1OWVhN2NkYTQxMDRmNDI4NTZkYzI0OGJlOWViNDNjOHx7InJlbW90ZV9hZGRyZXNzIjoiMjQuMTg0Ljc0LjEzMyIsInJlcXVlc3RfaWQiOiJFOUU4OjY4NTE6NUU5NURFMDo4RUJGMTIyOjU5MjRBN0M3IiwidGltZXN0YW1wIjoxNDk1NTc0NDcyLCJob3N0IjoiZ2l0aHViLmNvbSJ9"> + + + <meta name="html-safe-nonce" content="53aae4eb9a06afbd4ed184dd24f9128fed3cefdb"> + + <meta http-equiv="x-pjax-version" content="41915c7ca180787506dc821fa760322f"> + + + + <meta name="description" content="kagayaki - Kagayaki font configuration for Archlinux (infinality)"> + <meta name="go-import" content="github.com/julroy67/kagayaki git https://github.com/julroy67/kagayaki.git"> + + <meta content="198724" name="octolytics-dimension-user_id" /><meta content="julroy67" name="octolytics-dimension-user_login" /><meta content="77477681" name="octolytics-dimension-repository_id" /><meta content="julroy67/kagayaki" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="77477681" name="octolytics-dimension-repository_network_root_id" /><meta content="julroy67/kagayaki" name="octolytics-dimension-repository_network_root_nwo" /> + <link href="https://github.com/julroy67/kagayaki/commits/master.atom" rel="alternate" title="Recent Commits to kagayaki:master" type="application/atom+xml"> + + + <link rel="canonical" href="https://github.com/julroy67/kagayaki/blob/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" data-pjax-transient> + + + <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> + + <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> + + <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000"> + <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico"> + +<meta name="theme-color" content="#1e2327"> + + + + </head> + + <body class="logged-out env-production page-blob"> + + + + + <div class="position-relative js-header-wrapper "> + <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> + <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div> + + + + + + + + <header class="site-header js-details-container Details" role="banner"> + <div class="container-responsive"> + <a class="header-logo-invertocat" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark"> + <svg aria-hidden="true" class="octicon octicon-mark-github" height="32" version="1.1" viewBox="0 0 16 16" width="32"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> + </a> + + <button class="btn-link float-right site-header-toggle js-details-target" type="button" aria-label="Toggle navigation"> + <svg aria-hidden="true" class="octicon octicon-three-bars" height="24" version="1.1" viewBox="0 0 12 16" width="18"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg> + </button> + + <div class="site-header-menu"> + <nav class="site-header-nav"> + <a href="/features" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:features" data-selected-links="/features /features"> + Features +</a> <a href="/business" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/security /business/customers /business"> + Business +</a> <a href="/explore" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship /showcases /explore"> + Explore +</a> <a href="/marketplace" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:marketplace" data-selected-links=" /marketplace"> + Marketplace +</a> <a href="/pricing" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:pricing" data-selected-links="/pricing /pricing/developer /pricing/team /pricing/business-hosted /pricing/business-enterprise /pricing"> + Pricing +</a> </nav> + + <div class="site-header-actions"> + <div class="header-search scoped-search site-scoped-search js-site-search" role="search"> + <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/julroy67/kagayaki/search" class="js-site-search-form" data-scoped-search-url="/julroy67/kagayaki/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> + <label class="form-control header-search-wrapper js-chromeless-input-container"> + <a href="/julroy67/kagayaki/blob/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" class="header-search-scope no-underline">This repository</a> + <input type="text" + class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable" + data-hotkey="s" + name="q" + value="" + placeholder="Search" + aria-label="Search this repository" + data-unscoped-placeholder="Search GitHub" + data-scoped-placeholder="Search" + autocapitalize="off"> + <input type="hidden" class="js-site-search-type-field" name="type" > + </label> +</form></div> + + + <a class="text-bold site-header-link" href="/login?return_to=%2Fjulroy67%2Fkagayaki%2Fblob%2Fmaster%2Fbase%2Ffreetype2-kagayaki%2F0005-freetype-2.5.2-more-demos.patch" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a> + <span class="text-gray">or</span> + <a class="text-bold site-header-link" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a> + </div> + </div> + </div> +</header> + + + </div> + + <div id="start-of-content" class="accessibility-aid"></div> + + <div id="js-flash-container"> +</div> + + + + <div role="main"> + <div itemscope itemtype="http://schema.org/SoftwareSourceCode"> + <div id="js-repo-pjax-container" data-pjax-container> + + + + + <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav"> + <div class="container repohead-details-container"> + + <ul class="pagehead-actions"> + <li> + <a href="/login?return_to=%2Fjulroy67%2Fkagayaki" + class="btn btn-sm btn-with-count tooltipped tooltipped-n" + aria-label="You must be signed in to watch a repository" rel="nofollow"> + <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg> + Watch + </a> + <a class="social-count" href="/julroy67/kagayaki/watchers" + aria-label="5 users are watching this repository"> + 5 + </a> + + </li> + + <li> + <a href="/login?return_to=%2Fjulroy67%2Fkagayaki" + class="btn btn-sm btn-with-count tooltipped tooltipped-n" + aria-label="You must be signed in to star a repository" rel="nofollow"> + <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg> + Star + </a> + + <a class="social-count js-social-count" href="/julroy67/kagayaki/stargazers" + aria-label="5 users starred this repository"> + 5 + </a> + + </li> + + <li> + <a href="/login?return_to=%2Fjulroy67%2Fkagayaki" + class="btn btn-sm btn-with-count tooltipped tooltipped-n" + aria-label="You must be signed in to fork a repository" rel="nofollow"> + <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg> + Fork + </a> + + <a href="/julroy67/kagayaki/network" class="social-count" + aria-label="2 users forked this repository"> + 2 + </a> + </li> +</ul> + + <h1 class="public "> + <svg aria-hidden="true" class="octicon octicon-repo" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg> + <span class="author" itemprop="author"><a href="/julroy67" class="url fn" rel="author">julroy67</a></span><!-- +--><span class="path-divider">/</span><!-- +--><strong itemprop="name"><a href="/julroy67/kagayaki" data-pjax="#js-repo-pjax-container">kagayaki</a></strong> + +</h1> + + </div> + <div class="container"> + +<nav class="reponav js-repo-nav js-sidenav-container-pjax" + itemscope + itemtype="http://schema.org/BreadcrumbList" + role="navigation" + data-pjax="#js-repo-pjax-container"> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/julroy67/kagayaki" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /julroy67/kagayaki" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg> + <span itemprop="name">Code</span> + <meta itemprop="position" content="1"> +</a> </span> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/julroy67/kagayaki/issues" class="js-selected-navigation-item reponav-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /julroy67/kagayaki/issues" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-issue-opened" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg> + <span itemprop="name">Issues</span> + <span class="Counter">1</span> + <meta itemprop="position" content="2"> +</a> </span> + + <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> + <a href="/julroy67/kagayaki/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /julroy67/kagayaki/pulls" itemprop="url"> + <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg> + <span itemprop="name">Pull requests</span> + <span class="Counter">0</span> + <meta itemprop="position" content="3"> +</a> </span> + + <a href="/julroy67/kagayaki/projects" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /julroy67/kagayaki/projects"> + <svg aria-hidden="true" class="octicon octicon-project" height="16" version="1.1" viewBox="0 0 15 16" width="15"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg> + Projects + <span class="Counter" >0</span> +</a> + + + <div class="reponav-dropdown js-menu-container"> + <button type="button" class="btn-link reponav-item reponav-dropdown js-menu-target " data-no-toggle aria-expanded="false" aria-haspopup="true"> + Insights + <svg aria-hidden="true" class="octicon octicon-triangle-down v-align-middle text-gray" height="11" version="1.1" viewBox="0 0 12 16" width="8"><path fill-rule="evenodd" d="M0 5l6 6 6-6z"/></svg> + </button> + <div class="dropdown-menu-content js-menu-content"> + <div class="dropdown-menu dropdown-menu-sw"> + <a class="dropdown-item" href="/julroy67/kagayaki/pulse" data-skip-pjax> + <svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"/></svg> + Pulse + </a> + <a class="dropdown-item" href="/julroy67/kagayaki/graphs" data-skip-pjax> + <svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg> + Graphs + </a> + </div> + </div> + </div> +</nav> + + </div> + </div> + +<div class="container new-discussion-timeline experiment-repo-nav"> + <div class="repository-content"> + + + + +<a href="/julroy67/kagayaki/blob/6101ded718b29f67f38054f2f05b8943c39d78cd/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a> + +<!-- blob contrib key: blob_contributors:v21:4f37a77f4990702bd3d16c885ff74735 --> + +<div class="file-navigation js-zeroclipboard-container"> + +<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left"> + <button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w" + + type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true"> + <i>Branch:</i> + <span class="js-select-button css-truncate-target">master</span> + </button> + + <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax> + + <div class="select-menu-modal"> + <div class="select-menu-header"> + <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg> + <span class="select-menu-title">Switch branches/tags</span> + </div> + + <div class="select-menu-filters"> + <div class="select-menu-text-filter"> + <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags"> + </div> + <div class="select-menu-tabs"> + <ul> + <li class="select-menu-tab"> + <a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a> + </li> + <li class="select-menu-tab"> + <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a> + </li> + </ul> + </div> + </div> + + <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu"> + + <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> + + + <a class="select-menu-item js-navigation-item js-navigation-open selected" + href="/julroy67/kagayaki/blob/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" + data-name="master" + data-skip-pjax="true" + rel="nofollow"> + <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg> + <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text"> + master + </span> + </a> + </div> + + <div class="select-menu-no-results">Nothing to show</div> + </div> + + <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags"> + <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> + + + </div> + + <div class="select-menu-no-results">Nothing to show</div> + </div> + + </div> + </div> +</div> + + <div class="BtnGroup float-right"> + <a href="/julroy67/kagayaki/find/master" + class="js-pjax-capture-input btn btn-sm BtnGroup-item" + data-pjax + data-hotkey="t"> + Find file + </a> + <button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm BtnGroup-item tooltipped tooltipped-s" data-copied-hint="Copied!" type="button">Copy path</button> + </div> + <div class="breadcrumb js-zeroclipboard-target"> + <span class="repo-root js-repo-root"><span class="js-path-segment"><a href="/julroy67/kagayaki"><span>kagayaki</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a href="/julroy67/kagayaki/tree/master/base"><span>base</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/julroy67/kagayaki/tree/master/base/freetype2-kagayaki"><span>freetype2-kagayaki</span></a></span><span class="separator">/</span><strong class="final-path">0005-freetype-2.5.2-more-demos.patch</strong> + </div> +</div> + + + + <div class="commit-tease"> + <span class="float-right"> + <a class="commit-tease-sha" href="/julroy67/kagayaki/commit/637821134845494264d5d79b56b9883a10bd93f0" data-pjax> + 6378211 + </a> + <relative-time datetime="2017-01-04T21:13:18Z">Jan 4, 2017</relative-time> + </span> + <div> + <img alt="@julroy67" class="avatar" height="20" src="https://avatars1.githubusercontent.com/u/198724?v=3&s=40" width="20" /> + <a href="/julroy67" class="user-mention" rel="author">julroy67</a> + <a href="/julroy67/kagayaki/commit/637821134845494264d5d79b56b9883a10bd93f0" class="message" data-pjax="true" title="Fix CJK fonts & change folder organisation">Fix CJK fonts & change folder organisation</a> + </div> + + <div class="commit-tease-contributors"> + <button type="button" class="btn-link muted-link contributors-toggle" data-facebox="#blob_contributors_box"> + <strong>1</strong> + contributor + </button> + + </div> + + <div id="blob_contributors_box" style="display:none"> + <h2 class="facebox-header" data-facebox-id="facebox-header">Users who have contributed to this file</h2> + <ul class="facebox-user-list" data-facebox-id="facebox-description"> + <li class="facebox-user-list-item"> + <img alt="@julroy67" height="24" src="https://avatars3.githubusercontent.com/u/198724?v=3&s=48" width="24" /> + <a href="/julroy67">julroy67</a> + </li> + </ul> + </div> + </div> + +<div class="file"> + <div class="file-header"> + <div class="file-actions"> + + <div class="BtnGroup"> + <a href="/julroy67/kagayaki/raw/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" class="btn btn-sm BtnGroup-item" id="raw-url">Raw</a> + <a href="/julroy67/kagayaki/blame/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b">Blame</a> + <a href="/julroy67/kagayaki/commits/master/base/freetype2-kagayaki/0005-freetype-2.5.2-more-demos.patch" class="btn btn-sm BtnGroup-item" rel="nofollow">History</a> + </div> + + + <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw" + aria-label="You must be signed in to make or propose changes"> + <svg aria-hidden="true" class="octicon octicon-pencil" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg> + </button> + <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw" + aria-label="You must be signed in to make or propose changes"> + <svg aria-hidden="true" class="octicon octicon-trashcan" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg> + </button> + </div> + + <div class="file-info"> + 18 lines (16 sloc) + <span class="file-info-divider"></span> + 460 Bytes + </div> +</div> + + + + <div itemprop="text" class="blob-wrapper data type-diff"> + <table class="highlight tab-size js-file-line-container" data-tab-size="8"> + <tr> + <td id="L1" class="blob-num js-line-number" data-line-number="1"></td> + <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-md">--- ft2demos-2.5.2/Makefile</span></td> + </tr> + <tr> + <td id="L2" class="blob-num js-line-number" data-line-number="2"></td> + <td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-mi1">+++ ft2demos-2.5.2/Makefile</span></td> + </tr> + <tr> + <td id="L3" class="blob-num js-line-number" data-line-number="3"></td> + <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-mdr">@@ -296,10 +296,10 @@</span> else</td> + </tr> + <tr> + <td id="L4" class="blob-num js-line-number" data-line-number="4"></td> + <td id="LC4" class="blob-code blob-code-inner js-file-line"> # The following programs are not compiled automatically; either comment</td> + </tr> + <tr> + <td id="L5" class="blob-num js-line-number" data-line-number="5"></td> + <td id="LC5" class="blob-code blob-code-inner js-file-line"> # out the affected line or use the program name as a Makefile target.</td> + </tr> + <tr> + <td id="L6" class="blob-num js-line-number" data-line-number="6"></td> + <td id="LC6" class="blob-code blob-code-inner js-file-line"> #</td> + </tr> + <tr> + <td id="L7" class="blob-num js-line-number" data-line-number="7"></td> + <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-md"><span class="pl-md">-</span> # EXES += ftchkwd</span></td> + </tr> + <tr> + <td id="L8" class="blob-num js-line-number" data-line-number="8"></td> + <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-md"><span class="pl-md">-</span> # EXES += ftmemchk</span></td> + </tr> + <tr> + <td id="L9" class="blob-num js-line-number" data-line-number="9"></td> + <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-md"><span class="pl-md">-</span> # EXES += ftpatchk</span></td> + </tr> + <tr> + <td id="L10" class="blob-num js-line-number" data-line-number="10"></td> + <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-md"><span class="pl-md">-</span> # EXES += fttimer</span></td> + </tr> + <tr> + <td id="L11" class="blob-num js-line-number" data-line-number="11"></td> + <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-mi1"><span class="pl-mi1">+</span> EXES += ftchkwd</span></td> + </tr> + <tr> + <td id="L12" class="blob-num js-line-number" data-line-number="12"></td> + <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-mi1"><span class="pl-mi1">+</span> EXES += ftmemchk</span></td> + </tr> + <tr> + <td id="L13" class="blob-num js-line-number" data-line-number="13"></td> + <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-mi1"><span class="pl-mi1">+</span> EXES += ftpatchk</span></td> + </tr> + <tr> + <td id="L14" class="blob-num js-line-number" data-line-number="14"></td> + <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-mi1"><span class="pl-mi1">+</span> EXES += fttimer</span></td> + </tr> + <tr> + <td id="L15" class="blob-num js-line-number" data-line-number="15"></td> + <td id="LC15" class="blob-code blob-code-inner js-file-line"> # EXES += testname</td> + </tr> + <tr> + <td id="L16" class="blob-num js-line-number" data-line-number="16"></td> + <td id="LC16" class="blob-code blob-code-inner js-file-line"> </td> + </tr> + <tr> + <td id="L17" class="blob-num js-line-number" data-line-number="17"></td> + <td id="LC17" class="blob-code blob-code-inner js-file-line"> exes: $(EXES:%=$(BIN_DIR_2)/%$E)</td> + </tr> +</table> + + </div> + +</div> + +<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="d-none">Jump to Line</button> +<div id="jump-to-line" style="display:none"> + <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> + <input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus> + <button type="submit" class="btn">Go</button> +</form></div> + + + </div> + <div class="modal-backdrop js-touch-events"></div> +</div> + + </div> + </div> + + </div> + + +<div class="container site-footer-container"> + <div class="site-footer " role="contentinfo"> + <ul class="site-footer-links float-right"> + <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li> + <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li> + <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li> + <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> + <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> + <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> + + </ul> + + <a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub"> + <svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> +</a> + <ul class="site-footer-links"> + <li>© 2017 <span title="0.09880s from unicorn-1174744565-wg4vc">GitHub</span>, Inc.</li> + <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> + <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> + <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> + <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> + <li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li> + </ul> + </div> +</div> + + + + + + <div id="ajax-error-message" class="ajax-error-message flash flash-error"> + <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg> + <button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> + <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg> + </button> + You can't perform that action at this time. + </div> + + + <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/compat-8a4318ffea09a0cdb8214b76cf2926b9f6a0ced318a317bed419db19214c690d.js"></script> + <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-5fe43fc6a9e5120c427334a38e9a7601418682a33981c073851434a7e1005049.js"></script> + <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-24dd080ce0b2b5ef36a73dffb7be5028414316925aeb75db598e246a1970010a.js"></script> + + + + + <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none"> + <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg> + <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span> + <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span> + </div> + <div class="facebox" id="facebox" style="display:none;"> + <div class="facebox-popup"> + <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description"> + </div> + <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> + <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg> + </button> + </div> +</div> + + + </body> +</html> + @@ -1,59 +1,96 @@ # $Id: PKGBUILD 271839 2016-07-13 18:19:11Z andyrtr $ # Maintainer: Jan de Groot <jgc@archlinux.org> -pkgname=freetype2-infinality-ultimate -pkgver=2.7.1 -pkgrel=5 -_patchrel=2017.01.11 +pkgbase=freetype2-infinality-ultimate +pkgname=(freetype2-infinality-ultimate freetype2-demos-infinality) +pkgver=2.8 +pkgrel=1 +_patchrel=2017.05.22 pkgdesc="TrueType font rendering library with Infinality patches and custom settings by bohoomil" arch=(i686 x86_64) license=('GPL') url="http://www.freetype.org/" # adding harfbuzz for improved OpenType features auto-hinting # introduces a cycle dep to harfbuzz depending on freetype wanted by upstream -groups=('infinality-bundle') -depends=('zlib' 'bzip2' 'sh' 'libpng' 'harfbuzz') makedepends=('libx11') -provides=("freetype2=$pkgver" 'freetype2-infinality' 'libfreetype.so') -conflicts=('freetype2' 'freetype2-infinality') install=freetype2.install source=(https://download.savannah.gnu.org/releases/freetype/freetype-${pkgver}.tar.bz2 + https://download.savannah.gnu.org/releases/freetype/freetype-doc-${pkgver}.tar.bz2 + https://download-mirror.savannah.gnu.org/releases/freetype/ft2demos-${pkgver}.tar.bz2 0001-Enable-table-validation-modules.patch - 0002-infinality-${pkgver}-${_patchrel}.patch - freetype2.sh - infinality-settings.sh - xft-settings.sh) - -sha256sums=('3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88' - '6d273254fd925d284e5f66e3861eaef69a4393f34872398b2c93af0d5e15d34e' - '0d7e15b94a20ebcc4c857b062219118ae8f7f50f4c8ad108d1abaca99cdf2304' + 0002-infinality-${pkgver}-${_patchrel}.patch + 0003-inf.patch + 0004-Enable-long-PCF-family-names.patch + 0005-freetype-2.5.2-more-demos.patch + freetype2.sh + infinality-settings.sh + xft-settings.sh) + +sha256sums=('a3c603ed84c3c2495f9c9331fe6bba3bb0ee65e06ec331e0a0fb52158291b40b' + '427ba04d11f450df4bac4c95fec247be1b835ccdcf85d8b081f3f39d31811154' + '2b6ce0d36bcb43fcc8aac07a0287982d855571ee271c3803c768e501f9c1a233' + '515d52643fa47bb96c99792c81d4c05694b4e08494d36c5f81f6d05b61d4f287' + '72329f1efbc0a8a06c072d81f7c75464a2874a3d95e9319d0ab42bf5786fe4de' + '9d65d9c6eee7ecf993bfada7aa5530f09a44dec6796a23f2f186d29c2acf775a' + '7f5aa51a67a68002226f8e869eaa3f6b870c04d19135a14c64a6c355eb023a39' + '36484db4b926ed026e7f32570573493b5a9793a129f08d54383a26d65a6af89b' 'f7f8e09c44f7552c883846e9a6a1efc50377c4932234e74adc4a8ff750606467' '2041947007b27d58101b5aebdf225d79d2c6d64cf8ac07a71c225d9e027578a0' 'a4b3db6882de85304c5e4099fca5832a598607f90e582bcd030df0e9b526cd0b') prepare() { mv freetype-${pkgver} freetype2 + mv ft2demos-${pkgver} freetype2-demos cd freetype2 patch -Np1 -i ../0001-Enable-table-validation-modules.patch patch -Np1 -i ../0002-infinality-${pkgver}-${_patchrel}.patch + patch -Np1 -i ../0003-inf.patch + patch -Np1 -i ../0004-Enable-long-PCF-family-names.patch + cd ../freetype2-demos + # enable more demos + patch -Np1 -i ../0005-freetype-2.5.2-more-demos.patch + + # Suppress RPATH + sed -i '/X11_LIB:%=-R%/d' graph/x11/rules.mk } build() { cd freetype2 ./configure --prefix=/usr --disable-static --with-harfbuzz --with-png make + + # Build demos + cd ../freetype2-demos + make } -#check() { -# cd freetype2 -# make -k check -#} +check() { + cd freetype2 + make -k check +} -package() { +package_freetype2-infinality-ultimate() { + groups=('infinality-bundle') + depends=('zlib' 'bzip2' 'sh' 'libpng' 'harfbuzz') + provides=("freetype2=$pkgver" 'freetype2-infinality' 'libfreetype.so') + conflicts=('freetype2' 'freetype2-infinality') + cd freetype2 make DESTDIR="${pkgdir}" install install -Dm644 ../freetype2.sh "${pkgdir}/etc/profile.d/freetype2.sh" install -Dm644 ../xft-settings.sh "${pkgdir}/etc/X11/xinit/xinitrc.d/xft-settings.sh" install -Dm644 ../infinality-settings.sh "${pkgdir}/etc/X11/xinit/xinitrc.d/infinality-settings.sh" } + +package_freetype2-demos-infinality() { + pkgdesc="Freetype tools and demos" + depends=('freetype2' 'libx11') + conflicts=('freetyp2-demos' 'freetyp2-demos-kagayaki') + + cd freetype2-demos + install -d "${pkgdir}/usr/bin" + for _i in bin/{f,t}t*; do + libtool --mode=install install $_i "${pkgdir}/usr/bin" + done +} |