upload tizen2.0 source 2.0alpha master 2.0_alpha submit/master/20120920.151136
authorBoram Park <boram1288.park@samsung.com>
Tue, 21 Aug 2012 09:04:10 +0000 (18:04 +0900)
committerBoram Park <boram1288.park@samsung.com>
Tue, 21 Aug 2012 09:04:10 +0000 (18:04 +0900)
46 files changed:
ChangeLog [changed mode: 0755->0644]
INSTALL [new file with mode: 0644]
Makefile.am [changed mode: 0755->0644]
NEWS [changed mode: 0755->0644]
README
autogen.sh [deleted file]
configure.ac [changed mode: 0755->0644]
debian/README.source [deleted file]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/copyright [deleted file]
debian/libxft-dev.install [deleted file]
debian/libxft2-udeb.install [deleted file]
debian/libxft2.install [deleted file]
debian/patches/100-libXft-2.1.10-lcd-filter-3.patch [deleted file]
debian/patches/series [deleted file]
debian/rules [deleted file]
debian/watch [deleted file]
debian/xsfbs/repack.sh [deleted file]
debian/xsfbs/xsfbs.mk [deleted file]
debian/xsfbs/xsfbs.sh [deleted file]
include/X11/Xft/Xft.h [changed mode: 0755->0644]
include/X11/Xft/Xft.h.in [changed mode: 0755->0644]
man/Makefile.am [changed mode: 0755->0644]
man/Xft.man [changed mode: 0755->0644]
packaging/100-libXft-2.1.10-lcd-filter-3.patch [deleted file]
packaging/libXft.spec [new file with mode: 0644]
packaging/libxft.spec [deleted file]
src/Makefile.am [changed mode: 0755->0644]
src/xftcolor.c
src/xftcore.c
src/xftdpy.c
src/xftdraw.c
src/xftextent.c
src/xftfont.c
src/xftfreetype.c
src/xftglyphs.c
src/xftinit.c
src/xftint.h
src/xftlist.c
src/xftname.c
src/xftrender.c
src/xftswap.c
src/xftxlfd.c
xft.pc.in [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 6a6d960..cdf9035
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,231 @@
+commit 0847b64af14acefaa7aa86b3cec8632497babe73
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Sat Jun 2 09:36:29 2012 -0700
+
+    libXft 2.3.1
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 1066d2b34db6124fbb0105f5d30f560217fd2a5a
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Sat Mar 10 23:09:21 2012 -0800
+
+    Dead code removal
+
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 84b8b5b46773f9b686d57f28092824b86bffed9d
+Author: Mikael Magnusson <mikachu@gmail.com>
+Date:   Sun Mar 11 02:41:55 2012 +0100
+
+    Fixup for 550b2f76401c2 which broke bold fonts
+
+    The commit removed the line
+    AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_GlyphSlot_Embolden)
+    but failed to remove the #if lines that this commit removes, resulting
+    in that code never being executed.
+
+    Fixes: https://bugs.freedesktop.org/attachment.cgi?id=58280
+
+    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit b543efafefb71fb1f87ee9c1c261e86c8ca29e76
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Wed Mar 7 20:12:27 2012 -0800
+
+    libXft 2.3.0
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 301029c9a1d9429009eaf08bb726357d4e94780d
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Mon Oct 24 23:39:25 2011 -0700
+
+    Fix undefined ftbit in XftFontLoadGlyphs
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=42173
+
+    Fixes regression from: 6f1d7bcdd461b1f6cc64370793f52d7c170187d0
+
+    Fixed by examining original patch before rebase from:
+    https://bugs.freedesktop.org/show_bug.cgi?id=29151
+
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 550b2f76401c292d982700b60326e0a837e391b4
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Mon Oct 10 13:00:35 2011 -0700
+
+    Remove fontconfig and freetype ifdef-fu and instead require non-ancinet versions of both
+
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 21a59c10803582c8f90d3b5f32e8f0240c050adf
+Author: Tom \"spot\" Callaway <tcallawa@redhat.com>
+Date:   Thu Oct 6 15:58:29 2011 -0400
+
+    compiler noise cleanups related to subpixel LCD support
+
+    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 6f1d7bcdd461b1f6cc64370793f52d7c170187d0
+Author: Tom \"spot\" Callaway <tcallawa@redhat.com>
+Date:   Thu Oct 6 15:41:10 2011 -0400
+
+    Subpixel LCD text rendering improvements
+
+    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 0e0efb8b26a241f8370053bc3686f7abc69357c1
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Mon Sep 26 15:41:49 2011 -0700
+
+    Add const attributes to fix gcc -Wwrite-strings warnings
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
+
+commit df353cc7fe40fadc6e48586e95a0cbf1d2e33cfa
+Author: Ross Burton <ross@burtonini.com>
+Date:   Sun Sep 25 17:47:15 2011 -0700
+
+    constify some bits
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=2658
+
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit 5cac9764a55c96fee64f63748c054be81fcaadf4
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Sun Sep 25 11:11:01 2011 -0700
+
+    Remove dependency on libXext
+
+    ldd -r -u reports:
+    Unused direct dependencies:
+         .../lib/libXext.so.6
+
+    Reported-by: Gaetan Nadon <memsize@videotron.ca>
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+
+commit d39337048d31245b69e1b72b98beb957f52ba4e6
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Sat Sep 24 21:05:27 2011 -0700
+
+    Remove broken fallback on non-pkg-config search for libXrender
+
+    https://bugs.freedesktop.org/show_bug.cgi?id=5425
+
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
+    Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 3ad77b636978746786546ab2b779730997839f63
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Fri Sep 16 22:42:59 2011 -0700
+
+    Strip trailing whitespace
+
+    Performed with: find * -type f | xargs perl -i -p -e 's{[ \t]+$}{}'
+    git diff -w & git diff -b show no diffs from this change
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit d274ffc91b22bb8f3a2447237491cbe04f2ee0c3
+Author: Derek Wang <Derek.Wang@sun.com>
+Date:   Wed Feb 2 22:15:13 2011 -0800
+
+    XftGlyphFontSpecCore: check to make sure glyphs are in range
+
+    This fixes a crash reported when selecting "View Page Source" in Mozilla
+    on Solaris 10, due to invalid parameters being given to XPutImage.
+
+    http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6261221
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 652d9b47fc902e12c8e28481742c382676f1d035
+Author: Jay Cotton <jay.cotton@oracle.com>
+Date:   Wed Feb 2 22:09:34 2011 -0800
+
+    XftDrawSrcPicture: fail if info->solidFormat is NULL
+
+    Fixed a core dump in x11perf render tests when a driver was returning
+    incorrect information due to a bug in the driver.
+
+    http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6872780
+
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 1e03ac60d1221d5c16b7f4797ab0c461f13b123a
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Wed Feb 2 11:43:42 2011 -0500
+
+    config: comment, minor upgrade, quote and layout configure.ac
+
+    Group statements per section as per Autoconf standard layout
+    Quote statements where appropriate.
+    Autoconf recommends not using dnl instead of # for comments
+
+    Use AC_CONFIG_FILES to replace the deprecated AC_OUTPUT with parameters.
+    Add AC_CONFIG_SRCDIR([Makefile.am])
+
+    This helps automated maintenance and release activities.
+    Details can be found in http://wiki.x.org/wiki/NewModuleGuidelines
+
+commit bcc24bf5bd4141cf5ca62bdd2c52d971ea88d421
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Fri Jan 28 19:41:37 2011 -0500
+
+    config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS
+
+    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
+
+commit 791d10dbac030d6a164f54a7adb9b6c816c68930
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Fri Jan 28 16:34:14 2011 -0500
+
+    config: remove unrequired AC_CONFIG_AUX_DIR
+
+    The default location for the generation of configuation files is the current
+    package root directory. These files are config.* and friends.
+
+    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
+
+commit 28d61e969800820b1483d41445befcd1bf35fa85
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Thu Jan 27 16:12:55 2011 -0500
+
+    config: remove already included AC_PROG_SED
+
+    Use AC_PROG_SED now supplied by XORG_DEFAULT_OPTIONS
+    Use the appropriate platform version of sed
+
+    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
+
+commit 0e3c21ab0aeb99ca76ac2535f4618cb1949b7f40
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Thu Jan 27 16:09:03 2011 -0500
+
+    config: remove AC_PROG_CC as it overrides AC_PROG_C_C99
+
+    XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls
+    AC_PROG_C_C99. This sets gcc with -std=gnu99.
+    If AC_PROG_CC macro is called afterwards, it resets CC to gcc.
+
+    Reported-by: Roberto Branciforti <rbbrnc@gmail.com>
+    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
+
+commit 9c23173cf1ff861bdb8538e3aa21ec509b0d87d8
+Author: Roberto Branciforti <rbbrnc@gmail.com>
+Date:   Mon Jan 17 22:32:15 2011 +0100
+
+    libXft: Fix variable assignment.
+
+    Signed-off-by: Roberto Branciforti <rbbrnc@gmail.com>
+    Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net>
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
 commit b9d4a2b5be71ca883f5a876500edb0a1a9add0cf
 Author: Alan Coopersmith <alan.coopersmith@oracle.com>
 Date:   Fri Oct 29 16:21:18 2010 -0700
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..c9fd2c0
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,290 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008 Free Software Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *Note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/NEWS b/NEWS
old mode 100755 (executable)
new mode 100644 (file)
index 01e6dbe..b547c78
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,22 @@
                        Xft
                X FreeType library
-                 Version 2.2.0
-                   2010-10-29
+                 Version 2.3.0
+                   2012-03-07
 
-Xft version 2.1 is the first stand alone release of Xft, a library that
+Xft version 2.1 was the first stand alone release of Xft, a library that
 connects X applications with the FreeType font rasterization library. Xft
 uses fontconfig to locate fonts so it has no configuration files.
 
+Version 2.3.0
+
+Subpixel LCD text rendering improvements
+
+Dropped support for versions of freetype2, fontconfig & libXrender that
+pre-dated pkgconfig support.
+
+Raised minimum required versions to freetype2 2.1.6 & fontconfig 2.5.92.
+
+
 Version 2.2.0
 
 Dropped xft-config, now that pkg-config is well established.
diff --git a/README b/README
index b1097eb..3dede12 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
                        Xft
                X FreeType library
 
-Xft version 2.1 is the first stand alone release of Xft, a library that
+Xft version 2.1 was the first stand alone release of Xft, a library that
 connects X applications with the FreeType font rasterization library. Xft
 uses fontconfig to locate fonts so it has no configuration files.
 
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100644 (file)
index 904cd67..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
old mode 100755 (executable)
new mode 100644 (file)
index f35eb91..dd415ef
@@ -1,51 +1,49 @@
-dnl 
-dnl  Copyright Â© 2003 Keith Packard, Noah Levitt
-dnl 
-dnl  Permission to use, copy, modify, distribute, and sell this software and its
-dnl  documentation for any purpose is hereby granted without fee, provided that
-dnl  the above copyright notice appear in all copies and that both that
-dnl  copyright notice and this permission notice appear in supporting
-dnl  documentation, and that the name of Keith Packard not be used in
-dnl  advertising or publicity pertaining to distribution of the software without
-dnl  specific, written prior permission.  Keith Packard makes no
-dnl  representations about the suitability of this software for any purpose.  It
-dnl  is provided "as is" without express or implied warranty.
-dnl 
-dnl  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-dnl  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-dnl  PERFORMANCE OF THIS SOFTWARE.
-dnl
-dnl Process this file with autoconf to create configure.
+#
+#  Copyright Â© 2003 Keith Packard, Noah Levitt
+#
+#  Permission to use, copy, modify, distribute, and sell this software and its
+#  documentation for any purpose is hereby granted without fee, provided that
+#  the above copyright notice appear in all copies and that both that
+#  copyright notice and this permission notice appear in supporting
+#  documentation, and that the name of Keith Packard not be used in
+#  advertising or publicity pertaining to distribution of the software without
+#  specific, written prior permission.  Keith Packard makes no
+#  representations about the suitability of this software for any purpose.  It
+#  is provided "as is" without express or implied warranty.
+#
+#  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+#  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+#  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+#  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+#  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+#  PERFORMANCE OF THIS SOFTWARE.
+#
 
+# Initialize Autoconf
 AC_PREREQ([2.60])
-
-dnl
-dnl This is the package version number, not the shared library
-dnl version.  This version number will be substituted into Xft.h
-dnl Please bump the minor library number at each release as well.
-dnl
-AC_INIT([libXft], [2.2.0],
+#
+# This is the package version number, not the shared library
+# version.  This version number will be substituted into Xft.h
+# Please bump the minor library number at each release as well.
+#
+AC_INIT([libXft], [2.3.1],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXft])
-AC_CONFIG_AUX_DIR(.)
+AC_CONFIG_SRCDIR([Makefile.am])
+AC_CONFIG_HEADERS([config.h])
 
+# Initialize Automake
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
 
+# Initialize libtool
+AC_PROG_LIBTOOL
+
 # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
 m4_ifndef([XORG_MACROS_VERSION],
           [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
 XORG_MACROS_VERSION(1.8)
 XORG_DEFAULT_OPTIONS
-AM_CONFIG_HEADER(config.h)
-
-# checks for progs
-AC_PROG_CC
-AC_PROG_LIBTOOL
-AC_PROG_SED
 
 # Set library version for Xft.h from package version set in AC_INIT
 # copied from PACKAGE_VERSION_* settings in XORG_VERSION
@@ -66,61 +64,13 @@ AC_SUBST([XFT_LT_VERSION])
 #
 # Check for Xrender
 #
-PKG_CHECK_MODULES(XRENDER, xrender >= 0.8.2, [xrender_found_with_pkgconfig=yes], 
-                  [xrender_found_with_pkgconfig=no])
-case "$xrender_found_with_pkgconfig" in
-no)
-       PKG_CHECK_MODULES(XRENDER, xrender >= 0, [old_xrender_found_with_pkgconfig=yes], 
-                         [old_xrender_found_with_pkgconfig=no])
-       case "$old_xrender_found_with_pkgconfig" in
-       yes)
-               XRENDER_LIBS="$XRENDER_LIBS -lXext -lX11"
-               ;;
-       *)
-               # checks for X
-               AC_PATH_X
-
-               XRENDER_CFLAGS="-I$x_includes"
-               XRENDER_LIBS="-L$x_libraries -lXrender -lXext -lX11"
-
-               saved_CPPFLAGS="$CPPFLAGS"
-               CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
-               AC_CHECK_HEADERS([X11/extensions/Xrender.h], [], [AC_MSG_ERROR([Xrender.h not found.])])
-               CPPFLAGS="$saved_CPPFLAGS"
-
-               saved_LIBS="$LIBS"
-               LIBS="$LIBS $XRENDER_LIBS"
-               AC_CHECK_FUNCS([XRenderFindStandardFormat], [], [AC_MSG_ERROR([libXrender not found or too old.])])
-               LIBS="$saved_LIBS"
-               ;;
-       esac
-        ;;
-esac
+PKG_CHECK_MODULES(XRENDER, xrender >= 0.8.2 x11)
 
 # Check freetype configuration
-AC_ARG_WITH(freetype-config, [  --with-freetype-config=PROG   Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=auto)
-       
-if test "$freetype_config" = "auto"; then
-       PKG_CHECK_MODULES(FREETYPE, freetype2, 
-               freetype_config=no, freetype_config=yes)
-fi
-
-if test "$freetype_config" = "yes"; then 
-       AC_PATH_PROG(ft_config,freetype-config,no)
-       if test "$ft_config" = "no"; then
-               AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/])
-       fi
-else
-       ft_config="$freetype_config"
-fi
-
-if test "$freetype_config" != "no"; then       
-       FREETYPE_CFLAGS="`$ft_config --cflags`"
-       FREETYPE_LIBS="`$ft_config --libs`"
-fi
+PKG_CHECK_MODULES(FREETYPE, freetype2 >= 2.1.6)
 
 # Check fontconfig configuration
-PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2)
+PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.5.92)
 
 AC_SUBST(XRENDER_CFLAGS)
 AC_SUBST(XRENDER_LIBS)
@@ -129,27 +79,12 @@ AC_SUBST(FREETYPE_LIBS)
 AC_SUBST(FONTCONFIG_CFLAGS)
 AC_SUBST(FONTCONFIG_LIBS)
 
-fontconfig_save_libs="$LIBS"
-fontconfig_save_cflags="$CFLAGS"
-LIBS="$LIBS $FREETYPE_LIBS"
-CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
-AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_GlyphSlot_Embolden)
-AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
-               HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
-               HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
-[#include <ft2build.h>
-#include FT_FREETYPE_H])
-AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
-                  [FT_Bitmap_Size structure includes y_ppem field])
-
-LIBS="$fontconfig_save_libs"
-CFLAGS="$fontconfig_save_cflags"
-
 if test "$VERSION" = "" ; then
        VERSION=$PACKAGE_VERSION;
 fi
 
