6890351 Fontconfig version 2.7.3 nv_127
authorStefan Teleman <Stefan.Teleman@Sun.COM>
Mon, 26 Oct 2009 06:50:50 -0700
changeset 818 7ae8600b323d
parent 817 1222f638a16b
child 819 7daea0381785
6890351 Fontconfig version 2.7.3 6895018 Remove the FT_CONFIG_ADD_FULL_HINTING patches
open-src/lib/fontconfig/6770058.patch
open-src/lib/fontconfig/Makefile
open-src/lib/fontconfig/Makefile.am.0.patch
open-src/lib/fontconfig/fontconfig-2.7.1-fonts.conf.patch
open-src/lib/fontconfig/fontconfig-2.7.1.patch
open-src/lib/fontconfig/fontconfig-2.7.1.patch.hide
open-src/lib/fontconfig/fontconfig-2.7.3-fonts.conf.patch
open-src/lib/fontconfig/local.conf
open-src/lib/freetype/Makefile
open-src/lib/freetype/freetype.h.2.patch
open-src/lib/freetype/ftoption.h.0.patch
open-src/lib/freetype/ttgload.c.7.patch
open-src/lib/libXft/Makefile
packages/SUNWfontconfig-root/prototype
--- a/open-src/lib/fontconfig/6770058.patch	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/fontconfig/6770058.patch	Mon Oct 26 06:50:50 2009 -0700
@@ -1,6 +1,6 @@
---- fontconfig-2.7.1/src/fcmatch.c	2009-08-26 16:50:43.692051000 -0400
-+++ fontconfig-2.7.1/src/fcmatch.c	2009-08-26 17:00:48.404364000 -0400
-@@ -915,6 +915,12 @@
+--- fontconfig-2.7.3/src/fcmatch.c	2009-09-08 11:45:26.000000000 -0400
++++ fontconfig-2.7.3/src/fcmatch.c	2009-10-15 11:39:33.083335000 -0400
+@@ -677,6 +677,12 @@
  	printf ("Sort ");
  	FcPatternPrint (p);
      }
--- a/open-src/lib/fontconfig/Makefile	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/fontconfig/Makefile	Mon Oct 26 06:50:50 2009 -0700
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# ident	"@(#)Makefile	1.82	09/10/13 SMI"
+# @(#)Makefile	1.84	09/10/26
 #
 
 # Package name used in tarballs
 MODULE_NAME=fontconfig
 
 # Version number (used in path names)
-MODULE_VERSION=2.7.1
+MODULE_VERSION=2.7.3
 
 # Source tarball
 SOURCE_TARBALL_NAME=fontconfig-$(MODULE_VERSION).tar.gz
@@ -49,9 +49,8 @@
 SOURCE_URL_SET=yes
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES=fontconfig-$(MODULE_VERSION).patch,-p1 \
-	       fontconfig-$(MODULE_VERSION).patch.hide,-p1 \
-	       fontconfig-$(MODULE_VERSION)-fonts.conf.patch,-p1 \
+SOURCE_PATCHES=fontconfig-$(MODULE_VERSION)-fonts.conf.patch,-p1 \
+	       Makefile.am.0.patch,-p1 \
 	       6770058.patch,-p1
 
 # Library name (used for specfiles/mapfiles)
@@ -99,10 +98,13 @@
 # README file to be installed in /etc/fonts/conf.avail/README
 FONTCONFIG_ETC_README=$(PROTODIR)/etc/fonts/conf.avail/README
 
+# local.conf file to be installed in /etc/fonts/local.conf
+FONTCONFIG_LOCAL_CONF = $(PROTODIR)/etc/fonts/local.conf
+
 # Additional targets to install beyond the default_install
 MODULE_ADD_INSTALL_TARGETS = fontconfig-sunman-install \
 	$(FONTCONFIG_SMF_MANIFEST) $(FONTCONFIG_SMF_METHOD) \
-	$(FONTCONFIG_ETC_README)
+	$(FONTCONFIG_ETC_README) $(FONTCONFIG_LOCAL_CONF)
 
 # Include common rulesets
 include ../Makefile.inc
@@ -131,6 +133,11 @@
 	mkdir -p $(PROTODIR)/etc/fonts/conf.avail
 	cp -fp $(SOURCE_DIR)/conf.d/README $@
 
+$(FONTCONFIG_LOCAL_CONF): local.conf
+	mkdir -p $(PROTODIR)/etc/fonts
+	cp -fp local.conf $@
+	touch -acm $@
+
 FC_MAN_DIR=$(PROTODIR)/usr/share/man
 
 fontconfig-sunman-install: default_install
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/fontconfig/Makefile.am.0.patch	Mon Oct 26 06:50:50 2009 -0700
@@ -0,0 +1,19 @@
+--- fontconfig-2.7.3/Makefile.am	2009-06-24 11:43:43.000000000 -0700
++++ fontconfig-2.7.3/Makefile.am	2009-10-26 13:37:54.735090942 -0700
+@@ -104,16 +104,6 @@
+ 	  echo " $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf"; \
+ 	  $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf; \
+ 	fi; fi
+-	@(if $(RUN_FC_CACHE_TEST); then \
+-	    echo " $(bindir)/fc-cache -s -f -v"; \
+-	    $(bindir)/fc-cache -s -f -v; \
+-	else \
+-	    echo "***"; \
+-	    echo "*** Warning: fonts.cache not built"; \
+-	    echo "***"; \
+-	    echo "*** Generate this file manually on host system using fc-cache"; \
+-	    echo "***"; \
+-	fi)
+ 
+ uninstall-local:
+ 	if [ -f $(srcdir)/fonts.conf ]; then \
--- a/open-src/lib/fontconfig/fontconfig-2.7.1-fonts.conf.patch	Sun Oct 25 21:19:31 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
---- fontconfig-2.7.1/conf.d/30-metric-aliases.conf	2009-06-28 13:48:47.000000000 -0400
-+++ fontconfig-2.7.1/conf.d/30-metric-aliases.conf	2009-08-26 17:14:48.048084000 -0400
-@@ -207,5 +207,13 @@
- 	  </accept>
- 	</alias>
- 
-+      <!-- StarOffice formerly included Arial Narrow - Solaris includes Arial Narrow MT instead. -->
-+      <alias>
-+          <family>Arial Narrow</family>
-+          <accept>
-+              <family>Arial Narrow MT</family>
-+              <family>Nimbus Sans L Condensed</family>
-+          </accept>
-+      </alias>
- 
- </fontconfig>
---- fontconfig-2.7.1/conf.d/40-nonlatin.conf	2009-06-28 13:48:47.000000000 -0400
-+++ fontconfig-2.7.1/conf.d/40-nonlatin.conf	2009-08-26 17:18:21.871571000 -0400
-@@ -18,6 +18,17 @@
- 		<family>Zar</family>
- 		<family>Titr</family>
- 		<family>Jadid</family>
-+                <family>HG-PMinchoL-Sun</family>
-+                <family>HG-MinchoL-Sun</family>
-+                <family>IPAPMincho</family>
-+                <family>IPAMincho</family>
-+                <family>Sazanami Mincho</family>
-+                <family>Sazanami Gothic</family>
-+                <family>FZSongTi</family>
-+                <family>FZMingTi</family>
-+                <family>KacstQurn</family>
-+                <family>SunDotum</family>
-+                <family>AR PL ShanHeiSun Uni</family>
- 		<family>Kochi Mincho</family>
- 		<family>AR PL SungtiL GB</family>
- 		<family>AR PL Mingti2L Big5</family>
-@@ -43,6 +54,15 @@
- 		<family>Roya</family>
- 		<family>Koodak</family>
- 		<family>Terafik</family>
-+                <family>HG-PGothicB-Sun</family>
-+                <family>HG-GothicB-Sun</family>
-+                <family>IPAPGothic</family>
-+                <family>IPAGothic</family>
-+                <family>Sazanami Gothic</family>
-+                <family>FZSongTi</family>
-+                <family>FZMingTi</family>
-+                <family>KacstQurn</family>
-+                <family>SunDotum</family>
- 		<family>Kochi Gothic</family>
- 		<family>AR PL KaitiM GB</family>
- 		<family>AR PL KaitiM Big5</family>
-@@ -61,6 +81,7 @@
-   Monospace faces
-  -->
-  	<alias>
-+                <family>SunDotumChe</family>
- 		<family>NSimSun</family>
- 		<family>ZYSong18030</family>
- 		<family>FreeMono</family>
---- fontconfig-2.7.1/conf.d/49-sun-preuser.conf	2009-07-10 13:08:51.000000000 -0400
-+++ fontconfig-2.7.1/conf.d/49-sun-preuser.conf	2009-08-26 17:20:31.599437000 -0400
-@@ -0,0 +1,79 @@
-+<?xml version="1.0"?>
-+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-+<fontconfig>
-+	<!--
-+	 Hinting for CJK fonts doesn't yet work as well as for Latin fonts.
-+	 Some people may want to turn it off:
-+	 -->
-+
-+	<match target="font">
-+		<test name="lang" compare="contains">
-+			<string>zh</string>
-+			<string>ko</string>
-+			<string>ja</string>
-+		</test>
-+		<edit name="hinting" mode="assign">
-+			<bool>false</bool>
-+		</edit>
-+	</match>
-+
-+	<!--
-+	 Chinese fonts are too light. We want to darken them up.
-+	 darken_value is an int between 1 and 9 where 1 is a little
-+	 darker and 9 is very dark. The default is 6.
-+	 -->
-+
-+	<match target="font">
-+	        <test name="lang" compare="contains">
-+	                <string>zh</string>
-+	        </test>
-+	        <edit name="darken" mode="assign">
-+	                <bool>true</bool>
-+	        </edit>
-+	        <edit name="darken_value" mode="assign">
-+	                <int>6</int>
-+	        </edit>
-+	</match>
-+
-+	<!--
-+	  To avoid using embedded bitmaps in TrueType fonts
-+	  put the following rule in your personal ~/.fonts.conf file:
-+	                                                                         
-+	  <match target="pattern">
-+	        <edit name="prefer_bitmap">
-+	                <bool>false</bool>
-+	        </edit>
-+	  </match>
-+	-->
-+	<match target="pattern">
-+		<edit name="prefer_bitmap">
-+			<bool>true</bool>
-+		</edit>
-+	</match>
-+	<match target="font">
-+		<!-- check to see if the font is roman -->
-+		<test name="slant">
-+			<const>roman</const>
-+		</test>
-+		<!-- check to see if the pattern requested non-roman -->
-+		<test target="pattern" name="slant" compare="not_eq">
-+			<const>roman</const>
-+		</test>
-+		<edit name="prefer_bitmap">
-+			<bool>false</bool>
-+		</edit>
-+	</match>
-+	<!-- Latin fonts should not be used for ASCII characters when using
-+	     Japanese monospace families -->
-+	<match target="pattern">
-+		<test name="family">
-+			<string>monospace</string>
-+		</test>
-+		<test name="lang" compare="eq">
-+			<string>ja-jp</string>
-+		</test>
-+		<edit name="disable_pango_script">
-+			<bool>true</bool>
-+		</edit>
-+	</match>
-+</fontconfig>
---- fontconfig-2.7.1/conf.d/45-latin.conf	2009-07-10 13:08:51.000000000 -0400
-+++ fontconfig-2.7.1/conf.d/45-latin.conf	2009-08-26 17:20:58.512527000 -0400
-@@ -10,6 +10,7 @@
-   Serif faces
-  -->
- 	<alias>
-+                <family>Lucida Bright</family>
- 		<family>Bitstream Vera Serif</family>
- 		<family>DejaVu Serif</family>
- 		<family>Liberation Serif</family>
-@@ -25,6 +26,7 @@
-   Sans-serif faces
-  -->
- 	<alias>
-+                <family>Lucida Sans Typewriter</family>
- 		<family>Bitstream Vera Sans</family>
- 		<family>DejaVu Sans</family>
- 		<family>Liberation Sans</family>
-@@ -41,6 +43,7 @@
-   Monospace faces
-  -->
-  	<alias>
-+                <family>Lucida Sans Typewriter</family>
- 		<family>Bitstream Vera Sans Mono</family>
- 		<family>DejaVu Sans Mono</family>
- 		<family>Liberation Mono</family>
---- fontconfig-2.7.1/conf.d/65-nonlatin.conf	Thu Sep 24 17:00:34 2009 +0200
-+++ fontconfig-2.7.1/conf.d/65-nonlatin.conf	Thu Sep 24 18:10:05 2009 +0200
-@@ -4,6 +4,7 @@
- 	<alias>
- 		<family>serif</family>
- 		<prefer>
-+                        <family>EUDC</family>
- 			<family>Artsounk</family> <!-- armenian -->
- 			<family>BPG UTF8 M</family> <!-- georgian -->
- 			<family>Kinnari</family> <!-- thai -->
-@@ -27,17 +28,23 @@
- 			<family>UmePlus P Gothic</family> <!-- han (ja) -->
- 			<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>PMingLiu</family> <!-- han (zh-tw) -->
--			<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
--			<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
--			<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
- 			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>MgOpen Canonica</family>
--			<family>Sazanami Mincho</family>
-+                        <family>HG-PMinchoL-Sun</family>
-+                        <family>HG-MinchoL-Sun</family>
- 			<family>IPAMonaMincho</family>
-+                        <family>IPAPMincho</family>
- 			<family>IPAMincho</family>
--			<family>Kochi Mincho</family>
-+                        <family>Sazanami Mincho</family>
-+                        <family>Sazanami Gothic</family>
-+			<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
-+			<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
-+			<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
-+                        <family>FZSongTi</family>
-+                        <family>FZMingTi</family>
-+                        <family>KacstQurn</family>
- 			<family>AR PL SungtiL GB</family>
- 			<family>AR PL Mingti2L Big5</family>
-  			<family>AR PL Zenkai Uni</family>
-@@ -64,11 +71,13 @@
-  			<family>Lohit Telugu</family>
-  			<family>Lohit Oriya</family>
-  			<family>LKLUG</family>
-+                        <family>SunDotum</family>
- 		</prefer>
- 	</alias>
- 	<alias>
- 		<family>sans-serif</family>
- 		<prefer>
-+                        <family>EUDC</family>
- 			<family>Nachlieli</family> <!-- hebrew -->
- 			<family>Lucida Sans Unicode</family>
- 			<family>Yudit Unicode</family>
-@@ -99,19 +108,23 @@
- 			<!-- chinese fonts are actually serifed -->
- 			<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>PMingLiu</family> <!-- han (zh-tw) -->
-+			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
-+			<family>MgOpen Modata</family>
-+			<family>VL Gothic</family>
-+                        <family>HG-PGothicB-Sun</family>
-+                        <family>HG-GothicB-Sun</family>
-+			<family>IPAMonaGothic</family>
-+                        <family>IPAPGothic</family>
-+			<family>IPAGothic</family>
-+			<family>Sazanami Gothic</family>
- 			<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
- 			<family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
--			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
--			<family>MgOpen Modata</family>
--			<family>VL Gothic</family>
--			<family>IPAMonaGothic</family>
--			<family>IPAGothic</family>
--			<family>Sazanami Gothic</family>
--			<family>Kochi Gothic</family>
-+                        <family>FZSongTi</family>
-+                        <family>FZMingTi</family>
-+                        <family>KacstQurn</family>
- 			<family>AR PL KaitiM GB</family>
- 			<family>AR PL KaitiM Big5</family>
-- 			<family>AR PL ShanHeiSun Uni</family>
-  			<family>AR PL SungtiL GB</family>
-  			<family>AR PL Mingti2L Big5</family>
- 			<family>MS ゴシック</family>
-@@ -138,17 +151,23 @@
-  			<family>Lohit Telugu</family>
-  			<family>Lohit Oriya</family>
-  			<family>LKLUG</family>
-+                        <family>SunDotum</family>
- 		</prefer>
- 	</alias>
- 	<alias>
- 		<family>monospace</family>
- 		<prefer>
-+                        <family>EUDC</family>
- 			<family>Miriam Mono</family> <!-- hebrew -->
- 			<family>VL Gothic</family>
-+                        <family>HG-GothicB-Sun</family>
-+                        <family>HG-MinchoL-Sun</family>
- 			<family>IPAMonaGothic</family>
- 			<family>IPAGothic</family>
- 			<family>Sazanami Gothic</family>
--			<family>Kochi Gothic</family>
-+                        <family>FZSongTi</family>
-+                        <family>FZMingTi</family>
-+                        <family>KacstQurn</family>
- 			<family>AR PL KaitiM GB</family>
- 			<family>MS Gothic</family> <!-- han (ja) -->
- 			<family>UmePlus Gothic</family> <!-- han (ja) -->
-@@ -160,8 +179,6 @@
- 			<family>AR PL SungtiL GB</family>
- 			<family>AR PL Mingti2L Big5</family>
- 			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
--			<family>UnBatang</family>
--			<family>UnDotum</family>
- 			<family>Baekmuk Batang</family> <!-- hangul -->
- 			<family>Baekmuk Dotum</family>
- 			<family>Baekmuk Gulim</family>
-@@ -190,6 +207,9 @@
- 			<family>Lohit Telugu</family>
- 			<family>Lohit Oriya</family>
- 			<family>LKLUG</family>
-+                        <family>SunDotumChe</family>
-+			<family>UnBatang</family>
-+			<family>UnDotum</family>
- 		</prefer>
- 	</alias>
- </fontconfig>
---- fontconfig-2.7.1/conf.d/Makefile.am	2009-03-18 17:02:20.000000000 -0400
-+++ fontconfig-2.7.1/conf.d/Makefile.am	2009-08-26 17:30:11.984089000 -0400
-@@ -40,6 +40,7 @@
- 	40-nonlatin.conf \
- 	45-latin.conf \
- 	49-sansserif.conf \
-+	49-sun-preuser.conf \
- 	50-user.conf \
- 	51-local.conf \
- 	60-latin.conf \
-@@ -60,6 +61,7 @@
- 	40-nonlatin.conf \
- 	45-latin.conf \
- 	49-sansserif.conf \
-+	49-sun-preuser.conf \
- 	50-user.conf \
- 	51-local.conf \
- 	60-latin.conf \
--- a/open-src/lib/fontconfig/fontconfig-2.7.1.patch	Sun Oct 25 21:19:31 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
---- fontconfig-2.7.1/src/fccfg.c	2009-06-24 13:52:13.000000000 -0400
-+++ fontconfig-2.7.1/src/fccfg.c	2009-08-26 13:20:46.489868000 -0400
-@@ -785,12 +785,12 @@
- 	    switch (op) {
- 	    case FcOpContains:
- 	    case FcOpListing:
--		/* left contains right if right is a subset of left */
--		ret = FcCharSetIsSubset (right.u.c, left.u.c);
-+                /* right contains left if left is a subset of right */
-+                ret = FcCharSetIsSubset (left.u.c, right.u.c);
- 		break;
- 	    case FcOpNotContains:
--		/* left contains right if right is a subset of left */
--		ret = !FcCharSetIsSubset (right.u.c, left.u.c);
-+                /* right contains left if left is a subset of right */
-+                ret = !FcCharSetIsSubset (left.u.c, right.u.c);
- 		break;
- 	    case FcOpEqual:
- 		ret = FcCharSetEqual (left.u.c, right.u.c);
---- fontconfig-2.7.1/src/fcmatch.c	2009-07-22 19:00:51.000000000 -0400
-+++ fontconfig-2.7.1/src/fcmatch.c	2009-08-26 14:25:44.707291000 -0400
-@@ -168,6 +168,15 @@
-     if (v2 == 0)
- 	return 0;
-     v = v2 - v1;
-+
-+    /*
-+     * Hack to allow bitmap fonts to equal requested font if it is close
-+     */
-+    if ( v > -.5 && v <= .5 )
-+    {
-+        v = 0;
-+    }
-+
-     if (v < 0)
- 	v = -v;
-     return v;
-@@ -430,6 +439,47 @@
-     return new;
- }
- 
-+static void
-+FcChangeFormat ( FcPattern *p )
-+{
-+    int i;
-+    FcPatternElt    *pe = FcPatternElts(p);
-+
-+    /*
-+     * Hack. If user want monochrome mode, then try to pick bitmaps over
-+     * outlines.
-+     */
-+    for ( i = 0; i < p->num; i++ )
-+    {
-+        if ( !strcmp(&pe[i].object, "antialias" ))
-+        {
-+            int aa = (int) &pe[i].values->value.u.b;
-+            int j;
-+            int done = 0;
-+            FcValue v;
-+
-+            v.type = FcTypeBool;
-+            v.u.b  = aa;
-+
-+            for ( j = 0; j < p->num; j++ )
-+            {
-+                if ( !strcmp(&pe[j].object, "outline" ))
-+                {
-+                    done = 1;
-+                    break;
-+                }
-+            }
-+            if ( !done )
-+            {
-+                FcPatternObjectAddWithBinding (p, "outline", v,
-+                        FcValueBindingStrong, 1);
-+            }
-+            break;
-+        }
-+    }
-+}
-+
-+
- static FcPattern *
- FcFontSetMatchInternal (FcConfig    *config,
- 			FcFontSet   **sets,
-@@ -444,6 +494,8 @@
-     int		    i;
-     int		    set;
- 
-+    FcChangeFormat ( p );
-+
-     for (i = 0; i < NUM_MATCH_VALUES; i++)
- 	bestscore[i] = 0;
-     best = 0;
-@@ -669,9 +721,11 @@
-     int		    f;
-     int		    i;
-     int		    nPatternLang;
--    FcBool    	    *patternLangSat;
-+    int		    *patternLangSat;
-     FcValue	    patternLang;
- 
-+    FcChangeFormat ( p );
-+
-     if (FcDebug () & FC_DBG_MATCH)
-     {
- 	printf ("Sort ");
-@@ -700,7 +754,7 @@
-     if (!nodes)
- 	goto bail0;
-     nodeps = (FcSortNode **) (nodes + nnodes);
--    patternLangSat = (FcBool *) (nodeps + nnodes);
-+    patternLangSat = (int *) (nodeps + nnodes);
-     
-     new = nodes;
-     nodep = nodeps;
-@@ -740,7 +794,13 @@
- 	   FcSortCompare);
-     
-     for (i = 0; i < nPatternLang; i++)
--	patternLangSat[i] = FcFalse;
-+	patternLangSat[i] = 0;
-+
-+    /*
-+     * For Solaris, because of ja_JP, en_US, and such locales, exact matches
-+     * with font language support is sporatic. To resolve this, allow close
-+     * matches to succeed, but be able to accept exact matches above them.
-+     */
-     
-     for (f = 0; f < nnodes; f++)
-     {
-@@ -749,18 +809,19 @@
- 	 * If this node matches any language, go check
- 	 * which ones and satisfy those entries
- 	 */
--	if (nodeps[f]->score[MATCH_LANG_INDEX] < 200)
-+	if (nodeps[f]->score[MATCH_LANG_INDEX] < 100)
- 	{
- 	    for (i = 0; i < nPatternLang; i++)
- 	    {
- 		FcValue	    nodeLang;
- 		
--		if (!patternLangSat[i] &&
-+		if (patternLangSat[i] != 1 &&
- 		    FcPatternGet (p, FC_LANG, i, &patternLang) == FcResultMatch &&
- 		    FcPatternGet (nodeps[f]->pattern, FC_LANG, 0, &nodeLang) == FcResultMatch)
- 		{
- 		    double  compare = FcCompareLang (&patternLang, &nodeLang);
--		    if (compare >= 0 && compare < 2)
-+		    if (compare >= 0 && compare < 2 &&
-+                            (patternLangSat[i] == 0 || compare + 1 < patternLangSat[i]))
- 		    {
- 			if (FcDebug () & FC_DBG_MATCHV)
- 			{
-@@ -771,7 +832,7 @@
- 				FcPatternGetString (nodeps[f]->pattern, FC_STYLE, 0, &style) == FcResultMatch)
- 				printf ("Font %s:%s matches language %d\n", family, style, i);
- 			}
--			patternLangSat[i] = FcTrue;
-+			patternLangSat[i] = (int) compare + 1;
- 			satisfies = FcTrue;
- 			break;
- 		    }
---- fontconfig-2.7.1/src/fcxml.c	2009-07-21 15:41:43.000000000 -0400
-+++ fontconfig-2.7.1/src/fcxml.c	2009-08-26 14:14:15.692622000 -0400
-@@ -2477,6 +2477,10 @@
-     void	    *buf;
- #endif
-     
-+    char           *cur_locale = setlocale (LC_NUMERIC, NULL);
-+
-+    setlocale (LC_NUMERIC, "C");
-+
-     filename = FcConfigFilename (name);
-     if (!filename)
- 	goto bail0;
-@@ -2576,6 +2580,7 @@
-     close (fd);
-     fd = -1;
- bail0:
-+    setlocale (LC_NUMERIC, cur_locale);
-     if (error && complain)
-     {
- 	if (name)
---- fontconfig-2.7.1/src/fcfreetype.c	2009-07-25 16:38:20.000000000 -0400
-+++ fontconfig-2.7.1/src/fcfreetype.c	2009-08-26 14:16:17.358575000 -0400
-@@ -124,7 +124,7 @@
-  {  TT_PLATFORM_MICROSOFT,	TT_MS_ID_BIG_5,		"BIG-5" },
-  {  TT_PLATFORM_MICROSOFT,	TT_MS_ID_WANSUNG,	"Wansung" },
-  {  TT_PLATFORM_MICROSOFT,	TT_MS_ID_JOHAB,		"Johab" },
-- {  TT_PLATFORM_MICROSOFT,	TT_MS_ID_UCS_4,		"UCS-2BE" },
-+ {  TT_PLATFORM_MICROSOFT,	TT_MS_ID_UCS_4,		"UTF-16BE" },
-  {  TT_PLATFORM_ISO,		TT_ISO_ID_7BIT_ASCII,	"ASCII" },
-  {  TT_PLATFORM_ISO,		TT_ISO_ID_10646,	"UCS-2BE" },
-  {  TT_PLATFORM_ISO,		TT_ISO_ID_8859_1,	"ISO-8859-1" },
---- fontconfig-2.7.1/Makefile.am	2009-06-24 14:43:43.000000000 -0400
-+++ fontconfig-2.7.1/Makefile.am	2009-08-26 14:29:39.076444000 -0400
-@@ -104,16 +104,6 @@
- 	  echo " $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf"; \
- 	  $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf; \
- 	fi; fi
--	@(if $(RUN_FC_CACHE_TEST); then \
--	    echo " $(bindir)/fc-cache -s -f -v"; \
--	    $(bindir)/fc-cache -s -f -v; \
--	else \
--	    echo "***"; \
--	    echo "*** Warning: fonts.cache not built"; \
--	    echo "***"; \
--	    echo "*** Generate this file manually on host system using fc-cache"; \
--	    echo "***"; \
--	fi)
- 
- uninstall-local:
- 	if [ -f $(srcdir)/fonts.conf ]; then \
--- a/open-src/lib/fontconfig/fontconfig-2.7.1.patch.hide	Sun Oct 25 21:19:31 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,931 +0,0 @@
---- fontconfig-2.7.1-0/src/fcint.h	2009-06-28 13:46:36.000000000 -0400
-+++ fontconfig-2.7.1-1/src/fcint.h	2009-08-26 16:50:43.691995000 -0400
-@@ -435,6 +435,21 @@
-     FcChar32	*blanks;
- };
- 
-+typedef struct _FcFontLang {
-+    FcChar8            *family;        /* Name of font family */
-+    FcStrSet           *hides;         /* list of hidden languages */
-+    FcStrSet           *only;          /* list of only allowed languages */
-+    FcStrSet           *poor;          /* list of only allowed languages */
-+    struct _FcFontLang  *next;         /* Next font family */
-+} FcFontLang;
-+
-+typedef struct _FcHide {
-+    FcChar8            *alias;         /* Name of alias Sans/Serif */
-+    FcFontLang         *family;        /* Hidden languages struct */
-+    FcFontLang         *az[27];        /* Quick pointers */
-+    struct _FcHide     *next;          /* Next alias */
-+} FcHide;
-+
- struct _FcConfig {
-     /*
-      * File names loaded from the configuration -- saved here as the
-@@ -493,6 +508,14 @@
-      */
-     time_t	rescanTime;	    /* last time information was scanned */
-     int		rescanInterval;	    /* interval between scans */
-+    /*
-+     * Languages can be selectively turned off for some fonts to allow
-+     * fonts to be used for specific languages only even if the font
-+     * supports the language. This allows best fonts to be used per
-+     * language where two fonts that both support the same language
-+     * cannot be placed in the preference list appropriately.
-+     */
-+    FcHide *hideFont;
- 
-     int		ref;                /* reference count */
- 
-@@ -754,6 +777,9 @@
- FcPrivate void
- FcEditDestroy (FcEdit *e);
- 
-+void
-+FcHideDestroy (FcHide *r );
-+
- /* fcinit.c */
- 
- FcPrivate void
-@@ -785,6 +811,12 @@
- FcPrivate FcChar8 *
- FcNameUnparseEscaped (FcPattern *pat, FcBool escape);
- 
-+FcBool
-+FcLangSetRemove (FcLangSet *ls, const FcChar8 *lang);
-+
-+FcBool
-+FcLangSetRemoveLangs (FcLangSet *ls, FcStrSet *langs);
-+
- /* fclist.c */
- 
- FcPrivate FcBool
---- fontconfig-2.7.1-0/src/fccfg.c	2009-08-26 16:55:10.185878000 -0400
-+++ fontconfig-2.7.1-1/src/fccfg.c	2009-08-26 16:50:43.692022000 -0400
-@@ -92,6 +92,7 @@
- 
-     config->rescanTime = time(0);
-     config->rescanInterval = 30;    
-+    config->hideFont = NULL;
- 
-     config->expr_pool = NULL;
- 
-@@ -261,6 +262,8 @@
- 	if (config->fonts[set])
- 	    FcFontSetDestroy (config->fonts[set]);
- 
-+    FcHideDestroy (config->hideFont);
-+
-     page = config->expr_pool;
-     while (page)
-     {
---- fontconfig-2.7.1-0/src/fclang.c	2009-07-22 19:25:00.000000000 -0400
-+++ fontconfig-2.7.1-1/src/fclang.c	2009-08-26 16:50:43.692036000 -0400
-@@ -44,6 +44,7 @@
- 
- #define FcLangSetBitSet(ls, id)	((ls)->map[(fcLangCharSetIndices[id])>>5] |= ((FcChar32) 1 << ((fcLangCharSetIndices[id]) & 0x1f)))
- #define FcLangSetBitGet(ls, id) (((ls)->map[(fcLangCharSetIndices[id])>>5] >> ((fcLangCharSetIndices[id]) & 0x1f)) & 1)
-+#define FcLangSetBitUnset(ls, id) ((ls)->map[(id)>>5] &= ~((FcChar32) 1 << ((id) & 0x1f)))
- 
- FcLangSet *
- FcFreeTypeLangSet (const FcCharSet  *charset, 
-@@ -371,6 +372,34 @@
-     return FcStrSetAdd (ls->extra, lang);
- }
- 
-+FcBool
-+FcLangSetRemove (FcLangSet *ls, const FcChar8 *lang)
-+{
-+    int id;
-+
-+    id = FcLangSetIndex (lang);
-+    if (id >= 0)
-+    {
-+        FcLangSetBitUnset (ls, id);
-+        return FcTrue;
-+    }
-+    if (ls->extra)
-+        return FcStrSetDel (ls->extra, lang);
-+    return FcFalse;
-+}
-+
-+FcBool
-+FcLangSetRemoveLangs (FcLangSet *ls, FcStrSet *langs)
-+{
-+    int i;
-+
-+    for ( i = 0; i < langs->num; i++ )
-+    {
-+        FcLangSetRemove ( ls, langs->strs[i] );
-+    }
-+    return FcTrue;
-+}
-+
- FcLangResult
- FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang)
- {
---- fontconfig-2.7.1-0/src/fcmatch.c	2009-08-26 16:55:10.203988000 -0400
-+++ fontconfig-2.7.1-1/src/fcmatch.c	2009-08-26 16:50:43.692051000 -0400
-@@ -393,6 +393,159 @@
-     return FcTrue;
- }
- 
-+static FcHide *
-+FcHideGetList (FcConfig *config, FcPattern *p)
-+{
-+    FcHide *r = NULL;
-+
-+    if (config->hideFont)
-+    {
-+        FcPatternElt *pe    = FcPatternObjectFindElt (p, "family");
-+
-+        r = config->hideFont;
-+
-+        /*
-+         * Find the base family (alias) and see if it is in the
-+         * hidden list
-+         */
-+        if (pe)
-+        { 
-+            FcValueList *vlist = pe->values;
-+
-+            while (vlist->next)
-+                vlist = vlist->next;
-+
-+            while (r)
-+            {
-+                if (!strcasecmp ((char *)r->alias, (char *)vlist->value.u.s))
-+                    break;
-+                else
-+                    r = r->next;
-+            }
-+        }
-+
-+        /*
-+         * At this point, we have the list of hidden/only/poor fonts
-+         * for the alias. We now need to check and see if the
-+         * font we are comparing is on the list.
-+         */
-+    }
-+
-+    return r;
-+}
-+
-+static FcPattern *
-+FcHideFont (FcHide       *r,
-+        FcPatternElt *pe,
-+        FcPattern    *fnt,
-+        FcLangSet    **pls )
-+{
-+    FcPattern  *new = fnt;
-+    FcFontLang *fl;
-+
-+    if (r && pe)
-+    {
-+        int pos = (int)(FcToLower(pe->values->value.u.s[0])) - 'a';
-+
-+        if (pos < 0 || pos > 26)
-+            pos = 26;
-+
-+        fl = r->az[pos];
-+
-+        /*
-+         * Check to see if the family is in the hide list for this alias
-+         */
-+        while (fl)
-+        {
-+            FcValueList *vlist = pe->values;
-+            int          cmp   = strcasecmp ((char *)fl->family,
-+                    (char *)vlist->value.u.s);
-+
-+            if (!cmp)
-+                break;
-+            else if (cmp > 0)
-+                fl = NULL;
-+            else
-+                fl = fl->next;
-+        }
-+
-+        /*
-+         * If the family is to be language hidden, then copy the pattern
-+         * and modify the language support list
-+         */
-+
-+        if (fl)
-+        {
-+            FcPatternElt *ppe;
-+
-+            new = FcPatternDuplicate (fnt);
-+            if (new)
-+            {
-+                ppe = FcPatternObjectFindElt (new, "lang");
-+                if (ppe)
-+                {
-+                    if (ppe->values->value.type == FcTypeLangSet)
-+                    {
-+                        int i;
-+                        if (fl->hides)
-+                        {
-+                            FcLangSetRemoveLangs (
-+                                    (FcLangSet *)ppe->values->value.u.l,
-+                                    fl->hides );
-+                        }
-+                        if (fl->only)
-+                        {
-+                            FcLangSetDestroy ((FcLangSet *)ppe->values->value.u.l);
-+                            ppe->values->value.u.l = FcLangSetCreate ();
-+                            for (i = 0; i < fl->only->num; i++)
-+                                FcLangSetAdd (
-+                                        (FcLangSet *)ppe->values->value.u.l,
-+                                        fl->only->strs[i] );
-+                        }
-+                        if (fl->poor)
-+                        {
-+                            *pls = FcLangSetCreate ();
-+                            for (i = 0; i < fl->poor->num; i++)
-+                                FcLangSetAdd ((FcLangSet *)*pls,
-+                                        fl->poor->strs[i] );
-+                        }
-+                    }
-+                    else
-+                    {
-+                        /*
-+                         * Don't know what to do with this yet
-+                         */
-+                    }
-+                }
-+                else
-+                {
-+                    FcPatternDestroy (new);
-+                    new = fnt;
-+                }
-+            }
-+        }
-+    }
-+
-+    return new;
-+}
-+
-+static double
-+FcHidePoorLangs ( FcValue *value, FcLangSet *ls )
-+{
-+    double v = 0;
-+    switch (value->type) {
-+        case FcTypeLangSet:
-+            v = FcLangSetCompare (ls, value->u.l);
-+            break;
-+        case FcTypeString:
-+            v = FcLangSetHasLang (ls, value->u.s);
-+            break;
-+    }
-+    return (( v == 2.0 ) ? 200.0: v * 1.5 * 100);
-+}
-+
-+
-+
- FcPattern *
- FcFontRenderPrepare (FcConfig	    *config,
- 		     FcPattern	    *pat,
-@@ -493,6 +646,7 @@
-     FcPattern	    *best;
-     int		    i;
-     int		    set;
-+    FcHide         *r = NULL;
- 
-     FcChangeFormat ( p );
- 
-@@ -504,6 +658,9 @@
- 	printf ("Match ");
- 	FcPatternPrint (p);
-     }
-+
-+    r = FcHideGetList ( config, p );
-+
-     for (set = 0; set < nsets; set++)
-     {
- 	s = sets[set];
-@@ -511,13 +668,39 @@
- 	    continue;
- 	for (f = 0; f < s->nfont; f++)
- 	{
-+            FcPatternElt *pe = FcPatternObjectFindElt (s->fonts[f], "family");
-+            FcLangSet    *ls = NULL;
-+            FcPattern    *hideFont = FcHideFont ( r, pe, s->fonts[f], &ls );
-+            int           res = 1;
-+
- 	    if (FcDebug () & FC_DBG_MATCHV)
- 	    {
- 		printf ("Font %d ", f);
--		FcPatternPrint (s->fonts[f]);
-+                FcPatternPrint (hideFont);
-+	    }
-+            if (!FcCompare (p, hideFont, score, result))
-+                res = 0;
-+
-+            if ((hideFont != NULL) && (hideFont != s->fonts[f]))
-+            {
-+                FcPatternDestroy ( hideFont );
-+            }
-+            if (ls)
-+            {
-+                FcValue patLang;
-+
-+                for (i = 0;
-+                        FcPatternGet (p, FC_LANG, i, &patLang) == FcResultMatch;
-+                        i++);
-+                if (FcPatternGet (p, FC_LANG, i-1, &patLang) == FcResultMatch)
-+                    score[MATCH_LANG] = FcHidePoorLangs ( &patLang, ls );
-+                FcLangSetDestroy ( ls );
- 	    }
--	    if (!FcCompare (p, s->fonts[f], score, result))
-+
-+
-+            if (!res)
- 		return 0;
-+
- 	    if (FcDebug () & FC_DBG_MATCHV)
- 	    {
- 		printf ("Score");
-@@ -723,6 +906,7 @@
-     int		    nPatternLang;
-     int		    *patternLangSat;
-     FcValue	    patternLang;
-+    FcHide          *r = NULL;
- 
-     FcChangeFormat ( p );
- 
-@@ -758,6 +942,9 @@
-     
-     new = nodes;
-     nodep = nodeps;
-+
-+    r = FcHideGetList ( config, p );
-+
-     for (set = 0; set < nsets; set++)
-     {
- 	s = sets[set];
-@@ -765,13 +952,33 @@
- 	    continue;
- 	for (f = 0; f < s->nfont; f++)
- 	{
-+            FcLangSet    *ls = NULL;
-+            FcPatternElt *pe = FcPatternObjectFindElt (s->fonts[f], "family");
-+            FcPattern    *hideFont = FcHideFont ( r, pe, s->fonts[f], &ls);
-+            int          res = 1;
-+
- 	    if (FcDebug () & FC_DBG_MATCHV)
- 	    {
- 		printf ("Font %d ", f);
--		FcPatternPrint (s->fonts[f]);
-+                FcPatternPrint (hideFont);
- 	    }
- 	    new->pattern = s->fonts[f];
- 	    if (!FcCompare (p, new->pattern, new->score, result))
-+                res = 0;
-+
-+            if ((hideFont != NULL) && (hideFont != s->fonts[f]))
-+            {
-+                FcPatternDestroy (hideFont);
-+            }
-+
-+            if ( ls )
-+            {
-+                if (FcPatternGet (p, FC_LANG, i, &patternLang) == FcResultMatch )
-+                    new->score[MATCH_LANG] = FcHidePoorLangs (&patternLang, ls);
-+                FcLangSetDestroy (ls);
-+            }
-+
-+            if (!res)
- 		goto bail1;
- 	    if (FcDebug () & FC_DBG_MATCHV)
- 	    {
---- fontconfig-2.7.1-0/src/fcxml.c	2009-08-26 16:55:10.221766000 -0400
-+++ fontconfig-2.7.1-1/src/fcxml.c	2009-08-26 16:50:43.692064000 -0400
-@@ -274,6 +274,11 @@
-     FcElementDefault,
-     FcElementFamily,
- 
-+    FcElementPoor,
-+    FcElementOnly,
-+    FcElementHide,
-+    FcElementLang,
-+
-     FcElementSelectfont,
-     FcElementAcceptfont,
-     FcElementRejectfont,
-@@ -335,6 +340,11 @@
-     { "default",	FcElementDefault },
-     { "family",		FcElementFamily },
- 
-+    { "poor",       FcElementPoor },
-+    { "only",       FcElementOnly },
-+    { "hide",       FcElementHide },
-+    { "lang",       FcElementLang },
-+
-     { "selectfont",	FcElementSelectfont },
-     { "acceptfont",	FcElementAcceptfont },
-     { "rejectfont",	FcElementRejectfont },
-@@ -408,6 +418,11 @@
-     FcVStackAccept,
-     FcVStackDefault,
-     
-+    FcVStackPoor,
-+    FcVStackOnly,
-+    FcVStackHide,
-+    FcVStackLang,
-+    
-     FcVStackInteger,
-     FcVStackDouble,
-     FcVStackMatrix,
-@@ -842,6 +857,7 @@
-     case FcVStackField:
-     case FcVStackConstant:
-     case FcVStackGlob:
-+    case FcVStackLang:
- 	FcStrFree (vstack->u.string);
- 	break;
-     case FcVStackPattern:
-@@ -849,6 +865,9 @@
- 	break;
-     case FcVStackInteger:
-     case FcVStackDouble:
-+    case FcVStackPoor:
-+    case FcVStackOnly:
-+    case FcVStackHide:
- 	break;
-     case FcVStackMatrix:
- 	FcMatrixFree (vstack->u.matrix);
-@@ -1369,6 +1388,408 @@
- }
- 
- static void
-+FcParseLang (FcConfigParse *parse)
-+{
-+    FcChar8 *s;
-+    FcExpr  *expr;
-+
-+    if (!parse->pstack)
-+        return;
-+    s = FcStrBufDone (&parse->pstack->str);
-+    if (!s)
-+    {
-+        FcConfigMessage (parse, FcSevereError, "out of memory");
-+        return;
-+    }
-+    expr = FcExprCreateString (parse->config, s);
-+    FcStrFree (s);
-+    if (expr)
-+        FcVStackPushExpr (parse, FcVStackLang, expr);
-+}
-+
-+static void
-+FcParseOnly (FcConfigParse *parse, FcVStackTag tag)
-+{
-+    FcExpr      *family = 0;
-+    FcStrSet    *lang = 0;
-+    FcVStack    *vstack;
-+    FcFontLang  *fl = NULL;
-+    FcExpr      *expr;
-+
-+    while ((vstack = FcVStackPeek (parse)))
-+    {
-+        switch (vstack->tag) {
-+            case FcVStackFamily:
-+                if (family)
-+                    FcExprDestroy (family);
-+                family = vstack->u.expr;
-+                vstack->tag = FcVStackNone;
-+                break;
-+            case FcVStackLang:
-+                if (!lang)
-+                    lang = FcStrSetCreate ();
-+                FcStrSetAdd (lang, vstack->u.expr->u.sval);
-+                break;
-+            default:
-+                FcConfigMessage (parse, FcSevereWarning, "bad alias");
-+                break;
-+        }
-+        FcVStackPopAndDestroy (parse);
-+    }
-+    if (!family)
-+    {
-+        FcConfigMessage (parse, FcSevereError, "missing family in only");
-+    }
-+    if (lang)
-+    {
-+        fl = (FcFontLang *)malloc (sizeof (FcFontLang));
-+
-+        if (fl)
-+        {
-+            int len = strlen ((char *)family->u.sval);
-+            fl->family = (FcChar8 *)malloc (sizeof (char) * (len + 1));
-+            strncpy ( (char *)fl->family, (char *)family->u.sval, len );
-+            fl->family[len] = '\0';
-+            fl->hides       = NULL;
-+            fl->only        = lang;
-+            fl->poor        = NULL;
-+            fl->next        = NULL;
-+        }
-+    }
-+    if (fl)
-+    {
-+        expr = FcExprCreateNil (parse->config);
-+        if (expr)
-+        {
-+            expr->u.sval = (FcChar8 *)fl;
-+            FcVStackPushExpr (parse, FcVStackOnly, expr);
-+        }
-+    }
-+}
-+
-+static void
-+FcParsePoor (FcConfigParse *parse, FcVStackTag tag)
-+{
-+    FcExpr      *family = 0;
-+    FcStrSet    *lang = 0;
-+    FcVStack    *vstack;
-+    FcFontLang  *fl = NULL;
-+    FcExpr      *expr;
-+
-+    while ((vstack = FcVStackPeek (parse)))
-+    {
-+        switch (vstack->tag) {
-+            case FcVStackFamily:
-+                if (family)
-+                    FcExprDestroy (family);
-+                family = vstack->u.expr;
-+                vstack->tag = FcVStackNone;
-+                break;
-+            case FcVStackLang:
-+                if (!lang)
-+                    lang = FcStrSetCreate ();
-+                FcStrSetAdd (lang, vstack->u.expr->u.sval);
-+                break;
-+            default:
-+                FcConfigMessage (parse, FcSevereWarning, "bad alias");
-+                break;
-+        }
-+        FcVStackPopAndDestroy (parse);
-+    }
-+    if (!family)
-+    {
-+        FcConfigMessage (parse, FcSevereError, "missing family in poor");
-+    }
-+    if (lang)
-+    {
-+        fl = (FcFontLang *)malloc (sizeof (FcFontLang));
-+
-+        if (fl)
-+        {
-+            int len = strlen ((char *)family->u.sval);
-+            fl->family = (FcChar8 *)malloc ( sizeof (char) * (len + 1));
-+            strncpy ((char *)fl->family, (char *)family->u.sval, len);
-+            fl->family[len] = '\0';
-+            fl->hides       = NULL;
-+            fl->only        = NULL;
-+            fl->poor        = lang;
-+            fl->next        = NULL;
-+        }
-+    }
-+    if (fl)
-+    {
-+        expr = FcExprCreateNil (parse->config);
-+        if (expr)
-+        {
-+            expr->u.sval = (FcChar8 *)fl;
-+            FcVStackPushExpr (parse, FcVStackPoor, expr);
-+        }
-+    }
-+}
-+
-+static void
-+FcParseHide (FcConfigParse *parse, FcVStackTag tag)
-+{
-+    FcExpr      *family = 0;
-+    FcStrSet    *lang = 0;
-+    FcVStack    *vstack;
-+    FcFontLang  *fl = NULL;
-+    FcExpr      *expr;
-+
-+    while ((vstack = FcVStackPeek (parse)))
-+    {
-+        switch (vstack->tag) {
-+            case FcVStackFamily:
-+                if (family)
-+                    FcExprDestroy (family);
-+                family = vstack->u.expr;
-+                vstack->tag = FcVStackNone;
-+                break;
-+            case FcVStackLang:
-+                if (!lang)
-+                    lang = FcStrSetCreate ();
-+                FcStrSetAdd (lang, vstack->u.expr->u.sval);
-+                break;
-+            default:
-+                FcConfigMessage (parse, FcSevereWarning, "bad alias");
-+                break;
-+        }
-+        FcVStackPopAndDestroy (parse);
-+    }
-+    if (!family)
-+    {
-+        FcConfigMessage (parse, FcSevereError, "missing family in hide");
-+    }
-+    if (lang)
-+    {
-+        fl = (FcFontLang *)malloc (sizeof (FcFontLang));
-+
-+        if (fl)
-+        {
-+            int len = strlen ((char *)family->u.sval);
-+            fl->family = (FcChar8 *)malloc (sizeof (char) * (len + 1));
-+            strncpy ( (char *)fl->family, (char *)family->u.sval, len );
-+            fl->family[len] = '\0';
-+            fl->hides       = lang;
-+            fl->only        = NULL;
-+            fl->poor        = NULL;
-+            fl->next        = NULL;
-+        }
-+    }
-+    if (fl)
-+    {
-+        expr = FcExprCreateNil (parse->config);
-+        if (expr)
-+        {
-+            expr->u.sval = (FcChar8 *)fl;
-+            FcVStackPushExpr (parse, FcVStackHide, expr);
-+        }
-+    }
-+}
-+
-+static void
-+FcFontLangDestroy(FcFontLang *fl)
-+{
-+    FcFontLang *cur = fl;
-+
-+    while (fl)
-+    {
-+        cur = fl;
-+        fl  = fl->next;
-+
-+        free (cur->family);
-+        if (cur->hides)
-+            FcStrSetDestroy (cur->hides);
-+        if (cur->only)
-+            FcStrSetDestroy (cur->only);
-+        if (cur->poor)
-+            FcStrSetDestroy (cur->poor);
-+        free (cur);
-+    }
-+}
-+
-+void
-+FcHideDestroy (FcHide *r)
-+{
-+    if (r)
-+    {
-+        if (r->alias)
-+            free (r->alias);
-+        FcFontLangDestroy (r->family);
-+        FcHideDestroy (r->next);
-+        free (r);
-+    }
-+}
-+
-+static int
-+FcHideCreate(FcConfigParse *parse, FcFontLang *fl, FcExpr *family)
-+{
-+    FcHide *new = parse->config->hideFont;
-+    int     i;
-+
-+    /*
-+     * Check to see if user has already hidden something in this alias
-+     */
-+    while ( new != NULL )
-+    {
-+        if (!strcasecmp ( (char *)new->alias, (char *)family->u.sval))
-+            break;
-+        else
-+            new = new->next;
-+    }
-+
-+    /*
-+     * If no alias hides exist, then create an FcHide structure and
-+     * fill in the base values.
-+     */
-+    if (!new)
-+    {
-+        new = (FcHide *)malloc ( sizeof ( FcHide ));
-+
-+        if ( new )
-+        {
-+            int len = strlen ( (char *)family->u.sval );
-+            new->alias  = (FcChar8 *)malloc ( sizeof ( char ) * ( len + 1 ));
-+            if ( new->alias )
-+            {
-+                strncpy ((char *)new->alias, (char *)family->u.sval, len);
-+                new->alias[len] = '\0';
-+            }
-+            else
-+            {
-+                free (new);
-+                return 0;
-+            }
-+            new->family = NULL;
-+            new->next   = parse->config->hideFont;
-+            parse->config->hideFont = new;
-+        }
-+        else
-+            return 0;
-+    }
-+
-+    /*
-+     * Add FontLang structure in alphabetical order based on family
-+     * to the restrict list
-+     */
-+    while (fl)
-+    {
-+        FcFontLang *next = fl->next;
-+
-+        fl->next = NULL;
-+
-+        /*
-+         * If no hidden families exist, then just add this one
-+         */
-+        if (!new->family)
-+            new->family = fl;
-+        else
-+        {
-+            FcFontLang *ptr  = new->family;
-+            FcFontLang *last = NULL;
-+
-+            /*
-+             * Check to see where to enter hidden family, or if it already
-+             * exists
-+             */
-+            while (ptr)
-+            {
-+                int cmp = strcasecmp ( (char *)fl->family, (char *)ptr->family);
-+                /*
-+                 * Find out if new family is before current alphabetically
-+                 */
-+                if (cmp < 0)
-+                {
-+                    fl->next = ptr;
-+                    if (!last)
-+                        new->family = fl;
-+                    else
-+                        last->next = fl;
-+                    break;
-+                }
-+                /*
-+                 * If it already exists, then just add new lang(s)
-+                 */
-+                else if (cmp == 0)
-+                {
-+                    /*
-+                     * Check to see if we have a family with only langs and
-+                     * hidden langs. Return error. Otherwise, add langs to list
-+                     */
-+                    if ((fl->hides && ptr->only) ||
-+                            (fl->only && ptr->hides))
-+                        return 1;
-+                    if (fl->hides)
-+                    {
-+                        if (!ptr->hides)
-+                            ptr->hides = FcStrSetCreate ();
-+                        for ( i = 0; i < fl->hides->num; i++ )
-+                        {
-+                            if (!FcStrSetMember ( ptr->hides, fl->hides->strs[i]))
-+                                FcStrSetAdd ( ptr->hides, fl->hides->strs[i] );
-+                        }
-+                    }
-+                    if (fl->only)
-+                    {
-+                        if (!ptr->only)
-+                            ptr->only = FcStrSetCreate ();
-+                        for (i = 0; i < fl->only->num; i++)
-+                        {
-+                            if (!FcStrSetMember (ptr->only, fl->only->strs[i]))
-+                                FcStrSetAdd (ptr->only, fl->only->strs[i]);
-+                        }
-+                    }
-+                    if (fl->poor)
-+                    {
-+                        if (!ptr->only)
-+                            ptr->poor = FcStrSetCreate ();
-+                        for (i = 0; i < fl->poor->num; i++)
-+                        {
-+                            if (!FcStrSetMember ( ptr->poor, fl->poor->strs[i]))
-+                                FcStrSetAdd ( ptr->poor, fl->poor->strs[i] );
-+                        }
-+                    }
-+                    FcFontLangDestroy (fl);
-+                    break;
-+                }
-+                /*
-+                 * If it is after, then continue moving down the list
-+                 */
-+                else
-+                {
-+                    last = ptr;
-+                    ptr = ptr->next;
-+
-+                    if (!ptr)
-+                    {
-+                        last->next = fl;
-+                    }
-+                }
-+            }
-+        }
-+        fl = next;
-+    }
-+
-+    for (i = 0; i < 27; i++)
-+        new->az[i] = NULL;
-+
-+    fl = new->family;
-+    while (fl)
-+    {
-+        int pos = (int)(fl->family[0]) - (int)'A';
-+        if (pos < 0 || pos > 26)
-+            pos = 26;
-+        if (!new->az[pos])
-+        {
-+            new->az[pos] = fl;
-+        }
-+        fl = fl->next;
-+    }
-+
-+    return 0;
-+}
-+
-+static void
- FcParseAlias (FcConfigParse *parse)
- {
-     FcExpr	*family = 0, *accept = 0, *prefer = 0, *def = 0, *new = 0;
-@@ -1376,6 +1797,8 @@
-     FcVStack	*vstack;
-     FcTest	*test;
-     FcValueBinding  binding;
-+    FcFontLang  *langs = NULL;
-+    FcFontLang  *tmp;
- 
-     if (!FcConfigLexBinding (parse, FcConfigGetAttribute (parse, "binding"), &binding))
- 	return;
-@@ -1399,6 +1822,15 @@
- 		vstack->tag = FcVStackNone;
- 	    }
- 	    break;
-+        case FcVStackPoor:
-+        case FcVStackOnly:
-+        case FcVStackHide:
-+            tmp = (FcFontLang *)(vstack->u.expr->u.sval);
-+            FcExprDestroy (vstack->u.expr);
-+            tmp->next = langs;
-+            langs = tmp;
-+            vstack->tag = FcVStackNone;
-+            break;
- 	case FcVStackPrefer:
- 	    if (prefer)
- 		FcExprDestroy (prefer);
-@@ -1472,6 +1904,11 @@
- 	else
- 	    FcExprDestroy (def);
-     }
-+    if (langs)
-+    {
-+        if (FcHideCreate(parse, langs, family))
-+            FcConfigMessage ( parse, FcSevereError, "Cannot include hide and only for same family" );
-+    }
-     if (edit)
-     {
- 	test = FcTestCreate (parse, FcMatchPattern,
-@@ -1499,6 +1936,7 @@
- 	break;
-     case FcVStackString:
-     case FcVStackFamily:
-+    case FcVStackLang:
- 	expr = FcExprCreateString (parse->config, vstack->u.string);
- 	break;
-     case FcVStackField:
-@@ -2201,6 +2639,19 @@
- 	FcParseFamily (parse);
- 	break;
- 
-+    case FcElementPoor:
-+        FcParsePoor (parse, FcVStackLang);
-+        break;
-+    case FcElementOnly:
-+        FcParseOnly (parse, FcVStackLang);
-+        break;
-+    case FcElementHide:
-+        FcParseHide (parse, FcVStackLang);
-+        break;
-+    case FcElementLang:
-+        FcParseLang (parse);
-+        break;
-+
-     case FcElementTest:
- 	FcParseTest (parse);
- 	break;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/fontconfig/fontconfig-2.7.3-fonts.conf.patch	Mon Oct 26 06:50:50 2009 -0700
@@ -0,0 +1,263 @@
+--- fontconfig-2.7.3/conf.d/30-metric-aliases.conf	2009-06-28 13:48:47.000000000 -0400
++++ fontconfig-2.7.3/conf.d/30-metric-aliases.conf	2009-08-26 17:14:48.048084000 -0400
+@@ -207,5 +207,13 @@
+ 	  </accept>
+ 	</alias>
+ 
++      <!-- StarOffice formerly included Arial Narrow - Solaris includes Arial Narrow MT instead. -->
++      <alias>
++          <family>Arial Narrow</family>
++          <accept>
++              <family>Arial Narrow MT</family>
++              <family>Nimbus Sans L Condensed</family>
++          </accept>
++      </alias>
+ 
+ </fontconfig>
+--- fontconfig-2.7.3/conf.d/40-nonlatin.conf	2009-06-28 13:48:47.000000000 -0400
++++ fontconfig-2.7.3/conf.d/40-nonlatin.conf	2009-08-26 17:18:21.871571000 -0400
+@@ -18,6 +18,17 @@
+ 		<family>Zar</family>
+ 		<family>Titr</family>
+ 		<family>Jadid</family>
++                <family>HG-PMinchoL-Sun</family>
++                <family>HG-MinchoL-Sun</family>
++                <family>IPAPMincho</family>
++                <family>IPAMincho</family>
++                <family>Sazanami Mincho</family>
++                <family>Sazanami Gothic</family>
++                <family>FZSongTi</family>
++                <family>FZMingTi</family>
++                <family>KacstQurn</family>
++                <family>SunDotum</family>
++                <family>AR PL ShanHeiSun Uni</family>
+ 		<family>Kochi Mincho</family>
+ 		<family>AR PL SungtiL GB</family>
+ 		<family>AR PL Mingti2L Big5</family>
+@@ -43,6 +54,15 @@
+ 		<family>Roya</family>
+ 		<family>Koodak</family>
+ 		<family>Terafik</family>
++                <family>HG-PGothicB-Sun</family>
++                <family>HG-GothicB-Sun</family>
++                <family>IPAPGothic</family>
++                <family>IPAGothic</family>
++                <family>Sazanami Gothic</family>
++                <family>FZSongTi</family>
++                <family>FZMingTi</family>
++                <family>KacstQurn</family>
++                <family>SunDotum</family>
+ 		<family>Kochi Gothic</family>
+ 		<family>AR PL KaitiM GB</family>
+ 		<family>AR PL KaitiM Big5</family>
+@@ -61,6 +81,7 @@
+   Monospace faces
+  -->
+  	<alias>
++                <family>SunDotumChe</family>
+ 		<family>NSimSun</family>
+ 		<family>ZYSong18030</family>
+ 		<family>FreeMono</family>
+--- fontconfig-2.7.3/conf.d/49-sun-preuser.conf	2009-07-10 13:08:51.000000000 -0400
++++ fontconfig-2.7.3/conf.d/49-sun-preuser.conf	2009-08-26 17:20:31.599437000 -0400
+@@ -0,0 +1,79 @@
++<?xml version="1.0"?>
++<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<fontconfig>
++	<!--
++	 Hinting for CJK fonts doesn't yet work as well as for Latin fonts.
++	 Some people may want to turn it off:
++	 -->
++
++	<match target="font">
++		<test name="lang" compare="contains">
++			<string>zh</string>
++			<string>ko</string>
++			<string>ja</string>
++		</test>
++		<edit name="hinting" mode="assign">
++			<bool>false</bool>
++		</edit>
++	</match>
++
++	<!--
++	 Chinese fonts are too light. We want to darken them up.
++	 darken_value is an int between 1 and 9 where 1 is a little
++	 darker and 9 is very dark. The default is 6.
++	 -->
++
++	<match target="font">
++	        <test name="lang" compare="contains">
++	                <string>zh</string>
++	        </test>
++	        <edit name="darken" mode="assign">
++	                <bool>true</bool>
++	        </edit>
++	        <edit name="darken_value" mode="assign">
++	                <int>6</int>
++	        </edit>
++	</match>
++
++	<!--
++	  To avoid using embedded bitmaps in TrueType fonts
++	  put the following rule in your personal ~/.fonts.conf file:
++	                                                                         
++	  <match target="pattern">
++	        <edit name="prefer_bitmap">
++	                <bool>false</bool>
++	        </edit>
++	  </match>
++	-->
++	<match target="pattern">
++		<edit name="prefer_bitmap">
++			<bool>true</bool>
++		</edit>
++	</match>
++	<match target="font">
++		<!-- check to see if the font is roman -->
++		<test name="slant">
++			<const>roman</const>
++		</test>
++		<!-- check to see if the pattern requested non-roman -->
++		<test target="pattern" name="slant" compare="not_eq">
++			<const>roman</const>
++		</test>
++		<edit name="prefer_bitmap">
++			<bool>false</bool>
++		</edit>
++	</match>
++	<!-- Latin fonts should not be used for ASCII characters when using
++	     Japanese monospace families -->
++	<match target="pattern">
++		<test name="family">
++			<string>monospace</string>
++		</test>
++		<test name="lang" compare="eq">
++			<string>ja-jp</string>
++		</test>
++		<edit name="disable_pango_script">
++			<bool>true</bool>
++		</edit>
++	</match>
++</fontconfig>
+--- fontconfig-2.7.3/conf.d/45-latin.conf	2009-07-10 13:08:51.000000000 -0400
++++ fontconfig-2.7.3/conf.d/45-latin.conf	2009-08-26 17:20:58.512527000 -0400
+@@ -10,6 +10,7 @@
+   Serif faces
+  -->
+ 	<alias>
++                <family>Lucida Bright</family>
+ 		<family>Bitstream Vera Serif</family>
+ 		<family>DejaVu Serif</family>
+ 		<family>Liberation Serif</family>
+@@ -25,6 +26,7 @@
+   Sans-serif faces
+  -->
+ 	<alias>
++                <family>Lucida Sans Typewriter</family>
+ 		<family>Bitstream Vera Sans</family>
+ 		<family>DejaVu Sans</family>
+ 		<family>Liberation Sans</family>
+@@ -41,6 +43,7 @@
+   Monospace faces
+  -->
+  	<alias>
++                <family>Lucida Sans Typewriter</family>
+ 		<family>Bitstream Vera Sans Mono</family>
+ 		<family>DejaVu Sans Mono</family>
+ 		<family>Liberation Mono</family>
+--- fontconfig-2.7.3/conf.d/65-nonlatin.conf	2009-06-28 13:48:47.000000000 -0400
++++ fontconfig-2.7.3/conf.d/65-nonlatin.conf	2009-08-26 17:29:28.727064000 -0400
+@@ -4,6 +4,7 @@
+ 	<alias>
+ 		<family>serif</family>
+ 		<prefer>
++                        <family>EUDC</family>
+ 			<family>Artsounk</family> <!-- armenian -->
+ 			<family>BPG UTF8 M</family> <!-- georgian -->
+ 			<family>Kinnari</family> <!-- thai -->
+@@ -34,10 +35,18 @@
+ 			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
+ 			<family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
+ 			<family>MgOpen Canonica</family>
+-			<family>Sazanami Mincho</family>
++                        <family>HG-PMinchoL-Sun</family>
++                        <family>HG-MinchoL-Sun</family>
+ 			<family>IPAMonaMincho</family>
++                        <family>IPAPMincho</family>
+ 			<family>IPAMincho</family>
+-			<family>Kochi Mincho</family>
++                        <family>Sazanami Mincho</family>
++                        <family>Sazanami Gothic</family>
++                        <family>FZSongTi</family>
++                        <family>FZMingTi</family>
++                        <family>KacstQurn</family>
++                        <family>SunDotum</family>
++                        <family>AR PL ShanHeiSun Uni</family>
+ 			<family>AR PL SungtiL GB</family>
+ 			<family>AR PL Mingti2L Big5</family>
+  			<family>AR PL Zenkai Uni</family>
+@@ -69,6 +78,7 @@
+ 	<alias>
+ 		<family>sans-serif</family>
+ 		<prefer>
++                        <family>EUDC</family>
+ 			<family>Nachlieli</family> <!-- hebrew -->
+ 			<family>Lucida Sans Unicode</family>
+ 			<family>Yudit Unicode</family>
+@@ -105,10 +115,16 @@
+ 			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
+ 			<family>MgOpen Modata</family>
+ 			<family>VL Gothic</family>
++                        <family>HG-PGothicB-Sun</family>
++                        <family>HG-GothicB-Sun</family>
+ 			<family>IPAMonaGothic</family>
++                        <family>IPAPGothic</family>
+ 			<family>IPAGothic</family>
+ 			<family>Sazanami Gothic</family>
+-			<family>Kochi Gothic</family>
++                        <family>FZSongTi</family>
++                        <family>FZMingTi</family>
++                        <family>KacstQurn</family>
++                        <family>SunDotum</family>
+ 			<family>AR PL KaitiM GB</family>
+ 			<family>AR PL KaitiM Big5</family>
+  			<family>AR PL ShanHeiSun Uni</family>
+@@ -143,12 +159,18 @@
+ 	<alias>
+ 		<family>monospace</family>
+ 		<prefer>
++                        <family>EUDC</family>
+ 			<family>Miriam Mono</family> <!-- hebrew -->
+ 			<family>VL Gothic</family>
++                        <family>HG-GothicB-Sun</family>
++                        <family>HG-MinchoL-Sun</family>
+ 			<family>IPAMonaGothic</family>
+ 			<family>IPAGothic</family>
+ 			<family>Sazanami Gothic</family>
+-			<family>Kochi Gothic</family>
++                        <family>FZSongTi</family>
++                        <family>FZMingTi</family>
++                        <family>KacstQurn</family>
++                        <family>SunDotumChe</family>
+ 			<family>AR PL KaitiM GB</family>
+ 			<family>MS Gothic</family> <!-- han (ja) -->
+ 			<family>UmePlus Gothic</family> <!-- han (ja) -->
+--- fontconfig-2.7.3/conf.d/Makefile.am	2009-03-18 17:02:20.000000000 -0400
++++ fontconfig-2.7.3/conf.d/Makefile.am	2009-08-26 17:30:11.984089000 -0400
+@@ -40,6 +40,7 @@
+ 	40-nonlatin.conf \
+ 	45-latin.conf \
+ 	49-sansserif.conf \
++	49-sun-preuser.conf \
+ 	50-user.conf \
+ 	51-local.conf \
+ 	60-latin.conf \
+@@ -60,6 +61,7 @@
+ 	40-nonlatin.conf \
+ 	45-latin.conf \
+ 	49-sansserif.conf \
++	49-sun-preuser.conf \
+ 	50-user.conf \
+ 	51-local.conf \
+ 	60-latin.conf \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/fontconfig/local.conf	Mon Oct 26 06:50:50 2009 -0700
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+<!--
+    Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+    Use is subject to license terms.
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, and/or sell copies of the Software, and to permit persons
+    to whom the Software is furnished to do so, provided that the above
+    copyright notice(s) and this permission notice appear in all copies of
+    the Software and that both the above copyright notice(s) and this
+    permission notice appear in supporting documentation.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+    OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+    HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+
+    Except as contained in this notice, the name of a copyright holder
+    shall not be used in advertising or otherwise to promote the sale, use
+    or other dealings in this Software without prior written authorization
+    of the copyright holder.
+
+    @(#)local.conf	1.1	09/10/26
+-->
+ <match target="font" >
+  <edit mode="assign" name="hinting" >
+   <bool>true</bool>
+  </edit>
+ </match>
+ <match target="font" >
+  <edit mode="assign" name="hintstyle" >
+   <const>hintfull</const>
+  </edit>
+ </match>
+ <match target="font" >
+  <edit mode="assign" name="rgba" >
+   <const>rgb</const>
+  </edit>
+ </match>
+</fontconfig>
--- a/open-src/lib/freetype/Makefile	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/freetype/Makefile	Mon Oct 26 06:50:50 2009 -0700
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# ident	"@(#)Makefile	1.80	09/10/13 SMI"
+# @(#)Makefile	1.81	09/10/26
 #
 
 PWD:sh=pwd
@@ -56,7 +56,6 @@
 	freetype-config.patch,-p1 \
 	ftoption.h.0.patch,-p1 \
 	ftconfig.h.1.patch,-p1 \
-	freetype.h.2.patch,-p1 \
 	ttobjs.h.3.patch,-p1 \
 	ttobjs.c.4.patch,-p1 \
 	ttinterp.h.5.patch,-p1 \
--- a/open-src/lib/freetype/freetype.h.2.patch	Sun Oct 25 21:19:31 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
---- freetype-2.3.9/include/freetype/freetype.h	2009-03-03 16:29:45.000000000 -0500
-+++ freetype-2.3.9/include/freetype/freetype.h	2009-08-27 12:39:18.277820000 -0400
-@@ -2459,6 +2459,9 @@
- #define FT_LOAD_FORCE_AUTOHINT               0x20
- #define FT_LOAD_CROP_BITMAP                  0x40
- #define FT_LOAD_PEDANTIC                     0x80
-+#ifdef FT_CONFIG_ADD_FULL_HINTING
-+#define FT_LOAD_USE_FULL_HINTING             0x100
-+#endif
- #define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  0x200
- #define FT_LOAD_NO_RECURSE                   0x400
- #define FT_LOAD_IGNORE_TRANSFORM             0x800
--- a/open-src/lib/freetype/ftoption.h.0.patch	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/freetype/ftoption.h.0.patch	Mon Oct 26 06:50:50 2009 -0700
@@ -27,15 +27,14 @@
 # of the copyright holder.
 
 --- freetype-2.3.9/include/freetype/config/ftoption.h	2008-11-05 04:25:14.000000000 -0500
-+++ freetype-2.3.9/include/freetype/config/ftoption.h	2009-08-27 12:31:27.367271000 -0400
-@@ -480,8 +480,8 @@
++++ freetype-2.3.9/include/freetype/config/ftoption.h	2009-10-25 19:39:56.527806000 -0400
+@@ -480,8 +480,7 @@
    /*   Do not #undef this macro here, since the build system might         */
    /*   define it for certain configurations only.                          */
    /*                                                                       */
 -/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
 -
 +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-+#define FT_CONFIG_ADD_FULL_HINTING
  
    /*************************************************************************/
    /*                                                                       */
--- a/open-src/lib/freetype/ttgload.c.7.patch	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/freetype/ttgload.c.7.patch	Mon Oct 26 06:50:50 2009 -0700
@@ -1,5 +1,5 @@
 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
+# Use is subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -26,8 +26,8 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
---- freetype-2.3.9/src/truetype/ttgload.c	2008-12-08 18:56:55.000000000 -0500
-+++ freetype-2.3.9/src/truetype/ttgload.c	2009-08-27 12:29:22.968411000 -0400
+--- freetype-2.3.9/src/truetype/ttgload.c	2008-12-08 15:56:55.000000000 -0800
++++ freetype-2.3.9/src/truetype/ttgload.c	2009-10-25 20:56:57.442263760 -0700
 @@ -647,7 +647,7 @@
        FT_ARRAY_COPY( zone->org, zone->cur, zone->n_points );
  
@@ -37,22 +37,15 @@
  
      /* XXX: UNDOCUMENTED! Hinting instructions of a composite glyph */
      /*      completely refer to the (already) hinted subglyphs.     */
-@@ -692,7 +692,14 @@
-       debug = FT_BOOL( !( loader->load_flags & FT_LOAD_NO_SCALE ) &&
+@@ -693,6 +693,7 @@
                         ((TT_Size)loader->size)->debug             );
  
-+#ifdef FT_CONFIG_ADD_FULL_HINTING
-+      if ( loader->load_flags & FT_LOAD_USE_FULL_HINTING )
-+#endif
        error = TT_Run_Context( loader->exec, debug );
-+#ifdef FT_CONFIG_ADD_FULL_HINTING
-+      else
-+          error = TT_Err_Ok;
-+#endif
++
        if ( error && loader->exec->pedantic_hinting )
          return error;
      }
-@@ -1817,12 +1824,12 @@
+@@ -1817,12 +1818,12 @@
        }
  
        /* see whether the cvt program has disabled hinting */
@@ -68,7 +61,7 @@
  
        exec->pedantic_hinting = FT_BOOL( load_flags & FT_LOAD_PEDANTIC );
        loader->exec = exec;
-@@ -1974,10 +1981,10 @@
+@@ -1974,10 +1975,10 @@
  
        if ( IS_HINTED( load_flags ) )
        {
--- a/open-src/lib/libXft/Makefile	Sun Oct 25 21:19:31 2009 -0700
+++ b/open-src/lib/libXft/Makefile	Mon Oct 26 06:50:50 2009 -0700
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.16	09/10/02
+# @(#)Makefile	1.17	09/10/26
 #
 
 # Package name used in tarballs
@@ -61,8 +61,6 @@
 
 MODULE_MAKEFLAGS = bindir=$(XFT_prefix)/bin$(ARCHLIBSUBDIR)
 
-MODULE_CPPFLAGS = -DFT_CONFIG_ADD_FULL_HINTING
-
 # Mapfile used to control which symbols are exported
 XFT_MAPFILE=$(PWD)/mapfile.scope
 MODULE_LD_OPTIONS += -M$(XFT_MAPFILE) -lX11
--- a/packages/SUNWfontconfig-root/prototype	Sun Oct 25 21:19:31 2009 -0700
+++ b/packages/SUNWfontconfig-root/prototype	Mon Oct 26 06:50:50 2009 -0700
@@ -28,7 +28,7 @@
 #
 ###########################################################################
 #
-# ident	"@(#)prototype	1.11	09/08/30 SMI"
+# ident	"@(#)prototype	1.12	09/10/26 SMI"
 #
 # Fontconfig config files
 
@@ -44,6 +44,7 @@
 d none etc/fonts		0755 root sys
 f none etc/fonts/fonts.conf	0444 root bin
 f none etc/fonts/fonts.dtd	0444 root bin
+f none etc/fonts/local.conf	0444 root bin
 
 !search ../lib/svc/method
 d none lib 			0755 root bin
@@ -83,6 +84,13 @@
 f none etc/fonts/conf.avail/90-synthetic.conf		0444 root bin
 
 d none etc/fonts/conf.d		0755 root sys
+s none etc/fonts/conf.d/10-autohint.conf=../conf.avail/10-autohint.conf
+s none etc/fonts/conf.d/10-no-sub-pixel.conf=../conf.avail/10-no-sub-pixel.conf
+s none etc/fonts/conf.d/10-sub-pixel-bgr.conf=../conf.avail/10-sub-pixel-bgr.conf
+s none etc/fonts/conf.d/10-sub-pixel-rgb.conf=../conf.avail/10-sub-pixel-rgb.conf
+s none etc/fonts/conf.d/10-sub-pixel-vbgr.conf=../conf.avail/10-sub-pixel-vbgr.conf
+s none etc/fonts/conf.d/10-sub-pixel-vrgb.conf=../conf.avail/10-sub-pixel-vrgb.conf
+s none etc/fonts/conf.d/10-unhinted.conf=../conf.avail/10-unhinted.conf
 s none etc/fonts/conf.d/20-fix-globaladvance.conf=../conf.avail/20-fix-globaladvance.conf
 s none etc/fonts/conf.d/20-unhint-small-vera.conf=../conf.avail/20-unhint-small-vera.conf
 s none etc/fonts/conf.d/30-urw-aliases.conf=../conf.avail/30-urw-aliases.conf