-AC_OUTPUT([Makefile
-          xft.pc
-          src/Makefile
-          man/Makefile])
+AC_CONFIG_FILES([Makefile
+               xft.pc
+               src/Makefile
+               man/Makefile])
+AC_OUTPUT
diff --git a/debian/README.source b/debian/README.source
deleted file mode 100644 (file)
index 34ab4bf..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-------------------------------------------------------
-Quick Guide To Patching This Package For The Impatient
-------------------------------------------------------
-
-1. Make sure you have quilt installed
-2. Unpack the package as usual with "dpkg-source -x"
-3. Run the "patch" target in debian/rules
-4. Create a new patch with "quilt new" (see quilt(1))
-5. Edit all the files you want to include in the patch with "quilt edit" 
-   (see quilt(1)).
-6. Write the patch with "quilt refresh" (see quilt(1))
-7. Run the "clean" target in debian/rules
-
-Alternatively, instead of using quilt directly, you can drop the patch in to 
-debian/patches and add the name of the patch to debian/patches/series.
-
-------------------------------------
-Guide To The X Strike Force Packages
-------------------------------------
-
-The X Strike Force team maintains X packages in git repositories on
-git.debian.org in the pkg-xorg subdirectory. Most upstream packages
-are actually maintained in git repositories as well, so they often
-just need to be pulled into git.debian.org in a "upstream-*" branch.
-Otherwise, the upstream sources are manually installed in the Debian
-git repository.
-
-The .orig.tar.gz upstream source file could be generated this
-"upstream-*" branch in the Debian git repository but it is actually
-copied from upstream tarballs directly.
-
-Due to X.org being highly modular, packaging all X.org applications
-as their own independent packages would have created too many Debian
-packages. For this reason, some X.org applications have been grouped
-into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils,
-x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils.
-Most packages, including the X.org server itself and all libraries
-and drivers are, however maintained independently.
-
-The Debian packaging is added by creating the "debian-*" git branch
-which contains the aforementioned "upstream-*" branch plus the debian/
-repository files.
-When a patch has to be applied to the Debian package, two solutions
-are involved:
-* If the patch is available in one of the upstream branches, it
-  may be git'cherry-picked into the Debian repository. In this
-  case, it appears directly in the .diff.gz.
-* Otherwise, the patch is added to debian/patches/ which is managed
-  with quilt as documented in /usr/share/doc/quilt/README.source.
-
-quilt is actually invoked by the Debian X packaging through a larger
-set of scripts called XSFBS. XSFBS brings some other X specific
-features such as managing dependencies and conflicts due to the video
-and input driver ABIs.
-XSFBS itself is maintained in a separate repository at
-  git://git.debian.org/pkg-xorg/xsfbs.git
-and it is pulled inside the other Debian X repositories when needed.
-
-The XSFBS patching system requires a build dependency on quilt. Also
-a dependency on $(STAMP_DIR)/patch has to be added to debian/rules
-so that the XSFBS patching occurs before the actual build. So the
-very first target of the build (likely the one running autoreconf)
-should depend on $(STAMP_DIR)/patch. It should also not depend on
-anything so that parallel builds are correctly supported (nothing
-should probably run while patching is being done). And finally, the
-clean target should depend on the xsfclean target so that patches
-are unapplied on clean.
-
-When the upstream sources contain some DFSG-nonfree files, they are
-listed in text files in debian/prune/ in the "debian-*" branch of
-the Debian repository. XSFBS' scripts then take care of removing
-these listed files during the build so as to generate a modified
-DFSG-free .orig.tar.gz tarball.
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100755 (executable)
index 16d61c2..0000000
+++ /dev/null
@@ -1,829 +0,0 @@
-libxft (1:2.2.0-5slp2) unstable; urgency=low
-
-  * upgrade the version due to the change of fontconfig
-  * Git: 165.213.180.234:slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.2.0-5slp2
-
- -- SooChan Lim <sc1.lim@samsung.com>  Mon, 11 Apr 2011 11:05:56 +0900
-
-libxft (1:2.2.0-4slp2) unstable; urgency=low
-
-  * [X11R7.6] upgrade package 
-  * Git: 165.213.180.234:slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.2.0-4slp2
-
- -- SooChan Lim <sc1.lim@samsung.com>  Sun, 06 Mar 2011 11:15:04 +0900
-
-libxft (1:2.2.0-3slp2) unstable; urgency=low
-
-  * [X11R7.6] Change libxft2.install file to install libXft.so
-  * Git: 165.213.180.234:slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.2.0-3slp2
-
- -- Doyoun Kang <doyoun.kang@samsung.com>  Sat, 05 Mar 2011 10:07:39 +0900
-
-libxft (1:2.2.0-2slp2) unstable; urgency=low
-
-  * [X11R7.6] upgrade package
-  * Git: 165.213.180.234:slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.2.0-2slp2
-
- -- SooChan Lim <sc1.lim@samsung.com>  Fri, 04 Mar 2011 22:38:07 +0900
-
-libxft (1:2.2.0-1slp2) unstable; urgency=low
-
-  * [X11R7.6] upgrade package
-  * Git: 165.213.180.234:slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.2.0-1slp2
-
- -- SooChan Lim <sc1.lim@samsung.com>  Fri, 07 Jan 2011 15:26:58 +0900
-
-xft (2.1.14-2ubuntu1) unstable; urgency=low
-
-  * Merge from Debian, remaining changes:
-    - Add patch 100-libXft-2.1.10-lcd-filter-3, use new FreeType LCD colour
-      filtering features, with additional modification that the specific LCD
-      Filter can be changed; LP #305399.
-
- -- Loïc Minier <loic.minier@ubuntu.com>  Sun, 06 Jun 2010 15:41:54 +0200
-
-xft (2.1.14-2) unstable; urgency=low
-
-  [ Julien Cristau ]
-  * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no
-    good reason.  Thanks, Colin Watson!
-  * Remove myself from Uploaders
-
-  [ Cyril Brulebois ]
-  * Add udeb needed for the graphical installer: libxft2-udeb.
-  * Version/Bump some B-D to make sure the udeb gets its dependencies on
-    the (recently-added) udebs rather than on the libraries:
-     - libx11-dev
-     - libxrender-dev
-  * Bump Standards-Version from 3.8.3 to 3.8.4 (no changes needed).
-  * Add ${misc:Depends} to non-udeb binaries, and wrap Depends.
-  * Add myself to Uploaders.
-
- -- Cyril Brulebois <kibi@debian.org>  Thu, 11 Mar 2010 02:33:50 +0100
-
-xft (2.1.14-1ubuntu1) unstable; urgency=low
-
-  * Merge from Debian unstable, remaining chnages:
-    - patches/100-libXft-2.1.10-lcd-filter-3.patch:
-      + Use new FreeType LCD colour filtering features, with additional
-        modification that the specific LCD Filter can be changed
-        (LP: #305399).
-  * Renumbered the patch to follow our unwritten policy.
-  * Drop patch 002_embeddedbitmap_property.patch, included upstream.
-
- -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 04 Dec 2009 16:02:38 +0200
-
-xft (2.1.14-1) unstable; urgency=low
-
-  [ Timo Aaltonen ]
-  * New upstream release.
-  * Bump the build-dep on xutils-dev (>= 1:7.5~1).
-  * Bump Standards-Version to 3.8.3 (README.source added).
-  * Drop pre-dependency on x11-common from libxft-dev. This was needed
-    for upgrades from sarge.
-  * Move -dbg package to section debug.
-
- -- Julien Cristau <jcristau@debian.org>  Thu, 03 Dec 2009 14:40:25 +0100
-
-xft (2.1.13-3ubuntu1) jaunty; urgency=low
-
-  * Merge from debian unstable, remaining changes:
-    - debian/patches/002_embeddedbitmap_property.patch:
-      + Allow "embeddedbitmap" property in fontconfig.
-    - debian/patches/libXft-2.1.10-lcd-filter-3.patch:
-      + Use new FreeType LCD colour filtering features, with additional
-        modification that the specific LCD Filter can be changed
-        (LP: #305399).
-
- -- Bryce Harrington <bryce@ubuntu.com>  Thu, 26 Feb 2009 13:40:39 -0800
-
-xft (2.1.13-3) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Julien Cristau <jcristau@debian.org>  Sun, 15 Feb 2009 22:07:06 +0100
-
-xft (2.1.13-2ubuntu1) jaunty; urgency=low
-
-  * Merge from debian unstable, remaining changes:
-    - debian/patches/002_embeddedbitmap_property.patch:
-      + Allow "embeddedbitmap" property in fontconfig.
-    - debian/patches/libXft-2.1.10-lcd-filter-3.patch:
-      + Use new FreeType LCD colour filtering features, with additional
-        modification that the specific LCD Filter can be changed
-        (LP: #305399).
-
- -- Anders Kaseorg <andersk@mit.edu>  Mon, 22 Dec 2008 00:50:15 -0500
-
-xft (2.1.13-2) experimental; urgency=low
-
-  * Delete obsolete libxft-dev preinst (closes: #491633).
-
- -- Julien Cristau <jcristau@debian.org>  Sat, 26 Jul 2008 23:02:21 +0200
-
-libxft (1:2.1.13-10slp2) unstable; urgency=low
-
-  * modify autogen.sh
-  * Git: 165.213.180.234:/git/slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.1.13-10slp2
-
- -- SooChan Lim <sc1.lim@samsung.com>  Fri, 03 Dec 2010 17:26:09 +0900
-
-libxft (1:2.1.13-9slp2) unstable; urgency=low
-  
-  * Add libxft2-dbg package
-  * Git: 165.213.180.234:/git/slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.1.13-9slp2
-
- -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 22 Nov 2010 14:37:25 +0900
-
-libxft (1:2.1.13-8slp2) unstable; urgency=low
-
-  * add --as-needed option
-  * Git: 165.213.180.234:/git/slp/pkgs/xorg/lib/libxft
-  * Tag: libxft_2.1.13-8slp2 
-
- -- SooChan Lim <sc1.lim@samsung.com>  Sat, 20 Nov 2010 14:32:29 +0900
-
-libxft (1:2.1.13-7slp2) unstable; urgency=low
-
-  * modify the package name 
-
- -- SooChan Lim <sc1.lim@samsung.com>  Thu, 25 Mar 2010 17:51:55 +0900
-
-libxft (1:2.1.13-6) unstable; urgency=low
-
-  * Install .la files
-
- -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 07 Dec 2009 10:29:42 +0900
-
-libxft (1:2.1.13-5) unstable; urgency=low
-
-  * Install *.so file
-
- -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 20 Nov 2009 16:55:57 +0900
-
-libxft (1:2.1.13-4) unstable; urgency=low
-
-  * Remove .git folder
-
- -- DoHyun Pyun <dh79.pyun@samsung.com>  Fri, 20 Nov 2009 16:00:08 +0900
-
-libxft (1:2.1.13-3) unstable; urgency=low
-
-  * Change the copywrite
-
- -- DoHyun Pyun <dh79.pyun@samsung.com>  Tue, 17 Nov 2009 15:53:20 +0900
-
-libxft (1:2.1.13-2) unstable; urgency=low
-
-  * Change rules file (About dh_makdeshlibs)
-
- -- DoHyun Pyun <dh79.pyun@samsung.com>  Mon, 16 Nov 2009 14:59:38 +0900
-
-libxft (1:2.1.13-1) unstable; urgency=low
-
-  * Initial Release.
-
- -- DoHyun Pyun <dh79.pyun@samsung.com>  Thu, 12 Nov 2009 15:52:12 +0900
-
-xft (2.1.13-1) experimental; urgency=low
-
-  [ Brice Goglin ]
-  * Update upstream URL in debian/copyright.
-
-  [ Julien Cristau ]
-  * New upstream release.
-  * Stop handling nostrip explicitly in debian/rules (dh_strip does it
-    already), and allow parallel builds using sample code from policy.
-  * Switch to running autoreconf at build time; build-depend on automake,
-    libtool and xutils-dev.
-
- -- Julien Cristau <jcristau@debian.org>  Sat, 19 Jul 2008 16:30:18 +0200
-
-xft (2.1.12-3ubuntu2) jaunty; urgency=low
-
-  * Fix build failure with new fontconfig, integrating the lcd-filter patch.
-
- -- Matthias Klose <doko@ubuntu.com>  Tue, 18 Nov 2008 07:13:02 +0100
-
-xft (2.1.12-3ubuntu1) intrepid; urgency=low
-
-  * Merge from debian unstable, remaining changes:
-    - debian/patches/002_embeddedbitmap_property.patch:
-      + Allow "embeddedbitmap" property in fontconfig. (LP: 208745)
-    - debian/patches/libXft-2.1.10-lcd-filter-3.patch:
-      + Use new FreeType LCD colour filtering features, with additional
-        modification that the specific LCD Filter can be changed.
-    - Specify minimum versions for some depends
-    - Update maintainer field to Ubuntu
-
- -- Bryce Harrington <bryce@ubuntu.com>  Tue, 17 Jun 2008 00:59:28 -0700
-
-xft (2.1.12-3) unstable; urgency=low
-
-  * Remove Branden from Uploaders with his permission.
-  * Bump Standards-Version to 3.7.3.
-  * Add Vcs-Git and Vcs-Browser control fields.
-  * Drop pre-dependency on x11-common from libxft2 and libxft2-dbg, as it's
-    not needed.
-  * Use ${binary:Version} instead of the equivalent but confusingly-named
-    ${Source-Version}.
-  * Modify patch 001_no_export_freetype.diff to not export fontconfig in
-    'pkg-config --libs xft' (closes: #389831).
-  * Add myself to Uploaders.
-  * Fix XftDrawRect when Render not supported (cherry-picked from upstream
-    git; closes: #462262).
-
- -- Julien Cristau <jcristau@debian.org>  Tue, 10 Jun 2008 16:12:37 +0200
-
-xft (2.1.12-2ubuntu5) hardy; urgency=low
-
-  [Liu Qishuai]
-  * debian/patches/002_embeddedbitmap_property.patch:
-    - Allow "embeddedbitmap" property in fontconfig. (LP: #208745)
-  * debian/changelog:
-    - Update to Ubuntu maintainer
-
- -- Bryce Harrington <bryce@ubuntu.com>  Wed, 09 Apr 2008 14:12:59 -0700
-
-xft (2.1.12-2ubuntu4) gutsy; urgency=low
-
-  * debian/patches/libXft-2.1.10-lcd-filter-3.patch:
-    - Restore patch that uses new FreeType LCD colour filtering features,
-      with additional modification that the specific LCD Filter can be
-      changed.
-
- -- Scott James Remnant <scott@ubuntu.com>  Thu, 20 Sep 2007 20:09:10 +0100
-
-xft (2.1.12-2ubuntu3) gutsy; urgency=low
-
-  * debian/patches/series
-    - remove mention of libXft-2.1.10-lcd-filter-2.patch
-
- -- Matthew Garrett <mjg59@srcf.ucam.org>  Thu, 20 Sep 2007 15:48:21 +0100
-
-xft (2.1.12-2ubuntu2) gutsy; urgency=low
-
-  * debian/patches/libXft-2.1.10-lcd-filter-2.patch:
-    - remove - results in incorrect rendering, and we have the bytecode
-      interpreter enabled anyway
-
- -- Matthew Garrett <mjg59@srcf.ucam.org>  Thu, 20 Sep 2007 05:08:05 +0100
-
-xft (2.1.12-2ubuntu1) gutsy; urgency=low
-
-  [ Matti Lindell ]
-  * debian/patches/libXft-2.1.10-lcd-filter-2.patch:
-    - use new built-in FreeType LCD color filtering features
-
- -- Scott James Remnant <scott@ubuntu.com>  Tue, 18 Sep 2007 17:39:18 +0100
-
-xft (2.1.12-2) unstable; urgency=low
-
-  * Upload to unstable.
-
- -- Julien Cristau <jcristau@debian.org>  Tue, 10 Apr 2007 20:43:57 +0200
-
-xft (2.1.12-1) experimental; urgency=low
-
-  * New upstream release.
-  * Install the upstream ChangeLog.
-
- -- Julien Cristau <jcristau@debian.org>  Fri,  9 Feb 2007 14:56:32 +0100
-
-xft (2.1.10-3) experimental; urgency=low
-
-  * Remove that explicit shlibs file added in the last upload. The only
-    symbols that are hidden are private, so if your app is using those symbols
-    it's being very naughty. Go back to just generating shlibs using
-    dh_makeshlibs.
-
- -- David Nusinow <dnusinow@debian.org>  Thu, 24 Aug 2006 00:29:33 +0000
-
-xft (2.1.10-2) experimental; urgency=low
-
-  * Add shlibs file because the public API and exported symbols changed
-    between 2.1.8.2 and now
-
- -- David Nusinow <dnusinow@debian.org>  Wed, 16 Aug 2006 20:34:41 +0000
-
-xft (2.1.10-1) experimental; urgency=low
-
-  * New upstream release.
-  * Test for obj-$(DEB_BUILD_GNU_TYPE) before creating it during build;
-    idempotency fix.
-  * Fix changelog to not make lintian upset.
-  * Drop patches/002_no_xproto_dep.diff, now that x11proto-core-dev has
-    a .pc file.  Make the dep on libx11-dev versioned so that we're sure
-    to have an xproto.pc file (from xorg 7.0 or higher).
-
- -- Andres Salomon <dilinger@debian.org>  Sun, 23 Jul 2006 03:17:32 -0400
-
-xft (2.1.8.2-8) unstable; urgency=low
-
-  * Bump standards version to 3.7.2.0
-  * Bump debhelper compat level to 5
-  * Rebuild with freetype6 2.2.1, which fixes ABI breakages of the past.
-    Thanks Steve Langasek and Keith Packard for managing the freetype side of
-    things. (closes: #350113)
-
- -- David Nusinow <dnusinow@debian.org>  Sun, 21 May 2006 16:18:09 -0400
-
-xft (2.1.8.2-7) unstable; urgency=low
-
-  * Reorder makeshlib command in rules file so that ldconfig is run
-    properly. Thanks Drew Parsons and Steve Langasek. (closes: #363922)
-  * Run dh_install with --list-missing
-  * Fix package name in rules file so that the debugging symbols go to the
-    right place. Thanks Tim Johann. (closes: #365341)
-  * Remove useless instaces of x-dev in dependencies. Thaks Ross Burton.
-    (closes: #363507)
-
- -- David Nusinow <dnusinow@debian.org>  Tue,  2 May 2006 22:31:46 -0400
-
-xft (2.1.8.2-6) unstable; urgency=low
-
-  * Upload to unstable
-  * Move the header files back to /usr/include/X11/Xft to bring them in line
-    with X11R7
-  * Add versioned pre-depends on x11-common to match X11R7. Do this for all
-    packages shipped by this source package.
-
- -- David Nusinow <dnusinow@debian.org>  Thu, 23 Mar 2006 22:44:40 -0500
-
-xft (2.1.8.2-5) unstable; urgency=low
-
-  * Actually install the header files to /usr/X11R6/include/Xft. Thanks Steve
-    Langasek.
-
- -- David Nusinow <dnusinow@debian.org>  Wed, 22 Mar 2006 00:33:46 -0500
-
-xft (2.1.8.2-4) unstable; urgency=low
-
-  * Make libxft-dev pre-depend on x11-common so as to make sure that the
-    symlink for /usr/include/X11 is already in place when we install the
-    package. (closes: #358254, #358260, #350298, #358308)
-
- -- David Nusinow <dnusinow@debian.org>  Wed, 22 Mar 2006 00:06:39 -0500
-
-
-xft (2.1.8.2-3) unstable; urgency=low
-
-  * Include freetype headers in cflags in the xft.pc file. This is an edit to
-    001_no_export_freetype.diff. The freetype headers are included in xft's
-    headers, so these are necessary. Also, don't use variables in the .pc file
-    that haven't been defined anywhere. Thanks to Roger Leigh, Decklin Foster,
-    Eric Dorland, and Steve Langasek (who wrote the patch). (closes: #350458)
-
- -- David Nusinow <dnusinow@debian.org>  Sun,  5 Feb 2006 12:59:29 -0500
-
-xft (2.1.8.2-2) unstable; urgency=low
-
-  * Add 002_no_xproto_dep.diff so that the .pc file doesn't depend on xproto,
-    which doesn't yet have a .pc file in Debian (to be removed when 7.0 enters
-    the archive). Thanks Mike Hommey. (closes: #349678)
-  * Include patch from Steve Langasek in full from previous upload. This
-    should work around the issue properly. (closes: #349318)
-
- -- David Nusinow <dnusinow@debian.org>  Tue, 24 Jan 2006 21:52:01 -0500
-
-xft (2.1.8.2-1) unstable; urgency=low
-
-  * Add build-dep on quilt
-  * Add 001_no_export_freetype.diff. This is a modified patch from Steve
-    Langasek that causes xft.pc not to export freetype or xrender as part of
-    the interface, but hide them in Requires.private instead (closes: #349318)
-  * Remove versioned build-deps on libx11 and libxrender.
-  * Move preinst to preinst.in so it doesn't get deleted by clean target. We
-    really need a better way to deal with these things...
-
- -- David Nusinow <dnusinow@debian.org>  Sun, 22 Jan 2006 22:35:36 -0500
-
-libxft (2.1.8.2-0ubuntu2) dapper; urgency=low
-
-  * Change dependency on x-common to x11-common.
-
- -- Daniel Stone <daniel.stone@ubuntu.com>  Thu, 19 Jan 2006 18:27:58 +1100
-
-libxft (2.1.8.2-0ubuntu1) dapper; urgency=low
-
-  * New upstream release.
-  * Repackaged to fit all the other X packages.
-  * Stop shipping libXft.la.
-
- -- Daniel Stone <daniel.stone@ubuntu.com>  Wed, 21 Dec 2005 13:13:31 +1100
-
-xft (2.1.8.1-0ubuntu1) dapper; urgency=low
-
-  * New upstream release.
-
- -- Daniel Stone <daniel.stone@ubuntu.com>  Mon, 12 Dec 2005 15:33:13 +1100
-
-xft (2.1.7-1ubuntu2) breezy; urgency=low
-
-  * Add Pre-Depends on x-common to libxft-dev, so its files don't get caught
-    in /usr/X11R6 thanks to symlink treachery.
-
- -- Daniel Stone <daniel.stone@ubuntu.com>  Thu, 19 May 2005 00:48:57 +1000
-
-xft (2.1.7-1ubuntu1) breezy; urgency=low
-
-  * Move files from /usr/X11R6 to /usr.
-
- -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Tue, 17 May 2005 18:44:50 +0200
-
-xft (2.1.7-1) unstable; urgency=low
-
-  * New upstream release.
-    + Keith Packard attests, and Branden Robinson verified as far as he is
-      able, that no interface changes have been made since 2.1.2.
-    + Highlights of upstream changes:
-      - Change FC_CHARCELL and FC_MONO interpretation.  FC_MONO no longer
-        clips glyphs to charcell, you must specify FC_CHARCELL for that.
-      - Add support for FT_GlyphSlot_Embolden where it exists (which it
-        usually doesn't).
-      - Avoid crashing when using FT_Face objects.
-      - Deal with broken FreeType 2.1.7 BDF/PCF loaders by trying both
-        y_ppem/x_ppem and width/height values.
-      - Work with older versions of Fontconfig by using various pattern
-        elements only when defined.
-      - Change Freetype includes to new syntax.
-      - Search for nearest bitmap for bitmap-only fonts.
-      - Support fontconfig 2.2 release which doesn't include FC_HINT_STYLE.
-
-  * Update Debian copyright file with URL to new tar archive, and identify
-    Keith Packard as the upstream maintainer, not the upstream author
-    (upstream now provides an AUTHORS file to clarify the latter).
-
-  * Correct and enhance xft-config's usage message:
-    + No non-option arguments are allowed.
-    + At least one option argument must be specified.
-    + Use ellipsis notation to indicate that more than one option is allowed.
-    + Provide one-sentence summary of the command's purpose.
-    + Sort option names in lexicographic order.
-
-  * Write and ship manual page for xft-config.
-
-  * Drop libxft2.docs debhelper file; CDBS is now brainy enough to identify
-    and tell dh_installdocs to ship a non-empty README file, so libxft2.docs
-    has become redundant.
-
-  * Add debian/compat file to declare debhelper version 4 compatibility.
-
- -- Branden Robinson <branden@debian.org>  Fri,  1 Apr 2005 13:13:48 -0500
-
-xft (2.1.2-6) unstable; urgency=low
-
-  * Make package compatible with the XFree86 4.3.0 package reorganization.
-    - debian/control:
-      + package build-depends on x-dev and libx11-dev instead of xlibs-dev
-      + libxrender-dev depends on x-dev and libx11-dev instead of xlibs-dev
-      + make libxft-dev conflict with xlibs-dev (<< 4.3.0) due to (now
-        undiverted) file overlaps
-    - debian/libxft-dev.preinst: remove diversions made by previous versions
-      of package if present
-    - debian/libxft-dev.postrm: deleted
-
- -- Branden Robinson <branden@debian.org>  Thu, 11 Mar 2004 02:13:15 -0500
-
-xft (2.1.2-5) unstable; urgency=medium
-
-  * Urgency due to fix for FTBFS problem introduced by new FreeType library.
-
-  * Clean up package's build-dependencies and dependencies.
-    - debian/control:
-      + Drop versioning of build-dependencies on libxrender-dev and xlibs-dev.
-        All officially released versions of these Debian packages are
-        sufficient to build this package.
-      + Drop package dependencies on debhelper's "${misc:Depends}" construct;
-        this package is too simple to need it.
-      + Drop versioning of libxft-dev's dependencies on libxrender-dev and
-        xlibs-dev.  All officially released versions of these Debian packages
-        should be sufficient to objects using this package.
-      + Drop libxft-dev's dependency on pkg-config; pkg-config is supported
-        but not mandated.
-
-  * Document more functions in the Xft(3) manual page.
-    - Xft.3.in
-
-  * Set package maintainer to the Debian X Strike Force and put myself in the
-    Uploaders field.
-    - debian/control
-
-  * Do not include <freetype/freetype.h> directly; use the macro FT_FREETYPE_H
-    to include it instead, as required by freetype 2.1.7 (fixes FTBFS when
-    FreeType 2.1.7 is on the system; thanks, Tore Anderson).
-    (Closes: #221129)
-    - Xft.h
-
-  * Stop passing --x-includes and --x-libraries flags to
-    DEB_CONFIGURE_EXTRA_FLAGS; AC_PATH_X suffices to locate the X include
-    files and libraries.
-    - debian/rules
-
-  * Pass --disable-rpath flag to DEB_CONFIGURE_EXTRA_FLAGS; consequently, drop
-    invocation of chrpath from common-install-arch target.
-    - debian/rules
-    - debian/control: drop build-dependency on chrpath
-
-  * In the pre-installation script, only remove diversions from old
-    libxft2-dev package if that package has those diversions; dpkg-divert will
-    barf if you try to remove a nonexistent diversion when a different package
-    is diverting the same file.  This enables libxft-dev to be upgraded from
-    the previous version, and installed over the same version.
-    - debian/libxft-dev.preinst
-
- -- Branden Robinson <branden@debian.org>  Mon, 17 Nov 2003 03:07:41 -0500
-
-xft (2.1.2-4) unstable; urgency=low
-
-  * Set AM_MAINTAINER_MODE because we do not want users of the Debian source
-    package to have to have automake installed.
-    - configure.ac
-
-  * Run aclocal && automake --foreign && autoconf to resynchronize with
-    changes to Makefile.am and configure.ac.
-    - Makefile.in
-    - aclocal.m4
-    - configure
-
-  * Make libxft-dev conflict with and provide libxft2-dev to help apt figure
-    out an upgrade path.  Deliberately *not* making libxft-dev replace
-    libxft2-dev, even though it would be correct to do so, because doing that
-    plays such havoc with dpkg-divert that libxft-dev will fail to install on
-    upgrades from libxft2-dev.  This way libxft2-dev will be properly removed
-    first.
-    - debian/control
-
- -- Branden Robinson <branden@debian.org>  Wed,  8 Oct 2003 18:09:37 -0500
-
-xft (2.1.2-3) unstable; urgency=low
-
-  * Migrate dpkg diversions from libxft2-dev to libxft-dev, which was
-    neglected in the previous release.
-    - debian/libxft-dev.preinst:
-      + remove all previous diversions created by libxft2-dev on all installs
-        and upgrades (libxft-dev's preinst script will not be passed a $2
-        corresponding to the most-recently-configured version of libxft2-dev)
-      + add diversions using new package name
-    - debian/libxft-dev.postrm: remove diversions using new package name
-
- -- Branden Robinson <branden@debian.org>  Tue,  7 Oct 2003 15:02:06 -0500
-
-xft (2.1.2-2) unstable; urgency=low
-
-  * Take a hatchet to the RPATH that libtool insists on putting into the
-    libXft shared object by using chrpath.
-    - debian/control: add build-dependency on chrpath
-    - debian/rules: add common-install-arch double-colon rule to invoke
-      chrpath on the libXft shared object
-
- -- Branden Robinson <branden@debian.org>  Tue,  7 Oct 2003 00:00:13 -0500
-
-xft (2.1.2-1) unstable; urgency=low
-
-  * new upstream version
-    - debian/copyright:
-      + updated URL of upstream release
-      + resync copyright and license notice with upstream
-
-  * Rename source package to "xft" from "xft2".
-    - debian/control
-
-  * Rename libxft2-dev package to libxft-dev.  Consequently, drop conflict and
-    provide relationship with (formerly virtual) libxft-dev package.
-    - debian/control
-    - debian/libxft-dev.install: renamed from libxft2-dev.install
-    - debian/libxft-dev.postrm: renamed from libxft2-dev.postrm
-    - debian/libxft-dev.preinst: renamed from libxft2-dev.preinst
-
-  * Add versioning (>> 4.2.1) to libxft-dev's dependency on xlibs-dev.
-    - debian/control
-
-  * Ship upstream README in libxft2's documentation directory.
-    - debian/libxft2.docs
-
-  * Correct libxft2-dbg's extended description to mention the correct path
-    where the debugging library is installed.
-    - debian/control
-
-  * Migrate from CBS to CDBS.
-    - debian/control: add build-dependency on cdbs (>= 0.4.12) (thanks to
-      Colin Walters for adding debugging package support I can use with a
-      clear conscience :) )
-    - debian/rules: renamed from debian/rocks and translated to CDBS-speak
-
- -- Branden Robinson <branden@debian.org>  Mon,  6 Oct 2003 20:55:54 -0500
-
-xft2 (2.1.1-3) unstable; urgency=low
-
-  * configure: re-run autoconf to expose the fix to configure.ac from 2.1.1-1
-    (thanks, Robert Millan) (Closes: #185536)
-
-  * debian/control:
-    - tweak packages' short descriptions
-    - make libxft2 depend on ${misc:Depends} so debhelper can do its thing
-    - add libxft2-dbg binary package
-  * debian/rocks:
-    - new rule, deb-makeshlibs-libxft2-dbg, which is a no-op to prevent CBS
-      from running dh_makeshlibs on this package
-    - new rule, deb-strip-libxft2-dbg, which is a no-op to prevent CBS from
-      running dh_strip on this package
-  * debian/libxft2-dbg.install: ship the shared object(s) in
-    /usr/X11R6/lib/debug/
-
-  * Version the build dependency on xlibs-dev to specify version 4.2.1 or
-    later; xft2 will not build successfully with woody-era (4.1.0) versions of
-    xlibs-dev.
-    - debian/control
-
-  * Bump Standards-Version to 3.6.1; no changes necessary.
-    - debian/control
-
-  * Source package build-depends, and libxft2-dev depends, on libxrender-dev
-    (>> 0.8.1).
-    - debian/control
-
-  * Drop README.Debian file; xft will be separately packaged from XFree86 for
-    the forseeable future.
-    - debian/README.Debian: deleted
-
-  * Ship libXft.la file in libxft2-dev.
-    - debian/libxft2-dev.install
-
-  * Ship library files in /usr/lib instead of /usr/X11R6/lib, and debugging
-    library files in /usr/lib/debug instead of /usr/X11R6/lib/debug, per
-    policy 11.8.7.  Continuing to ship include files in /usr/X11R6/include/X11
-    until upstream default changes.
-    - debian/libxft2{,-dbg,-dev}.install
-
-  * Ship Xft.3 manpage (in /usr/share/man/man3, so it does not conflict with
-    the XFree86-provided Xft manpage, which is being renamed to Xft1.3x in
-    4.3.0 anyway).
-    - debian/libxft2-dev.install
-
- -- Branden Robinson <branden@debian.org>  Sat,  4 Oct 2003 19:31:11 -0500
-
-xft2 (2.1.1-2) unstable; urgency=low
-
-  * debian/control: move libxft2-dev from section "devel" to "libdevel"
-  * debian/rocks:
-    - drop deb-common-build and deb-extra-clean rules per Colin Walters
-    - pass --x-includes and --x-libraries to configure script, since the
-      AC_PATH_X autoconf macro is highly suboptimal
-    - don't be so crazy about the versioning in the shlibs file (i.e., drop
-      Debian package component)
-  * debian/libxft2-dev.preinst: sense of the version comparison when removing
-    the obsolete diversion of XftFreetype.h was wrong; fixed
-
- -- Branden Robinson <branden@debian.org>  Wed, 30 Apr 2003 23:24:33 -0500
-
-xft2 (2.1.1-1) unstable; urgency=low
-
-  * New upstream version.
-    + includes fixes for some bugs when drawing to non-RENDER-enabled servers
-      (Closes: #178817)
-    + handle both 0-indexed and 1-indexed glyph numbering schemes
-      (Closes: #190610)
-    + xft-config --cflags and --libs now give more correct output
-      (Closes: #179942, #179944)
-
-  * configure.ac: add -lXext and -lX11 to XRENDER_LIBS
-  * xft-config.in: add -lX11 to --libs output
-  * xft.pc.in: add -lX11 to Libs line
-
-  * the above changes ensure that libXft.so.2.1.1 has proper linkage, declares
-    needed shared objects correctly, and thus enables dpkg-shlibdeps to find
-    what it's looking for (Closes: #186042)
-
-  * debian/*: various cosmetic cleanups
-  * debian/control:
-    - Update Build-Depends and libxft-dev's Depends to reflect all development
-      library dependencies
-    - Bump Standards-Version to 3.5.9.
-    - Rewrite extended descriptions.
-  * debian/copyright: updated
-  * debian/rocks: stop nuking config.{guess,sub} in debian-extra-clean rule;
-    it is no longer part of the upstream source archive
-  * debian/libxft2-dev.{postrm,preinst}: stop diverting XftFreetype.h, since
-    the package no longer ships it; also handle removal of now-obsolete
-    diversion when upgrading from earlier versions
-
- -- Branden Robinson <branden@debian.org>  Wed, 30 Apr 2003 01:31:58 -0500
-
-xft2 (2.1-8) unstable; urgency=low
-
-  * Adopting this package per request from Colin Walters (XFree86 4.3.0 will
-    be generating libxft2, anyway.)
-  * config/{config.guess,config.sub,ltmain.sh}: updated with libtoolize
-    --force --copy
-  * debian/control: set Maintainer field to me
-
- -- Branden Robinson <branden@debian.org>  Tue, 11 Mar 2003 23:28:33 -0500
-
-xft2 (2.1-7) unstable; urgency=low
-
-  * debian/control:
-    - Build-Depend on xlibs-dev (>= 4.2.0) (Closes: #174596).
-    - [libxft2-dev] Depend on xlibs-dev (>= 4.2.0).
-
- -- Colin Walters <walters@debian.org>  Fri, 17 Jan 2003 13:11:34 -0500
-
-xft2 (2.1-6) unstable; urgency=low
-
-  * debian/rules:
-    - Update to latest version of Colin's Build System.
-  * debian/rocks:
-    - Tighten up shlibs for libxft2.
-
- -- Colin Walters <walters@debian.org>  Wed,  8 Jan 2003 22:47:30 -0500
-
-xft2 (2.1-5) unstable; urgency=low
-
-  * debian/control:
-    - Build-Depend on the latest libfontconfig1-dev, and by transitivity
-    the latest libfreetype6-dev.  The libfreetype6-dev issue was causing
-    configuration problems, which is what caused the autoconf macros to
-    pick up empty paths for X. (Closes: #172661).
-
- -- Colin Walters <walters@debian.org>  Sun, 22 Dec 2002 17:42:30 -0500
-
-xft2 (2.1-4) unstable; urgency=low
-
-  * debian/patches/fix-configure-in-x-paths.patch:
-    - New patch (Closes: #172703, #172661).
-  * debian/rocks:
-    - Remove extra cruft in deb-extra-clean rule.
-
- -- Colin Walters <walters@debian.org>  Thu, 12 Dec 2002 17:42:57 -0500
-
-xft2 (2.1-3) unstable; urgency=low
-
-  * debian/control:
-    - Depend (and Build-Depend) on the latest libfontconfig1-dev.
-  * debian/rules:
-    - Update to latest version of Colin's Build System.
-
- -- Colin Walters <walters@debian.org>  Wed, 11 Dec 2002 00:42:03 -0500
-
-xft2 (2.1-2) unstable; urgency=low
-
-  * First upload to unstable; this is part of #170559, which is closed
-    with the fontconfig upload.
-  * debian/rules:
-    - Update to latest version of Colin's Build System.
-
- -- Colin Walters <walters@debian.org>  Fri,  6 Dec 2002 01:39:21 -0500
-
-xft2 (2.1-1) unstable; urgency=low
-
-  * New upstream version.
-  * debian/rules:
-    - Use Colin's Build System.
-  * debian/control:
-    - Bump Standards-Version to 3.5.8.
-    - Build-Depend on the latest fontconfig.
-  * debian/libxft2-dev.{preinst,postrm}:
-    - Add Debhelper tokens.
-  * debian/copyright:
-    - Fix Upstream Authors.
-
- -- Colin Walters <walters@debian.org>  Tue,  3 Dec 2002 23:04:12 -0500
-
-xft2 (2.0-4) unstable; urgency=low
-
-  * debian/libxft2.install:
-    - Install xft-config.
-
- -- Colin Walters <walters@debian.org>  Sat, 19 Oct 2002 10:24:35 -0400
-
-xft2 (2.0-3) unstable; urgency=low
-
-  * debian/libxft2.install:
-    - Install libraries in /usr/X11R6/lib, not /usr/lib.
-
- -- Colin Walters <walters@debian.org>  Tue, 15 Oct 2002 11:22:58 -0400
-
-xft2 (2.0-2) unstable; urgency=low
-
-  * debian/control:
-    - [xft2] Build-Depend on xlibs-dev, not xlib6g-dev.
-    - [libxft2-dev] Depend on xlibs-dev, not xlib6g-dev.  Also depend on pkg-config.
-  * debian/rules:
-    - Install xft.pc.
-
- -- Colin Walters <walters@debian.org>  Mon, 14 Oct 2002 22:59:06 -0400
-
-xft2 (2.0-1) unstable; urgency=low
-
-  * Initial version.
-
- -- Colin Walters <walters@debian.org>  Sun, 13 Oct 2002 14:43:56 -0400
-
-vim:set ai tw=78 et sw=2 sts=2:
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100755 (executable)
index 539243a..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-Source: libxft
-Section: devel
-Priority: optional
-Maintainer: SooChan Lim <sc1.lim@samsung.com>, Sangjin Lee <lsj119@samsung.com>, Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
-Uploaders: SooChan Lim <sc1.lim@samsung.com>, David Nusinow <dnusinow@debian.org>, Andres Salomon <dilinger@debian.org>, Cyril Brulebois <kibi@debian.org>, Doyoun Kang <doyoun.kang@samsung.com>
-Build-Depends: debhelper (>= 5.0.0), libfontconfig1-dev, libfreetype6-dev, libx11-dev (>= 2:1.3.3-2), libxrender-dev (>= 1:0.9.5-2), zlib1g-dev | libz-dev, quilt, automake, libtool, xutils-dev (>= 1:7.5-1slp2)
-Standards-Version: 3.8.4
-Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/xft
-Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/xft.git
-
-Package: libxft2
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends},
-Description: FreeType-based font drawing library for X
- Xft provides a client-side font API for X applications, making the FreeType
- font rasterizer available to X clients.  Fontconfig is used for font
- specification resolution.  Where available, the RENDER extension handles
- glyph drawing; otherwise, the core X protocol is used.
-
-#Package: libxft2-udeb
-#XC-Package-Type: udeb
-#Section: debian-installer
-#Architecture: any
-#Depends:
-# ${shlibs:Depends},
-#Description: FreeType-based font drawing library for X
-# This is a udeb, or a microdeb, for the debian-installer.
-
-Package: libxft2-dbg
-Section: debug
-Priority: extra
-Architecture: any
-Depends: libxft2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends},
-Description: FreeType-based font drawing library for X (unstripped)
- Xft provides a client-side font API for X applications, making the FreeType
- font rasterizer available to X clients.  Fontconfig is used for font
- specification resolution.  Where available, the RENDER extension handles
- glyph drawing; otherwise, the core X protocol is used.
- .
- This package provides an unstripped shared object with debugging symbols,
- useful to provide a backtrace with symbol names in a debugger; this
- facilitates interpretation of core dumps, and aids in finding logic errors in
- programs using this library (or the library itself).  The library is
- installed in /usr/lib/debug and can be used by placing that directory in the
- LD_LIBRARY_PATH environment variable when the code to be debugged is
- executed.  Non-programmers will likely have little use for this package, and
- should use libxft2 instead.
-
-Package: libxft-dev
-Section: libdevel
-Architecture: any
-Depends: libxft2 (= ${binary:Version}), libc6-dev | libc-dev, libfontconfig1-dev, libfreetype6-dev, libx11-dev (>= 2:1.0.0), libxrender-dev, zlib1g-dev | libz-dev, ${misc:Depends},
-Conflicts: libxft2-dev, xlibs-dev (<< 4.3.0)
-Provides: libxft2-dev
-Description: FreeType-based font drawing library for X (development files)
- Xft provides a client-side font API for X applications, making the FreeType
- font rasterizer available to X clients.  Fontconfig is used for font
- specification resolution.  Where available, the RENDER extension handles
- glyph drawing; otherwise, the core X protocol is used.
- .
- This package provides a static library and C header files.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644 (file)
index e5ee6ce..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-This package was downloaded from
-http://xorg.freedesktop.org/releases/individual/lib/
-
-This package was originally Debianized by Colin Walters
-<walters@debian.org> on Sun, 13 Oct 2002 15:01:50 -0400.
-
-Later versions were Debianized by Branden Robinson <branden@debian.org>.
-
-Upstream maintainer: Keith Packard
-
-Copyright and license:
-
-Copyright Â© 2001,2003 Keith Packard
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of Keith Packard not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission.  Keith Packard makes no
-representations about the suitability of this software for any purpose.  It
-is provided "as is" without express or implied warranty.
-
-KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-$Id: copyright 114 2005-03-30 07:39:46Z branden $
diff --git a/debian/libxft-dev.install b/debian/libxft-dev.install
deleted file mode 100755 (executable)
index 02cbc7a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/include/X11/Xft/*
-usr/lib/libXft.a
-usr/lib/libXft.la
-usr/lib/libXft.so
-usr/lib/pkgconfig/*.pc
diff --git a/debian/libxft2-udeb.install b/debian/libxft2-udeb.install
deleted file mode 100644 (file)
index c33b7c9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/libXft.so.*
diff --git a/debian/libxft2.install b/debian/libxft2.install
deleted file mode 100644 (file)
index c33b7c9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/libXft.so.*
diff --git a/debian/patches/100-libXft-2.1.10-lcd-filter-3.patch b/debian/patches/100-libXft-2.1.10-lcd-filter-3.patch
deleted file mode 100644 (file)
index 5e86ac7..0000000
+++ /dev/null
@@ -1,843 +0,0 @@
---- a/src/xftdpy.c
-+++ b/src/xftdpy.c
-@@ -369,6 +369,10 @@
-       goto bail1;
-     if (!_XftDefaultInitInteger (dpy, pat, FC_RGBA))
-       goto bail1;
-+#ifdef FC_LCD_FILTER
-+    if (!_XftDefaultInitInteger (dpy, pat, FC_LCD_FILTER))
-+      goto bail1;
-+#endif
-     if (!_XftDefaultInitBool (dpy, pat, FC_ANTIALIAS))
-       goto bail1;
- #ifdef FC_EMBOLDEN
-@@ -521,6 +525,14 @@
-                             XftDefaultGetInteger (dpy, FC_RGBA, screen, 
-                                                   subpixel));
-     }
-+#ifdef FC_LCD_FILTER
-+    if (FcPatternGet (pattern, FC_LCD_FILTER, 0, &v) == FcResultNoMatch)
-+    {
-+      FcPatternAddInteger (pattern, FC_LCD_FILTER,
-+                           XftDefaultGetInteger (dpy, FC_LCD_FILTER, screen,
-+                                                 FC_LCD_DEFAULT));
-+    }
-+#endif
-     if (FcPatternGet (pattern, FC_MINSPACE, 0, &v) == FcResultNoMatch)
-     {
-       FcPatternAddBool (pattern, FC_MINSPACE,
---- a/src/xftfreetype.c
-+++ b/src/xftfreetype.c
-@@ -469,6 +469,21 @@
-       goto bail1;
-     }
-     
-+#ifdef FC_LCD_FILTER 
-+    /*
-+     * Get lcd_filter value
-+     */
-+    switch (FcPatternGetInteger (pattern, FC_LCD_FILTER, 0, &fi->lcd_filter)) {
-+    case FcResultNoMatch:
-+      fi->lcd_filter = FC_LCD_DEFAULT;
-+      break;
-+    case FcResultMatch:
-+      break;
-+    default:
-+      goto bail1;
-+    }
-+#endif
-+    
-     /*
-      * Get matrix and transform values
-      */
---- a/src/xftglyphs.c
-+++ b/src/xftglyphs.c
-@@ -21,27 +21,18 @@
-  */
- #include "xftint.h"
--#include <freetype/ftoutln.h>
- #if HAVE_FT_GLYPHSLOT_EMBOLDEN
- #include <freetype/ftsynth.h>
- #endif
--static const int    filters[3][3] = {
--    /* red */
--#if 0
--{    65538*4/7,65538*2/7,65538*1/7 },
--    /* green */
--{    65536*1/4, 65536*2/4, 65537*1/4 },
--    /* blue */
--{    65538*1/7,65538*2/7,65538*4/7 },
-+#if FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH < 20202
-+#  error  "FreeType 2.2.2 or later required to compile this version of libXft"
- #endif
--{    65538*9/13,65538*3/13,65538*1/13 },
--    /* green */
--{    65538*1/6, 65538*4/6, 65538*1/6 },
--    /* blue */
--{    65538*1/13,65538*3/13,65538*9/13 },
--};
-+
-+#include FT_OUTLINE_H
-+#include FT_LCD_FILTER_H
-+#include FT_SYNTHESIS_H
- /*
-  * Validate the memory info for a font
-@@ -69,6 +60,295 @@
-               font->glyph_memory, glyph_memory);
- }
-+
-+/* we sometimes need to convert the glyph bitmap in a FT_GlyphSlot
-+ * into a different format. For example, we want to convert a
-+ * FT_PIXEL_MODE_LCD or FT_PIXEL_MODE_LCD_V bitmap into a 32-bit
-+ * ARGB or ABGR bitmap.
-+ *
-+ * this function prepares a target descriptor for this operation.
-+ *
-+ * input :: target bitmap descriptor. The function will set its
-+ *          'width', 'rows' and 'pitch' fields, and only these
-+ *
-+ * slot  :: the glyph slot containing the source bitmap. this
-+ *          function assumes that slot->format == FT_GLYPH_FORMAT_BITMAP
-+ *
-+ * mode  :: the requested final rendering mode. supported values are
-+ *          MONO, NORMAL (i.e. gray), LCD and LCD_V
-+ *
-+ * the function returns the size in bytes of the corresponding buffer,
-+ * it's up to the caller to allocate the corresponding memory block
-+ * before calling _fill_xrender_bitmap
-+ *
-+ * it also returns -1 in case of error (e.g. incompatible arguments,
-+ * like trying to convert a gray bitmap into a monochrome one)
-+ */
-+static int
-+_compute_xrender_bitmap_size( FT_Bitmap*      target,
-+                              FT_GlyphSlot    slot,
-+                              FT_Render_Mode  mode )
-+{
-+    FT_Bitmap*  ftbit;
-+    int         width, height, pitch;
-+
-+    if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
-+        return -1;
-+
-+    // compute the size of the final bitmap
-+    ftbit  = &slot->bitmap;
-+
-+    width  = ftbit->width;
-+    height = ftbit->rows;
-+    pitch  = (width+3) & ~3;
-+
-+    switch ( ftbit->pixel_mode )
-+    {
-+    case FT_PIXEL_MODE_MONO:
-+        if ( mode == FT_RENDER_MODE_MONO )
-+        {
-+            pitch = (((width+31) & ~31) >> 3);
-+            break;
-+        }
-+        /* fall-through */
-+
-+    case FT_PIXEL_MODE_GRAY:
-+        if ( mode == FT_RENDER_MODE_LCD   ||
-+             mode == FT_RENDER_MODE_LCD_V )
-+        {
-+          /* each pixel is replicated into a 32-bit ARGB value */
-+          pitch = width*4;
-+        }
-+        break;
-+
-+    case FT_PIXEL_MODE_LCD:
-+        if ( mode != FT_RENDER_MODE_LCD )
-+            return -1;
-+
-+        /* horz pixel triplets are packed into 32-bit ARGB values */
-+        width   /= 3;
-+        pitch    = width*4;
-+        break;
-+
-+    case FT_PIXEL_MODE_LCD_V:
-+        if ( mode != FT_RENDER_MODE_LCD_V )
-+            return -1;
-+
-+        /* vert pixel triplets are packed into 32-bit ARGB values */
-+        height  /= 3;
-+        pitch    = width*4;
-+        break;
-+
-+    default:  /* unsupported source format */
-+        return -1;
-+    }
-+
-+    target->width  = width;
-+    target->rows   = height;
-+    target->pitch  = pitch;
-+    target->buffer = NULL;
-+
-+    return pitch * height;
-+}
-+
-+/* this functions converts the glyph bitmap found in a FT_GlyphSlot
-+ * into a different format (see _compute_xrender_bitmap_size)
-+ *
-+ * you should call this function after _compute_xrender_bitmap_size
-+ *
-+ * target :: target bitmap descriptor. Note that its 'buffer' pointer
-+ *           must point to memory allocated by the caller
-+ *
-+ * slot   :: the glyph slot containing the source bitmap
-+ *
-+ * mode   :: the requested final rendering mode
-+ *
-+ * bgr    :: boolean, set if BGR or VBGR pixel ordering is needed
-+ */
-+static void
-+_fill_xrender_bitmap( FT_Bitmap*      target,
-+                      FT_GlyphSlot    slot,
-+                      FT_Render_Mode  mode,
-+                      int             bgr )
-+{
-+    FT_Bitmap*   ftbit = &slot->bitmap;
-+
-+    {
-+        unsigned char*   srcLine   = ftbit->buffer;
-+        unsigned char*   dstLine   = target->buffer;
-+        int              src_pitch = ftbit->pitch;
-+        int              width     = target->width;
-+        int              height    = target->rows;
-+        int              pitch     = target->pitch;
-+        int              subpixel;
-+        int              h;
-+
-+        subpixel = ( mode == FT_RENDER_MODE_LCD ||
-+                     mode == FT_RENDER_MODE_LCD_V );
-+
-+        if ( src_pitch < 0 )
-+          srcLine -= src_pitch*(ftbit->rows-1);
-+
-+        switch ( ftbit->pixel_mode )
-+        {
-+        case FT_PIXEL_MODE_MONO:
-+            if ( subpixel )  /* convert mono to ARGB32 values */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int  x;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
-+                            ((unsigned int*)dstLine)[x] = 0xffffffffU;
-+                    }
-+                }
-+            }
-+            else if ( mode == FT_RENDER_MODE_NORMAL )  /* convert mono to 8-bit gray */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int  x;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
-+                            dstLine[x] = 0xff;
-+                    }
-+                }
-+            }
-+            else  /* copy mono to mono */
-+            {
-+                int  bytes = (width+7) >> 3;
-+
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                    memcpy( dstLine, srcLine, bytes );
-+            }
-+            break;
-+
-+        case FT_PIXEL_MODE_GRAY:
-+            if ( subpixel )  /* convert gray to ARGB32 values */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        unsigned int  pix = srcLine[x];
-+
-+                        pix |= (pix << 8);
-+                        pix |= (pix << 16);
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else  /* copy gray into gray */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                    memcpy( dstLine, srcLine, width );
-+            }
-+            break;
-+
-+        case FT_PIXEL_MODE_LCD:
-+            if ( !bgr )
-+            {
-+                /* convert horizontal RGB into ARGB32 */
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 3 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[0] << 16) |
-+                              ((unsigned int)src[1] <<  8) |
-+                              ((unsigned int)src[2]      ) |
-+                              ((unsigned int)src[1] << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else
-+            {
-+                /* convert horizontal BGR into ARGB32 */
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 3 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[2] << 16) |
-+                              ((unsigned int)src[1] <<  8) |
-+                              ((unsigned int)src[0]      ) |
-+                              ((unsigned int)src[1] << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            break;
-+
-+        default:  /* FT_PIXEL_MODE_LCD_V */
-+            /* convert vertical RGB into ARGB32 */
-+            if ( !bgr )
-+            {
-+                for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 1 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[0]           << 16) |
-+                              ((unsigned int)src[src_pitch]   <<  8) |
-+                              ((unsigned int)src[src_pitch*2]      ) |
-+                              ((unsigned int)src[src_pitch]   << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else
-+            {
-+                for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 1 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[src_pitch*2] << 16) |
-+                              ((unsigned int)src[src_pitch]   <<  8) |
-+                              ((unsigned int)src[0]                ) |
-+                              ((unsigned int)src[src_pitch]   << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+        }
-+    }
-+}
-+
-+
- _X_EXPORT void
- XftFontLoadGlyphs (Display        *dpy,
-                  XftFont          *pub,
-@@ -87,20 +367,14 @@
-     unsigned char   *bufBitmap = bufLocal;
-     int                   bufSize = sizeof (bufLocal);
-     int                   size, pitch;
--    unsigned char   bufLocalRgba[4096];
--    unsigned char   *bufBitmapRgba = bufLocalRgba;
--    int                   bufSizeRgba = sizeof (bufLocalRgba);
--    int                   sizergba, pitchrgba, widthrgba;
-     int                   width;
-     int                   height;
-     int                   left, right, top, bottom;
--    int                   hmul = 1;
--    int                   vmul = 1;
--    FT_Bitmap     ftbit;
--    FT_Matrix     matrix;
-+    FT_Bitmap*            ftbit;
-+    FT_Bitmap       local;
-     FT_Vector     vector;
--    Bool          subpixel = False;
-     FT_Face       face;
-+    FT_Render_Mode  mode = FT_RENDER_MODE_MONO;
-     if (!info)
-       return;
-@@ -110,24 +384,19 @@
-     if (!face)
-       return;
--    matrix.xx = matrix.yy = 0x10000L;
--    matrix.xy = matrix.yx = 0;
--
-     if (font->info.antialias)
-     {
-       switch (font->info.rgba) {
-       case FC_RGBA_RGB:
-       case FC_RGBA_BGR:
--          matrix.xx *= 3;
--          subpixel = True;
--          hmul = 3;
-+          mode = FT_RENDER_MODE_LCD;
-           break;
-       case FC_RGBA_VRGB:
-       case FC_RGBA_VBGR:
--          matrix.yy *= 3;
--          vmul = 3;
--          subpixel = True;
-+            mode = FT_RENDER_MODE_LCD_V;
-           break;
-+        default:
-+            mode = FT_RENDER_MODE_NORMAL;
-       }
-     }
-@@ -148,7 +417,10 @@
-       if (xftg->glyph_memory)
-           continue;
-       
-+        FT_Library_SetLcdFilter( _XftFTlibrary, font->info.lcd_filter);
-+
-       error = FT_Load_Glyph (face, glyphindex, font->info.load_flags);
-+
-       if (error)
-       {
-           /*
-@@ -181,7 +453,7 @@
-       /*
-        * Compute glyph metrics from FreeType information
-        */
--      if(font->info.transform && glyphslot->format != ft_glyph_format_bitmap) 
-+      if(font->info.transform && glyphslot->format != FT_GLYPH_FORMAT_BITMAP)
-       {
-           /*
-            * calculate the true width by transforming all four corners.
-@@ -260,17 +532,14 @@
-           }
-       }
--      if (font->info.antialias)
--          pitch = (width * hmul + 3) & ~3;
--      else
--          pitch = ((width + 31) & ~31) >> 3;
--
--      size = pitch * height * vmul;
-+        if ( glyphslot->format != FT_GLYPH_FORMAT_BITMAP )
-+        {
-+            error = FT_Render_Glyph( face->glyph, mode );
-+            if (error)
-+                continue;
-+        }
--      xftg->metrics.width = width;
--      xftg->metrics.height = height;
--      xftg->metrics.x = -TRUNC(left);
--      xftg->metrics.y = TRUNC(top);
-+        FT_Library_SetLcdFilter( _XftFTlibrary, FT_LCD_FILTER_NONE );
-       if (font->info.spacing >= FC_MONO)
-       {
-@@ -310,103 +579,13 @@
-           xftg->metrics.yOff = -TRUNC(ROUND(glyphslot->advance.y));
-       }
-       
--      /*
--       * If the glyph is relatively large (> 1% of server memory),
--       * don't send it until necessary
--       */
--      if (!need_bitmaps && size > info->max_glyph_memory / 100)
--          continue;
-       
--      /*
--       * Make sure there's enough buffer space for the glyph
--       */
--      if (size > bufSize)
--      {
--          if (bufBitmap != bufLocal)
--              free (bufBitmap);
--          bufBitmap = (unsigned char *) malloc (size);
--          if (!bufBitmap)
--              continue;
--          bufSize = size;
--      }
--      memset (bufBitmap, 0, size);
--
--      /*
--       * Rasterize into the local buffer
--       */
--      switch (glyphslot->format) {
--      case ft_glyph_format_outline:
--          ftbit.width      = width * hmul;
--          ftbit.rows       = height * vmul;
--          ftbit.pitch      = pitch;
--          if (font->info.antialias)
--              ftbit.pixel_mode = ft_pixel_mode_grays;
--          else
--              ftbit.pixel_mode = ft_pixel_mode_mono;
--          
--          ftbit.buffer     = bufBitmap;
--          
--          if (subpixel)
--              FT_Outline_Transform (&glyphslot->outline, &matrix);
-+        // compute the size of the final bitmap
-+        ftbit  = &glyphslot->bitmap;
--          FT_Outline_Translate ( &glyphslot->outline, -left*hmul, -bottom*vmul );
--
--          FT_Outline_Get_Bitmap( _XftFTlibrary, &glyphslot->outline, &ftbit );
--          break;
--      case ft_glyph_format_bitmap:
--          if (font->info.antialias)
--          {
--              unsigned char   *srcLine, *dstLine;
--              int             height;
--              int             x;
--              int         h, v;
--
--              srcLine = glyphslot->bitmap.buffer;
--              dstLine = bufBitmap;
--              height = glyphslot->bitmap.rows;
--              while (height--)
--              {
--                  for (x = 0; x < glyphslot->bitmap.width; x++)
--                  {
--                      /* always MSB bitmaps */
--                      unsigned char   a = ((srcLine[x >> 3] & (0x80 >> (x & 7))) ?
--                                           0xff : 0x00);
--                      if (subpixel)
--                      {
--                          for (v = 0; v < vmul; v++)
--                              for (h = 0; h < hmul; h++)
--                                  dstLine[v * pitch + x*hmul + h] = a;
--                      }
--                      else
--                          dstLine[x] = a;
--                  }
--                  dstLine += pitch * vmul;
--                  srcLine += glyphslot->bitmap.pitch;
--              }
--          }
--          else
--          {
--              unsigned char   *srcLine, *dstLine;
--              int             h, bytes;
--
--              srcLine = glyphslot->bitmap.buffer;
--              dstLine = bufBitmap;
--              h = glyphslot->bitmap.rows;
--              bytes = (glyphslot->bitmap.width + 7) >> 3;
--              while (h--)
--              {
--                  memcpy (dstLine, srcLine, bytes);
--                  dstLine += pitch;
--                  srcLine += glyphslot->bitmap.pitch;
--              }
--          }
--          break;
--      default:
--          if (XftDebug() & XFT_DBG_GLYPH)
--              printf ("glyph %d is not in a usable format\n",
--                      (int) glyphindex);
--          continue;
--      }
-+        width  = ftbit->width;
-+        height = ftbit->rows;
-+        pitch  = (width+3) & ~3;
-       
-       if (XftDebug() & XFT_DBG_GLYPH)
-       {
-@@ -423,29 +602,72 @@
-               int             x, y;
-               unsigned char   *line;
--              line = bufBitmap;
--              for (y = 0; y < height * vmul; y++)
-+                line = ftbit->buffer;
-+
-+                if (ftbit->pitch < 0)
-+                  line -= ftbit->pitch*(height-1);
-+
-+                for (y = 0; y < height; y++)
-               {
-                   if (font->info.antialias) 
-                   {
--                      static char    den[] = { " .:;=+*#" };
--                      for (x = 0; x < pitch; x++)
-+                        static const char    den[] = { " .:;=+*#" };
-+                        for (x = 0; x < width; x++)
-                           printf ("%c", den[line[x] >> 5]);
-                   }
-                   else
-                   {
--                      for (x = 0; x < pitch * 8; x++)
-+                        for (x = 0; x < width * 8; x++)
-                       {
-                           printf ("%c", line[x>>3] & (1 << (x & 7)) ? '#' : ' ');
-                       }
-                   }
-                   printf ("|\n");
--                  line += pitch;
-+                    line += ftbit->pitch;
-               }
-               printf ("\n");
-           }
-       }
-+        size = _compute_xrender_bitmap_size( &local, glyphslot, mode );
-+        if ( size < 0 )
-+            continue;
-+
-+        xftg->metrics.width  = local.width;
-+      xftg->metrics.height = local.rows;
-+      xftg->metrics.x      = - glyphslot->bitmap_left;
-+      xftg->metrics.y      =   glyphslot->bitmap_top;
-+          
-+          /*
-+       * If the glyph is relatively large (> 1% of server memory),
-+       * don't send it until necessary
-+           */
-+      if (!need_bitmaps && size > info->max_glyph_memory / 100)
-+          continue;
-+
-+      /*
-+       * Make sure there's enough buffer space for the glyph
-+       */
-+      if (size > bufSize)
-+          {
-+          if (bufBitmap != bufLocal)
-+              free (bufBitmap);
-+          bufBitmap = (unsigned char *) malloc (size);
-+          if (!bufBitmap)
-+                  continue;
-+          bufSize = size;
-+          }
-+      memset (bufBitmap, 0, size);
-+
-+        local.buffer = bufBitmap;
-+          
-+        _fill_xrender_bitmap( &local, glyphslot, mode,
-+                              (font->info.rgba == FC_RGBA_BGR  ||
-+                               font->info.rgba == FC_RGBA_VBGR ) );
-+      /*
-+       * Copy or convert into local buffer
-+       */
-+
-       /*
-        * Use the glyph index as the wire encoding; it
-        * might be more efficient for some locales to map
-@@ -455,121 +677,23 @@
-        */
-       glyph = (Glyph) glyphindex;
--      if (subpixel)
--      {
--          int             x, y;
--          unsigned char   *in_line, *out_line, *in;
--          unsigned int    *out;
--          unsigned int    red, green, blue;
--          int             rf, gf, bf;
--          int             s;
--          int             o, os;
--          
--          /*
--           * Filter the glyph to soften the color fringes
--           */
--          widthrgba = width;
--          pitchrgba = (widthrgba * 4 + 3) & ~3;
--          sizergba = pitchrgba * height;
--
--          os = 1;
--          switch (font->info.rgba) {
--          case FC_RGBA_VRGB:
--              os = pitch;
--          case FC_RGBA_RGB:
--          default:
--              rf = 0;
--              gf = 1;
--              bf = 2;
--              break;
--          case FC_RGBA_VBGR:
--              os = pitch;
--          case FC_RGBA_BGR:
--              bf = 0;
--              gf = 1;
--              rf = 2;
--              break;
--          }
--          if (sizergba > bufSizeRgba)
--          {
--              if (bufBitmapRgba != bufLocalRgba)
--                  free (bufBitmapRgba);
--              bufBitmapRgba = (unsigned char *) malloc (sizergba);
--              if (!bufBitmapRgba)
--                  continue;
--              bufSizeRgba = sizergba;
--          }
--          memset (bufBitmapRgba, 0, sizergba);
--          in_line = bufBitmap;
--          out_line = bufBitmapRgba;
--          for (y = 0; y < height; y++)
--          {
--              in = in_line;
--              out = (unsigned int *) out_line;
--              in_line += pitch * vmul;
--              out_line += pitchrgba;
--              for (x = 0; x < width * hmul; x += hmul)
--              {
--                  red = green = blue = 0;
--                  o = 0;
--                  for (s = 0; s < 3; s++)
--                  {
--                      red += filters[rf][s]*in[x+o];
--                      green += filters[gf][s]*in[x+o];
--                      blue += filters[bf][s]*in[x+o];
--                      o += os;
--                  }
--                  red = red / 65536;
--                  green = green / 65536;
--                  blue = blue / 65536;
--                  *out++ = (green << 24) | (red << 16) | (green << 8) | blue;
--              }
--          }
--          
--          xftg->glyph_memory = sizergba + sizeof (XftGlyph);
--          if (font->format)
-+      xftg->glyph_memory = size + sizeof (XftGlyph);
-+          if (font->format)
-           {
-               if (!font->glyphset)
-                   font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
--              if (ImageByteOrder (dpy) != XftNativeByteOrder ())
--                  XftSwapCARD32 ((CARD32 *) bufBitmapRgba, sizergba >> 2);
--              XRenderAddGlyphs (dpy, font->glyphset, &glyph,
--                                &xftg->metrics, 1, 
--                                (char *) bufBitmapRgba, sizergba);
--          }
--          else
--          {
--              if (sizergba)
--              {
--                  xftg->bitmap = malloc (sizergba);
--                  if (xftg->bitmap)
--                      memcpy (xftg->bitmap, bufBitmapRgba, sizergba);
--              }
--              else
--                  xftg->bitmap = NULL;
--          }
--      }
--      else
--      {
--          xftg->glyph_memory = size + sizeof (XftGlyph);
--          if (font->format)
--          {
--              /*
--               * swap bit order around; FreeType is always MSBFirst
--               */
--              if (!font->info.antialias)
-+          if ( mode == FT_RENDER_MODE_MONO )
-               {
-+                /* swap bits in each byte */
-                   if (BitmapBitOrder (dpy) != MSBFirst)
-                   {
--                      unsigned char   *line;
--                      unsigned char   c;
--                      int                 i;
-+                    unsigned char   *line = (unsigned char*)bufBitmap;
-+                    int             i = size;
--                      line = (unsigned char *) bufBitmap;
--                      i = size;
-                       while (i--)
-                       {
--                          c = *line;
-+                        int  c = *line;
-+
-                           c = ((c << 1) & 0xaa) | ((c >> 1) & 0x55);
-                           c = ((c << 2) & 0xcc) | ((c >> 2) & 0x33);
-                           c = ((c << 4) & 0xf0) | ((c >> 4) & 0x0f);
-@@ -577,8 +701,12 @@
-                       }
-                   }
-               }
--              if (!font->glyphset)
--                  font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
-+            else if ( mode != FT_RENDER_MODE_NORMAL )
-+            {
-+                /* invert ARGB <=> BGRA */
-+                if (ImageByteOrder (dpy) != XftNativeByteOrder ())
-+                    XftSwapCARD32 ((CARD32 *) bufBitmap, size >> 2);
-+            }
-               XRenderAddGlyphs (dpy, font->glyphset, &glyph,
-                                 &xftg->metrics, 1, 
-                                 (char *) bufBitmap, size);
-@@ -594,7 +722,7 @@
-               else
-                   xftg->bitmap = NULL;
-           }
--      }
-+
-       font->glyph_memory += xftg->glyph_memory;
-       info->glyph_memory += xftg->glyph_memory;
-       if (XftDebug() & XFT_DBG_CACHE)
-@@ -605,8 +733,6 @@
-     }
-     if (bufBitmap != bufLocal)
-       free (bufBitmap);
--    if (bufBitmapRgba != bufLocalRgba)
--      free (bufBitmapRgba);
-     XftUnlockFace (&font->public);
- }
---- a/src/xftint.h
-+++ b/src/xftint.h
-@@ -145,6 +145,7 @@
-     FcBool            antialias;      /* doing antialiasing */
-     FcBool            embolden;       /* force emboldening */
-     int                       rgba;           /* subpixel order */
-+    int                       lcd_filter;     /* lcd filter */
-     FT_Matrix         matrix;         /* glyph transformation matrix */
-     FcBool            transform;      /* non-identify matrix? */
-     FT_Int            load_flags;     /* glyph load flags */
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644 (file)
index 232e519..0000000
+++ /dev/null
@@ -1 +0,0 @@
-100-libXft-2.1.10-lcd-filter-3.patch
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index 504c56f..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/make -f
-# debian/rules for the Debian libxft package.
-# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>
-# Copyright Â© 2005 Daniel Stone <daniel@fooishbar.org>
-# Copyright Â© 2005 David Nusinow <dnusinow@debian.org>
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-PACKAGE = libxft2
-
-include debian/xsfbs/xsfbs.mk
-
-CFLAGS = -Wall -g
-LDFLAGS +=  -Wl,--hash-style=both -Wl,--as-needed
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-else
-       CFLAGS += -O2
-endif
-ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
-       NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
-       MAKEFLAGS += -j$(NUMJOBS)
-endif
-
-DEB_HOST_ARCH      ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
-DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-       confflags += --build=$(DEB_HOST_GNU_TYPE)
-else
-       confflags += --build=$(DEB_HOST_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
-#      confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
-endif
-
-configure: $(STAMP_DIR)/patch
-       dh_testdir
-       autoreconf -vfi
-
-obj-$(DEB_BUILD_GNU_TYPE)/config.status: configure
-       mkdir -p obj-$(DEB_BUILD_GNU_TYPE)
-       cd obj-$(DEB_BUILD_GNU_TYPE) && \
-       ../configure --prefix=/usr --mandir=\$${prefix}/share/man \
-                    --infodir=\$${prefix}/share/info $(confflags) \
-                    CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
-build: build-stamp
-build-stamp: obj-$(DEB_BUILD_GNU_TYPE)/config.status
-       dh_testdir
-
-       cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE)
-       >$@
-
-clean: xsfclean
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp
-
-       rm -f config.cache config.log config.status
-       rm -f */config.cache */config.log */config.status
-       rm -f conftest* */conftest*
-       rm -rf autom4te.cache */autom4te.cache
-       rm -rf obj-*
-       rm -f $$(find -name Makefile.in)
-       rm -f aclocal.m4 config.guess config.h.in config.sub configure
-       rm -f depcomp install-sh ltmain.sh missing mkinstalldirs
-
-       dh_clean
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k
-       dh_installdirs
-
-       cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-
-#      dh_installdocs
-       dh_install --sourcedir=debian/tmp --list-missing
-#      dh_installchangelogs ChangeLog
-       dh_link
-       dh_strip --dbg-package=$(PACKAGE)-dbg
-       dh_compress
-       dh_fixperms
-       dh_makeshlibs -V "libxft2 (>> 2.1.1)"
-       dh_shlibdeps
-       dh_installdeb
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-# Build architecture-independent files here.
-binary-indep: build install
-# Nothing to do
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/watch b/debian/watch
deleted file mode 100644 (file)
index 7ac4fde..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://xorg.freedesktop.org/releases/individual/lib/ libXft-(.*)\.tar\.gz
diff --git a/debian/xsfbs/repack.sh b/debian/xsfbs/repack.sh
deleted file mode 100644 (file)
index 5935cc9..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-set -e
-
-if ! [ -d debian/prune ]; then
-       exit 0
-fi
-
-if [ "x$1" != x--upstream-version ]; then
-       exit 1
-fi
-
-version="$2"
-filename="$3"
-
-if [ -z "$version" ] || ! [ -f "$filename" ]; then
-       exit 1
-fi
-
-dir="$(pwd)"
-tempdir="$(mktemp -d)"
-
-cd "$tempdir"
-tar xf "$dir/$filename"
-cat "$dir"/debian/prune/* | while read file; do rm -f */$file; done
-
-tar czf "$dir/$filename" *
-cd "$dir"
-rm -rf "$tempdir"
-echo "Done pruning upstream tarball"
-
-exit 0
diff --git a/debian/xsfbs/xsfbs.mk b/debian/xsfbs/xsfbs.mk
deleted file mode 100644 (file)
index 5e16b10..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-#!/usr/bin/make -f
-
-# Debian X Strike Force Build System (XSFBS): Make portion
-
-# Copyright 1996 Stephen Early
-# Copyright 1997 Mark Eichin
-# Copyright 1998-2005, 2007 Branden Robinson
-# Copyright 2005 David Nusinow
-#
-# Licensed under the GNU General Public License, version 2.  See the file
-# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
-
-# Originally by Stephen Early <sde1000@debian.org>
-# Modified by Mark W. Eichin <eichin@kitten.gen.ma.us>
-# Modified by Adam Heath <doogie@debian.org>
-# Modified by Branden Robinson <branden@debian.org>
-# Modified by Fabio Massimo Di Nitto <fabbione@fabbione.net>
-# Modified by David Nusinow <dnusinow@debian.org>
-# Acknowledgements to Manoj Srivastava.
-
-# Pass $(DH_OPTIONS) into the environment for debhelper's benefit.
-export DH_OPTIONS
-
-# force quilt to not use ~/.quiltrc and to use debian/patches
-QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null
-
-# Set up parameters for the upstream build environment.
-
-# Determine (source) package name from Debian changelog.
-SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \
-                        | grep '^Source:' | awk '{print $$2}')
-
-# Determine package version from Debian changelog.
-SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \
-                        | grep '^Version:' | awk '{print $$2}')
-
-# Determine upstream version number.
-UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//')
-
-# Determine the source version without the epoch for make-orig-tar-gz
-NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://')
-
-# Figure out who's building this package.
-BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}})
-
-# Find out if this is an official build; an official build has nothing but
-# digits, dots, and/or the codename of a release in the Debian part of the
-# version number.  Anything else indicates an unofficial build.
-OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi)
-
-# Set up parameters for the Debian build environment.
-
-# Determine our architecture.
-BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
-# Work around some old-time dpkg braindamage.
-BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH))
-# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy.
-ifdef DEB_HOST_ARCH
- ARCH:=$(DEB_HOST_ARCH)
-else
- # dpkg-cross sets the ARCH environment variable; if set, use it.
- ifdef ARCH
-  ARCH:=$(ARCH)
- else
-  ARCH:=$(BUILD_ARCH)
- endif
-endif
-
-# $(STAMP_DIR) houses stamp files for complex targets.
-STAMP_DIR:=stampdir
-
-# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place
-# their files.
-DEBTREEDIR:=$(CURDIR)/debian/tmp
-
-# All "important" targets have four lines:
-#   1) A target name that is invoked by a package-building tool or the user.
-#      This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart.
-#   2) A line delcaring 1) as a phony target (".PHONY:").
-#   3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may
-#   depend on other targets.
-#   4) A line declaring 3) as a member of the $(stampdir_targets) variable; the
-#   "$(STAMP_DIR)/" prefix is omitted.
-#
-# This indirection is needed so that the "stamp" files that signify when a rule
-# is done can be located in a separate "stampdir".  Recall that make has no way
-# to know when a goal has been met for a phony target (like "build" or
-# "install").
-#
-# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@"
-# so that the target will not be run again.  Removing the file will make Make
-# run the target over.
-
-# All phony targets should be declared as dependencies of .PHONY, even if they
-# do not have "($STAMP_DIR)/"-prefixed counterparts.
-
-# Define a harmless default rule to keep things from going nuts by accident.
-.PHONY: default
-default:
-
-# Set up the $(STAMP_DIR) directory.
-.PHONY: stampdir
-stampdir_targets+=stampdir
-stampdir: $(STAMP_DIR)/stampdir
-$(STAMP_DIR)/stampdir:
-       mkdir $(STAMP_DIR)
-       >$@
-
-# Set up the package build directory as quilt expects to find it.
-.PHONY: prepare
-stampdir_targets+=prepare
-prepare: $(STAMP_DIR)/prepare
-$(STAMP_DIR)/prepare: $(STAMP_DIR)/log $(STAMP_DIR)/genscripts
-       >$@
-
-.PHONY: log
-stampdir_targets+=log
-log: $(STAMP_DIR)/log
-$(STAMP_DIR)/log: $(STAMP_DIR)/stampdir
-       mkdir -p $(STAMP_DIR)/log
-
-# Apply all patches to the upstream source.
-.PHONY: patch
-stampdir_targets+=patch
-patch: $(STAMP_DIR)/patch
-$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
-       if ! [ `which quilt` ]; then \
-               echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \
-               exit 1; \
-       fi; \
-       if $(QUILT) next >/dev/null 2>&1; then \
-         echo -n "Applying patches..."; \
-         if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \
-           cat $(STAMP_DIR)/log/patch; \
-           echo "successful."; \
-         else \
-           cat $(STAMP_DIR)/log/patch; \
-           echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
-           exit 1; \
-         fi; \
-       else \
-         echo "No patches to apply"; \
-       fi; \
-       >$@
-
-# Revert all patches to the upstream source.
-.PHONY: unpatch
-unpatch: $(STAMP_DIR)/log
-       rm -f $(STAMP_DIR)/patch
-       @echo -n "Unapplying patches..."; \
-       if $(QUILT) applied >/dev/null 2>/dev/null; then \
-         if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
-           cat $(STAMP_DIR)/log/unpatch; \
-           echo "successful."; \
-         else \
-           cat $(STAMP_DIR)/log/unpatch; \
-           echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \
-           exit 1; \
-         fi; \
-       else \
-         echo "nothing to do."; \
-       fi
-
-# Clean the generated maintainer scripts.
-.PHONY: cleanscripts
-cleanscripts:
-       rm -f $(STAMP_DIR)/genscripts
-       rm -f debian/*.config \
-             debian/*.postinst \
-             debian/*.postrm \
-             debian/*.preinst \
-             debian/*.prerm
-
-# Clean the package build tree.
-.PHONY: xsfclean
-xsfclean: cleanscripts unpatch
-       dh_testdir
-       rm -rf .pc
-       rm -rf $(STAMP_DIR)
-       dh_clean
-
-# Remove files from the upstream source tree that we don't need, or which have
-# licensing problems.  It must be run before creating the .orig.tar.gz.
-#
-# Note: This rule is for Debian package maintainers' convenience, and is not
-# needed for conventional build scenarios.
-.PHONY: prune-upstream-tree
-prune-upstream-tree:
-       # Ensure we're in the correct directory.
-       dh_testdir
-       grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf
-
-# Verify that there are no offsets or fuzz in the patches we apply.
-#
-# Note: This rule is for Debian package maintainers' convenience, and is not
-# needed for conventional build scenarios.
-.PHONY: patch-audit
-patch-audit: prepare unpatch
-       @echo -n "Auditing patches..."; \
-       >$(STAMP_DIR)/log/patch; \
-       FUZZY=; \
-       while [ -n "$$($(QUILT) next)" ]; do \
-         RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\
-         case "$$RESULT" in \
-           succeeded) \
-             echo "fuzzy patch: $$($(QUILT) top)" \
-               | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \
-             FUZZY=yes; \
-             ;; \
-           FAILED) \
-             echo "broken patch: $$($(QUILT) next)" \
-               | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \
-             exit 1; \
-             ;; \
-         esac; \
-       done; \
-       if [ -n "$$FUZZY" ]; then \
-         echo "there were fuzzy patches; please fix."; \
-         exit 1; \
-       else \
-         echo "done."; \
-       fi
-
-# Generate the maintainer scripts.
-.PHONY: genscripts
-stampdir_targets+=genscripts
-genscripts: $(STAMP_DIR)/genscripts
-$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir
-       for FILE in debian/*.config.in \
-                   debian/*.postinst.in \
-                   debian/*.postrm.in \
-                   debian/*.preinst.in \
-                   debian/*.prerm.in; do \
-         if [ -e "$$FILE" ]; then \
-           MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \
-           sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \
-             | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \
-           cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \
-           sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \
-             | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \
-           sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \
-               -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \
-             <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \
-           rm $$MAINTSCRIPT.tmp; \
-         fi; \
-       done
-       # Validate syntax of generated shell scripts.
-       #sh debian/scripts/validate-posix-sh debian/*.config \
-       #                                    debian/*.postinst \
-       #                                    debian/*.postrm \
-       #                                    debian/*.preinst \
-       #                                    debian/*.prerm
-       >$@
-
-SERVERMINVERS = $(shell cat /usr/share/xserver-xorg/serverminver 2>/dev/null)
-VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null)
-INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null)
-SERVER_DEPENDS = xserver-xorg-core (>= $(SERVERMINVERS))
-VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI)
-INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI)
-ifeq ($(PACKAGE),)
-PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control)
-endif
-
-.PHONY: serverabi
-serverabi: install
-ifeq ($(SERVERMINVERS),)
-       @echo error: xserver-xorg-dev needs to be installed
-       @exit 1
-else
-       echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(PACKAGE).substvars
-       echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
-       echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
-endif
-
-# vim:set noet ai sts=8 sw=8 tw=0:
diff --git a/debian/xsfbs/xsfbs.sh b/debian/xsfbs/xsfbs.sh
deleted file mode 100644 (file)
index 813fd8d..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-# This is the X Strike Force shell library for X Window System package
-# maintainer scripts.  It serves to define shell functions commonly used by
-# such packages, and performs some error checking necessary for proper operation
-# of those functions.  By itself, it does not "do" much; the maintainer scripts
-# invoke the functions defined here to accomplish package installation and
-# removal tasks.
-
-# If you are reading this within a Debian package maintainer script (e.g.,
-# /var/lib/dpkg/info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can
-# skip past this library by scanning forward in this file to the string
-# "GOBSTOPPER".
-
-SOURCE_VERSION=@SOURCE_VERSION@
-OFFICIAL_BUILD=@OFFICIAL_BUILD@
-
-# Use special abnormal exit codes so that problems with this library are more
-# easily tracked down.
-SHELL_LIB_INTERNAL_ERROR=86
-SHELL_LIB_THROWN_ERROR=74
-SHELL_LIB_USAGE_ERROR=99
-
-# old -> new variable names
-if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then
-  DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE"
-fi
-if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then
-  DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF"
-fi
-
-# initial sanity checks
-if [ -z "$THIS_PACKAGE" ]; then
-  cat >&2 <<EOF
-Error: package maintainer script attempted to use shell library without
-definining \$THIS_PACKAGE shell variable.  Please report the package name,
-version, and the text of this error message to the Debian Bug Tracking System.
-Visit <http://www.debian.org/Bugs/Reporting> on the World Wide Web for
-instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the
-"doc-debian" package, or install the "reportbug" package and use the command of
-the same name to file a report against version $SOURCE_VERSION of this package.
-EOF
-  exit $SHELL_LIB_USAGE_ERROR
-fi
-
-if [ -z "$THIS_SCRIPT" ]; then
-  cat >&2 <<EOF
-Error: package maintainer script attempted to use shell library without
-definining \$THIS_SCRIPT shell variable.  Please report the package name,
-version, and the text of this error message to the Debian Bug Tracking System.
-Visit <http://www.debian.org/Bugs/Reporting> on the World Wide Web for
-instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the
-"doc-debian" package, or install the "reportbug" package and use the command of
-the same name to file a report against version $SOURCE_VERSION of the
-"$THIS_PACKAGE" package.
-EOF
-  exit $SHELL_LIB_USAGE_ERROR
-fi
-
-if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then
-  RECONFIGURE="true"
-else
-  RECONFIGURE=
-fi
-
-if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then
-  FIRSTINST="yes"
-fi
-
-if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then
-  UPGRADE="yes"
-fi
-
-trap "message;\
-      message \"Received signal.  Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
-      message;\
-      exit 1" HUP INT QUIT TERM
-
-reject_nondigits () {
-  # syntax: reject_nondigits [ operand ... ]
-  #
-  # scan operands (typically shell variables whose values cannot be trusted) for
-  # characters other than decimal digits and barf if any are found
-  while [ -n "$1" ]; do
-    # does the operand contain anything but digits?
-    if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then
-      # can't use die(), because it wraps message() which wraps this function
-      echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \
-           "possibly malicious garbage \"$1\"" >&2
-      exit $SHELL_LIB_THROWN_ERROR
-    fi
-    shift
-  done
-}
-
-reject_unlikely_path_chars () {
-  # syntax: reject_unlikely_path_chars [ operand ... ]
-  #
-  # scan operands (typically shell variables whose values cannot be trusted) for
-  # characters unlikely to be seen in a path and which the shell might
-  # interpret and barf if any are found
-  while [ -n "$1" ]; do
-    # does the operand contain any funny characters?
-    if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then
-      # can't use die(), because I want to avoid forward references
-      echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \
-           "encountered possibly malicious garbage \"$1\"" >&2
-      exit $SHELL_LIB_THROWN_ERROR
-    fi
-    shift
-  done
-}
-
-# Query the terminal to establish a default number of columns to use for
-# displaying messages to the user.  This is used only as a fallback in the
-# event the COLUMNS variable is not set.  ($COLUMNS can react to SIGWINCH while
-# the script is running, and this cannot, only being calculated once.)
-DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true
-if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then
-  DEFCOLUMNS=80
-fi
-
-message () {
-  # pretty-print messages of arbitrary length
-  reject_nondigits "$COLUMNS"
-  echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2
-}
-
-observe () {
-  # syntax: observe message ...
-  #
-  # issue observational message suitable for logging someday when support for
-  # it exists in dpkg
-  if [ -n "$DEBUG_XORG_PACKAGE" ]; then
-    message "$THIS_PACKAGE $THIS_SCRIPT note: $*"
-  fi
-}
-
-warn () {
-  # syntax: warn message ...
-  #
-  # issue warning message suitable for logging someday when support for
-  # it exists in dpkg; also send to standard error
-  message "$THIS_PACKAGE $THIS_SCRIPT warning: $*"
-}
-
-die () {
-  # syntax: die message ...
-  #
-  # exit script with error message
-  message "$THIS_PACKAGE $THIS_SCRIPT error: $*"
-  exit $SHELL_LIB_THROWN_ERROR
-}
-
-internal_error () {
-  # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
-  message "internal error: $*"
-  if [ -n "$OFFICIAL_BUILD" ]; then
-    message "Please report a bug in the $THIS_SCRIPT script of the" \
-            "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \
-            "Tracking System.  Include all messages above that mention the" \
-            "$THIS_PACKAGE package.  Visit " \
-            "<http://www.debian.org/Bugs/Reporting> on the World Wide Web for" \
-            "instructions, read the file" \
-            "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \
-            "package, or install the reportbug package and use the command of" \
-            "the same name to file a report."
-  fi
-  exit $SHELL_LIB_INTERNAL_ERROR
-}
-
-usage_error () {
-  message "usage error: $*"
-  message "Please report a bug in the $THIS_SCRIPT script of the" \
-          "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \
-          "Tracking System.  Include all messages above that mention the" \
-          "$THIS_PACKAGE package.  Visit " \
-          "<http://www.debian.org/Bugs/Reporting> on the World Wide Web for" \
-          "instructions, read the file" \
-          "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \
-          "package, or install the reportbug package and use the command of" \
-          "the same name to file a report."
-  exit $SHELL_LIB_USAGE_ERROR
-}
-
-font_update () {
-  # run $UPDATECMDS in $FONTDIRS
-
-  local dir cmd shortcmd x_font_dir_prefix
-
-  x_font_dir_prefix="/usr/share/fonts/X11"
-
-  if [ -z "$UPDATECMDS" ]; then
-    usage_error "font_update() called but \$UPDATECMDS not set"
-  fi
-  if [ -z "$FONTDIRS" ]; then
-    usage_error "font_update() called but \$FONTDIRS not set"
-  fi
-
-  reject_unlikely_path_chars "$UPDATECMDS"
-  reject_unlikely_path_chars "$FONTDIRS"
-
-  for dir in $FONTDIRS; do
-    if [ -d "$x_font_dir_prefix/$dir" ]; then
-      for cmd in $UPDATECMDS; do
-        if which "$cmd" > /dev/null 2>&1; then
-          shortcmd=${cmd##*/}
-          observe "running $shortcmd in $dir font directory"
-         cmd_opts=
-          if [ "$shortcmd" = "update-fonts-alias" ]; then
-            cmd_opts=--x11r7-layout
-          fi
-          if [ "$shortcmd" = "update-fonts-dir" ]; then
-            cmd_opts=--x11r7-layout
-          fi
-          if [ "$shortcmd" = "update-fonts-scale" ]; then
-            cmd_opts=--x11r7-layout
-          fi
-          $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \
-                              "failed; font directory data may not" \
-                              "be up to date"
-        else
-          warn "$cmd not found; not updating corresponding $dir font" \
-               "directory data"
-        fi
-      done
-    else
-      warn "$dir is not a directory; not updating font directory data"
-    fi
-  done
-}
-
-remove_conffile_prepare () {
-  # syntax: remove_conffile_prepare filename official_md5sum ...
-  #
-  # Check a conffile "filename" against a list of canonical MD5 checksums.
-  # If the file's current MD5 checksum matches one of the "official_md5sum"
-  # operands provided, then prepare the conffile for removal from the system.
-  # We defer actual deletion until the package is configured so that we can
-  # roll this operation back if package installation fails.
-  #
-  # Call this function from a preinst script in the event $1 is "upgrade" or
-  # "install" and verify $2 to ensure the package is being upgraded from a
-  # version (or installed over a version removed-but-not-purged) prior to the
-  # one in which the conffile was obsoleted.
-
-  local conffile current_checksum
-
-  # validate arguments
-  if [ $# -lt 2 ]; then
-    usage_error "remove_conffile_prepare() called with wrong number of" \
-                "arguments; expected at least 2, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  conffile="$1"
-  shift
-
-  # does the conffile even exist?
-  if [ -e "$conffile" ]; then
-    # calculate its checksum
-    current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//')
-    # compare it to each supplied checksum
-    while [ -n "$1" ]; do
-      if [ "$current_checksum" = "$1" ]; then
-        # we found a match; move the confffile and stop looking
-        observe "preparing obsolete conffile $conffile for removal"
-        mv "$conffile" "$conffile.$THIS_PACKAGE-tmp"
-        break
-      fi
-      shift
-    done
-  fi
-}
-
-remove_conffile_lookup () {
-  # syntax: remove_conffile_lookup package filename
-  #
-  # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal
-  # if it matches the actual file's md5sum.
-  #
-  # Call this function when you would call remove_conffile_prepare but only
-  # want to check against dpkg's status database instead of known checksums.
-
-  local package conffile old_md5sum
-
-  # validate arguments
-  if [ $# -ne 2 ]; then
-    usage_error "remove_conffile_lookup() called with wrong number of" \
-                "arguments; expected 1, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  package="$1"
-  conffile="$2"
-
-  if ! [ -e "$conffile" ]; then
-    return
-  fi
-  old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \
-    awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')"
-  if [ -n "$old_md5sum" ]; then
-    remove_conffile_prepare "$conffile" "$old_md5sum"
-  fi
-}
-
-remove_conffile_commit () {
-  # syntax: remove_conffile_commit filename
-  #
-  # Complete the removal of a conffile "filename" that has become obsolete.
-  #
-  # Call this function from a postinst script after having used
-  # remove_conffile_prepare() in the preinst.
-
-  local conffile
-
-  # validate arguments
-  if [ $# -ne 1 ]; then
-    usage_error "remove_conffile_commit() called with wrong number of" \
-                "arguments; expected 1, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  conffile="$1"
-
-  # if the temporary file created by remove_conffile_prepare() exists, remove it
-  if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then
-    observe "committing removal of obsolete conffile $conffile"
-    rm "$conffile.$THIS_PACKAGE-tmp"
-  fi
-}
-
-remove_conffile_rollback () {
-  # syntax: remove_conffile_rollback filename
-  #
-  # Roll back the removal of a conffile "filename".
-  #
-  # Call this function from a postrm script in the event $1 is "abort-upgrade"
-  # or "abort-install" is  after having used remove_conffile_prepare() in the
-  # preinst.
-
-  local conffile
-
-  # validate arguments
-  if [ $# -ne 1 ]; then
-    usage_error "remove_conffile_rollback() called with wrong number of" \
-                "arguments; expected 1, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  conffile="$1"
-
-  # if the temporary file created by remove_conffile_prepare() exists, move it
-  # back
-  if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then
-    observe "rolling back removal of obsolete conffile $conffile"
-    mv "$conffile.$THIS_PACKAGE-tmp" "$conffile"
-  fi
-}
-
-replace_conffile_with_symlink_prepare () {
-  # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \
-  # official_md5sum ...
-  #
-  # Check a conffile "oldfilename" against a list of canonical MD5 checksums.
-  # If the file's current MD5 checksum matches one of the "official_md5sum"
-  # operands provided, then prepare the conffile for removal from the system.
-  # We defer actual deletion until the package is configured so that we can
-  # roll this operation back if package installation fails. Otherwise copy it
-  # to newfilename and let dpkg handle it through conffiles mechanism.
-  #
-  # Call this function from a preinst script in the event $1 is "upgrade" or
-  # "install" and verify $2 to ensure the package is being upgraded from a
-  # version (or installed over a version removed-but-not-purged) prior to the
-  # one in which the conffile was obsoleted.
-
-  local conffile current_checksum
-
-  # validate arguments
-  if [ $# -lt 3 ]; then
-    usage_error "replace_conffile_with_symlink_prepare() called with wrong" \
-                " number of arguments; expected at least 3, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  oldconffile="$1"
-  shift
-  newconffile="$1"
-  shift
-
-  remove_conffile_prepare "$_oldconffile" "$@"
-  # If $oldconffile still exists, then md5sums didn't match.
-  # Copy it to new one.
-  if [ -f "$oldconffile" ]; then
-    cp "$oldconffile" "$newconffile"
-  fi
-
-}
-
-replace_conffile_with_symlink_commit () {
-  # syntax: replace_conffile_with_symlink_commit oldfilename
-  #
-  # Complete the removal of a conffile "oldfilename" that has been
-  # replaced by a symlink.
-  #
-  # Call this function from a postinst script after having used
-  # replace_conffile_with_symlink_prepare() in the preinst.
-
-  local conffile
-
-  # validate arguments
-  if [ $# -ne 1 ]; then
-    usage_error "replace_conffile_with_symlink_commit() called with wrong" \
-                "number of arguments; expected 1, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  conffile="$1"
-
-  remove_conffile_commit "$conffile"
-}
-
-replace_conffile_with_symlink_rollback () {
-  # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename
-  #
-  # Roll back the replacing of a conffile "oldfilename" with symlink to
-  # "newfilename".
-  #
-  # Call this function from a postrm script in the event $1 is "abort-upgrade"
-  # or "abort-install" and verify $2 to ensure the package failed to upgrade
-  # from a version (or install over a version removed-but-not-purged) prior
-  # to the one in which the conffile was obsoleted.
-  # You should have  used replace_conffile_with_symlink_prepare() in the
-  # preinst.
-
-  local conffile
-
-  # validate arguments
-  if [ $# -ne 2 ]; then
-    usage_error "replace_conffile_with_symlink_rollback() called with wrong" \
-                "number of arguments; expected 2, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  oldconffile="$1"
-  newconffile="$2"
-
-  remove_conffile_rollback "$_oldconffile"
-  if [ -f "$newconffile" ]; then
-    rm "$newconffile"
-  fi
-}
-
-run () {
-  # syntax: run command [ argument ... ]
-  #
-  # Run specified command with optional arguments and report its exit status.
-  # Useful for commands whose exit status may be nonzero, but still acceptable,
-  # or commands whose failure is not fatal to us.
-  #
-  # NOTE: Do *not* use this function with db_get or db_metaget commands; in
-  # those cases the return value of the debconf command *must* be checked
-  # before the string returned by debconf is used for anything.
-
-  local retval
-
-  # validate arguments
-  if [ $# -lt 1 ]; then
-    usage_error "run() called with wrong number of arguments; expected at" \
-                "least 1, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  "$@" || retval=$?
-
-  if [ ${retval:-0} -ne 0 ]; then
-    observe "command \"$*\" exited with status $retval"
-  fi
-}
-
-make_symlink_sane () {
-  # syntax: make_symlink_sane symlink target
-  #
-  # Ensure that the symbolic link symlink exists, and points to target.
-  #
-  # If symlink does not exist, create it and point it at target.
-  #
-  # If symlink exists but is not a symbolic link, back it up.
-  #
-  # If symlink exists, is a symbolic link, but points to the wrong location, fix
-  # it.
-  #
-  # If symlink exists, is a symbolic link, and already points to target, do
-  # nothing.
-  #
-  # This function wouldn't be needed if ln had an -I, --idempotent option.
-
-  # Validate arguments.
-  if [ $# -ne 2 ]; then
-    usage_error "make_symlink_sane() called with wrong number of arguments;" \
-      "expected 2, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  # We could just use the positional parameters as-is, but that makes things
-  # harder to follow.
-  local symlink target
-
-  symlink="$1"
-  target="$2"
-
-  if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then
-      observe "link from $symlink to $target already exists"
-  else
-    observe "creating symbolic link from $symlink to $target"
-    mkdir -p "${target%/*}" "${symlink%/*}"
-    ln -s -b -S ".dpkg-old" "$target" "$symlink"
-  fi
-}
-
-migrate_dir_to_symlink () {
-  # syntax: migrate_dir_to_symlink old_location new_location
-  #
-  # Per Debian Policy section 6.5.4, "A directory will never be replaced by a
-  # symbolic link to a directory or vice versa; instead, the existing state
-  # (symlink or not) will be left alone and dpkg will follow the symlink if
-  # there is one."
-  #
-  # We have to do it ourselves.
-  #
-  # This function moves the contents of old_location, a directory, into
-  # new_location, a directory, then makes old_location a symbolic link to
-  # new_location.
-  #
-  # old_location need not exist, but if it does, it must be a directory (or a
-  # symlink to a directory).  If it is not, it is backed up.  If new_location
-  # exists already and is not a directory, it is backed up.
-  #
-  # This function should be called from a package's preinst so that other
-  # packages unpacked after this one --- but before this package's postinst runs
-  # --- are unpacked into new_location even if their payloads contain
-  # old_location filespecs.
-
-  # Validate arguments.
-  if [ $# -ne 2 ]; then
-    usage_error "migrate_dir_to_symlink() called with wrong number of"
-                "arguments; expected 2, got $#"
-    exit $SHELL_LIB_USAGE_ERROR
-  fi
-
-  # We could just use the positional parameters as-is, but that makes things
-  # harder to follow.
-  local new old
-
-  old="$1"
-  new="$2"
-
-  # Is old location a symlink?
-  if [ -L "$old" ]; then
-    # Does it already point to new location?
-    if [ "$(readlink "$old")" = "$new" ]; then
-      # Nothing to do; migration has already been done.
-      observe "migration of $old to $new already done"
-      return 0
-    else
-      # Back it up.
-      warn "backing up symbolic link $old as $old.dpkg-old"
-      mv -b "$old" "$old.dpkg-old"
-    fi
-  fi
-
-  # Does old location exist, but is not a directory?
-  if [ -e "$old" ] && ! [ -d "$old" ]; then
-      # Back it up.
-      warn "backing up non-directory $old as $old.dpkg-old"
-      mv -b "$old" "$old.dpkg-old"
-  fi
-
-  observe "migrating $old to $new"
-
-  # Is new location a symlink?
-  if [ -L "$new" ]; then
-    # Does it point the wrong way, i.e., back to where we're migrating from?
-    if [ "$(readlink "$new")" = "$old" ]; then
-      # Get rid of it.
-      observe "removing symbolic link $new which points to $old"
-      rm "$new"
-    else
-      # Back it up.
-      warn "backing up symbolic link $new as $new.dpkg-old"
-      mv -b "$new" "$new.dpkg-old"
-    fi
-  fi
-
-  # Does new location exist, but is not a directory?
-  if [ -e "$new" ] && ! [ -d "$new" ]; then
-    warn "backing up non-directory $new as $new.dpkg-old"
-    mv -b "$new" "$new.dpkg-old"
-  fi
-
-  # Create new directory if it does not yet exist.
-  if ! [ -e "$new" ]; then
-    observe "creating $new"
-    mkdir -p "$new"
-  fi
-
-  # Copy files in old location to new location.  Back up any filenames that
-  # already exist in the new location with the extension ".dpkg-old".
-  observe "copying files from $old to $new"
-  if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then
-    die "error(s) encountered while copying files from $old to $new"
-  fi
-
-  # Remove files at old location.
-  observe "removing $old"
-  rm -r "$old"
-
-  # Create symlink from old location to new location.
-  make_symlink_sane "$old" "$new"
-}
-
-# vim:set ai et sw=2 ts=2 tw=80:
-
-# GOBSTOPPER: The X Strike Force shell library ends here.
old mode 100755 (executable)
new mode 100644 (file)
index 1d68ad9..a854fc5
@@ -29,8 +29,8 @@
  */
 /* #undef will be substituted by configure */
 #define XFT_MAJOR 2
-#define XFT_MINOR 2
-#define XFT_REVISION 0
+#define XFT_MINOR 3
+#define XFT_REVISION 1
 
 #define XFT_VERSION    ((XFT_MAJOR * 10000) + (XFT_MINOR * 100) + (XFT_REVISION))
 #define XftVersion     XFT_VERSION
@@ -105,7 +105,7 @@ typedef struct _XftGlyphFontSpec {
 
 _XFUNCPROTOBEGIN
 
-    
+
 /* xftcolor.c */
 Bool
 XftColorAllocName (Display  *dpy,
@@ -130,13 +130,13 @@ XftColorFree (Display     *dpy,
 /* xftdpy.c */
 Bool
 XftDefaultHasRender (Display *dpy);
-    
+
 Bool
 XftDefaultSet (Display *dpy, FcPattern *defaults);
 
 void
 XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern);
-    
+
 /* xftdraw.c */
 
 XftDraw *
@@ -150,7 +150,7 @@ XftDrawCreateBitmap (Display  *dpy,
                     Pixmap   bitmap);
 
 XftDraw *
-XftDrawCreateAlpha (Display *dpy, 
+XftDrawCreateAlpha (Display *dpy,
                    Pixmap  pixmap,
                    int     depth);
 
@@ -192,7 +192,7 @@ void
 XftDrawString8 (XftDraw                    *draw,
                _Xconst XftColor    *color,
                XftFont             *pub,
-               int                 x, 
+               int                 x,
                int                 y,
                _Xconst FcChar8     *string,
                int                 len);
@@ -219,7 +219,7 @@ void
 XftDrawStringUtf8 (XftDraw         *draw,
                   _Xconst XftColor *color,
                   XftFont          *pub,
-                  int              x, 
+                  int              x,
                   int              y,
                   _Xconst FcChar8  *string,
                   int              len);
@@ -263,7 +263,7 @@ XftDrawGlyphFontSpec (XftDraw                       *draw,
 void
 XftDrawRect (XftDraw           *draw,
             _Xconst XftColor   *color,
-            int                x, 
+            int                x,
             int                y,
             unsigned int       width,
             unsigned int       height);
@@ -297,35 +297,35 @@ XftGlyphExtents (Display      *dpy,
 void
 XftTextExtents8 (Display           *dpy,
                 XftFont            *pub,
-                _Xconst FcChar8    *string, 
+                _Xconst FcChar8    *string,
                 int                len,
                 XGlyphInfo         *extents);
 
 void
 XftTextExtents16 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar16  *string, 
+                 _Xconst FcChar16  *string,
                  int               len,
                  XGlyphInfo        *extents);
 
 void
 XftTextExtents32 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar32  *string, 
+                 _Xconst FcChar32  *string,
                  int               len,
                  XGlyphInfo        *extents);
-    
+
 void
 XftTextExtentsUtf8 (Display        *dpy,
                    XftFont         *pub,
-                   _Xconst FcChar8 *string, 
+                   _Xconst FcChar8 *string,
                    int             len,
                    XGlyphInfo      *extents);
 
 void
 XftTextExtentsUtf16 (Display           *dpy,
                     XftFont            *pub,
-                    _Xconst FcChar8    *string, 
+                    _Xconst FcChar8    *string,
                     FcEndian           endian,
                     int                len,
                     XGlyphInfo         *extents);
@@ -367,8 +367,8 @@ FcBool
 XftFontInfoEqual (_Xconst XftFontInfo *a, _Xconst XftFontInfo *b);
 
 XftFont *
-XftFontOpenInfo (Display       *dpy, 
-                FcPattern      *pattern, 
+XftFontOpenInfo (Display       *dpy,
+                FcPattern      *pattern,
                 XftFontInfo    *fi);
 
 XftFont *
@@ -411,12 +411,12 @@ FcBool
 XftCharExists (Display     *dpy,
               XftFont      *pub,
               FcChar32    ucs4);
-    
+
 FT_UInt
-XftCharIndex (Display      *dpy, 
+XftCharIndex (Display      *dpy,
              XftFont       *pub,
              FcChar32      ucs4);
-    
+
 /* xftinit.c */
 FcBool
 XftInit (_Xconst char *config);
@@ -432,7 +432,7 @@ XftListFonts (Display       *dpy,
              ...) _X_SENTINEL(0);
 
 /* xftname.c */
-FcPattern 
+FcPattern
 *XftNameParse (_Xconst char *name);
 
 /* xftrender.c */
@@ -466,7 +466,7 @@ XftCharSpecRender (Display          *dpy,
                   Picture              src,
                   XftFont              *pub,
                   Picture              dst,
-                  int                  srcx, 
+                  int                  srcx,
                   int                  srcy,
                   _Xconst XftCharSpec  *chars,
                   int                  len);
@@ -612,7 +612,7 @@ XftTextRenderUtf16 (Display     *dpy,
 /* xftxlfd.c */
 FcPattern *
 XftXlfdParse (_Xconst char *xlfd_orig, Bool ignore_scalable, Bool complete);
-    
+
 _XFUNCPROTOEND
 
 #endif /* _XFT_H_ */
old mode 100755 (executable)
new mode 100644 (file)
index 490945f..9b3b475
@@ -104,7 +104,7 @@ typedef struct _XftGlyphFontSpec {
 
 _XFUNCPROTOBEGIN
 
-    
+
 /* xftcolor.c */
 Bool
 XftColorAllocName (Display  *dpy,
@@ -129,13 +129,13 @@ XftColorFree (Display     *dpy,
 /* xftdpy.c */
 Bool
 XftDefaultHasRender (Display *dpy);
-    
+
 Bool
 XftDefaultSet (Display *dpy, FcPattern *defaults);
 
 void
 XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern);
-    
+
 /* xftdraw.c */
 
 XftDraw *
@@ -149,7 +149,7 @@ XftDrawCreateBitmap (Display  *dpy,
                     Pixmap   bitmap);
 
 XftDraw *
-XftDrawCreateAlpha (Display *dpy, 
+XftDrawCreateAlpha (Display *dpy,
                    Pixmap  pixmap,
                    int     depth);
 
@@ -191,7 +191,7 @@ void
 XftDrawString8 (XftDraw                    *draw,
                _Xconst XftColor    *color,
                XftFont             *pub,
-               int                 x, 
+               int                 x,
                int                 y,
                _Xconst FcChar8     *string,
                int                 len);
@@ -218,7 +218,7 @@ void
 XftDrawStringUtf8 (XftDraw         *draw,
                   _Xconst XftColor *color,
                   XftFont          *pub,
-                  int              x, 
+                  int              x,
                   int              y,
                   _Xconst FcChar8  *string,
                   int              len);
@@ -262,7 +262,7 @@ XftDrawGlyphFontSpec (XftDraw                       *draw,
 void
 XftDrawRect (XftDraw           *draw,
             _Xconst XftColor   *color,
-            int                x, 
+            int                x,
             int                y,
             unsigned int       width,
             unsigned int       height);
@@ -296,35 +296,35 @@ XftGlyphExtents (Display      *dpy,
 void
 XftTextExtents8 (Display           *dpy,
                 XftFont            *pub,
-                _Xconst FcChar8    *string, 
+                _Xconst FcChar8    *string,
                 int                len,
                 XGlyphInfo         *extents);
 
 void
 XftTextExtents16 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar16  *string, 
+                 _Xconst FcChar16  *string,
                  int               len,
                  XGlyphInfo        *extents);
 
 void
 XftTextExtents32 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar32  *string, 
+                 _Xconst FcChar32  *string,
                  int               len,
                  XGlyphInfo        *extents);
-    
+
 void
 XftTextExtentsUtf8 (Display        *dpy,
                    XftFont         *pub,
-                   _Xconst FcChar8 *string, 
+                   _Xconst FcChar8 *string,
                    int             len,
                    XGlyphInfo      *extents);
 
 void
 XftTextExtentsUtf16 (Display           *dpy,
                     XftFont            *pub,
-                    _Xconst FcChar8    *string, 
+                    _Xconst FcChar8    *string,
                     FcEndian           endian,
                     int                len,
                     XGlyphInfo         *extents);
@@ -366,8 +366,8 @@ FcBool
 XftFontInfoEqual (_Xconst XftFontInfo *a, _Xconst XftFontInfo *b);
 
 XftFont *
-XftFontOpenInfo (Display       *dpy, 
-                FcPattern      *pattern, 
+XftFontOpenInfo (Display       *dpy,
+                FcPattern      *pattern,
                 XftFontInfo    *fi);
 
 XftFont *
@@ -410,12 +410,12 @@ FcBool
 XftCharExists (Display     *dpy,
               XftFont      *pub,
               FcChar32    ucs4);
-    
+
 FT_UInt
-XftCharIndex (Display      *dpy, 
+XftCharIndex (Display      *dpy,
              XftFont       *pub,
              FcChar32      ucs4);
-    
+
 /* xftinit.c */
 FcBool
 XftInit (_Xconst char *config);
@@ -431,7 +431,7 @@ XftListFonts (Display       *dpy,
              ...) _X_SENTINEL(0);
 
 /* xftname.c */
-FcPattern 
+FcPattern
 *XftNameParse (_Xconst char *name);
 
 /* xftrender.c */
@@ -465,7 +465,7 @@ XftCharSpecRender (Display          *dpy,
                   Picture              src,
                   XftFont              *pub,
                   Picture              dst,
-                  int                  srcx, 
+                  int                  srcx,
                   int                  srcy,
                   _Xconst XftCharSpec  *chars,
                   int                  len);
@@ -611,7 +611,7 @@ XftTextRenderUtf16 (Display     *dpy,
 /* xftxlfd.c */
 FcPattern *
 XftXlfdParse (_Xconst char *xlfd_orig, Bool ignore_scalable, Bool complete);
-    
+
 _XFUNCPROTOEND
 
 #endif /* _XFT_H_ */
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/packaging/100-libXft-2.1.10-lcd-filter-3.patch b/packaging/100-libXft-2.1.10-lcd-filter-3.patch
deleted file mode 100644 (file)
index 09189d1..0000000
+++ /dev/null
@@ -1,844 +0,0 @@
---- a/src/xftdpy.c
-+++ b/src/xftdpy.c
-@@ -369,6 +369,10 @@
-       goto bail1;
-     if (!_XftDefaultInitInteger (dpy, pat, FC_RGBA))
-       goto bail1;
-+#ifdef FC_LCD_FILTER
-+    if (!_XftDefaultInitInteger (dpy, pat, FC_LCD_FILTER))
-+      goto bail1;
-+#endif
-     if (!_XftDefaultInitBool (dpy, pat, FC_ANTIALIAS))
-       goto bail1;
- #ifdef FC_EMBOLDEN
-@@ -521,6 +525,14 @@
-                             XftDefaultGetInteger (dpy, FC_RGBA, screen, 
-                                                   subpixel));
-     }
-+#ifdef FC_LCD_FILTER
-+    if (FcPatternGet (pattern, FC_LCD_FILTER, 0, &v) == FcResultNoMatch)
-+    {
-+      FcPatternAddInteger (pattern, FC_LCD_FILTER,
-+                           XftDefaultGetInteger (dpy, FC_LCD_FILTER, screen,
-+                                                 FC_LCD_DEFAULT));
-+    }
-+#endif
-     if (FcPatternGet (pattern, FC_MINSPACE, 0, &v) == FcResultNoMatch)
-     {
-       FcPatternAddBool (pattern, FC_MINSPACE,
---- a/src/xftfreetype.c
-+++ b/src/xftfreetype.c
-@@ -469,6 +469,21 @@
-       goto bail1;
-     }
-     
-+#ifdef FC_LCD_FILTER 
-+    /*
-+     * Get lcd_filter value
-+     */
-+    switch (FcPatternGetInteger (pattern, FC_LCD_FILTER, 0, &fi->lcd_filter)) {
-+    case FcResultNoMatch:
-+      fi->lcd_filter = FC_LCD_DEFAULT;
-+      break;
-+    case FcResultMatch:
-+      break;
-+    default:
-+      goto bail1;
-+    }
-+#endif
-+    
-     /*
-      * Get matrix and transform values
-      */
---- a/src/xftglyphs.c
-+++ b/src/xftglyphs.c
-@@ -21,27 +21,18 @@
-  */
- #include "xftint.h"
--#include <freetype/ftoutln.h>
- #if HAVE_FT_GLYPHSLOT_EMBOLDEN
- #include <freetype/ftsynth.h>
- #endif
--static const int    filters[3][3] = {
--    /* red */
--#if 0
--{    65538*4/7,65538*2/7,65538*1/7 },
--    /* green */
--{    65536*1/4, 65536*2/4, 65537*1/4 },
--    /* blue */
--{    65538*1/7,65538*2/7,65538*4/7 },
-+#if FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH < 20202
-+#  error  "FreeType 2.2.2 or later required to compile this version of libXft"
- #endif
--{    65538*9/13,65538*3/13,65538*1/13 },
--    /* green */
--{    65538*1/6, 65538*4/6, 65538*1/6 },
--    /* blue */
--{    65538*1/13,65538*3/13,65538*9/13 },
--};
-+
-+#include FT_OUTLINE_H
-+#include FT_LCD_FILTER_H
-+#include FT_SYNTHESIS_H
- /*
-  * Validate the memory info for a font
-@@ -69,6 +60,295 @@
-               font->glyph_memory, glyph_memory);
- }
-+
-+/* we sometimes need to convert the glyph bitmap in a FT_GlyphSlot
-+ * into a different format. For example, we want to convert a
-+ * FT_PIXEL_MODE_LCD or FT_PIXEL_MODE_LCD_V bitmap into a 32-bit
-+ * ARGB or ABGR bitmap.
-+ *
-+ * this function prepares a target descriptor for this operation.
-+ *
-+ * input :: target bitmap descriptor. The function will set its
-+ *          'width', 'rows' and 'pitch' fields, and only these
-+ *
-+ * slot  :: the glyph slot containing the source bitmap. this
-+ *          function assumes that slot->format == FT_GLYPH_FORMAT_BITMAP
-+ *
-+ * mode  :: the requested final rendering mode. supported values are
-+ *          MONO, NORMAL (i.e. gray), LCD and LCD_V
-+ *
-+ * the function returns the size in bytes of the corresponding buffer,
-+ * it's up to the caller to allocate the corresponding memory block
-+ * before calling _fill_xrender_bitmap
-+ *
-+ * it also returns -1 in case of error (e.g. incompatible arguments,
-+ * like trying to convert a gray bitmap into a monochrome one)
-+ */
-+static int
-+_compute_xrender_bitmap_size( FT_Bitmap*      target,
-+                              FT_GlyphSlot    slot,
-+                              FT_Render_Mode  mode )
-+{
-+    FT_Bitmap*  ftbit;
-+    int         width, height, pitch;
-+
-+    if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
-+        return -1;
-+
-+    // compute the size of the final bitmap
-+    ftbit  = &slot->bitmap;
-+
-+    width  = ftbit->width;
-+    height = ftbit->rows;
-+    pitch  = (width+3) & ~3;
-+
-+    switch ( ftbit->pixel_mode )
-+    {
-+    case FT_PIXEL_MODE_MONO:
-+        if ( mode == FT_RENDER_MODE_MONO )
-+        {
-+            pitch = (((width+31) & ~31) >> 3);
-+            break;
-+        }
-+        /* fall-through */
-+
-+    case FT_PIXEL_MODE_GRAY:
-+        if ( mode == FT_RENDER_MODE_LCD   ||
-+             mode == FT_RENDER_MODE_LCD_V )
-+        {
-+          /* each pixel is replicated into a 32-bit ARGB value */
-+          pitch = width*4;
-+        }
-+        break;
-+
-+    case FT_PIXEL_MODE_LCD:
-+        if ( mode != FT_RENDER_MODE_LCD )
-+            return -1;
-+
-+        /* horz pixel triplets are packed into 32-bit ARGB values */
-+        width   /= 3;
-+        pitch    = width*4;
-+        break;
-+
-+    case FT_PIXEL_MODE_LCD_V:
-+        if ( mode != FT_RENDER_MODE_LCD_V )
-+            return -1;
-+
-+        /* vert pixel triplets are packed into 32-bit ARGB values */
-+        height  /= 3;
-+        pitch    = width*4;
-+        break;
-+
-+    default:  /* unsupported source format */
-+        return -1;
-+    }
-+
-+    target->width  = width;
-+    target->rows   = height;
-+    target->pitch  = pitch;
-+    target->buffer = NULL;
-+
-+    return pitch * height;
-+}
-+
-+/* this functions converts the glyph bitmap found in a FT_GlyphSlot
-+ * into a different format (see _compute_xrender_bitmap_size)
-+ *
-+ * you should call this function after _compute_xrender_bitmap_size
-+ *
-+ * target :: target bitmap descriptor. Note that its 'buffer' pointer
-+ *           must point to memory allocated by the caller
-+ *
-+ * slot   :: the glyph slot containing the source bitmap
-+ *
-+ * mode   :: the requested final rendering mode
-+ *
-+ * bgr    :: boolean, set if BGR or VBGR pixel ordering is needed
-+ */
-+static void
-+_fill_xrender_bitmap( FT_Bitmap*      target,
-+                      FT_GlyphSlot    slot,
-+                      FT_Render_Mode  mode,
-+                      int             bgr )
-+{
-+    FT_Bitmap*   ftbit = &slot->bitmap;
-+
-+    {
-+        unsigned char*   srcLine   = ftbit->buffer;
-+        unsigned char*   dstLine   = target->buffer;
-+        int              src_pitch = ftbit->pitch;
-+        int              width     = target->width;
-+        int              height    = target->rows;
-+        int              pitch     = target->pitch;
-+        int              subpixel;
-+        int              h;
-+
-+        subpixel = ( mode == FT_RENDER_MODE_LCD ||
-+                     mode == FT_RENDER_MODE_LCD_V );
-+
-+        if ( src_pitch < 0 )
-+          srcLine -= src_pitch*(ftbit->rows-1);
-+
-+        switch ( ftbit->pixel_mode )
-+        {
-+        case FT_PIXEL_MODE_MONO:
-+            if ( subpixel )  /* convert mono to ARGB32 values */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int  x;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
-+                            ((unsigned int*)dstLine)[x] = 0xffffffffU;
-+                    }
-+                }
-+            }
-+            else if ( mode == FT_RENDER_MODE_NORMAL )  /* convert mono to 8-bit gray */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int  x;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
-+                            dstLine[x] = 0xff;
-+                    }
-+                }
-+            }
-+            else  /* copy mono to mono */
-+            {
-+                int  bytes = (width+7) >> 3;
-+
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                    memcpy( dstLine, srcLine, bytes );
-+            }
-+            break;
-+
-+        case FT_PIXEL_MODE_GRAY:
-+            if ( subpixel )  /* convert gray to ARGB32 values */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++ )
-+                    {
-+                        unsigned int  pix = srcLine[x];
-+
-+                        pix |= (pix << 8);
-+                        pix |= (pix << 16);
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else  /* copy gray into gray */
-+            {
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                    memcpy( dstLine, srcLine, width );
-+            }
-+            break;
-+
-+        case FT_PIXEL_MODE_LCD:
-+            if ( !bgr )
-+            {
-+                /* convert horizontal RGB into ARGB32 */
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 3 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[0] << 16) |
-+                              ((unsigned int)src[1] <<  8) |
-+                              ((unsigned int)src[2]      ) |
-+                              ((unsigned int)src[1] << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else
-+            {
-+                /* convert horizontal BGR into ARGB32 */
-+                for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 3 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[2] << 16) |
-+                              ((unsigned int)src[1] <<  8) |
-+                              ((unsigned int)src[0]      ) |
-+                              ((unsigned int)src[1] << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            break;
-+
-+        default:  /* FT_PIXEL_MODE_LCD_V */
-+            /* convert vertical RGB into ARGB32 */
-+            if ( !bgr )
-+            {
-+                for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 1 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[0]           << 16) |
-+                              ((unsigned int)src[src_pitch]   <<  8) |
-+                              ((unsigned int)src[src_pitch*2]      ) |
-+                              ((unsigned int)src[src_pitch]   << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+            else
-+            {
-+                for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
-+                {
-+                    int            x;
-+                    unsigned char* src = srcLine;
-+                    unsigned int*  dst = (unsigned int*)dstLine;
-+
-+                    for ( x = 0; x < width; x++, src += 1 )
-+                    {
-+                        unsigned int  pix;
-+
-+                        pix = ((unsigned int)src[src_pitch*2] << 16) |
-+                              ((unsigned int)src[src_pitch]   <<  8) |
-+                              ((unsigned int)src[0]                ) |
-+                              ((unsigned int)src[src_pitch]   << 24) ;
-+
-+                        dst[x] = pix;
-+                    }
-+                }
-+            }
-+        }
-+    }
-+}
-+
-+
- _X_EXPORT void
- XftFontLoadGlyphs (Display        *dpy,
-                  XftFont          *pub,
-@@ -87,20 +367,14 @@
-     unsigned char   *bufBitmap = bufLocal;
-     int                   bufSize = sizeof (bufLocal);
-     int                   size, pitch;
--    unsigned char   bufLocalRgba[4096];
--    unsigned char   *bufBitmapRgba = bufLocalRgba;
--    int                   bufSizeRgba = sizeof (bufLocalRgba);
--    int                   sizergba, pitchrgba, widthrgba;
-     int                   width;
-     int                   height;
-     int                   left, right, top, bottom;
--    int                   hmul = 1;
--    int                   vmul = 1;
--    FT_Bitmap     ftbit;
--    FT_Matrix     matrix;
-+    FT_Bitmap*            ftbit;
-+    FT_Bitmap       local;
-     FT_Vector     vector;
--    Bool          subpixel = False;
-     FT_Face       face;
-+    FT_Render_Mode  mode = FT_RENDER_MODE_MONO;
-     if (!info)
-       return;
-@@ -110,24 +384,19 @@
-     if (!face)
-       return;
--    matrix.xx = matrix.yy = 0x10000L;
--    matrix.xy = matrix.yx = 0;
--
-     if (font->info.antialias)
-     {
-       switch (font->info.rgba) {
-       case FC_RGBA_RGB:
-       case FC_RGBA_BGR:
--          matrix.xx *= 3;
--          subpixel = True;
--          hmul = 3;
-+          mode = FT_RENDER_MODE_LCD;
-           break;
-       case FC_RGBA_VRGB:
-       case FC_RGBA_VBGR:
--          matrix.yy *= 3;
--          vmul = 3;
--          subpixel = True;
-+            mode = FT_RENDER_MODE_LCD_V;
-           break;
-+        default:
-+            mode = FT_RENDER_MODE_NORMAL;
-       }
-     }
-@@ -148,7 +417,10 @@
-       if (xftg->glyph_memory)
-           continue;
-       
-+        FT_Library_SetLcdFilter( _XftFTlibrary, font->info.lcd_filter);
-+
-       error = FT_Load_Glyph (face, glyphindex, font->info.load_flags);
-+
-       if (error)
-       {
-           /*
-@@ -181,7 +453,7 @@
-       /*
-        * Compute glyph metrics from FreeType information
-        */
--      if(font->info.transform && glyphslot->format != ft_glyph_format_bitmap) 
-+      if(font->info.transform && glyphslot->format != FT_GLYPH_FORMAT_BITMAP)
-       {
-           /*
-            * calculate the true width by transforming all four corners.
-@@ -260,17 +532,14 @@
-           }
-       }
--      if (font->info.antialias)
--          pitch = (width * hmul + 3) & ~3;
--      else
--          pitch = ((width + 31) & ~31) >> 3;
--
--      size = pitch * height * vmul;
-+        if ( glyphslot->format != FT_GLYPH_FORMAT_BITMAP )
-+        {
-+            error = FT_Render_Glyph( face->glyph, mode );
-+            if (error)
-+                continue;
-+        }
--      xftg->metrics.width = width;
--      xftg->metrics.height = height;
--      xftg->metrics.x = -TRUNC(left);
--      xftg->metrics.y = TRUNC(top);
-+        FT_Library_SetLcdFilter( _XftFTlibrary, FT_LCD_FILTER_NONE );
-       if (font->info.spacing >= FC_MONO)
-       {
-@@ -310,103 +579,13 @@
-           xftg->metrics.yOff = -TRUNC(ROUND(glyphslot->advance.y));
-       }
-       
--      /*
--       * If the glyph is relatively large (> 1% of server memory),
--       * don't send it until necessary
--       */
--      if (!need_bitmaps && size > info->max_glyph_memory / 100)
--          continue;
-       
--      /*
--       * Make sure there's enough buffer space for the glyph
--       */
--      if (size > bufSize)
--      {
--          if (bufBitmap != bufLocal)
--              free (bufBitmap);
--          bufBitmap = (unsigned char *) malloc (size);
--          if (!bufBitmap)
--              continue;
--          bufSize = size;
--      }
--      memset (bufBitmap, 0, size);
--
--      /*
--       * Rasterize into the local buffer
--       */
--      switch (glyphslot->format) {
--      case ft_glyph_format_outline:
--          ftbit.width      = width * hmul;
--          ftbit.rows       = height * vmul;
--          ftbit.pitch      = pitch;
--          if (font->info.antialias)
--              ftbit.pixel_mode = ft_pixel_mode_grays;
--          else
--              ftbit.pixel_mode = ft_pixel_mode_mono;
--          
--          ftbit.buffer     = bufBitmap;
--          
--          if (subpixel)
--              FT_Outline_Transform (&glyphslot->outline, &matrix);
-+        // compute the size of the final bitmap
-+        ftbit  = &glyphslot->bitmap;
--          FT_Outline_Translate ( &glyphslot->outline, -left*hmul, -bottom*vmul );
--
--          FT_Outline_Get_Bitmap( _XftFTlibrary, &glyphslot->outline, &ftbit );
--          break;
--      case ft_glyph_format_bitmap:
--          if (font->info.antialias)
--          {
--              unsigned char   *srcLine, *dstLine;
--              int             height;
--              int             x;
--              int         h, v;
--
--              srcLine = glyphslot->bitmap.buffer;
--              dstLine = bufBitmap;
--              height = glyphslot->bitmap.rows;
--              while (height--)
--              {
--                  for (x = 0; x < glyphslot->bitmap.width; x++)
--                  {
--                      /* always MSB bitmaps */
--                      unsigned char   a = ((srcLine[x >> 3] & (0x80 >> (x & 7))) ?
--                                           0xff : 0x00);
--                      if (subpixel)
--                      {
--                          for (v = 0; v < vmul; v++)
--                              for (h = 0; h < hmul; h++)
--                                  dstLine[v * pitch + x*hmul + h] = a;
--                      }
--                      else
--                          dstLine[x] = a;
--                  }
--                  dstLine += pitch * vmul;
--                  srcLine += glyphslot->bitmap.pitch;
--              }
--          }
--          else
--          {
--              unsigned char   *srcLine, *dstLine;
--              int             h, bytes;
--
--              srcLine = glyphslot->bitmap.buffer;
--              dstLine = bufBitmap;
--              h = glyphslot->bitmap.rows;
--              bytes = (glyphslot->bitmap.width + 7) >> 3;
--              while (h--)
--              {
--                  memcpy (dstLine, srcLine, bytes);
--                  dstLine += pitch;
--                  srcLine += glyphslot->bitmap.pitch;
--              }
--          }
--          break;
--      default:
--          if (XftDebug() & XFT_DBG_GLYPH)
--              printf ("glyph %d is not in a usable format\n",
--                      (int) glyphindex);
--          continue;
--      }
-+        width  = ftbit->width;
-+        height = ftbit->rows;
-+        pitch  = (width+3) & ~3;
-       
-       if (XftDebug() & XFT_DBG_GLYPH)
-       {
-@@ -423,29 +602,72 @@
-               int             x, y;
-               unsigned char   *line;
--              line = bufBitmap;
--              for (y = 0; y < height * vmul; y++)
-+                line = ftbit->buffer;
-+
-+                if (ftbit->pitch < 0)
-+                  line -= ftbit->pitch*(height-1);
-+
-+                for (y = 0; y < height; y++)
-               {
-                   if (font->info.antialias) 
-                   {
--                      static char    den[] = { " .:;=+*#" };
--                      for (x = 0; x < pitch; x++)
-+                        static const char    den[] = { " .:;=+*#" };
-+                        for (x = 0; x < width; x++)
-                           printf ("%c", den[line[x] >> 5]);
-                   }
-                   else
-                   {
--                      for (x = 0; x < pitch * 8; x++)
-+                        for (x = 0; x < width * 8; x++)
-                       {
-                           printf ("%c", line[x>>3] & (1 << (x & 7)) ? '#' : ' ');
-                       }
-                   }
-                   printf ("|\n");
--                  line += pitch;
-+                    line += ftbit->pitch;
-               }
-               printf ("\n");
-           }
-       }
-+        size = _compute_xrender_bitmap_size( &local, glyphslot, mode );
-+        if ( size < 0 )
-+            continue;
-+
-+        xftg->metrics.width  = local.width;
-+      xftg->metrics.height = local.rows;
-+      xftg->metrics.x      = - glyphslot->bitmap_left;
-+      xftg->metrics.y      =   glyphslot->bitmap_top;
-+          
-+          /*
-+       * If the glyph is relatively large (> 1% of server memory),
-+       * don't send it until necessary
-+           */
-+      if (!need_bitmaps && size > info->max_glyph_memory / 100)
-+          continue;
-+
-+      /*
-+       * Make sure there's enough buffer space for the glyph
-+       */
-+      if (size > bufSize)
-+          {
-+          if (bufBitmap != bufLocal)
-+              free (bufBitmap);
-+          bufBitmap = (unsigned char *) malloc (size);
-+          if (!bufBitmap)
-+                  continue;
-+          bufSize = size;
-+          }
-+      memset (bufBitmap, 0, size);
-+
-+        local.buffer = bufBitmap;
-+          
-+        _fill_xrender_bitmap( &local, glyphslot, mode,
-+                              (font->info.rgba == FC_RGBA_BGR  ||
-+                               font->info.rgba == FC_RGBA_VBGR ) );
-+      /*
-+       * Copy or convert into local buffer
-+       */
-+
-       /*
-        * Use the glyph index as the wire encoding; it
-        * might be more efficient for some locales to map
-@@ -455,121 +677,23 @@
-        */
-       glyph = (Glyph) glyphindex;
--      if (subpixel)
--      {
--          int             x, y;
--          unsigned char   *in_line, *out_line, *in;
--          unsigned int    *out;
--          unsigned int    red, green, blue;
--          int             rf, gf, bf;
--          int             s;
--          int             o, os;
--          
--          /*
--           * Filter the glyph to soften the color fringes
--           */
--          widthrgba = width;
--          pitchrgba = (widthrgba * 4 + 3) & ~3;
--          sizergba = pitchrgba * height;
--
--          os = 1;
--          switch (font->info.rgba) {
--          case FC_RGBA_VRGB:
--              os = pitch;
--          case FC_RGBA_RGB:
--          default:
--              rf = 0;
--              gf = 1;
--              bf = 2;
--              break;
--          case FC_RGBA_VBGR:
--              os = pitch;
--          case FC_RGBA_BGR:
--              bf = 0;
--              gf = 1;
--              rf = 2;
--              break;
--          }
--          if (sizergba > bufSizeRgba)
--          {
--              if (bufBitmapRgba != bufLocalRgba)
--                  free (bufBitmapRgba);
--              bufBitmapRgba = (unsigned char *) malloc (sizergba);
--              if (!bufBitmapRgba)
--                  continue;
--              bufSizeRgba = sizergba;
--          }
--          memset (bufBitmapRgba, 0, sizergba);
--          in_line = bufBitmap;
--          out_line = bufBitmapRgba;
--          for (y = 0; y < height; y++)
--          {
--              in = in_line;
--              out = (unsigned int *) out_line;
--              in_line += pitch * vmul;
--              out_line += pitchrgba;
--              for (x = 0; x < width * hmul; x += hmul)
--              {
--                  red = green = blue = 0;
--                  o = 0;
--                  for (s = 0; s < 3; s++)
--                  {
--                      red += filters[rf][s]*in[x+o];
--                      green += filters[gf][s]*in[x+o];
--                      blue += filters[bf][s]*in[x+o];
--                      o += os;
--                  }
--                  red = red / 65536;
--                  green = green / 65536;
--                  blue = blue / 65536;
--                  *out++ = (green << 24) | (red << 16) | (green << 8) | blue;
--              }
--          }
--          
--          xftg->glyph_memory = sizergba + sizeof (XftGlyph);
--          if (font->format)
-+      xftg->glyph_memory = size + sizeof (XftGlyph);
-+          if (font->format)
-           {
-               if (!font->glyphset)
-                   font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
--              if (ImageByteOrder (dpy) != XftNativeByteOrder ())
--                  XftSwapCARD32 ((CARD32 *) bufBitmapRgba, sizergba >> 2);
--              XRenderAddGlyphs (dpy, font->glyphset, &glyph,
--                                &xftg->metrics, 1, 
--                                (char *) bufBitmapRgba, sizergba);
--          }
--          else
--          {
--              if (sizergba)
--              {
--                  xftg->bitmap = malloc (sizergba);
--                  if (xftg->bitmap)
--                      memcpy (xftg->bitmap, bufBitmapRgba, sizergba);
--              }
--              else
--                  xftg->bitmap = NULL;
--          }
--      }
--      else
--      {
--          xftg->glyph_memory = size + sizeof (XftGlyph);
--          if (font->format)
--          {
--              /*
--               * swap bit order around; FreeType is always MSBFirst
--               */
--              if (!font->info.antialias)
-+          if ( mode == FT_RENDER_MODE_MONO )
-               {
-+                /* swap bits in each byte */
-                   if (BitmapBitOrder (dpy) != MSBFirst)
-                   {
--                      unsigned char   *line;
--                      unsigned char   c;
--                      int                 i;
-+                    unsigned char   *line = (unsigned char*)bufBitmap;
-+                    int             i = size;
--                      line = (unsigned char *) bufBitmap;
--                      i = size;
-                       while (i--)
-                       {
--                          c = *line;
-+                        int  c = *line;
-+
-                           c = ((c << 1) & 0xaa) | ((c >> 1) & 0x55);
-                           c = ((c << 2) & 0xcc) | ((c >> 2) & 0x33);
-                           c = ((c << 4) & 0xf0) | ((c >> 4) & 0x0f);
-@@ -577,8 +701,12 @@
-                       }
-                   }
-               }
--              if (!font->glyphset)
--                  font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
-+            else if ( mode != FT_RENDER_MODE_NORMAL )
-+            {
-+                /* invert ARGB <=> BGRA */
-+                if (ImageByteOrder (dpy) != XftNativeByteOrder ())
-+                    XftSwapCARD32 ((CARD32 *) bufBitmap, size >> 2);
-+            }
-               XRenderAddGlyphs (dpy, font->glyphset, &glyph,
-                                 &xftg->metrics, 1, 
-                                 (char *) bufBitmap, size);
-@@ -594,7 +722,7 @@
-               else
-                   xftg->bitmap = NULL;
-           }
--      }
-+
-       font->glyph_memory += xftg->glyph_memory;
-       info->glyph_memory += xftg->glyph_memory;
-       if (XftDebug() & XFT_DBG_CACHE)
-@@ -605,8 +733,6 @@
-     }
-     if (bufBitmap != bufLocal)
-       free (bufBitmap);
--    if (bufBitmapRgba != bufLocalRgba)
--      free (bufBitmapRgba);
-     XftUnlockFace (&font->public);
- }
---- a/src/xftint.h
-+++ b/src/xftint.h
-@@ -145,6 +145,7 @@
-     FcBool            antialias;      /* doing antialiasing */
-     FcBool            embolden;       /* force emboldening */
-     int                       rgba;           /* subpixel order */
-+    int                       lcd_filter;     /* lcd filter */
-     FT_Matrix         matrix;         /* glyph transformation matrix */
-     FcBool            transform;      /* non-identify matrix? */
-     FT_Int            load_flags;     /* glyph load flags */
-
diff --git a/packaging/libXft.spec b/packaging/libXft.spec
new file mode 100644 (file)
index 0000000..ad86fae
--- /dev/null
@@ -0,0 +1,76 @@
+Summary: X.Org X11 libXft runtime library
+Name: libXft
+Version: 2.3.1
+Release: 1
+License: MIT
+Group: System Environment/Libraries
+URL: http://www.x.org
+
+Source0: %{name}-%{version}.tar.gz
+
+BuildRequires:  pkgconfig(xorg-macros)
+BuildRequires:  pkgconfig(xproto)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: freetype-devel >= 2.1.9-2
+BuildRequires: fontconfig-devel >= 2.2-1
+
+Requires: fontconfig >= 2.2-1
+
+%description
+X.Org X11 libXft runtime library
+
+%package devel
+Summary: X.Org X11 libXft development package
+Group: Development/Libraries
+Provides: libxft-devel 
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+X.Org X11 libXft development package
+
+%prep
+%setup -q
+
+%build
+
+%reconfigure --disable-static \
+           LDFLAGS="${LDFLAGS} -Wl,--hash-style=both -Wl,--as-needed"
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# FIXME: There's no real good reason to ship these anymore, as pkg-config
+# is the official way to detect flags, etc. now.
+rm -f $RPM_BUILD_ROOT%{_bindir}/xft-config
+rm -f $RPM_BUILD_ROOT%{_mandir}/man1/xft-config*
+
+# We intentionally don't ship *.la files
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+
+%remove_docs
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING README ChangeLog
+%{_libdir}/libXft.so.2*
+
+%files devel
+%defattr(-,root,root,-)
+#%{_bindir}/xft-config
+%dir %{_includedir}/X11/Xft
+%{_includedir}/X11/Xft/Xft.h
+%{_includedir}/X11/Xft/XftCompat.h
+%{_libdir}/libXft.so
+%{_libdir}/pkgconfig/xft.pc
+#%{_mandir}/man1/xft-config.1.gz
+#%dir %{_mandir}/man3x
+#%{_mandir}/man3/Xft.3*
\ No newline at end of file
diff --git a/packaging/libxft.spec b/packaging/libxft.spec
deleted file mode 100644 (file)
index 1bb75ff..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-
-Name:       libxft
-Summary:    X.Org X11 libXft runtime library
-Version:    2.2.0
-Release:    2.5
-Group:      System/Libraries
-License:    MIT
-URL:        http://www.x.org/
-Source0:    http://xorg.freedesktop.org/releases/individual/lib/%{name}-%{version}.tar.gz
-Patch1:     100-libXft-2.1.10-lcd-filter-3.patch
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
-BuildRequires:  pkgconfig(xproto)
-BuildRequires:  pkgconfig(x11)
-BuildRequires:  pkgconfig(xrender)
-BuildRequires:  pkgconfig(freetype2)
-BuildRequires:  pkgconfig(fontconfig)
-BuildRequires:  pkgconfig(xorg-macros)
-
-
-%description
-Xft is a library that connects X applications with the FreeType font rasterization
-library. 
-
-
-
-%package devel
-Summary:    Development components for the libXft library
-Group:      Development/Libraries
-Requires:   %{name} = %{version}-%{release}
-
-%description devel
-xft Development Librariy files 
-
-
-
-%prep
-%setup -q -n %{name}-%{version}
-
-# 100-libXft-2.1.10-lcd-filter-3.patch
-%patch1 -p1
-
-%build
-LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed"
-%reconfigure --disable-static
-make %{?jobs:-j%jobs}
-
-%install
-rm -rf %{buildroot}
-%make_install
-
-
-
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-
-
-
-
-%files
-%defattr(-,root,root,-)
-%doc AUTHORS COPYING README ChangeLog
-%{_libdir}/libXft.so.2
-%{_libdir}/libXft.so.2.2.0
-
-
-%files devel
-%defattr(-,root,root,-)
-%dir %{_includedir}/X11
-%dir %{_includedir}/X11/Xft
-%{_includedir}/X11/Xft/Xft.h
-%{_includedir}/X11/Xft/XftCompat.h
-%{_libdir}/libXft.so
-%{_libdir}/pkgconfig/xft.pc
-%doc %{_mandir}/man3/Xft.3*
-
old mode 100755 (executable)
new mode 100644 (file)
index 77872ef..a323822 100644 (file)
@@ -30,7 +30,7 @@ XftColorAllocName (Display  *dpy,
                   XftColor *result)
 {
     XColor  screen, exact;
-    
+
     if (!XAllocNamedColor (dpy, cmap, name, &screen, &exact))
     {
        /* XXX stick standard colormap stuff here */
@@ -97,7 +97,7 @@ XftColorAllocValue (Display       *dpy,
     else
     {
        XColor  xcolor;
-           
+
        xcolor.red = color->red;
        xcolor.green = color->green;
        xcolor.blue = color->blue;
@@ -112,7 +112,7 @@ XftColorAllocValue (Display     *dpy,
     return True;
 }
 
-_X_EXPORT void 
+_X_EXPORT void
 XftColorFree (Display  *dpy,
              Visual    *visual,
              Colormap  cmap,
index 3f87109..85b58c3 100644 (file)
@@ -25,7 +25,7 @@
 _X_HIDDEN void
 XftRectCore (XftDraw           *draw,
             _Xconst XftColor   *color,
-            int                x, 
+            int                x,
             int                y,
             unsigned int       width,
             unsigned int       height)
@@ -63,10 +63,10 @@ _XftSharpGlyphMono (XftDraw *draw,
        src = srcLine;
        srcLine += stride;
        w = width;
-       
+
        bitsMask = 0x80;    /* FreeType is always MSB first */
        bits = *src++;
-       
+
        xspan = x;
        while (w)
        {
@@ -85,7 +85,7 @@ _XftSharpGlyphMono (XftDraw   *draw,
                        bitsMask = 0x80;
                    }
                } while (bits & bitsMask);
-               XFillRectangle (draw->dpy, draw->drawable, 
+               XFillRectangle (draw->dpy, draw->drawable,
                                draw->core.gc, xspan, y, lenspan, 1);
                xspan += lenspan;
                w -= lenspan;
@@ -135,7 +135,7 @@ _XftSharpGlyphGray (XftDraw *draw,
        src = srcLine;
        srcLine += stride;
        w = width;
-       
+
        bits = *src++;
        xspan = x;
        while (w)
@@ -150,7 +150,7 @@ _XftSharpGlyphGray (XftDraw *draw,
                        break;
                    bits = *src++;
                } while (bits >= 0x80);
-               XFillRectangle (draw->dpy, draw->drawable, 
+               XFillRectangle (draw->dpy, draw->drawable,
                                draw->core.gc, xspan, y, lenspan, 1);
                xspan += lenspan;
                w -= lenspan;
@@ -191,7 +191,7 @@ _XftSharpGlyphRgba (XftDraw *draw,
        src = srcLine;
        srcLine += stride;
        w = width;
-       
+
        bits = *src++;
        xspan = x;
        while (w)
@@ -206,7 +206,7 @@ _XftSharpGlyphRgba (XftDraw *draw,
                        break;
                    bits = *src++;
                } while (bits >= 0x80000000);
-               XFillRectangle (draw->dpy, draw->drawable, 
+               XFillRectangle (draw->dpy, draw->drawable,
                                draw->core.gc, xspan, y, lenspan, 1);
                xspan += lenspan;
                w -= lenspan;
@@ -257,7 +257,7 @@ _XftSharpGlyphFind (XftDraw *draw, XftFont *public)
 /*
  * Primitives for converting between RGB values and TrueColor pixels
  */
+
 static void
 _XftExamineBitfield (unsigned long mask, int *shift, int *len)
 {
@@ -283,7 +283,7 @@ static CARD32
 _XftGetField (unsigned long l_pixel, int shift, int len)
 {
     CARD32  pixel = (CARD32) l_pixel;
-    
+
     pixel = pixel & (((1 << (len)) - 1) << shift);
     pixel = pixel << (32 - (shift + len)) >> 24;
     while (len < 8)
@@ -346,10 +346,10 @@ _XftSmoothGlyphMono (XImage               *image,
        src = srcLine;
        srcLine += stride;
        w = width;
-       
+
        bitsMask = 0x80;    /* FreeType is always MSB first */
        bits = *src++;
-       
+
        xspan = x;
        while (w--)
        {
@@ -465,7 +465,7 @@ _XftSmoothGlyphGray8888 (XImage                 *image,
     int                w;
 
     srca = color->color.alpha >> 8;
-    
+
     /* This handles only RGB and BGR */
     g = (color->color.green & 0xff00);
     if (image->red_mask == 0xff0000)
@@ -479,10 +479,10 @@ _XftSmoothGlyphGray8888 (XImage               *image,
        b = (color->color.blue & 0xff00) << 8;
     }
     src = (srca << 24) | r | g | b;
-    
+
     width = xftg->metrics.width;
     height = xftg->metrics.height;
-    
+
     x -= xftg->metrics.x;
     y -= xftg->metrics.y;
 
@@ -490,7 +490,7 @@ _XftSmoothGlyphGray8888 (XImage                 *image,
     dstStride = image->bytes_per_line >> 2;
     maskLine = (unsigned char *) xftg->bitmap;
     maskStride = (width + 3) & ~3;
-    
+
     while (height--)
     {
        dst = dstLine;
@@ -536,7 +536,7 @@ _XftSmoothGlyphGray565 (XImage                  *image,
     int                w;
 
     srca = color->color.alpha >> 8;
-    
+
     /* This handles only RGB and BGR */
     g = (color->color.green & 0xff00);
     if (image->red_mask == 0xf800)
@@ -550,10 +550,10 @@ _XftSmoothGlyphGray565 (XImage                *image,
        b = (color->color.blue & 0xff00) << 8;
     }
     src = (srca << 24) | r | g | b;
-    
+
     width = xftg->metrics.width;
     height = xftg->metrics.height;
-    
+
     x -= xftg->metrics.x;
     y -= xftg->metrics.y;
 
@@ -561,7 +561,7 @@ _XftSmoothGlyphGray565 (XImage                  *image,
     dstStride = image->bytes_per_line >> 1;
     maskLine = (unsigned char *) xftg->bitmap;
     maskStride = (width + 3) & ~3;
-    
+
     while (height--)
     {
        dst = dstLine;
@@ -612,7 +612,7 @@ _XftSmoothGlyphGray555 (XImage                  *image,
     int                w;
 
     srca = color->color.alpha >> 8;
-    
+
     /* This handles only RGB and BGR */
     g = (color->color.green & 0xff00);
     if (image->red_mask == 0xf800)
@@ -626,10 +626,10 @@ _XftSmoothGlyphGray555 (XImage                *image,
        b = (color->color.blue & 0xff00) << 8;
     }
     src = (srca << 24) | r | g | b;
-    
+
     width = xftg->metrics.width;
     height = xftg->metrics.height;
-    
+
     x -= xftg->metrics.x;
     y -= xftg->metrics.y;
 
@@ -637,7 +637,7 @@ _XftSmoothGlyphGray555 (XImage                  *image,
     dstStride = image->bytes_per_line >> 1;
     maskLine = (unsigned char *) xftg->bitmap;
     maskStride = (width + 3) & ~3;
-    
+
     while (height--)
     {
        dst = dstLine;
@@ -688,7 +688,7 @@ _XftSmoothGlyphGray (XImage         *image,
     unsigned long   pixel;
     int                    width, height;
     int                    w, tx;
-    
+
     srca = color->color.alpha >> 8;
     src = (srca << 24 |
           (color->color.red & 0xff00) << 8 |
@@ -698,7 +698,7 @@ _XftSmoothGlyphGray (XImage         *image,
     y -= xftg->metrics.y;
     width = xftg->metrics.width;
     height = xftg->metrics.height;
-    
+
     maskLine = (unsigned char *) xftg->bitmap;
     maskStride = (width + 3) & ~3;
 
@@ -711,7 +711,7 @@ _XftSmoothGlyphGray (XImage         *image,
        maskLine += maskStride;
        w = width;
        tx = x;
-       
+
        while (w--)
        {
            m = *mask++;
@@ -766,7 +766,7 @@ _XftSmoothGlyphRgba (XImage         *image,
     unsigned long   pixel;
     int                    width, height;
     int                    w, tx;
-    
+
     srca = color->color.alpha >> 8;
     src = (srca << 24 |
           (color->color.red & 0xff00) << 8 |
@@ -776,7 +776,7 @@ _XftSmoothGlyphRgba (XImage         *image,
     y -= xftg->metrics.y;
     width = xftg->metrics.width;
     height = xftg->metrics.height;
-    
+
     mask = (CARD32 *) xftg->bitmap;
 
     _XftExamineBitfield (image->red_mask, &r_shift, &r_len);
@@ -786,7 +786,7 @@ _XftSmoothGlyphRgba (XImage         *image,
     {
        w = width;
        tx = x;
-       
+
        while (w--)
        {
            ma = *mask++;
@@ -849,7 +849,7 @@ _XftSmoothGlyphPossible (XftDraw *draw)
     return FcTrue;
 }
 
-typedef        void (*XftSmoothGlyph) (XImage              *image, 
+typedef        void (*XftSmoothGlyph) (XImage              *image,
                                _Xconst XftGlyph    *xftg,
                                int                 x,
                                int                 y,
@@ -960,7 +960,7 @@ XftGlyphCore (XftDraw               *draw,
            glyphs_loaded = FcTrue;
     if (nmissing)
        XftFontLoadGlyphs (dpy, public, FcTrue, missing, nmissing);
-    
+
     g = glyphs;
     n = nglyphs;
     if ((font->info.antialias || color->color.alpha != 0xffff) &&
@@ -971,7 +971,7 @@ XftGlyphCore (XftDraw               *draw,
         unsigned int    depth;
        int             ox, oy;
        XftSmoothGlyph  smooth = _XftSmoothGlyphFind (draw, public);
-       
+
        XftGlyphExtents (dpy, public, glyphs, nglyphs, &gi);
        if (!gi.width || !gi.height)
            goto bail1;
@@ -1090,7 +1090,7 @@ XftGlyphSpecCore (XftDraw         *draw,
     {
        XGlyphInfo      gi;
        int             g_x1, g_x2, g_y1, g_y2;
-       
+
        nmissing = 0;
        if (XftFontCheckGlyph (dpy, public, FcTrue, glyphs[i].glyph, missing, &nmissing))
            glyphs_loaded = FcTrue;
@@ -1121,7 +1121,7 @@ XftGlyphSpecCore (XftDraw         *draw,
            y2 = g_y2;
        }
     }
-    
+
     if (x1 == x2 || y1 == y2)
        goto bail1;
 
@@ -1186,7 +1186,7 @@ XftGlyphSpecCore (XftDraw         *draw,
                xftg = _XftGlyphDefault (dpy, public);
            if (xftg)
            {
-               (*smooth) (image, xftg, glyphs[i].x - x1, 
+               (*smooth) (image, xftg, glyphs[i].x - x1,
                           glyphs[i].y - y1, color);
            }
        }
@@ -1238,13 +1238,13 @@ XftGlyphFontSpecCore (XftDraw                   *draw,
        XftFont         *public = glyphs[i].font;
        XGlyphInfo      gi;
        int             g_x1, g_x2, g_y1, g_y2;
-       
+
        nmissing = 0;
        if (XftFontCheckGlyph (dpy, public, FcTrue, glyphs[i].glyph, missing, &nmissing))
            glyphs_loaded = FcTrue;
        if (nmissing)
            XftFontLoadGlyphs (dpy, public, FcTrue, missing, nmissing);
-       
+
        XftGlyphExtents (dpy, public, &glyphs[i].glyph, 1, &gi);
        g_x1 = glyphs[i].x - gi.x;
        g_y1 = glyphs[i].y - gi.y;
@@ -1253,7 +1253,17 @@ XftGlyphFontSpecCore (XftDraw                    *draw,
        if (i)
        {
            if (g_x1 < x1)
+           {
+               if (g_x1 < 0)
+               {
+                   /* do nothing if the given glyphs are out of range */
+                   short t = glyphs[i-1].font->max_advance_width
+                       + glyphs[i-1].x;
+                   if (t < 0 && glyphs[i-1].x > 0)
+                       goto bail1;
+               }
                x1 = g_x1;
+           }
            if (g_y1 < y1)
                y1 = g_y1;
            if (g_x2 > x2)
@@ -1269,14 +1279,14 @@ XftGlyphFontSpecCore (XftDraw                   *draw,
            y2 = g_y2;
        }
     }
-    
+
     if (x1 == x2 || y1 == y2)
        goto bail1;
 
     for (i = 0; i < nglyphs; i++)
        if (((XftFontInt *) glyphs[i].font)->info.antialias)
            break;
-    
+
     if ((i != nglyphs || color->color.alpha != 0xffff) &&
        _XftSmoothGlyphPossible (draw))
     {
@@ -1336,12 +1346,12 @@ XftGlyphFontSpecCore (XftDraw                   *draw,
            XftFontInt      *font = (XftFontInt *) public;
            XftSmoothGlyph  smooth = _XftSmoothGlyphFind (draw, public);
            FT_UInt         glyph = glyphs[i].glyph;
-           
+
            if (glyph >= font->num_glyphs || !(xftg = font->glyphs[glyph]))
                xftg = _XftGlyphDefault (dpy, public);
            if (xftg)
            {
-               (*smooth) (image, xftg, glyphs[i].x - x1, 
+               (*smooth) (image, xftg, glyphs[i].x - x1,
                           glyphs[i].y - y1, color);
            }
        }
@@ -1359,7 +1369,7 @@ XftGlyphFontSpecCore (XftDraw                     *draw,
            XftFontInt          *font = (XftFontInt *) public;
            XftSharpGlyph       sharp = _XftSharpGlyphFind (draw, public);
            FT_UInt             glyph = glyphs[i].glyph;
-           
+
            if (glyph >= font->num_glyphs || !(xftg = font->glyphs[glyph]))
                xftg = _XftGlyphDefault (dpy, public);
            if (xftg)
index 0553515..c5b756e 100644 (file)
@@ -32,19 +32,19 @@ _XftCloseDisplay (Display *dpy, XExtCodes *codes)
     info = _XftDisplayInfoGet (dpy, FcFalse);
     if (!info)
        return 0;
-    
+
     /*
      * Get rid of any dangling unreferenced fonts
      */
     info->max_unref_fonts = 0;
     XftFontManageMemory (dpy);
-    
+
     /*
      * Clean up the default values
      */
     if (info->defaults)
        FcPatternDestroy (info->defaults);
-    
+
     /*
      * Unhook from the global list
      */
@@ -52,7 +52,7 @@ _XftCloseDisplay (Display *dpy, XExtCodes *codes)
        if (info->display == dpy)
            break;
     *prev = info->next;
-    
+
     free (info);
     return 0;
 }
@@ -126,8 +126,8 @@ _XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary)
     {
        Visual              *visual = DefaultVisual (dpy, DefaultScreen (dpy));
        XRenderPictFormat   *format = XRenderFindVisualFormat (dpy, visual);
-       
-       printf ("XftDisplayInfoGet Default visual 0x%x ", 
+
+       printf ("XftDisplayInfoGet Default visual 0x%x ",
                (int) visual->visualid);
        if (format)
        {
@@ -146,7 +146,7 @@ _XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary)
        }
        else
            printf ("No Render format for default visual\n");
-       
+
        printf ("XftDisplayInfoGet initialized, hasRender set to \"%s\"\n",
                info->hasRender ? "True" : "False");
     }
@@ -156,18 +156,18 @@ _XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary)
        info->colors[i].pict = 0;
     }
     info->fonts = NULL;
-    
+
     info->next = _XftDisplayInfo;
     _XftDisplayInfo = info;
 
-    info->glyph_memory = NULL;
+    info->glyph_memory = 0;
     info->max_glyph_memory = XftDefaultGetInteger (dpy,
                                                   XFT_MAX_GLYPH_MEMORY, 0,
                                                   XFT_DPY_MAX_GLYPH_MEMORY);
     if (XftDebug () & XFT_DBG_CACHE)
        printf ("global max cache memory %ld\n", info->max_glyph_memory);
 
-    
+
     info->num_unref_fonts = 0;
     info->max_unref_fonts = XftDefaultGetInteger (dpy,
                                                  XFT_MAX_UNREF_FONTS, 0,
@@ -177,7 +177,7 @@ _XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary)
 
     memset (info->fontHash, '\0', sizeof (XftFont *) * XFT_NUM_FONT_HASH);
     return info;
-    
+
 bail1:
     free (info);
 bail0:
@@ -282,7 +282,7 @@ XftDefaultSet (Display *dpy, FcPattern *defaults)
 }
 
 _X_HIDDEN int
-XftDefaultParseBool (char *v)
+XftDefaultParseBool (const char *v)
 {
     char    c0, c1;
 
@@ -307,7 +307,7 @@ XftDefaultParseBool (char *v)
 }
 
 static Bool
-_XftDefaultInitBool (Display *dpy, FcPattern *pat, char *option)
+_XftDefaultInitBool (Display *dpy, FcPattern *pat, const char *option)
 {
     char    *v;
     int            i;
@@ -319,7 +319,7 @@ _XftDefaultInitBool (Display *dpy, FcPattern *pat, char *option)
 }
 
 static Bool
-_XftDefaultInitDouble (Display *dpy, FcPattern *pat, char *option)
+_XftDefaultInitDouble (Display *dpy, FcPattern *pat, const char *option)
 {
     char    *v, *e;
     double  d;
@@ -335,7 +335,7 @@ _XftDefaultInitDouble (Display *dpy, FcPattern *pat, char *option)
 }
 
 static Bool
-_XftDefaultInitInteger (Display *dpy, FcPattern *pat, char *option)
+_XftDefaultInitInteger (Display *dpy, FcPattern *pat, const char *option)
 {
     char    *v, *e;
     int            i;
@@ -369,27 +369,25 @@ _XftDefaultInit (Display *dpy)
        goto bail1;
     if (!_XftDefaultInitInteger (dpy, pat, FC_RGBA))
        goto bail1;
+    if (!_XftDefaultInitInteger (dpy, pat, FC_LCD_FILTER))
+       goto bail1;
     if (!_XftDefaultInitBool (dpy, pat, FC_ANTIALIAS))
        goto bail1;
-#ifdef FC_EMBOLDEN
     if (!_XftDefaultInitBool (dpy, pat, FC_EMBOLDEN))
        goto bail1;
-#endif
     if (!_XftDefaultInitBool (dpy, pat, FC_AUTOHINT))
        goto bail1;
-#ifdef FC_HINT_STYLE
     if (!_XftDefaultInitInteger (dpy, pat, FC_HINT_STYLE))
        goto bail1;
-#endif
     if (!_XftDefaultInitBool (dpy, pat, FC_HINTING))
        goto bail1;
     if (!_XftDefaultInitBool (dpy, pat, FC_MINSPACE))
        goto bail1;
     if (!_XftDefaultInitInteger (dpy, pat, XFT_MAX_GLYPH_MEMORY))
        goto bail1;
-    
+
     return pat;
-    
+
 bail1:
     FcPatternDestroy (pat);
 bail0:
@@ -404,7 +402,7 @@ _XftDefaultGet (Display *dpy, const char *object, int screen, FcValue *v)
 
     if (!info)
        return FcResultNoMatch;
-    
+
     if (!info->defaults)
     {
        info->defaults = _XftDefaultInit (dpy);
@@ -462,7 +460,7 @@ XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern)
     if (FcPatternGet (pattern, XFT_RENDER, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddBool (pattern, XFT_RENDER,
-                          XftDefaultGetBool (dpy, XFT_RENDER, screen, 
+                          XftDefaultGetBool (dpy, XFT_RENDER, screen,
                                              XftDefaultHasRender (dpy)));
     }
     if (FcPatternGet (pattern, FC_ANTIALIAS, 0, &v) == FcResultNoMatch)
@@ -471,28 +469,24 @@ XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern)
                           XftDefaultGetBool (dpy, FC_ANTIALIAS, screen,
                                              True));
     }
-#ifdef FC_EMBOLDEN
     if (FcPatternGet (pattern, FC_EMBOLDEN, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddBool (pattern, FC_EMBOLDEN,
                           XftDefaultGetBool (dpy, FC_EMBOLDEN, screen,
                                              False));
     }
-#endif
     if (FcPatternGet (pattern, FC_HINTING, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddBool (pattern, FC_HINTING,
                          XftDefaultGetBool (dpy, FC_HINTING, screen,
                                             True));
     }
-#ifdef FC_HINT_STYLE
     if (FcPatternGet (pattern, FC_HINT_STYLE, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddInteger (pattern, FC_HINT_STYLE,
                             XftDefaultGetInteger (dpy, FC_HINT_STYLE, screen,
                                                   FC_HINT_FULL));
     }
-#endif
     if (FcPatternGet (pattern, FC_AUTOHINT, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddBool (pattern, FC_AUTOHINT,
@@ -518,9 +512,15 @@ XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern)
        }
 #endif
        FcPatternAddInteger (pattern, FC_RGBA,
-                             XftDefaultGetInteger (dpy, FC_RGBA, screen, 
+                             XftDefaultGetInteger (dpy, FC_RGBA, screen,
                                                    subpixel));
     }
+    if (FcPatternGet (pattern, FC_LCD_FILTER, 0, &v) == FcResultNoMatch)
+    {
+       FcPatternAddInteger (pattern, FC_LCD_FILTER,
+                            XftDefaultGetInteger (dpy, FC_LCD_FILTER, screen,
+                                                  FC_LCD_DEFAULT));
+    }
     if (FcPatternGet (pattern, FC_MINSPACE, 0, &v) == FcResultNoMatch)
     {
        FcPatternAddBool (pattern, FC_MINSPACE,
@@ -529,10 +529,10 @@ XftDefaultSubstitute (Display *dpy, int screen, FcPattern *pattern)
     }
     if (FcPatternGet (pattern, FC_DPI, 0, &v) == FcResultNoMatch)
     {
-       dpi = (((double) DisplayHeight (dpy, screen) * 25.4) / 
+       dpi = (((double) DisplayHeight (dpy, screen) * 25.4) /
               (double) DisplayHeightMM (dpy, screen));
-       FcPatternAddDouble (pattern, FC_DPI, 
-                           XftDefaultGetDouble (dpy, FC_DPI, screen, 
+       FcPatternAddDouble (pattern, FC_DPI,
+                           XftDefaultGetDouble (dpy, FC_DPI, screen,
                                                 dpi));
     }
     if (FcPatternGet (pattern, FC_SCALE, 0, &v) == FcResultNoMatch)
index ab51749..186bcb8 100644 (file)
@@ -88,7 +88,7 @@ XftDrawDepth (XftDraw *draw)
        Window              root;
        int                 x, y;
        unsigned int        width, height, borderWidth, depth;
-       if (XGetGeometry (draw->dpy, draw->drawable, 
+       if (XGetGeometry (draw->dpy, draw->drawable,
                          &root, &x, &y, &width, &height,
                          &borderWidth, &depth))
            draw->depth = depth;
@@ -104,7 +104,7 @@ XftDrawBitsPerPixel (XftDraw        *draw)
        XPixmapFormatValues *formats;
        int                 nformats;
        unsigned int        depth;
-       
+
        if ((depth = XftDrawDepth (draw)) &&
            (formats = XListPixmapFormats (draw->dpy, &nformats)))
        {
@@ -135,7 +135,7 @@ XftDrawCreate (Display   *dpy,
     draw = (XftDraw *) malloc (sizeof (XftDraw));
     if (!draw)
        return NULL;
-    
+
     draw->dpy = dpy;
     draw->drawable = drawable;
     draw->screen = _XftDrawScreen (dpy, drawable, visual);
@@ -301,9 +301,9 @@ XftDrawSrcPicture (XftDraw *draw, _Xconst XftColor *color)
     int                    i;
     XftColor       bitmapColor;
 
-    if (!info)
+    if (!info || !info->solidFormat)
        return 0;
-    
+
     /*
      * Monochrome targets require special handling; the PictOp controls
      * the color, and the color must be opaque
@@ -322,9 +322,9 @@ XftDrawSrcPicture (XftDraw *draw, _Xconst XftColor *color)
      */
     for (i = 0; i < XFT_NUM_SOLID_COLOR; i++)
     {
-       if (info->colors[i].pict && 
+       if (info->colors[i].pict &&
            info->colors[i].screen == draw->screen &&
-           !memcmp ((void *) &color->color, 
+           !memcmp ((void *) &color->color,
                     (void *) &info->colors[i].color,
                     sizeof (XRenderColor)))
            return info->colors[i].pict;
@@ -348,7 +348,7 @@ XftDrawSrcPicture (XftDraw *draw, _Xconst XftColor *color)
     {
        Pixmap                      pix;
         XRenderPictureAttributes    pa;
-       
+
        pix = XCreatePixmap (dpy, RootWindow (dpy, draw->screen), 1, 1,
                             info->solidFormat->depth);
        pa.repeat = True;
@@ -391,7 +391,7 @@ _XftDrawRenderPrepare (XftDraw      *draw)
        format = _XftDrawFormat (draw);
        if (!format)
            return FcFalse;
-       
+
        if (draw->subwindow_mode == IncludeInferiors)
        {
            pa.subwindow_mode = IncludeInferiors;
@@ -454,7 +454,7 @@ _XftDrawCorePrepare (XftDraw *draw, _Xconst XftColor *color)
     XSetForeground (draw->dpy, draw->core.gc, color->pixel);
     return FcTrue;
 }
-                       
+
 _X_EXPORT Picture
 XftDrawPicture (XftDraw *draw)
 {
@@ -479,7 +479,7 @@ XftDrawGlyphs (XftDraw              *draw,
     if (font->format)
     {
        Picture     src;
-       
+
        if (_XftDrawRenderPrepare (draw) &&
            (src = XftDrawSrcPicture (draw, color)))
            XftGlyphRender (draw->dpy, _XftDrawOp (draw, color),
@@ -497,7 +497,7 @@ _X_EXPORT void
 XftDrawString8 (XftDraw                    *draw,
                _Xconst XftColor    *color,
                XftFont             *pub,
-               int                 x, 
+               int                 x,
                int                 y,
                _Xconst FcChar8     *string,
                int                 len)
@@ -507,7 +507,7 @@ XftDrawString8 (XftDraw                 *draw,
 
     if (XftDebug () & XFT_DBG_DRAW)
        printf ("DrawString \"%*.*s\"\n", len, len, string);
-    
+
     if (len <= NUM_LOCAL)
        glyphs = glyphs_local;
     else
@@ -545,7 +545,7 @@ XftDrawString16 (XftDraw        *draw,
     }
     for (i = 0; i < len; i++)
        glyphs[i] = XftCharIndex (draw->dpy, pub, string[i]);
-    
+
     XftDrawGlyphs (draw, color, pub, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -573,7 +573,7 @@ XftDrawString32 (XftDraw        *draw,
     }
     for (i = 0; i < len; i++)
        glyphs[i] = XftCharIndex (draw->dpy, pub, string[i]);
-    
+
     XftDrawGlyphs (draw, color, pub, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -583,7 +583,7 @@ _X_EXPORT void
 XftDrawStringUtf8 (XftDraw         *draw,
                   _Xconst XftColor *color,
                   XftFont          *pub,
-                  int              x, 
+                  int              x,
                   int              y,
                   _Xconst FcChar8  *string,
                   int              len)
@@ -795,7 +795,7 @@ XftDrawCharFontSpec (XftDraw                        *draw,
 _X_EXPORT void
 XftDrawRect (XftDraw           *draw,
             _Xconst XftColor   *color,
-            int                x, 
+            int                x,
             int                y,
             unsigned int       width,
             unsigned int       height)
@@ -825,9 +825,9 @@ XftDrawSetClip (XftDraw     *draw,
      */
     if (!r && draw->clip_type == XftClipTypeNone)
        return True;
-    
-    if (r && 
-       draw->clip_type == XftClipTypeRegion && 
+
+    if (r &&
+       draw->clip_type == XftClipTypeRegion &&
        XEqualRegion (r, draw->clip.region))
     {
        return True;
@@ -862,7 +862,7 @@ XftDrawSetClip (XftDraw     *draw,
     case XftClipTypeNone:
        break;
     }
-    
+
     /*
      * Set the clip
      */
@@ -946,7 +946,7 @@ XftDrawSetClipRectangles (XftDraw           *draw,
     case XftClipTypeNone:
        break;
     }
-    
+
     /*
      * Set the clip
      */
@@ -986,7 +986,7 @@ XftDrawSetSubwindowMode (XftDraw *draw, int mode)
        XRenderPictureAttributes    pa;
 
        pa.subwindow_mode = mode;
-       XRenderChangePicture (draw->dpy, draw->render.pict, 
+       XRenderChangePicture (draw->dpy, draw->render.pict,
                              CPSubwindowMode, &pa);
     }
     if (draw->core.gc)
index 71f5c1c..1e418f2 100644 (file)
@@ -21,7 +21,7 @@
  */
 
 #include "xftint.h"
-   
+
 _X_EXPORT void
 XftGlyphExtents (Display           *dpy,
                 XftFont            *pub,
@@ -41,7 +41,7 @@ XftGlyphExtents (Display          *dpy,
     int                        left, right, top, bottom;
     int                        overall_left, overall_right;
     int                        overall_top, overall_bottom;
-    
+
     g = glyphs;
     n = nglyphs;
     nmissing = 0;
@@ -116,7 +116,7 @@ XftGlyphExtents (Display        *dpy,
 _X_EXPORT void
 XftTextExtents8 (Display           *dpy,
                 XftFont            *pub,
-                _Xconst FcChar8    *string, 
+                _Xconst FcChar8    *string,
                 int                len,
                 XGlyphInfo         *extents)
 {
@@ -144,7 +144,7 @@ XftTextExtents8 (Display        *dpy,
 _X_EXPORT void
 XftTextExtents16 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar16  *string, 
+                 _Xconst FcChar16  *string,
                  int               len,
                  XGlyphInfo        *extents)
 {
@@ -172,7 +172,7 @@ XftTextExtents16 (Display       *dpy,
 _X_EXPORT void
 XftTextExtents32 (Display          *dpy,
                  XftFont           *pub,
-                 _Xconst FcChar32  *string, 
+                 _Xconst FcChar32  *string,
                  int               len,
                  XGlyphInfo        *extents)
 {
@@ -200,7 +200,7 @@ XftTextExtents32 (Display       *dpy,
 _X_EXPORT void
 XftTextExtentsUtf8 (Display        *dpy,
                    XftFont         *pub,
-                   _Xconst FcChar8 *string, 
+                   _Xconst FcChar8 *string,
                    int             len,
                    XGlyphInfo      *extents)
 {
@@ -243,7 +243,7 @@ XftTextExtentsUtf8 (Display     *dpy,
 _X_EXPORT void
 XftTextExtentsUtf16 (Display           *dpy,
                     XftFont            *pub,
-                    _Xconst FcChar8    *string, 
+                    _Xconst FcChar8    *string,
                     FcEndian           endian,
                     int                len,
                     XGlyphInfo         *extents)
index 70ab5d8..d361498 100644 (file)
@@ -33,7 +33,7 @@ XftFontMatch (Display         *dpy,
 
     if (!XftInit (NULL))
        return NULL;
-    
+
     new = FcPatternDuplicate (pattern);
     if (!new)
        return NULL;
@@ -100,7 +100,7 @@ XftFontOpen (Display *dpy, int screen, ...)
     FcPatternDestroy (pat);
     if (!match)
        return NULL;
-    
+
     font = XftFontOpenPattern (dpy, match);
     if (!font)
     {
@@ -129,7 +129,7 @@ XftFontOpenName (Display *dpy, int screen, const char *name)
        else
            printf ("Invalid name\n");
     }
-                            
+
     if (!pat)
        return NULL;
     match = XftFontMatch (dpy, screen, pat, &result);
@@ -146,7 +146,7 @@ XftFontOpenName (Display *dpy, int screen, const char *name)
     FcPatternDestroy (pat);
     if (!match)
        return NULL;
-    
+
     font = XftFontOpenPattern (dpy, match);
     if (!font)
     {
@@ -154,7 +154,7 @@ XftFontOpenName (Display *dpy, int screen, const char *name)
            printf ("No Font\n");
        FcPatternDestroy (match);
     }
-    
+
     return font;
 }
 
@@ -175,7 +175,7 @@ XftFontOpenXlfd (Display *dpy, int screen, const char *xlfd)
        else
            FcPatternPrint (pat);
     }
-                            
+
     if (!pat)
        return NULL;
     match = XftFontMatch (dpy, screen, pat, &result);
@@ -192,7 +192,7 @@ XftFontOpenXlfd (Display *dpy, int screen, const char *xlfd)
     FcPatternDestroy (pat);
     if (!match)
        return NULL;
-    
+
     font = XftFontOpenPattern (dpy, match);
     if (!font)
     {
@@ -200,7 +200,7 @@ XftFontOpenXlfd (Display *dpy, int screen, const char *xlfd)
            printf ("No Font\n");
        FcPatternDestroy (match);
     }
-    
+
     return font;
 }
 
index 7238b82..a3b8332 100644 (file)
@@ -57,20 +57,20 @@ _XftGetFile (const FcChar8 *file, int id)
     f = malloc (sizeof (XftFtFile) + strlen ((char *) file) + 1);
     if (!f)
        return NULL;
-    
+
     XftMemAlloc (XFT_MEM_FILE, sizeof (XftFtFile) + strlen ((char *) file) + 1);
     if (XftDebug () & XFT_DBG_REF)
        printf ("FontFile %s/%d matches new\n",
                file, id);
     f->next = _XftFtFiles;
     _XftFtFiles = f;
-    
+
     f->ref = 1;
-    
+
     f->file = (char *) (f+1);
     strcpy (f->file, (char *) file);
     f->id = id;
-    
+
     f->lock = 0;
     f->face = NULL;
     f->xsize = 0;
@@ -89,7 +89,7 @@ _XftGetFaceFile (FT_Face face)
        return NULL;
     XftMemAlloc (XFT_MEM_FILE, sizeof(XftFtFile));
     f->next = NULL;
-    
+
     f->ref = 1;
 
     f->file = NULL;
@@ -154,7 +154,7 @@ _XftLockFile (XftFtFile *f)
            printf ("Loading file %s/%d\n", f->file, f->id);
        if (FT_New_Face (_XftFTlibrary, f->file, f->id, &f->face))
            --f->lock;
-           
+
        f->xsize = 0;
        f->ysize = 0;
        f->matrix.xx = f->matrix.xy = f->matrix.yx = f->matrix.yy = 0;
@@ -164,7 +164,7 @@ _XftLockFile (XftFtFile *f)
 }
 
 static void
-_XftLockError (char *reason)
+_XftLockError (const char *reason)
 {
     fprintf (stderr, "Xft: locking error %s\n", reason);
 }
@@ -176,23 +176,18 @@ _XftUnlockFile (XftFtFile *f)
        _XftLockError ("too many file unlocks");
 }
 
-#if HAVE_FT_BITMAP_SIZE_Y_PPEM
 #define X_SIZE(face,i) ((face)->available_sizes[i].x_ppem)
 #define Y_SIZE(face,i) ((face)->available_sizes[i].y_ppem)
-#else
-#define X_SIZE(face,i) ((face)->available_sizes[i].width << 6)
-#define Y_SIZE(face,i) ((face)->available_sizes[i].height << 6)
-#endif
 
 _X_HIDDEN FcBool
 _XftSetFace (XftFtFile *f, FT_F26Dot6 xsize, FT_F26Dot6 ysize, FT_Matrix *matrix)
 {
     FT_Face face = f->face;
-    
+
     if (f->xsize != xsize || f->ysize != ysize)
     {
        if (XftDebug() & XFT_DBG_GLYPH)
-           printf ("Set face size to %dx%d (%dx%d)\n", 
+           printf ("Set face size to %dx%d (%dx%d)\n",
                    (int) (xsize >> 6), (int) (ysize >> 6), (int) xsize, (int) ysize);
        /*
         * Bitmap only faces must match exactly, so find the closest
@@ -217,19 +212,16 @@ _XftSetFace (XftFtFile *f, FT_F26Dot6 xsize, FT_F26Dot6 ysize, FT_Matrix *matrix
                    best = i;
                }
            }
-           /* 
+           /*
             * Freetype 2.1.7 and earlier used width/height
             * for matching sizes in the BDF and PCF loaders.
             * This has been fixed for 2.1.8.  Because BDF and PCF
             * files have but a single strike per file, we can
             * simply try both sizes.
             */
-           if (
-#if HAVE_FT_BITMAP_SIZE_Y_PPEM
-               FT_Set_Char_Size (face, face->available_sizes[best].x_ppem,
+           if (FT_Set_Char_Size (face, face->available_sizes[best].x_ppem,
                                  face->available_sizes[best].y_ppem, 0, 0) != 0
                &&
-#endif
                FT_Set_Char_Size (face, face->available_sizes[best].width << 6,
                                  face->available_sizes[best].height << 6,
                                  0, 0) != 0)
@@ -265,7 +257,7 @@ static void
 _XftReleaseFile (XftFtFile *f)
 {
     XftFtFile  **prev;
-    
+
     if (--f->ref != 0)
         return;
     if (f->lock)
@@ -283,7 +275,7 @@ _XftReleaseFile (XftFtFile *f)
        if (f->face)
            FT_Done_Face (f->face);
     }
-    XftMemFree (XFT_MEM_FILE, 
+    XftMemFree (XFT_MEM_FILE,
                sizeof (XftFtFile) + (f->file ? strlen (f->file) + 1 : 0));
     free (f);
 }
@@ -349,7 +341,7 @@ XftLockFace (XftFont *public)
     XftFontInt *font = (XftFontInt *) public;
     XftFontInfo        *fi = &font->info;
     FT_Face    face;
-    
+
     face = _XftLockFile (fi->file);
     /*
      * Make sure the face is usable at the requested size
@@ -379,9 +371,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     double         aspect;
     FcMatrix       *font_matrix;
     FcBool         hinting, vertical_layout, autohint, global_advance;
-#ifdef FC_HINT_STYLE
     int             hint_style;
-#endif
     FcChar32       hash, *hashp;
     FT_Face        face;
     int                    nhash;
@@ -394,7 +384,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
      * Initialize the whole XftFontInfo so that padding doesn't interfere with
      * hash or XftFontInfoEqual().
      */
+
     memset (fi, '\0', sizeof(*fi));
 
     /*
@@ -409,7 +399,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail0;
     }
-    
+
     switch (FcPatternGetInteger (pattern, FC_INDEX, 0, &id)) {
     case FcResultNoMatch:
        id = 0;
@@ -419,7 +409,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail0;
     }
-    
+
     if (filename)
        fi->file = _XftGetFile (filename, id);
     else if (FcPatternGetFTFace (pattern, FC_FT_FACE, 0, &face) == FcResultMatch
@@ -436,7 +426,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
 
     if (FcPatternGetDouble (pattern, FC_ASPECT, 0, &aspect) != FcResultMatch)
        aspect = 1.0;
-    
+
     fi->ysize = (FT_F26Dot6) (dsize * 64.0);
     fi->xsize = (FT_F26Dot6) (dsize * aspect * 64.0);
 
@@ -455,7 +445,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail1;
     }
-    
+
     /*
      * Get rgba value
      */
@@ -468,7 +458,20 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail1;
     }
-    
+
+    /*
+     * Get lcd_filter value
+     */
+    switch (FcPatternGetInteger (pattern, FC_LCD_FILTER, 0, &fi->lcd_filter)) {
+    case FcResultNoMatch:
+       fi->lcd_filter = FC_LCD_DEFAULT;
+       break;
+    case FcResultMatch:
+       break;
+    default:
+       goto bail1;
+    }
+
     /*
      * Get matrix and transform values
      */
@@ -489,8 +492,8 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
 
     fi->transform = (fi->matrix.xx != 0x10000 || fi->matrix.xy != 0 ||
                     fi->matrix.yx != 0 || fi->matrix.yy != 0x10000);
-    
-    /* 
+
+    /*
      * Get render value, set to false if no Render extension present
      */
     if (info->hasRender)
@@ -507,7 +510,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     }
     else
        fi->render = FcFalse;
-    
+
     /*
      * Compute glyph load flags
      */
@@ -530,7 +533,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     /* disable bitmaps when anti-aliasing or transforming glyphs */
     if ((!bitmap && fi->antialias) || fi->transform)
        fi->load_flags |= FT_LOAD_NO_BITMAP;
-    
+
     /* disable hinting if requested */
     switch (FcPatternGetBool (pattern, FC_HINTING, 0, &hinting)) {
     case FcResultNoMatch:
@@ -542,7 +545,6 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
        goto bail1;
     }
 
-#ifdef FC_EMBOLDEN
     switch (FcPatternGetBool (pattern, FC_EMBOLDEN, 0, &fi->embolden)) {
     case FcResultNoMatch:
        fi->embolden = FcFalse;
@@ -552,11 +554,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail1;
     }
-#else
-    fi->embolden = FcFalse;
-#endif
-    
-#ifdef FC_HINT_STYLE
+
     switch (FcPatternGetInteger (pattern, FC_HINT_STYLE, 0, &hint_style)) {
     case FcResultNoMatch:
        hint_style = FC_HINT_FULL;
@@ -566,12 +564,9 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail1;
     }
-#endif
 
     if (!hinting
-#ifdef FC_HINT_STYLE
        || hint_style == FC_HINT_NONE
-#endif
        )
     {
        fi->load_flags |= FT_LOAD_NO_HINTING;
@@ -582,15 +577,11 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
      */
     if (fi->antialias)
     {
-#ifdef FC_HINT_STYLE
-#ifdef FT_LOAD_TARGET_LIGHT
        if (FC_HINT_NONE < hint_style && hint_style < FC_HINT_FULL)
        {
            fi->load_flags |= FT_LOAD_TARGET_LIGHT;
        }
        else
-#endif
-#endif
        {
            /* autohinter will snap stems to integer widths, when
             * the LCD targets are used.
@@ -598,24 +589,18 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
            switch (fi->rgba) {
            case FC_RGBA_RGB:
            case FC_RGBA_BGR:
-#ifdef FT_LOAD_TARGET_LCD
                fi->load_flags |= FT_LOAD_TARGET_LCD;
-#endif
                break;
            case FC_RGBA_VRGB:
            case FC_RGBA_VBGR:
-#ifdef FT_LOAD_TARGET_LCD_V
                fi->load_flags |= FT_LOAD_TARGET_LCD_V;
-#endif
                break;
            }
        }
     }
-#ifdef FT_LOAD_TARGET_MONO
     else
        fi->load_flags |= FT_LOAD_TARGET_MONO;
-#endif
-    
+
     /* set vertical layout if requested */
     switch (FcPatternGetBool (pattern, FC_VERTICAL_LAYOUT, 0, &vertical_layout)) {
     case FcResultNoMatch:
@@ -657,7 +642,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
 
     if (!global_advance)
        fi->load_flags |= FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
-    
+
     /*
      * Get requested spacing value
      */
@@ -670,7 +655,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     default:
        goto bail1;
     }
-    
+
     /*
      * Check for minspace
      */
@@ -685,7 +670,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
        goto bail1;
     }
     /*
-     * Check for fixed pixel spacing 
+     * Check for fixed pixel spacing
      */
     switch (FcPatternGetInteger (pattern, FC_CHAR_WIDTH, 0, &fi->char_width)) {
     case FcResultNoMatch:
@@ -709,12 +694,12 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi)
     while (nhash--)
        hash += *hashp++;
     fi->hash = hash;
-    
+
     /*
      * All done
      */
     return FcTrue;
-    
+
 bail1:
     _XftReleaseFile (fi->file);
     fi->file = NULL;
@@ -736,7 +721,7 @@ XftFontInfoCreate (Display *dpy, _Xconst FcPattern *pattern)
 
     if (!fi)
        return NULL;
-    
+
     if (!XftFontInfoFill (dpy, pattern, fi))
     {
        free (fi);
@@ -759,7 +744,7 @@ XftFontInfoHash (_Xconst XftFontInfo *fi)
 {
     return fi->hash;
 }
-    
+
 _X_EXPORT FcBool
 XftFontInfoEqual (_Xconst XftFontInfo *a, _Xconst XftFontInfo *b)
 {
@@ -767,8 +752,8 @@ XftFontInfoEqual (_Xconst XftFontInfo *a, _Xconst XftFontInfo *b)
 }
 
 _X_EXPORT XftFont *
-XftFontOpenInfo (Display       *dpy, 
-                FcPattern      *pattern, 
+XftFontOpenInfo (Display       *dpy,
+                FcPattern      *pattern,
                 XftFontInfo    *fi)
 {
     XftDisplayInfo     *info = _XftDisplayInfoGet (dpy, True);
@@ -803,14 +788,14 @@ XftFontOpenInfo (Display  *dpy,
        }
 
     /*
-     * No existing font, create another.  
+     * No existing font, create another.
      */
-    
+
     if (XftDebug () & XFT_DBG_CACHE)
        printf ("New font %s/%d size %dx%d\n",
                fi->file->file, fi->file->id,
                (int) fi->xsize >> 6, (int) fi->ysize >> 6);
-               
+
     if (FcPatternGetInteger (pattern, XFT_MAX_GLYPH_MEMORY, 0,
                             &max_glyph_memory) != FcResultMatch)
        max_glyph_memory = XFT_FONT_MAX_GLYPH_MEMORY;
@@ -832,7 +817,7 @@ XftFontOpenInfo (Display    *dpy,
        charset = FcCharSetCopy (charset);
     else
        charset = FcFreeTypeCharSet (face, FcConfigGetBlanks (NULL));
-    
+
     antialias = fi->antialias;
     if (!(face->face_flags & FT_FACE_FLAG_SCALABLE))
        antialias = FcFalse;
@@ -860,13 +845,13 @@ XftFontOpenInfo (Display  *dpy,
        {
            format = XRenderFindStandardFormat (dpy, PictStandardA1);
        }
-       
+
        if (!format)
            goto bail2;
     }
     else
        format = NULL;
-    
+
     if (charset)
     {
        num_unicode = FcCharSetCount (charset);
@@ -879,17 +864,17 @@ XftFontOpenInfo (Display  *dpy,
        hash_value = 0;
        rehash_value = 0;
     }
-    
+
     /*
      * Sometimes the glyphs are numbered 1..n, other times 0..n-1,
      * accept either numbering scheme by making room in the table
      */
     num_glyphs = face->num_glyphs + 1;
-    alloc_size = (sizeof (XftFontInt) + 
+    alloc_size = (sizeof (XftFontInt) +
                  num_glyphs * sizeof (XftGlyph *) +
                  hash_value * sizeof (XftUcsHash));
     font = malloc (alloc_size);
-    
+
     if (!font)
        goto bail2;
 
@@ -901,12 +886,12 @@ XftFontOpenInfo (Display  *dpy,
     if (fi->transform)
     {
        FT_Vector       vector;
-       
+
        vector.x = 0;
        vector.y = face->size->metrics.descender;
        FT_Vector_Transform (&vector, &fi->matrix);
        descent = -(vector.y >> 6);
-       
+
        vector.x = 0;
        vector.y = face->size->metrics.ascender;
        FT_Vector_Transform (&vector, &fi->matrix);
@@ -934,7 +919,7 @@ XftFontOpenInfo (Display    *dpy,
     font->public.ascent = ascent;
     font->public.descent = descent;
     font->public.height = height;
-    
+
     if (fi->char_width)
        font->public.max_advance_width = fi->char_width;
     else
@@ -952,7 +937,7 @@ XftFontOpenInfo (Display    *dpy,
     }
     font->public.charset = charset;
     font->public.pattern = pattern;
-    
+
     /*
      * Management fields
      */
@@ -960,10 +945,10 @@ XftFontOpenInfo (Display  *dpy,
 
     font->next = info->fonts;
     info->fonts = &font->public;
-    
+
     font->hash_next = *bucket;
     *bucket = &font->public;
-    
+
     /*
      * Copy the info over
      */
@@ -978,7 +963,7 @@ XftFontOpenInfo (Display    *dpy,
      * bump XftFile reference count
      */
     font->info.file->ref++;
-    
+
     /*
      * Per glyph information
      */
@@ -1001,18 +986,18 @@ XftFontOpenInfo (Display *dpy,
      */
     font->glyphset = 0;
     font->format = format;
-    
+
     /*
      * Glyph memory management fields
      */
     font->glyph_memory = 0;
     font->max_glyph_memory = max_glyph_memory;
     font->use_free_glyphs = info->use_free_glyphs;
-    
+
     _XftUnlockFile (fi->file);
 
     return &font->public;
-    
+
 bail2:
     FcCharSetDestroy (charset);
 bail1:
@@ -1050,7 +1035,7 @@ XftFontDestroy (Display *dpy, XftFont *public)
     XftDisplayInfo  *info = _XftDisplayInfoGet (dpy, False);
     XftFontInt     *font = (XftFontInt *) public;
     int                    i;
-    
+
     /* note reduction in memory use */
     if (info)
        info->glyph_memory -= font->glyph_memory;
@@ -1070,11 +1055,11 @@ XftFontDestroy (Display *dpy, XftFont *public)
            free (xftg);
        }
     }
-    
+
     /* Free the pattern and the charset */
     FcPatternDestroy (font->public.pattern);
     FcCharSetDestroy (font->public.charset);
-    
+
     /* Finally, free the font structure */
     XftMemFree (XFT_MEM_FONT, sizeof (XftFontInt) +
                font->num_glyphs * sizeof (XftGlyph *) +
@@ -1087,7 +1072,7 @@ XftFontFindNthUnref (XftDisplayInfo *info, int n)
 {
     XftFont    *public;
     XftFontInt *font;
-    
+
     for (public = info->fonts; public; public = font->next)
     {
        font = (XftFontInt*) public;
@@ -1148,10 +1133,10 @@ XftFontClose (Display *dpy, XftFont *public)
 {
     XftDisplayInfo  *info = _XftDisplayInfoGet (dpy, False);
     XftFontInt     *font = (XftFontInt *) public;
-    
+
     if (--font->ref != 0)
        return;
-    
+
     if (info)
     {
        ++info->num_unref_fonts;
index 10adb15..2f3dc5a 100644 (file)
 
 #include "xftint.h"
 #include <freetype/ftoutln.h>
+#include <freetype/ftlcdfil.h>
 
-#if HAVE_FT_GLYPHSLOT_EMBOLDEN
 #include <freetype/ftsynth.h>
-#endif
-
-static const int    filters[3][3] = {
-    /* red */
-#if 0
-{    65538*4/7,65538*2/7,65538*1/7 },
-    /* green */
-{    65536*1/4, 65536*2/4, 65537*1/4 },
-    /* blue */
-{    65538*1/7,65538*2/7,65538*4/7 },
-#endif
-{    65538*9/13,65538*3/13,65538*1/13 },
-    /* green */
-{    65538*1/6, 65538*4/6, 65538*1/6 },
-    /* blue */
-{    65538*1/13,65538*3/13,65538*9/13 },
-};
 
 /*
  * Validate the memory info for a font
@@ -69,6 +52,293 @@ _XftFontValidateMemory (Display *dpy, XftFont *public)
                font->glyph_memory, glyph_memory);
 }
 
+/* we sometimes need to convert the glyph bitmap in a FT_GlyphSlot
+ * into a different format. For example, we want to convert a
+ * FT_PIXEL_MODE_LCD or FT_PIXEL_MODE_LCD_V bitmap into a 32-bit
+ * ARGB or ABGR bitmap.
+ *
+ * this function prepares a target descriptor for this operation.
+ *
+ * input :: target bitmap descriptor. The function will set its
+ *          'width', 'rows' and 'pitch' fields, and only these
+ *
+ * slot  :: the glyph slot containing the source bitmap. this
+ *          function assumes that slot->format == FT_GLYPH_FORMAT_BITMAP
+ *
+ * mode  :: the requested final rendering mode. supported values are
+ *          MONO, NORMAL (i.e. gray), LCD and LCD_V
+ *
+ * the function returns the size in bytes of the corresponding buffer,
+ * it's up to the caller to allocate the corresponding memory block
+ * before calling _fill_xrender_bitmap
+ *
+ * it also returns -1 in case of error (e.g. incompatible arguments,
+ * like trying to convert a gray bitmap into a monochrome one)
+ */
+static int
+_compute_xrender_bitmap_size( FT_Bitmap*       target,
+                             FT_GlyphSlot      slot,
+                             FT_Render_Mode    mode )
+{
+    FT_Bitmap* ftbit;
+    int                width, height, pitch;
+
+    if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
+       return -1;
+
+    // compute the size of the final bitmap
+    ftbit = &slot->bitmap;
+
+    width = ftbit->width;
+    height = ftbit->rows;
+    pitch = (width+3) & ~3;
+
+    switch ( ftbit->pixel_mode )
+    {
+    case FT_PIXEL_MODE_MONO:
+       if ( mode == FT_RENDER_MODE_MONO )
+       {
+           pitch = (((width+31) & ~31) >> 3);
+           break;
+       }
+       /* fall-through */
+
+    case FT_PIXEL_MODE_GRAY:
+       if ( mode == FT_RENDER_MODE_LCD ||
+            mode == FT_RENDER_MODE_LCD_V )
+       {
+           /* each pixel is replicated into a 32-bit ARGB value */
+           pitch = width*4;
+       }
+       break;
+
+    case FT_PIXEL_MODE_LCD:
+       if ( mode != FT_RENDER_MODE_LCD )
+           return -1;
+
+       /* horz pixel triplets are packed into 32-bit ARGB values */
+       width /= 3;
+       pitch = width*4;
+       break;
+
+    case FT_PIXEL_MODE_LCD_V:
+       if ( mode != FT_RENDER_MODE_LCD_V )
+           return -1;
+
+       /* vert pixel triplets are packed into 32-bit ARGB values */
+       height /= 3;
+       pitch = width*4;
+       break;
+
+    default:  /* unsupported source format */
+       return -1;
+    }
+
+    target->width = width;
+    target->rows = height;
+    target->pitch = pitch;
+    target->buffer = NULL;
+
+    return pitch * height;
+}
+
+/* this functions converts the glyph bitmap found in a FT_GlyphSlot
+ * into a different format (see _compute_xrender_bitmap_size)
+ *
+ * you should call this function after _compute_xrender_bitmap_size
+ *
+ * target :: target bitmap descriptor. Note that its 'buffer' pointer
+ *           must point to memory allocated by the caller
+ *
+ * slot   :: the glyph slot containing the source bitmap
+ *
+ * mode   :: the requested final rendering mode
+ *
+ * bgr    :: boolean, set if BGR or VBGR pixel ordering is needed
+ */
+static void
+_fill_xrender_bitmap( FT_Bitmap*       target,
+                     FT_GlyphSlot      slot,
+                     FT_Render_Mode    mode,
+                     int               bgr )
+{
+    FT_Bitmap*   ftbit = &slot->bitmap;
+
+    {
+       unsigned char*  srcLine = ftbit->buffer;
+        unsigned char* dstLine = target->buffer;
+        int            src_pitch = ftbit->pitch;
+        int            width = target->width;
+        int            height = target->rows;
+        int            pitch = target->pitch;
+        int            subpixel;
+        int            h;
+
+        subpixel = ( mode == FT_RENDER_MODE_LCD ||
+                    mode == FT_RENDER_MODE_LCD_V );
+
+       if ( src_pitch < 0 )
+           srcLine -= src_pitch*(ftbit->rows-1);
+
+       switch ( ftbit->pixel_mode )
+       {
+       case FT_PIXEL_MODE_MONO:
+           if ( subpixel )  /* convert mono to ARGB32 values */
+           {
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+               {
+                   int x;
+
+                   for ( x = 0; x < width; x++ )
+                   {
+                       if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
+                           ((unsigned int*)dstLine)[x] = 0xffffffffU;
+                   }
+               }
+           }
+           else if ( mode == FT_RENDER_MODE_NORMAL )  /* convert mono to 8-bit gray */
+           {
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+               {
+                   int x;
+
+                   for ( x = 0; x < width; x++ )
+                   {
+                       if ( srcLine[(x >> 3)] & (0x80 >> (x & 7)) )
+                           dstLine[x] = 0xff;
+                   }
+               }
+           }
+           else  /* copy mono to mono */
+           {
+               int bytes = (width+7) >> 3;
+
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+                   memcpy( dstLine, srcLine, bytes );
+           }
+           break;
+
+       case FT_PIXEL_MODE_GRAY:
+           if ( subpixel )  /* convert gray to ARGB32 values */
+           {
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+               {
+                   int            x;
+                   unsigned int*  dst = (unsigned int*)dstLine;
+
+                   for ( x = 0; x < width; x++ )
+                   {
+                       unsigned int pix = srcLine[x];
+
+                       pix |= (pix << 8);
+                       pix |= (pix << 16);
+
+                       dst[x] = pix;
+                   }
+               }
+           }
+           else  /* copy gray into gray */
+           {
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+                   memcpy( dstLine, srcLine, width );
+           }
+           break;
+
+       case FT_PIXEL_MODE_LCD:
+           if ( !bgr )
+           {
+               /* convert horizontal RGB into ARGB32 */
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+               {
+                   int            x;
+                   unsigned char* src = srcLine;
+                   unsigned int*  dst = (unsigned int*)dstLine;
+
+                   for ( x = 0; x < width; x++, src += 3 )
+                   {
+                       unsigned int pix;
+
+                       pix = ((unsigned int)src[0] << 16) |
+                             ((unsigned int)src[1] <<  8) |
+                             ((unsigned int)src[2]      ) |
+                             ((unsigned int)src[1] << 24) ;
+
+                       dst[x] = pix;
+                   }
+               }
+           }
+           else
+           {
+               /* convert horizontal BGR into ARGB32 */
+               for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch )
+               {
+                   int            x;
+                   unsigned char* src = srcLine;
+                   unsigned int*  dst = (unsigned int*)dstLine;
+
+                   for ( x = 0; x < width; x++, src += 3 )
+                   {
+                       unsigned int pix;
+
+                       pix = ((unsigned int)src[2] << 16) |
+                             ((unsigned int)src[1] <<  8) |
+                             ((unsigned int)src[0]      ) |
+                             ((unsigned int)src[1] << 24) ;
+
+                       dst[x] = pix;
+                   }
+               }
+           }
+           break;
+
+       default:  /* FT_PIXEL_MODE_LCD_V */
+           /* convert vertical RGB into ARGB32 */
+           if ( !bgr )
+           {
+               for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
+               {
+                   int            x;
+                   unsigned char* src = srcLine;
+                   unsigned int*  dst = (unsigned int*)dstLine;
+
+                   for ( x = 0; x < width; x++, src += 1 )
+                   {
+                       unsigned int  pix;
+
+                       pix = ((unsigned int)src[0]           << 16) |
+                             ((unsigned int)src[src_pitch]   <<  8) |
+                             ((unsigned int)src[src_pitch*2]      ) |
+                             ((unsigned int)src[src_pitch]   << 24) ;
+
+                       dst[x] = pix;
+                   }
+               }
+           }
+           else
+           {
+           for ( h = height; h > 0; h--, srcLine += 3*src_pitch, dstLine += pitch )
+               {
+                   int            x;
+                   unsigned char* src = srcLine;
+                   unsigned int*  dst = (unsigned int*)dstLine;
+
+                   for ( x = 0; x < width; x++, src += 1 )
+                   {
+                       unsigned int  pix;
+
+                       pix = ((unsigned int)src[src_pitch*2] << 16) |
+                             ((unsigned int)src[src_pitch]   <<  8) |
+                             ((unsigned int)src[0]                ) |
+                             ((unsigned int)src[src_pitch]   << 24) ;
+
+                       dst[x] = pix;
+                   }
+               }
+           }
+       }
+    }
+}
+
 _X_EXPORT void
 XftFontLoadGlyphs (Display         *dpy,
                   XftFont          *pub,
@@ -86,48 +356,37 @@ XftFontLoadGlyphs (Display     *dpy,
     unsigned char   bufLocal[4096];
     unsigned char   *bufBitmap = bufLocal;
     int                    bufSize = sizeof (bufLocal);
-    int                    size, pitch;
-    unsigned char   bufLocalRgba[4096];
-    unsigned char   *bufBitmapRgba = bufLocalRgba;
-    int                    bufSizeRgba = sizeof (bufLocalRgba);
-    int                    sizergba, pitchrgba, widthrgba;
+    int                    size;
     int                    width;
     int                    height;
     int                    left, right, top, bottom;
-    int                    hmul = 1;
-    int                    vmul = 1;
-    FT_Bitmap      ftbit;
-    FT_Matrix      matrix;
+    FT_Bitmap*     ftbit;
+    FT_Bitmap      local;
     FT_Vector      vector;
-    Bool           subpixel = False;
     FT_Face        face;
+    FT_Render_Mode  mode = FT_RENDER_MODE_MONO;
 
     if (!info)
        return;
 
     face = XftLockFace (&font->public);
-    
+
     if (!face)
        return;
 
-    matrix.xx = matrix.yy = 0x10000L;
-    matrix.xy = matrix.yx = 0;
-
     if (font->info.antialias)
     {
        switch (font->info.rgba) {
        case FC_RGBA_RGB:
        case FC_RGBA_BGR:
-           matrix.xx *= 3;
-           subpixel = True;
-           hmul = 3;
+           mode = FT_RENDER_MODE_LCD;
            break;
        case FC_RGBA_VRGB:
        case FC_RGBA_VBGR:
-           matrix.yy *= 3;
-           vmul = 3;
-           subpixel = True;
+           mode = FT_RENDER_MODE_LCD_V;
            break;
+       default:
+           mode = FT_RENDER_MODE_NORMAL;
        }
     }
 
@@ -137,7 +396,7 @@ XftFontLoadGlyphs (Display      *dpy,
        xftg = font->glyphs[glyphindex];
        if (!xftg)
            continue;
-       
+
        if (XftDebug() & XFT_DBG_CACHE)
            _XftFontValidateMemory (dpy, pub);
        /*
@@ -147,7 +406,9 @@ XftFontLoadGlyphs (Display      *dpy,
         */
        if (xftg->glyph_memory)
            continue;
-       
+
+       FT_Library_SetLcdFilter( _XftFTlibrary, font->info.lcd_filter);
+
        error = FT_Load_Glyph (face, glyphindex, font->info.load_flags);
        if (error)
        {
@@ -168,20 +429,18 @@ XftFontLoadGlyphs (Display            *dpy,
 #define CEIL(x)            (((x)+63) & -64)
 #define TRUNC(x)    ((x) >> 6)
 #define ROUND(x)    (((x)+32) & -64)
-               
+
        glyphslot = face->glyph;
 
-#if HAVE_FT_GLYPHSLOT_EMBOLDEN
        /*
         * Embolden if required
         */
        if (font->info.embolden) FT_GlyphSlot_Embolden(glyphslot);
-#endif
 
        /*
         * Compute glyph metrics from FreeType information
         */
-       if(font->info.transform && glyphslot->format != ft_glyph_format_bitmap) 
+       if(font->info.transform && glyphslot->format != FT_GLYPH_FORMAT_BITMAP)
        {
            /*
             * calculate the true width by transforming all four corners.
@@ -192,9 +451,9 @@ XftFontLoadGlyphs (Display      *dpy,
                for(yc = 0; yc <= 1; yc++) {
                    vector.x = glyphslot->metrics.horiBearingX + xc * glyphslot->metrics.width;
                    vector.y = glyphslot->metrics.horiBearingY - yc * glyphslot->metrics.height;
-                   FT_Vector_Transform(&vector, &font->info.matrix);   
+                   FT_Vector_Transform(&vector, &font->info.matrix);
                    if (XftDebug() & XFT_DBG_GLYPH)
-                       printf("Trans %d %d: %d %d\n", (int) xc, (int) yc, 
+                       printf("Trans %d %d: %d %d\n", (int) xc, (int) yc,
                               (int) vector.x, (int) vector.y);
                    if(xc == 0 && yc == 0) {
                        left = right = vector.x;
@@ -235,7 +494,7 @@ XftFontLoadGlyphs (Display      *dpy,
                if (TRUNC(bottom) > font->public.max_advance_width)
                {
                    int adjust;
-    
+
                    adjust = bottom - (font->public.max_advance_width << 6);
                    if (adjust > top)
                        adjust = top;
@@ -249,7 +508,7 @@ XftFontLoadGlyphs (Display      *dpy,
                if (TRUNC(right) > font->public.max_advance_width)
                {
                    int adjust;
-    
+
                    adjust = right - (font->public.max_advance_width << 6);
                    if (adjust > left)
                        adjust = left;
@@ -260,17 +519,14 @@ XftFontLoadGlyphs (Display            *dpy,
            }
        }
 
-       if (font->info.antialias)
-           pitch = (width * hmul + 3) & ~3;
-       else
-           pitch = ((width + 31) & ~31) >> 3;
-
-       size = pitch * height * vmul;
+       if ( glyphslot->format != FT_GLYPH_FORMAT_BITMAP )
+       {
+           error = FT_Render_Glyph( face->glyph, mode );
+           if (error)
+               continue;
+       }
 
-       xftg->metrics.width = width;
-       xftg->metrics.height = height;
-       xftg->metrics.x = -TRUNC(left);
-       xftg->metrics.y = TRUNC(top);
+       FT_Library_SetLcdFilter( _XftFTlibrary, FT_LCD_FILTER_NONE );
 
        if (font->info.spacing >= FC_MONO)
        {
@@ -309,105 +565,13 @@ XftFontLoadGlyphs (Display           *dpy,
            xftg->metrics.xOff = TRUNC(ROUND(glyphslot->advance.x));
            xftg->metrics.yOff = -TRUNC(ROUND(glyphslot->advance.y));
        }
-       
-       /*
-        * If the glyph is relatively large (> 1% of server memory),
-        * don't send it until necessary
-        */
-       if (!need_bitmaps && size > info->max_glyph_memory / 100)
-           continue;
-       
-       /*
-        * Make sure there's enough buffer space for the glyph
-        */
-       if (size > bufSize)
-       {
-           if (bufBitmap != bufLocal)
-               free (bufBitmap);
-           bufBitmap = (unsigned char *) malloc (size);
-           if (!bufBitmap)
-               continue;
-           bufSize = size;
-       }
-       memset (bufBitmap, 0, size);
 
-       /*
-        * Rasterize into the local buffer
-        */
-       switch (glyphslot->format) {
-       case ft_glyph_format_outline:
-           ftbit.width      = width * hmul;
-           ftbit.rows       = height * vmul;
-           ftbit.pitch      = pitch;
-           if (font->info.antialias)
-               ftbit.pixel_mode = ft_pixel_mode_grays;
-           else
-               ftbit.pixel_mode = ft_pixel_mode_mono;
-           
-           ftbit.buffer     = bufBitmap;
-           
-           if (subpixel)
-               FT_Outline_Transform (&glyphslot->outline, &matrix);
+       // compute the size of the final bitmap
+       ftbit = &glyphslot->bitmap;
 
-           FT_Outline_Translate ( &glyphslot->outline, -left*hmul, -bottom*vmul );
+       width = ftbit->width;
+       height = ftbit->rows;
 
-           FT_Outline_Get_Bitmap( _XftFTlibrary, &glyphslot->outline, &ftbit );
-           break;
-       case ft_glyph_format_bitmap:
-           if (font->info.antialias)
-           {
-               unsigned char   *srcLine, *dstLine;
-               int             height;
-               int             x;
-               int         h, v;
-
-               srcLine = glyphslot->bitmap.buffer;
-               dstLine = bufBitmap;
-               height = glyphslot->bitmap.rows;
-               while (height--)
-               {
-                   for (x = 0; x < glyphslot->bitmap.width; x++)
-                   {
-                       /* always MSB bitmaps */
-                       unsigned char   a = ((srcLine[x >> 3] & (0x80 >> (x & 7))) ?
-                                            0xff : 0x00);
-                       if (subpixel)
-                       {
-                           for (v = 0; v < vmul; v++)
-                               for (h = 0; h < hmul; h++)
-                                   dstLine[v * pitch + x*hmul + h] = a;
-                       }
-                       else
-                           dstLine[x] = a;
-                   }
-                   dstLine += pitch * vmul;
-                   srcLine += glyphslot->bitmap.pitch;
-               }
-           }
-           else
-           {
-               unsigned char   *srcLine, *dstLine;
-               int             h, bytes;
-
-               srcLine = glyphslot->bitmap.buffer;
-               dstLine = bufBitmap;
-               h = glyphslot->bitmap.rows;
-               bytes = (glyphslot->bitmap.width + 7) >> 3;
-               while (h--)
-               {
-                   memcpy (dstLine, srcLine, bytes);
-                   dstLine += pitch;
-                   srcLine += glyphslot->bitmap.pitch;
-               }
-           }
-           break;
-       default:
-           if (XftDebug() & XFT_DBG_GLYPH)
-               printf ("glyph %d is not in a usable format\n",
-                       (int) glyphindex);
-           continue;
-       }
-       
        if (XftDebug() & XFT_DBG_GLYPH)
        {
            printf ("glyph %d:\n", (int) glyphindex);
@@ -423,29 +587,72 @@ XftFontLoadGlyphs (Display            *dpy,
                int             x, y;
                unsigned char   *line;
 
-               line = bufBitmap;
-               for (y = 0; y < height * vmul; y++)
+               line = ftbit->buffer;
+               if (ftbit->pitch < 0)
+                   line -= ftbit->pitch*(height-1);
+
+               for (y = 0; y < height; y++)
                {
-                   if (font->info.antialias) 
+                   if (font->info.antialias)
                    {
-                       static char    den[] = { " .:;=+*#" };
-                       for (x = 0; x < pitch; x++)
+                       static const char    den[] = { " .:;=+*#" };
+                       for (x = 0; x < width; x++)
                            printf ("%c", den[line[x] >> 5]);
                    }
                    else
                    {
-                       for (x = 0; x < pitch * 8; x++)
+                       for (x = 0; x < width * 8; x++)
                        {
                            printf ("%c", line[x>>3] & (1 << (x & 7)) ? '#' : ' ');
                        }
                    }
                    printf ("|\n");
-                   line += pitch;
+                   line += ftbit->pitch;
                }
                printf ("\n");
            }
        }
 
+       size = _compute_xrender_bitmap_size( &local, glyphslot, mode );
+       if ( size < 0 )
+           continue;
+
+       xftg->metrics.width  = local.width;
+       xftg->metrics.height = local.rows;
+       xftg->metrics.x      = - glyphslot->bitmap_left;
+       xftg->metrics.y      =   glyphslot->bitmap_top;
+
+       /*
+        * If the glyph is relatively large (> 1% of server memory),
+        * don't send it until necessary.
+        */
+       if (!need_bitmaps && size > info->max_glyph_memory / 100)
+           continue;
+
+       /*
+        * Make sure there is enough buffer space for the glyph.
+        */
+       if (size > bufSize)
+       {
+           if (bufBitmap != bufLocal)
+               free (bufBitmap);
+           bufBitmap = (unsigned char *) malloc (size);
+           if (!bufBitmap)
+               continue;
+           bufSize = size;
+       }
+       memset (bufBitmap, 0, size);
+
+       local.buffer = bufBitmap;
+
+       _fill_xrender_bitmap( &local, glyphslot, mode,
+                             (font->info.rgba == FC_RGBA_BGR ||
+                              font->info.rgba == FC_RGBA_VBGR ) );
+
+       /*
+        * Copy or convert into local buffer.
+        */
+
        /*
         * Use the glyph index as the wire encoding; it
         * might be more efficient for some locales to map
@@ -455,146 +662,51 @@ XftFontLoadGlyphs (Display           *dpy,
         */
        glyph = (Glyph) glyphindex;
 
-       if (subpixel)
+       xftg->glyph_memory = size + sizeof (XftGlyph);
+       if (font->format)
        {
-           int             x, y;
-           unsigned char   *in_line, *out_line, *in;
-           unsigned int    *out;
-           unsigned int    red, green, blue;
-           int             rf, gf, bf;
-           int             s;
-           int             o, os;
-           
-           /*
-            * Filter the glyph to soften the color fringes
-            */
-           widthrgba = width;
-           pitchrgba = (widthrgba * 4 + 3) & ~3;
-           sizergba = pitchrgba * height;
-
-           os = 1;
-           switch (font->info.rgba) {
-           case FC_RGBA_VRGB:
-               os = pitch;
-           case FC_RGBA_RGB:
-           default:
-               rf = 0;
-               gf = 1;
-               bf = 2;
-               break;
-           case FC_RGBA_VBGR:
-               os = pitch;
-           case FC_RGBA_BGR:
-               bf = 0;
-               gf = 1;
-               rf = 2;
-               break;
-           }
-           if (sizergba > bufSizeRgba)
-           {
-               if (bufBitmapRgba != bufLocalRgba)
-                   free (bufBitmapRgba);
-               bufBitmapRgba = (unsigned char *) malloc (sizergba);
-               if (!bufBitmapRgba)
-                   continue;
-               bufSizeRgba = sizergba;
-           }
-           memset (bufBitmapRgba, 0, sizergba);
-           in_line = bufBitmap;
-           out_line = bufBitmapRgba;
-           for (y = 0; y < height; y++)
+           if (!font->glyphset)
+               font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
+           if ( mode == FT_RENDER_MODE_MONO )
            {
-               in = in_line;
-               out = (unsigned int *) out_line;
-               in_line += pitch * vmul;
-               out_line += pitchrgba;
-               for (x = 0; x < width * hmul; x += hmul)
+               /* swap bits in each byte */
+               if (BitmapBitOrder (dpy) != MSBFirst)
                {
-                   red = green = blue = 0;
-                   o = 0;
-                   for (s = 0; s < 3; s++)
+                   unsigned char   *line = (unsigned char*)bufBitmap;
+                   int             i = size;
+
+                   while (i--)
                    {
-                       red += filters[rf][s]*in[x+o];
-                       green += filters[gf][s]*in[x+o];
-                       blue += filters[bf][s]*in[x+o];
-                       o += os;
+                       int c = *line;
+                       c = ((c << 1) & 0xaa) | ((c >> 1) & 0x55);
+                       c = ((c << 2) & 0xcc) | ((c >> 2) & 0x33);
+                       c = ((c << 4) & 0xf0) | ((c >> 4) & 0x0f);
+                       *line++ = c;
                    }
-                   red = red / 65536;
-                   green = green / 65536;
-                   blue = blue / 65536;
-                   *out++ = (green << 24) | (red << 16) | (green << 8) | blue;
                }
            }
-           
-           xftg->glyph_memory = sizergba + sizeof (XftGlyph);
-           if (font->format)
+           else if ( mode != FT_RENDER_MODE_NORMAL )
            {
-               if (!font->glyphset)
-                   font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
+               /* invert ARGB <=> BGRA */
                if (ImageByteOrder (dpy) != XftNativeByteOrder ())
-                   XftSwapCARD32 ((CARD32 *) bufBitmapRgba, sizergba >> 2);
-               XRenderAddGlyphs (dpy, font->glyphset, &glyph,
-                                 &xftg->metrics, 1, 
-                                 (char *) bufBitmapRgba, sizergba);
-           }
-           else
-           {
-               if (sizergba)
-               {
-                   xftg->bitmap = malloc (sizergba);
-                   if (xftg->bitmap)
-                       memcpy (xftg->bitmap, bufBitmapRgba, sizergba);
-               }
-               else
-                   xftg->bitmap = NULL;
+                   XftSwapCARD32 ((CARD32 *) bufBitmap, size >> 2);
            }
+           XRenderAddGlyphs (dpy, font->glyphset, &glyph,
+                             &xftg->metrics, 1,
+                             (char *) bufBitmap, size);
        }
        else
        {
-           xftg->glyph_memory = size + sizeof (XftGlyph);
-           if (font->format)
+           if (size)
            {
-               /*
-                * swap bit order around; FreeType is always MSBFirst
-                */
-               if (!font->info.antialias)
-               {
-                   if (BitmapBitOrder (dpy) != MSBFirst)
-                   {
-                       unsigned char   *line;
-                       unsigned char   c;
-                       int                 i;
-
-                       line = (unsigned char *) bufBitmap;
-                       i = size;
-                       while (i--)
-                       {
-                           c = *line;
-                           c = ((c << 1) & 0xaa) | ((c >> 1) & 0x55);
-                           c = ((c << 2) & 0xcc) | ((c >> 2) & 0x33);
-                           c = ((c << 4) & 0xf0) | ((c >> 4) & 0x0f);
-                           *line++ = c;
-                       }
-                   }
-               }
-               if (!font->glyphset)
-                   font->glyphset = XRenderCreateGlyphSet (dpy, font->format);
-               XRenderAddGlyphs (dpy, font->glyphset, &glyph,
-                                 &xftg->metrics, 1, 
-                                 (char *) bufBitmap, size);
+               xftg->bitmap = malloc (size);
+               if (xftg->bitmap)
+                   memcpy (xftg->bitmap, bufBitmap, size);
            }
            else
-           {
-               if (size)
-               {
-                   xftg->bitmap = malloc (size);
-                   if (xftg->bitmap)
-                       memcpy (xftg->bitmap, bufBitmap, size);
-               }
-               else
-                   xftg->bitmap = NULL;
-           }
+               xftg->bitmap = NULL;
        }
+
        font->glyph_memory += xftg->glyph_memory;
        info->glyph_memory += xftg->glyph_memory;
        if (XftDebug() & XFT_DBG_CACHE)
@@ -605,8 +717,6 @@ XftFontLoadGlyphs (Display      *dpy,
     }
     if (bufBitmap != bufLocal)
        free (bufBitmap);
-    if (bufBitmapRgba != bufLocalRgba)
-       free (bufBitmapRgba);
     XftUnlockFace (&font->public);
 }
 
@@ -622,7 +732,7 @@ XftFontUnloadGlyphs (Display                *dpy,
     FT_UInt        glyphindex;
     Glyph          glyphBuf[1024];
     int                    nused;
-    
+
     nused = 0;
     while (nglyph--)
     {
@@ -656,7 +766,7 @@ XftFontUnloadGlyphs (Display                *dpy,
        free (xftg);
        XftMemFree (XFT_MEM_GLYPH, sizeof (XftGlyph));
        font->glyphs[glyphindex] = NULL;
-    }    
+    }
     if (font->glyphset && nused)
        XRenderFreeGlyphs (dpy, font->glyphset, glyphBuf, nused);
 }
@@ -672,7 +782,7 @@ XftFontCheckGlyph (Display  *dpy,
     XftFontInt     *font = (XftFontInt *) pub;
     XftGlyph       *xftg;
     int                    n;
-    
+
     if (glyph >= font->num_glyphs)
        return FcFalse;
     xftg = font->glyphs[glyph];
@@ -715,14 +825,14 @@ XftCharExists (Display        *dpy,
 #define Missing            ((FT_UInt) ~0)
 
 _X_EXPORT FT_UInt
-XftCharIndex (Display      *dpy, 
+XftCharIndex (Display      *dpy,
              XftFont       *pub,
              FcChar32      ucs4)
 {
     XftFontInt *font = (XftFontInt *) pub;
     FcChar32   ent, offset;
     FT_Face    face;
-    
+
     if (!font->hash_value)
        return 0;
 
@@ -765,7 +875,7 @@ _XftFontUncacheGlyph (Display *dpy, XftFont *pub)
     unsigned long   glyph_memory;
     FT_UInt        glyphindex;
     XftGlyph       *xftg;
-    
+
     if (!font->glyph_memory)
        return;
     if (font->use_free_glyphs)
@@ -781,7 +891,7 @@ _XftFontUncacheGlyph (Display *dpy, XftFont *pub)
        }
        glyph_memory = 0;
     }
-       
+
     if (XftDebug() & XFT_DBG_CACHE)
        _XftFontValidateMemory (dpy, pub);
     for (glyphindex = 0; glyphindex < font->num_glyphs; glyphindex++)
index 43efc00..ff23722 100644 (file)
@@ -43,7 +43,7 @@ XftGetVersion (void)
 }
 
 static struct {
-    char    *name;
+    const char *name;
     int            alloc_count;
     int            alloc_mem;
     int            free_count;
@@ -58,7 +58,7 @@ static struct {
 static int  XftAllocCount, XftAllocMem;
 static int  XftFreeCount, XftFreeMem;
 
-static int  XftMemNotice = 1*1024*1024;
+static const int  XftMemNotice = 1*1024*1024;
 
 static int  XftAllocNotify, XftFreeNotify;
 
index 3aafecf..1658977 100644 (file)
 # define _X_EXPORT /**/
 #endif
 
-#ifndef HAVE_CONFIG_H
-# if (FREETYPE_MAJOR > 2 ||                                                \
-      (FREETYPE_MAJOR == 2 && (FREETYPE_MINOR > 1 ||                       \
-                              (FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 5))))
-#  define HAVE_FT_BITMAP_SIZE_Y_PPEM 1
-# else
-#  define HAVE_FT_BITMAP_SIZE_Y_PPEM 0
-# endif
-#endif
-
 typedef struct _XftMatcher {
     char    *object;
     double  (*compare) (char *object, FcValue value1, FcValue value2);
@@ -115,14 +105,14 @@ typedef struct _XftUcsHash {
 typedef struct _XftFtFile {
     struct _XftFtFile  *next;
     int                        ref;        /* number of font infos using this file */
-    
+
     char               *file;      /* file name */
     int                        id;         /* font index within that file */
 
     FT_F26Dot6         xsize;      /* current xsize setting */
     FT_F26Dot6         ysize;      /* current ysize setting */
     FT_Matrix          matrix;     /* current matrix setting */
-    
+
     int                        lock;       /* lock count; can't unload unless 0 */
     FT_Face            face;       /* pointer to face; only valid when lock */
 } XftFtFile;
@@ -145,6 +135,7 @@ struct _XftFontInfo {
     FcBool             antialias;      /* doing antialiasing */
     FcBool             embolden;       /* force emboldening */
     int                        rgba;           /* subpixel order */
+    int                        lcd_filter;     /* lcd filter */
     FT_Matrix          matrix;         /* glyph transformation matrix */
     FcBool             transform;      /* non-identify matrix? */
     FT_Int             load_flags;     /* glyph load flags */
@@ -337,7 +328,7 @@ FcFontSet *XftListFontSets (FcFontSet **sets, int nsets, FcPattern *p, FcObjectS
 void
 XftRectCore (XftDraw           *draw,
             _Xconst XftColor   *color,
-            int                x, 
+            int                x,
             int                y,
             unsigned int       width,
             unsigned int       height);
@@ -376,7 +367,7 @@ void
 _XftDisplayManageMemory (Display *dpy);
 
 int
-XftDefaultParseBool (char *v);
+XftDefaultParseBool (const char *v);
 
 FcBool
 XftDefaultGetBool (Display *dpy, const char *object, int screen, FcBool def);
@@ -401,7 +392,7 @@ FcBool
 XftDrawRenderPrepare (XftDraw  *draw);
 
 /* xftextent.c */
-    
+
 /* xftfont.c */
 
 /* xftfreetype.c */
@@ -436,7 +427,7 @@ XftListFontsPatternObjects (Display     *dpy,
                            FcObjectSet    *os);
 
 /* xftname.c */
-void 
+void
 _XftNameInit (void);
 
 /* xftrender.c */
index 0780f7c..f159745 100644 (file)
@@ -45,12 +45,12 @@ XftListFonts (Display       *dpy,
     va_start (va, screen);
 
     FcPatternVapBuild (pattern, NULL, va);
-    
+
     first = va_arg (va, const char *);
     FcObjectSetVapBuild (os, first, va);
-    
+
     va_end (va);
-    
+
     fs = XftListFontsPatternObjects (dpy, screen, pattern, os);
     FcPatternDestroy (pattern);
     FcObjectSetDestroy (os);
index a0c6be7..30dd6e0 100644 (file)
@@ -33,7 +33,7 @@ static const FcObjectType     _XftObjectTypes[] = {
 
 static FcBool _XftNameInitialized;
 
-_X_HIDDEN void 
+_X_HIDDEN void
 _XftNameInit (void)
 {
     if (_XftNameInitialized)
@@ -42,11 +42,11 @@ _XftNameInit (void)
     FcNameRegisterObjectTypes (_XftObjectTypes, NUM_OBJECT_TYPES);
 }
 
-_X_EXPORT FcPattern 
+_X_EXPORT FcPattern
 *XftNameParse (const char *name)
-{ 
+{
     _XftNameInit ();
-    return FcNameParse ((FcChar8 *) name); 
+    return FcNameParse ((FcChar8 *) name);
 }
 
 _X_EXPORT FcBool
index 94c211b..b280c03 100644 (file)
@@ -55,10 +55,10 @@ XftGlyphRender (Display             *dpy,
     unsigned int    char_local[NUM_LOCAL];
     unsigned int    *chars;
     FcBool         glyphs_loaded;
-    
+
     if (!font->format)
        return;
-    
+
     /*
      * Load missing glyphs
      */
@@ -75,7 +75,7 @@ XftGlyphRender (Display               *dpy,
     }
     if (nmissing)
        XftFontLoadGlyphs (dpy, pub, FcTrue, missing, nmissing);
-    
+
     if (!font->glyphset)
        goto bail1;
     if (max < 0x100)
@@ -169,12 +169,12 @@ XftGlyphSpecRender (Display                   *dpy,
     FcBool         glyphs_loaded;
     int                    nelt;
     int                    x, y;
-    
+
     if (!font->format)
        return;
     if (!nglyphs)
        return;
-    
+
     /*
      * Load missing glyphs
      */
@@ -192,7 +192,7 @@ XftGlyphSpecRender (Display             *dpy,
     }
     if (nmissing)
        XftFontLoadGlyphs (dpy, pub, FcTrue, missing, nmissing);
-    
+
     if (!font->glyphset)
        goto bail1;
 
@@ -224,7 +224,7 @@ XftGlyphSpecRender (Display             *dpy,
     char8 = (char *) chars;
     char16 = (unsigned short *) chars;
     char32 = (unsigned int *) chars;
-    
+
     /*
      * Compute the number of glyph elts needed
      */
@@ -249,7 +249,7 @@ XftGlyphSpecRender (Display             *dpy,
        /* Substitute default for non-existant glyphs */
        if (g >= font->num_glyphs || !font->glyphs[g])
            g = 0;
-       /* 
+       /*
         * check to see if the glyph is placed where it would
         * fall using the normal spacing
         */
@@ -354,7 +354,7 @@ XftCharSpecRender (Display          *dpy,
                   Picture              src,
                   XftFont              *pub,
                   Picture              dst,
-                  int                  srcx, 
+                  int                  srcx,
                   int                  srcy,
                   _Xconst XftCharSpec  *chars,
                   int                  len)
@@ -396,7 +396,7 @@ static XRenderPictFormat *
 XftPreferFormat (Display *dpy, XRenderPictFormat *a, XRenderPictFormat *b)
 {
     XRenderPictFormat  *prefer = NULL;
-    
+
     if (a == b)
        prefer = a;
     else if (XftIsARGBFormat(a) != XftIsARGBFormat(b))
@@ -439,10 +439,10 @@ XftGlyphFontSpecRender (Display                       *dpy,
     FcBool         glyphs_loaded;
     int                    nelt;
     int                    x, y;
-    
+
     if (!nglyphs)
        return;
-    
+
     /*
      * Load missing glyphs.  Have to load them
      * one at a time in case the font changes
@@ -467,7 +467,7 @@ XftGlyphFontSpecRender (Display                         *dpy,
        if (!font->glyphset)
            goto bail1;
     }
-    
+
     /*
      * See what encoding size is needed
      */
@@ -496,7 +496,7 @@ XftGlyphFontSpecRender (Display                         *dpy,
     char8 = (char *) chars;
     char16 = (unsigned short *) chars;
     char32 = (unsigned int *) chars;
-    
+
     /*
      * Compute the number of glyph elts needed
      */
@@ -531,7 +531,7 @@ XftGlyphFontSpecRender (Display                         *dpy,
        /* Substitute default for non-existant glyphs */
        if (g >= font->num_glyphs || !font->glyphs[g])
            g = 0;
-       /* 
+       /*
         * check to see if the glyph is placed where it would
         * fall using the normal spacing
         */
@@ -571,7 +571,7 @@ XftGlyphFontSpecRender (Display                         *dpy,
     {
        XftFont     *pub = glyphs[i].font;
        XftFontInt  *font = (XftFontInt *) pub;
-       
+
        g = glyphs[i].glyph;
        /* Substitute default for non-existant glyphs */
        if (g >= font->num_glyphs || !font->glyphs[g])
@@ -699,7 +699,7 @@ XftTextRender8 (Display             *dpy,
     }
     for (i = 0; i < len; i++)
        glyphs[i] = XftCharIndex (dpy, pub, string[i]);
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -731,7 +731,7 @@ XftTextRender16 (Display        *dpy,
     }
     for (i = 0; i < len; i++)
        glyphs[i] = XftCharIndex (dpy, pub, string[i]);
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -762,9 +762,9 @@ XftTextRender16BE (Display      *dpy,
            return;
     }
     for (i = 0; i < len; i++)
-       glyphs[i] = XftCharIndex (dpy, pub, 
+       glyphs[i] = XftCharIndex (dpy, pub,
                                  (string[i*2]<<8) | string[i*2+1]);
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -795,9 +795,9 @@ XftTextRender16LE (Display      *dpy,
            return;
     }
     for (i = 0; i < len; i++)
-       glyphs[i] = XftCharIndex (dpy, pub, 
+       glyphs[i] = XftCharIndex (dpy, pub,
                                  string[i*2] | (string[i*2+1]<<8));
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -829,7 +829,7 @@ XftTextRender32 (Display        *dpy,
     }
     for (i = 0; i < len; i++)
        glyphs[i] = XftCharIndex (dpy, pub, string[i]);
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -860,12 +860,12 @@ XftTextRender32BE (Display            *dpy,
            return;
     }
     for (i = 0; i < len; i++)
-       glyphs[i] = XftCharIndex (dpy, pub, 
+       glyphs[i] = XftCharIndex (dpy, pub,
                                  (string[i*4] << 24) |
                                  (string[i*4+1] << 16) |
                                  (string[i*4+2] << 8) |
                                  (string[i*4+3]));
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
@@ -896,12 +896,12 @@ XftTextRender32LE (Display            *dpy,
            return;
     }
     for (i = 0; i < len; i++)
-       glyphs[i] = XftCharIndex (dpy, pub, 
+       glyphs[i] = XftCharIndex (dpy, pub,
                                  (string[i*4]) |
                                  (string[i*4+1] << 8) |
                                  (string[i*4+2] << 16) |
                                  (string[i*4+3] << 24));
-    XftGlyphRender (dpy, op, src, pub, dst, 
+    XftGlyphRender (dpy, op, src, pub, dst,
                     srcx, srcy, x, y, glyphs, len);
     if (glyphs != glyphs_local)
        free (glyphs);
index 942efdb..e7748c9 100644 (file)
@@ -101,7 +101,7 @@ XftSwapImage (XImage *image)
 {
     switch (image->bits_per_pixel) {
     case 32:
-       XftSwapCARD32 ((CARD32 *) image->data, 
+       XftSwapCARD32 ((CARD32 *) image->data,
                       image->height * image->bytes_per_line >> 2);
        break;
     case 24:
index 7c19911..dee2f44 100644 (file)
@@ -119,42 +119,42 @@ XftXlfdParse (const char *xlfd_orig, FcBool ignore_scalable, FcBool complete)
 
     if (!pixel)
        return NULL;
-    
+
     pat = FcPatternCreate ();
     if (!pat)
        return NULL;
-    
+
     save = (char *) malloc (strlen (foundry) + 1);
-    
+
     if (!save) {
        FcPatternDestroy (pat);
        return NULL;
     }
 
     if (!FcPatternAddString (pat, XFT_XLFD, (FcChar8 *) xlfd_orig)) goto bail;
-    
+
     XftSplitStr (foundry, save);
     if (save[0] && strcmp (save, "*") != 0)
        if (!FcPatternAddString (pat, FC_FOUNDRY, (FcChar8 *) save)) goto bail;
-    
+
     XftSplitStr (family, save);
     if (save[0] && strcmp (save, "*") != 0)
        if (!FcPatternAddString (pat, FC_FAMILY, (FcChar8 *) save)) goto bail;
-    
+
     weight_value = _XftMatchSymbolic (XftXlfdWeights, NUM_XLFD_WEIGHTS,
                                      XftSplitStr (weight_name, save),
                                      FC_WEIGHT_MEDIUM);
-    if (!FcPatternAddInteger (pat, FC_WEIGHT, weight_value)) 
+    if (!FcPatternAddInteger (pat, FC_WEIGHT, weight_value))
        goto bail;
-    
+
     slant_value = _XftMatchSymbolic (XftXlfdSlants, NUM_XLFD_SLANTS,
                                     XftSplitStr (slant, save),
                                     FC_SLANT_ROMAN);
-    if (!FcPatternAddInteger (pat, FC_SLANT, slant_value)) 
+    if (!FcPatternAddInteger (pat, FC_SLANT, slant_value))
        goto bail;
-    
+
     dpixel = (double) pixel;
-    
+
     if (point > 0)
     {
        if (!FcPatternAddDouble (pat, FC_SIZE, ((double) point) / 10.0)) goto bail;
@@ -163,13 +163,13 @@ XftXlfdParse (const char *xlfd_orig, FcBool ignore_scalable, FcBool complete)
            dpixel = (double) point * (double) resy / 720.0;
        }
     }
-    
+
     if (dpixel > 0)
        if (!FcPatternAddDouble (pat, FC_PIXEL_SIZE, dpixel)) goto bail;
-    
+
     free (save);
     return pat;
-    
+
 bail:
     free (save);
     FcPatternDestroy (pat);
old mode 100755 (executable)
new mode 100644 (file)
index c719830..68d1089
--- a/xft.pc.in
+++ b/xft.pc.in
@@ -6,8 +6,7 @@ includedir=@includedir@
 Name: Xft
 Description: X FreeType library
 Version: @VERSION@
-#Requires: xproto
-Requires: xrender, fontconfig, freetype2
+Requires: xproto
 Requires.private: xrender, fontconfig, freetype2
 Cflags: -I${includedir}
 Libs: -L${libdir} -lXft