summaryrefslogtreecommitdiff
path: root/chromium/third_party/fontconfig
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-08-08 17:47:06 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-08-09 11:07:23 +0000
commita3ee7849e3b0ad3d5f9595fa1cfd694c22dcee2a (patch)
treedab5d7f392b3b7d1198c0584ae0a1e0e8511967b /chromium/third_party/fontconfig
parent9a05d0e4db172168e429f30bc8ed62b695006490 (diff)
downloadqtwebengine-chromium-a3ee7849e3b0ad3d5f9595fa1cfd694c22dcee2a.tar.gz
BASELINE: Update Chromium to 60.0.3112.96
Change-Id: I8fa4120b6b8153b5be2520e57cf76c8d210bc2b5 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/third_party/fontconfig')
-rw-r--r--chromium/third_party/fontconfig/src/INSTALL2
-rw-r--r--chromium/third_party/fontconfig/src/Makefile.am2
-rw-r--r--chromium/third_party/fontconfig/src/README275
-rwxr-xr-xchromium/third_party/fontconfig/src/autogen.sh40
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-hinting-full.conf13
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-hinting-medium.conf13
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-hinting-none.conf13
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-hinting-slight.conf13
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-no-sub-pixel.conf2
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/10-scale-bitmap-fonts.conf32
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/30-metric-aliases.conf189
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/30-urw-aliases.conf13
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/45-latin.conf150
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/60-latin.conf4
-rw-r--r--chromium/third_party/fontconfig/src/conf.d/Makefile.am5
-rw-r--r--chromium/third_party/fontconfig/src/config/Makedefs.in76
-rw-r--r--chromium/third_party/fontconfig/src/config/config-subst10
-rw-r--r--chromium/third_party/fontconfig/src/config/config.guess1497
-rw-r--r--chromium/third_party/fontconfig/src/config/config.sub1608
-rw-r--r--chromium/third_party/fontconfig/src/config/install.sh240
-rw-r--r--chromium/third_party/fontconfig/src/configure.ac144
-rw-r--r--chromium/third_party/fontconfig/src/doc/Makefile.am2
-rw-r--r--chromium/third_party/fontconfig/src/doc/fccache.fncs2
-rw-r--r--chromium/third_party/fontconfig/src/doc/fccharset.fncs1
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcconfig.fncs15
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcdircache.fncs11
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcformat.fncs1
-rw-r--r--chromium/third_party/fontconfig/src/doc/fclangset.fncs6
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcpattern.fncs27
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcrange.fncs75
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcstrset.fncs1
-rw-r--r--chromium/third_party/fontconfig/src/doc/fcweight.fncs47
-rw-r--r--chromium/third_party/fontconfig/src/doc/fontconfig-devel.sgml25
-rw-r--r--chromium/third_party/fontconfig/src/doc/fontconfig-user.sgml23
-rw-r--r--chromium/third_party/fontconfig/src/doc/func.sgml9
-rw-r--r--chromium/third_party/fontconfig/src/fc-blanks/Makefile.am46
-rwxr-xr-xchromium/third_party/fontconfig/src/fc-blanks/fc-blanks.py156
-rw-r--r--chromium/third_party/fontconfig/src/fc-blanks/fcblanks.tmpl.h25
-rw-r--r--chromium/third_party/fontconfig/src/fc-blanks/list-unicodeset.html119
-rw-r--r--chromium/third_party/fontconfig/src/fc-cache/fc-cache.c84
-rw-r--r--chromium/third_party/fontconfig/src/fc-cache/fc-cache.sgml33
-rw-r--r--chromium/third_party/fontconfig/src/fc-case/CaseFolding.txt285
-rw-r--r--chromium/third_party/fontconfig/src/fc-case/Makefile.am3
-rw-r--r--chromium/third_party/fontconfig/src/fc-cat/fc-cat.c18
-rw-r--r--chromium/third_party/fontconfig/src/fc-cat/fc-cat.sgml2
-rw-r--r--chromium/third_party/fontconfig/src/fc-glyphname/fc-glyphname.c2
-rw-r--r--chromium/third_party/fontconfig/src/fc-lang/README28
-rw-r--r--chromium/third_party/fontconfig/src/fc-lang/fc-lang.c2
-rw-r--r--chromium/third_party/fontconfig/src/fc-lang/ja.orth4234
-rw-r--r--chromium/third_party/fontconfig/src/fc-lang/ko.orth1
-rw-r--r--chromium/third_party/fontconfig/src/fc-lang/zh_hk.orth2249
-rw-r--r--chromium/third_party/fontconfig/src/fc-query/fc-query.c28
-rw-r--r--chromium/third_party/fontconfig/src/fc-query/fc-query.sgml12
-rw-r--r--chromium/third_party/fontconfig/src/fc-scan/fc-scan.c28
-rw-r--r--chromium/third_party/fontconfig/src/fc-scan/fc-scan.sgml14
-rw-r--r--chromium/third_party/fontconfig/src/fontconfig.pc.in2
-rw-r--r--chromium/third_party/fontconfig/src/fontconfig/fcprivate.h3
-rw-r--r--chromium/third_party/fontconfig/src/fontconfig/fontconfig.h60
-rw-r--r--chromium/third_party/fontconfig/src/fonts.conf.in66
-rw-r--r--chromium/third_party/fontconfig/src/fonts.dtd2
-rw-r--r--chromium/third_party/fontconfig/src/m4/ac_check_symbol.m448
-rw-r--r--chromium/third_party/fontconfig/src/m4/ax_pthread.m476
-rw-r--r--chromium/third_party/fontconfig/src/m4/pkg.m4214
-rw-r--r--chromium/third_party/fontconfig/src/new-version.sh21
-rw-r--r--chromium/third_party/fontconfig/src/src/Makefile.am3
-rw-r--r--chromium/third_party/fontconfig/src/src/fcarch.c5
-rw-r--r--chromium/third_party/fontconfig/src/src/fcatomic.c2
-rw-r--r--chromium/third_party/fontconfig/src/src/fcatomic.h18
-rw-r--r--chromium/third_party/fontconfig/src/src/fcblanks.c27
-rw-r--r--chromium/third_party/fontconfig/src/src/fccache.c282
-rw-r--r--chromium/third_party/fontconfig/src/src/fccfg.c128
-rw-r--r--chromium/third_party/fontconfig/src/src/fccharset.c262
-rw-r--r--chromium/third_party/fontconfig/src/src/fccompat.c39
-rw-r--r--chromium/third_party/fontconfig/src/src/fcdbg.c85
-rw-r--r--chromium/third_party/fontconfig/src/src/fcdefault.c55
-rw-r--r--chromium/third_party/fontconfig/src/src/fcdir.c167
-rw-r--r--chromium/third_party/fontconfig/src/src/fcfreetype.c877
-rw-r--r--chromium/third_party/fontconfig/src/src/fcfs.c22
-rw-r--r--chromium/third_party/fontconfig/src/src/fchash.c317
-rw-r--r--chromium/third_party/fontconfig/src/src/fcinit.c56
-rw-r--r--chromium/third_party/fontconfig/src/src/fcint.h122
-rw-r--r--chromium/third_party/fontconfig/src/src/fclang.c27
-rw-r--r--chromium/third_party/fontconfig/src/src/fclist.c4
-rw-r--r--chromium/third_party/fontconfig/src/src/fcmatch.c155
-rw-r--r--chromium/third_party/fontconfig/src/src/fcname.c45
-rw-r--r--chromium/third_party/fontconfig/src/src/fcobjs.c31
-rw-r--r--chromium/third_party/fontconfig/src/src/fcobjs.h31
-rw-r--r--chromium/third_party/fontconfig/src/src/fcobjshash.gperf.h23
-rw-r--r--chromium/third_party/fontconfig/src/src/fcpat.c81
-rw-r--r--chromium/third_party/fontconfig/src/src/fcrange.c161
-rw-r--r--chromium/third_party/fontconfig/src/src/fcstat.c101
-rw-r--r--chromium/third_party/fontconfig/src/src/fcstr.c105
-rw-r--r--chromium/third_party/fontconfig/src/src/fcweight.c109
-rw-r--r--chromium/third_party/fontconfig/src/src/fcwindows.h7
-rw-r--r--chromium/third_party/fontconfig/src/src/fcxml.c254
95 files changed, 11009 insertions, 5039 deletions
diff --git a/chromium/third_party/fontconfig/src/INSTALL b/chromium/third_party/fontconfig/src/INSTALL
index aab4cddbc4f..670add1f32c 100644
--- a/chromium/third_party/fontconfig/src/INSTALL
+++ b/chromium/third_party/fontconfig/src/INSTALL
@@ -28,7 +28,7 @@ important steps:
freedesktop.org:/srv/www.freedesktop.org/www/software/fontconfig/release
5. Update the Fontconfig Devel wiki page
- https://www.freedesktop.org/wiki/Software/fontconfig/Devel/
+ http://fontconfig.org/wiki/Devel
6. Update the fontconfig documentation
diff --git a/chromium/third_party/fontconfig/src/Makefile.am b/chromium/third_party/fontconfig/src/Makefile.am
index 2b4a5b82280..2b949e43963 100644
--- a/chromium/third_party/fontconfig/src/Makefile.am
+++ b/chromium/third_party/fontconfig/src/Makefile.am
@@ -21,7 +21,7 @@
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-SUBDIRS=fontconfig fc-blanks fc-case fc-lang fc-glyphname src \
+SUBDIRS=fontconfig fc-case fc-lang fc-glyphname src \
fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \
fc-validate conf.d test
if ENABLE_DOCS
diff --git a/chromium/third_party/fontconfig/src/README b/chromium/third_party/fontconfig/src/README
index bf840a5e74e..d2288a55994 100644
--- a/chromium/third_party/fontconfig/src/README
+++ b/chromium/third_party/fontconfig/src/README
@@ -1,283 +1,12 @@
Fontconfig
Font configuration and customization library
- Version 2.12.1
- 2016-08-05
+ Version 2.11
+ 2013-10-11
Check INSTALL for compilation and installation instructions.
Report bugs to https://bugs.freedesktop.org in the fontconfig module.
-2.12.1
-
-Akira TAGOH (6):
- Add --with-default-hinting to configure
- Update CaseFolding.txt to Unicode 9.0
- Check python installed in autogen.sh
- Fix some errors related to python3
- Bug 96676 - Check range of FcWeightFromOpenType argument
- Update libtool revision
-
-Tobias Stoeckmann (1):
- Properly validate offsets in cache files.
-
-2.12
-
-Akira TAGOH (8):
- Modernize fc-blanks.py
- Update URL
- Bug 95477 - FcAtomicLock fails when SELinux denies link() syscall with EACCES
- 45-latin.conf: Add some Windows fonts to categorize them properly
- Correct one for the previous change
- Bug 95481 - Build fails on Android due to broken lconv struct
- Add the static raw data to generate fcblanks.h
- Remove unused code
-
-Erik de Castro Lopo (1):
- Fix a couple of minor memory leaks
-
-Petr Filipsky (1):
- Fix memory leak in FcDirCacheLock
-
-2.11.95 (2.12 RC5)
-
-Akira TAGOH (22):
- Add one more debugging option to see transformation on font-matching
- Fix a crash when no objects are available after filtering
- No need to be public
- mark as private at this moment
- Don't return FcFalse even when no fonts dirs is configured
- Add a warning for blank in fonts.conf
- Fix a memory leak in FcFreeTypeQueryFace
- Update CaseFolding.txt to Unicode 8.0
- Bug 90867 - Memory Leak during error case in fccharset
- Fix the broken cache more.
- Fail on make runtime as needed instead of configure if no python installed
- Use long long to see the same size between LP64 and LLP64
- Fix build issue on MinGW
- Use int64_t instead of long long
- Fix compiler warnings on MinGW
- Fix assertion on 32bit arch
- remomve unnecessary code
- Bug 93075 - Possible fix for make check failure on msys/MinGW...
- Avoid an error message on testing when no fonts.conf installed
- Add hintstyle templates and make hintslight default
- Revert "Workaround another race condition issue"
- Update libtool revision
-
-Behdad Esfahbod (6):
- Revert changes made to FcConfigAppFontAddDir() recently
- Call FcFreeTypeQueryFace() from fcdir.c, instead of FcFreeTypeQuery()
- [GX] Support instance weight, width, and style name
- [GX] Enumerate all named-instances in TrueType GX fonts
- Improve OpenType to Fontconfig weight mapping
- [GX] Improve weight mapping
-
-Patrick Haller (1):
- Optimizations in FcStrSet
-
-2.11.94 (2.12 RC4)
-
-Akira TAGOH (16):
- Remove the dead code
- Bug 89617 - FcConfigAppFontAddFile() returns false on any font file
- Fix unknown attribute in Win32
- Fix SIGFPE
- Fix a typo for the latest cache version
- Fix a typo in fontconfig-user.sgml
- Drop unmaintained code
- Observe blanks to compute correct languages in fc-query/fc-scan
- Add missing description for usage
- Make FC_SCALE deprecated
- Bug 90148 - Don't warn if cachedir isn't specified
- Fix memory leaks after FcFini()
- Fix a typo
- Fix a crash
- Detect the overflow for the object ID
- Revert the previous change
-
-Behdad Esfahbod (11):
- Fix bitmap scaling
- Add su[pport for symbol fonts
- Write ranges using a [start finish) format
- Only set FC_SIZE for scalable fonts if OS/2 version 5 is present
- Add bitmap-only font size as Double, not Range
- Accept Integer for FC_SIZE
- Don't set FC_SIZE for bitmap fonts
- Fix compiler warnings
- Simplify FcRange
- Reduce number of places that cache version is specified to 1
- Bump cache version number to 6, because of recent FcRange changes
-
-Руслан Ижбулатов (1):
- W32: Support cache paths relative to the root directory
-
-2.11.93 (2.12 RC3)
-
-Akira TAGOH (18):
- Fix a typo in docs
- Add pkg.m4 to git
- Fix a build fail on some non-POSIX platforms
- ifdef'd the unnecessary code for win32
- Fix pointer cast warning on win32
- filter can be null
- Copy the real size of struct dirent
- Rework again to copy the struct dirent
- Hardcode the blanks in the library
- Update the script to recognize the escaped space
- Fix a build issue when $(srcdir) != $(builddir)
- Don't add FC_LANG when it has "und"
- Fix the array allocation
- Improve the performance on searching blanks
- Fix a segfault when OOM happened.
- Fix a bug in the previous change forFcBlanksIsMember()
- Fix an infinite loop in FcBlanksIsMember()
- Fix a trivial bug for dist
-
-Alan Coopersmith (1):
- Fix configure to work with Solaris Studio compilers
-
-Behdad Esfahbod (3):
- Fix symbol cmap handling
- Remove dead code after previous commit
- Simplify some more
-
-Michael Haubenwallner (1):
- Ensure config.h is included first, bug#89336.
-
-2.11.92 (2.12 RC2)
-
-Akira TAGOH (1):
- Add missing docs
-
-2.11.91 (2.12 RC1)
-
-Akira TAGOH (28):
- Bug 71287 - size specific design selection support in OS/2 table version 5
- Fix a build issue with freetype <2.5.1
- Fix missing docs
- Fix a typo
- Fix fc-cache fail with -r
- Rebase ja.orth against Joyo kanji characters
- Allow the modification on FcTypeVoid with FcTypeLangSet and FcTypeCharSet
- Workaround another race condition issue
- Read the config files and fonts on the sysroot when --sysroot is given to fc-cache
- Fix a segfault
- Update CaseFolding.txt to Unicode 7.0
- Don't read/write from/to the XDG dirs if the home directory is disabled
- Rework for 5004e8e01f5de30ad01904e57ea0eda006ab3a0c
- Fix a crash when no sysroot is given and failed to load the default fonts.conf
- Fix a gcc warning
- Don't add duplicate lang
- fallback to the another method to lock when link() failed
- Increase the refcount in FcConfigSetCurrent()
- Fix the memory leak in fc-cat
- Note FcConfigSetCurrent() increases the refcount in document
- Add FcRangeGetDouble()
- Revert "Bug 73291 - poppler does not show fl ligature"
- Update aliases for new URW fonts
- Returns False if no fonts found
- fc-cache: make a fail if no fonts processed on a given path
- fc-cache: Add an option to raise an error if no fonts found
- Bump the cache version to 5
- Fix a typo
-
-Behdad Esfahbod (39):
- Remove unused code
- Simplify hash code
- Further simplify hash code
- Rewrite hashing to use FT_Stream directly
- Allow passing NULL for file to FcFreeTypeQueryFace()
- [ko.orth] Remove U+3164 HANGUL FILLER
- Deprecate FC_HASH and don't compute it
- Remove unused FcHash code now that FC_HASH is deprecated
- Update list of blanks to Unicode 6.3.0
- Update blanks to Unicode 7.0
- Change charset parse/unparse format to be human readable
- Minor
- Fix charset unparse after recent changes
- Comments
- Remove HASH from matching priorities
- Fixup previous commit
- Update mingw32 MemoryBarrier from HarfBuzz
- More mingw32 MemoryBarrier() fixup
- Symlinks fix for DESTDIR
- Revert "Symlinks fix for DESTDIR"
- Call FcInitDebug from FcFreeTypeQueryFace
- Decode MacRoman encoding in name table without iconv
- Ouch, fix buffer
- Use lang=und instead of lang=xx for "undetermined"
- Remove unused regex code
- Improve / cleanup namelang matching
- Add FC_WEIGHT_DEMILIGHT
- Change DemiLight from 65 to 55
- Linearly interpolate weight values
- Export recently added API
- Remove unneeded FcPublic
- Fix assertion failure
- If OS/2 table says weight is 1 to 9, multiply by 100
- Trebuchet MS is a sans-serif font, not serif
- Fix previous commit
- Revert "[fcmatch] When matching, reserve score 0 for when elements don't exist"
- Fix buffer overflow in copying PS name
- Add FC_COLOR
- Treat color fonts as scalable
-
-Nick Alcock (1):
- Generate documentation for FcWeight* functions.
-
-2.11.1
-
-Akira TAGOH (31):
- do not build test-migration for Win32
- Fix build issue on Debian/kFreeBSD 7.0
- Update ax_pthread.m4 to the latest version
- Fix the dynamic loading issue on NetBSD
- Use stat() if there are no d_type in struct dirent
- Fix a build issue on Solaris 10
- Change the default weight on match to FC_WEIGHT_NORMAL
- Warn if no <test> nor <edit> elements in <match>
- Correct DTD
- Re-scan font directories only when it contains subdirs
- Fix typo
- Bug 72086 - Check for gperf in autogen.sh
- Simplify to validate the availability of posix_fadvise
- Simplify to validate the availability of scandir
- Fix a typo
- Fix a build issue on platforms where doesn't support readlink()
- Improve the performance issue on rescanning directories
- Bug 73686 - confdir is not set correctly in fontconfig.pc
- Update zh_hk.orth
- clean up the unused files
- Add missing license headers
- Update the use of autotools' macro
- Fix a crash issue when empty strings are set to the BDF properties
- Add a doc for FcDirCacheRescan
- Add missing #include <sys/statvfs.h> in fcstat.c
- Fix incompatible API on AIX with random_r and initstate_r
- Fallback to lstat() in case the filesystem doesn't support d_type in struct dirent
- Update doc to include the version info of `since when'
- Bug 73291 - poppler does not show fl ligature
- Add README describes the criteria to add/modify the orthography files
- Fix autoconf warning, warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
-
-Alan Coopersmith (3):
- Leave room for null terminators in arrays
- Avoid memory leak when NULL path passed to FcStrBuildFilename
- Avoid null pointer dereference in FcNameParse if malloc fails
-
-Behdad Esfahbod (1):
- Bug 72380 - Never drop first font when trimming
-
-Frederic Crozat (2):
- Fix inversion between Tinos and Cousine in the comment
- Add metric aliases for additional Google ChromeOS fonts
-
-Jehan (1):
- Defaulting <cachedir> to LOCAL_APPDATA_FONTCONFIG_CACHE for Win32 build
-
-Ross Burton (1):
- fc-cache: --sysroot option takes an argument
-
2.11
Akira TAGOH (15):
diff --git a/chromium/third_party/fontconfig/src/autogen.sh b/chromium/third_party/fontconfig/src/autogen.sh
index 07c59a4714f..1482e401c51 100755
--- a/chromium/third_party/fontconfig/src/autogen.sh
+++ b/chromium/third_party/fontconfig/src/autogen.sh
@@ -1,26 +1,4 @@
#!/bin/sh
-# fontconfig/autogen.sh
-#
-# Copyright © 2000 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 the author(s) not be used in
-# advertising or publicity pertaining to distribution of the software without
-# specific, written prior permission. The authors make no
-# representations about the suitability of this software for any purpose. It
-# is provided "as is" without express or implied warranty.
-#
-# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-# EVENT SHALL THE AUTHOR(S) 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.
-
# Run this to generate all the initial makefiles, etc.
set -e
@@ -46,28 +24,10 @@ LIBTOOLIZE=${LIBTOOLIZE-libtoolize}
AUTOMAKE=${AUTOMAKE-automake}
AUTOHEADER=${AUTOHEADER-autoheader}
AUTOCONF=${AUTOCONF-autoconf}
-GPERF=${GPERF-gperf}
-PYTHON=${PYTHON-python}
LIBTOOLIZE_FLAGS="--copy --force"
DIE=0
-($GPERF --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have gperf installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution."
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-($PYTHON --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have python installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution."
- echo "or get the source tarball at https://www.python.org/downloads/source/"
- DIE=1
-}
-
have_libtool=false
if $LIBTOOLIZE --version < /dev/null > /dev/null 2>&1 ; then
libtool_version=`$LIBTOOLIZE --version | sed 's/^.* \([0-9][.][0-9.]*\)[^ ]*$/\1/'`
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-hinting-full.conf b/chromium/third_party/fontconfig/src/conf.d/10-hinting-full.conf
deleted file mode 100644
index 27d8229195c..00000000000
--- a/chromium/third_party/fontconfig/src/conf.d/10-hinting-full.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
- <match target="pattern">
- <!--
- This configuration is available on the major desktop environments.
- We shouldn't overwrite it with "assign" unconditionally.
- Most clients may picks up the first value only. so using "append"
- may simply works to avoid it.
- -->
- <edit name="hintstyle" mode="append"><const>hintfull</const></edit>
- </match>
-</fontconfig>
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-hinting-medium.conf b/chromium/third_party/fontconfig/src/conf.d/10-hinting-medium.conf
deleted file mode 100644
index e34ab5b344d..00000000000
--- a/chromium/third_party/fontconfig/src/conf.d/10-hinting-medium.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
- <match target="pattern">
- <!--
- This configuration is available on the major desktop environments.
- We shouldn't overwrite it with "assign" unconditionally.
- Most clients may picks up the first value only. so using "append"
- may simply works to avoid it.
- -->
- <edit name="hintstyle" mode="append"><const>hintmedium</const></edit>
- </match>
-</fontconfig>
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-hinting-none.conf b/chromium/third_party/fontconfig/src/conf.d/10-hinting-none.conf
deleted file mode 100644
index 0b3810d9485..00000000000
--- a/chromium/third_party/fontconfig/src/conf.d/10-hinting-none.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
- <match target="pattern">
- <!--
- This configuration is available on the major desktop environments.
- We shouldn't overwrite it with "assign" unconditionally.
- Most clients may picks up the first value only. so using "append"
- may simply works to avoid it.
- -->
- <edit name="hintstyle" mode="append"><const>hintnone</const></edit>
- </match>
-</fontconfig>
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-hinting-slight.conf b/chromium/third_party/fontconfig/src/conf.d/10-hinting-slight.conf
deleted file mode 100644
index c244ac0b0e8..00000000000
--- a/chromium/third_party/fontconfig/src/conf.d/10-hinting-slight.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
- <match target="pattern">
- <!--
- This configuration is available on the major desktop environments.
- We shouldn't overwrite it with "assign" unconditionally.
- Most clients may picks up the first value only. so using "append"
- may simply works to avoid it.
- -->
- <edit name="hintstyle" mode="append"><const>hintslight</const></edit>
- </match>
-</fontconfig>
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-no-sub-pixel.conf b/chromium/third_party/fontconfig/src/conf.d/10-no-sub-pixel.conf
index 635847c4044..cf124656176 100644
--- a/chromium/third_party/fontconfig/src/conf.d/10-no-sub-pixel.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/10-no-sub-pixel.conf
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
-<!-- Disable sub-pixel rendering -->
+<!-- Enable sub-pixel rendering -->
<match target="pattern">
<!--
This configuration is available on the major desktop environments.
diff --git a/chromium/third_party/fontconfig/src/conf.d/10-scale-bitmap-fonts.conf b/chromium/third_party/fontconfig/src/conf.d/10-scale-bitmap-fonts.conf
index b4e9cb4f233..e3bcd46cdc0 100644
--- a/chromium/third_party/fontconfig/src/conf.d/10-scale-bitmap-fonts.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/10-scale-bitmap-fonts.conf
@@ -2,13 +2,8 @@
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
-<!--
- If font is bitmap, calculate scale factor.
- Note that color bitmap fonts have scalable=true, while
- non-color ones have scalable=false. Both groups have outline=false.
- -->
<match target="font">
- <test name="outline" compare="eq">
+ <test name="scalable" compare="eq">
<bool>false</bool>
</test>
<edit name="pixelsizefixupfactor" mode="assign">
@@ -18,20 +13,10 @@
</divide>
</edit>
</match>
-<!--
- For non-scalable bitmap fonts (ie. non-color), skip
- minor scaling if hinting is enabled.
- -->
<match target="font">
- <test name="outline" compare="eq">
- <bool>false</bool>
- </test>
<test name="scalable" compare="eq">
<bool>false</bool>
</test>
- <test name="hinting" compare="eq">
- <bool>true</bool>
- </test>
<edit name="scalingnotneeded" mode="assign">
<and>
<less>
@@ -45,7 +30,20 @@
</and>
</edit>
</match>
+<!--
+ So far we determined the scale factor. Now, check and if
+ scaling is NOT desirable, just reset the scale factor to 1.0.
+ -->
<match target="font">
+ <test name="scalable" compare="eq">
+ <bool>false</bool>
+ </test>
+ <test name="pixelsize" target="pattern" compare="less">
+ <double>64</double>
+ </test>
+ <test name="hinting" compare="eq">
+ <bool>true</bool>
+ </test>
<test name="scalingnotneeded" compare="eq">
<bool>true</bool>
</test>
@@ -57,7 +55,7 @@
If we *are* going to scale, go ahead and do it.
-->
<match target="font">
- <test name="outline" compare="eq">
+ <test name="scalable" compare="eq">
<bool>false</bool>
</test>
<test name="pixelsizefixupfactor" compare="not_eq">
diff --git a/chromium/third_party/fontconfig/src/conf.d/30-metric-aliases.conf b/chromium/third_party/fontconfig/src/conf.d/30-metric-aliases.conf
index 1f0778d68c4..d0d9ea2e0eb 100644
--- a/chromium/third_party/fontconfig/src/conf.d/30-metric-aliases.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/30-metric-aliases.conf
@@ -6,27 +6,24 @@
Alias similar/metric-compatible families from various sources:
-PostScript fonts: URW fonts: GUST fonts: Windows fonts:
-====================== ================== ================= ==================
-Helvetica Nimbus Sans TeX Gyre Heros
-Helvetica Narrow Nimbus Sans Narrow TeX Gyre Heros Cn
-Times Nimbus Roman TeX Gyre Termes
-Courier Nimbus Mono PS TeX Gyre Cursor
-ITC Avant Garde Gothic URW Gothic TeX Gyre Adventor
-ITC Bookman URW Bookman TeX Gyre Bonum Bookman Old Style
-ITC Zapf Chancery Z003 TeX Gyre Chorus
-Palatino P052 TeX Gyre Pagella Palatino Linotype
-New Century Schoolbook C059 TeX Gyre Schola Century Schoolbook
+PostScript fonts: URW fonts: GUST fonts: Windows fonts:
+====================== ==================== ================= ==================
+Helvetica Nimbus Sans L TeX Gyre Heros
+Helvetica Condensed TeX Gyre Heros Cn
+Times Nimbus Roman No9 L TeX Gyre Termes
+Courier Nimbus Mono L TeX Gyre Cursor
+ITC Avant Garde Gothic URW Gothic L TeX Gyre Adventor
+ITC Bookman URW Bookman L TeX Gyre Bonum Bookman Old Style
+ITC Zapf Chancery URW Chancery L TeX Gyre Chorus
+Palatino URW Palladio L TeX Gyre Pagella Palatino Linotype
+New Century Schoolbook Century Schoolbook L TeX Gyre Schola Century Schoolbook
Microsoft fonts: Liberation fonts: Google CrOS core fonts: StarOffice fonts: AMT fonts:
================ ====================== ======================= ================= ==============
Arial Liberation Sans Arimo Albany Albany AMT
Arial Narrow Liberation Sans Narrow
-Times New Roman Liberation Serif Tinos Thorndale Thorndale AMT
-Courier New Liberation Mono Cousine Cumberland Cumberland AMT
-Cambria Caladea
-Calibri Carlito
-Symbol SymbolNeu
+Times New Roman Liberation Serif Cousine Thorndale Thorndale AMT
+Courier New Liberation Mono Tinos Cumberland Cumberland AMT
Microsoft fonts: Other fonts:
================ ============
@@ -57,13 +54,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Nimbus Sans</family>
- <default>
- <family>Helvetica</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Heros</family>
<default>
<family>Helvetica</family>
@@ -71,16 +61,9 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Nimbus Sans Narrow</family>
- <default>
- <family>Helvetica Narrow</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Heros Cn</family>
<default>
- <family>Helvetica Narrow</family>
+ <family>Helvetica Condensed</family>
</default>
</alias>
@@ -92,13 +75,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Nimbus Roman</family>
- <default>
- <family>Times</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Termes</family>
<default>
<family>Times</family>
@@ -113,20 +89,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Nimbus Mono</family>
- <default>
- <family>Courier</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>Nimbus Mono PS</family>
- <default>
- <family>Courier</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Cursor</family>
<default>
<family>Courier</family>
@@ -148,13 +110,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>URW Gothic</family>
- <default>
- <family>ITC Avant Garde Gothic</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Adventor</family>
<default>
<family>ITC Avant Garde Gothic</family>
@@ -176,20 +131,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Bookman URW</family>
- <default>
- <family>ITC Bookman</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>URW Bookman</family>
- <default>
- <family>ITC Bookman</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Bonum</family>
<default>
<family>ITC Bookman</family>
@@ -218,20 +159,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Chancery URW</family>
- <default>
- <family>ITC Zapf Chancery</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>Z003</family>
- <default>
- <family>ITC Zapf Chancery</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Chorus</family>
<default>
<family>ITC Zapf Chancery</family>
@@ -246,20 +173,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Palladio URW</family>
- <default>
- <family>Palatino</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>P052</family>
- <default>
- <family>Palatino</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Pagella</family>
<default>
<family>Palatino</family>
@@ -281,20 +194,6 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias binding="same">
- <family>Century SchoolBook URW</family>
- <default>
- <family>New Century Schoolbook</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>C059</family>
- <default>
- <family>New Century Schoolbook</family>
- </default>
- </alias>
-
- <alias binding="same">
<family>TeX Gyre Schola</family>
<default>
<family>New Century Schoolbook</family>
@@ -408,26 +307,7 @@ but in an order preferring similar designs first. We do this in three steps:
</default>
</alias>
- <alias binding="same">
- <family>Caladea</family>
- <default>
- <family>Cambria</family>
- </default>
- </alias>
-
- <alias binding="same">
- <family>Carlito</family>
- <default>
- <family>Calibri</family>
- </default>
- </alias>
- <alias binding="same">
- <family>SymbolNeu</family>
- <default>
- <family>Symbol</family>
- </default>
- </alias>
<!-- Accept the other group as fallback -->
@@ -440,7 +320,7 @@ but in an order preferring similar designs first. We do this in three steps:
</alias>
<alias>
- <family>Helvetica Narrow</family>
+ <family>Helvetica Condensed</family>
<default>
<family>Arial Narrow</family>
</default>
@@ -472,7 +352,7 @@ but in an order preferring similar designs first. We do this in three steps:
<alias>
<family>Arial Narrow</family>
<default>
- <family>Helvetica Narrow</family>
+ <family>Helvetica Condensed</family>
</default>
</alias>
@@ -499,16 +379,14 @@ but in an order preferring similar designs first. We do this in three steps:
<family>Helvetica</family>
<accept>
<family>TeX Gyre Heros</family>
- <family>Nimbus Sans</family>
<family>Nimbus Sans L</family>
</accept>
</alias>
<alias binding="same">
- <family>Helvetica Narrow</family>
+ <family>Helvetica Condensed</family>
<accept>
<family>TeX Gyre Heros Cn</family>
- <family>Nimbus Sans Narrow</family>
</accept>
</alias>
@@ -516,7 +394,6 @@ but in an order preferring similar designs first. We do this in three steps:
<family>Times</family>
<accept>
<family>TeX Gyre Termes</family>
- <family>Nimbus Roman</family>
<family>Nimbus Roman No9 L</family>
</accept>
</alias>
@@ -525,8 +402,6 @@ but in an order preferring similar designs first. We do this in three steps:
<family>Courier</family>
<accept>
<family>TeX Gyre Cursor</family>
- <family>Nimbus Mono PS</family>
- <family>Nimbus Mono</family>
<family>Nimbus Mono L</family>
</accept>
</alias>
@@ -535,7 +410,6 @@ but in an order preferring similar designs first. We do this in three steps:
<family>ITC Avant Garde Gothic</family>
<accept>
<family>TeX Gyre Adventor</family>
- <family>URW Gothic</family>
<family>URW Gothic L</family>
</accept>
</alias>
@@ -545,8 +419,6 @@ but in an order preferring similar designs first. We do this in three steps:
<accept>
<family>Bookman Old Style</family>
<family>TeX Gyre Bonum</family>
- <family>URW Bookman</family>
- <family>Bookman URW</family>
<family>URW Bookman L</family>
</accept>
</alias>
@@ -555,8 +427,6 @@ but in an order preferring similar designs first. We do this in three steps:
<family>ITC Zapf Chancery</family>
<accept>
<family>TeX Gyre Chorus</family>
- <family>Z003</family>
- <family>Chancery URW</family>
<family>URW Chancery L</family>
</accept>
</alias>
@@ -566,8 +436,6 @@ but in an order preferring similar designs first. We do this in three steps:
<accept>
<family>Palatino Linotype</family>
<family>TeX Gyre Pagella</family>
- <family>P052</family>
- <family>Palladio URW</family>
<family>URW Palladio L</family>
</accept>
</alias>
@@ -577,8 +445,6 @@ but in an order preferring similar designs first. We do this in three steps:
<accept>
<family>Century Schoolbook</family>
<family>TeX Gyre Schola</family>
- <family>C059</family>
- <family>Century SchoolBook URW</family>
<family>Century Schoolbook L</family>
</accept>
</alias>
@@ -628,25 +494,4 @@ but in an order preferring similar designs first. We do this in three steps:
</accept>
</alias>
- <alias binding="same">
- <family>Cambria</family>
- <accept>
- <family>Caladea</family>
- </accept>
- </alias>
-
- <alias binding="same">
- <family>Calibri</family>
- <accept>
- <family>Carlito</family>
- </accept>
- </alias>
-
- <alias binding="same">
- <family>Symbol</family>
- <accept>
- <family>SymbolNeu</family>
- </accept>
- </alias>
-
</fontconfig>
diff --git a/chromium/third_party/fontconfig/src/conf.d/30-urw-aliases.conf b/chromium/third_party/fontconfig/src/conf.d/30-urw-aliases.conf
index cfde071fbff..e0d45da8760 100644
--- a/chromium/third_party/fontconfig/src/conf.d/30-urw-aliases.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/30-urw-aliases.conf
@@ -7,26 +7,17 @@
-->
<alias binding="same">
<family>Zapf Dingbats</family>
- <accept>
- <family>D050000L</family>
- <family>Dingbats</family>
- </accept>
+ <accept><family>Dingbats</family></accept>
</alias>
<alias binding="same">
<family>ITC Zapf Dingbats</family>
- <accept>
- <family>D050000L</family>
- <family>Dingbats</family>
- </accept>
+ <accept><family>Dingbats</family></accept>
</alias>
<match target="pattern">
<test name="family" compare="eq" ignore-blanks="true">
<string>Symbol</string>
</test>
<edit name="family" mode="append" binding="same">
- <string>Standard Symbols PS</string>
- </edit>
- <edit name="family" mode="append" binding="same">
<string>Standard Symbols L</string>
</edit>
</match>
diff --git a/chromium/third_party/fontconfig/src/conf.d/45-latin.conf b/chromium/third_party/fontconfig/src/conf.d/45-latin.conf
index c6696f8d6f2..aa62ed42e7f 100644
--- a/chromium/third_party/fontconfig/src/conf.d/45-latin.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/45-latin.conf
@@ -14,31 +14,23 @@
<default><family>serif</family></default>
</alias>
<alias>
- <family>Cambria</family>
- <default><family>serif</family></default>
- </alias>
- <alias>
- <family>Constantia</family>
- <default><family>serif</family></default>
- </alias>
- <alias>
<family>DejaVu Serif</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Elephant</family>
+ <family>Liberation Serif</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Garamond</family>
+ <family>Times New Roman</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Georgia</family>
+ <family>Times</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Liberation Serif</family>
+ <family>Nimbus Roman No9 L</family>
<default><family>serif</family></default>
</alias>
<alias>
@@ -46,82 +38,46 @@
<default><family>serif</family></default>
</alias>
<alias>
- <family>MS Serif</family>
- <default><family>serif</family></default>
- </alias>
- <alias>
- <family>Nimbus Roman No9 L</family>
- <default><family>serif</family></default>
- </alias>
- <alias>
- <family>Nimbus Roman</family>
+ <family>Thorndale AMT</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Palatino Linotype</family>
+ <family>Thorndale</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Thorndale AMT</family>
+ <family>Georgia</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Thorndale</family>
+ <family>Garamond</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Times New Roman</family>
+ <family>Palatino Linotype</family>
<default><family>serif</family></default>
</alias>
<alias>
- <family>Times</family>
+ <family>Trebuchet MS</family>
<default><family>serif</family></default>
</alias>
<!--
Sans-serif faces
-->
<alias>
- <family>Albany AMT</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Albany</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Arial Unicode MS</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Arial</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
<family>Bitstream Vera Sans</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>Britannic</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Calibri</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Candara</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Century Gothic</family>
+ <family>DejaVu Sans</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>Corbel</family>
+ <family>Liberation Sans</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>DejaVu Sans</family>
+ <family>Arial</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
@@ -129,15 +85,15 @@
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>Haettenschweiler</family>
+ <family>Verdana</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>Liberation Sans</family>
+ <family>Albany AMT</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>MS Sans Serif</family>
+ <family>Albany</family>
<default><family>sans-serif</family></default>
</alias>
<alias>
@@ -145,74 +101,38 @@
<default><family>sans-serif</family></default>
</alias>
<alias>
- <family>Nimbus Sans</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
<family>Luxi Sans</family>
<default><family>sans-serif</family></default>
</alias>
- <alias>
- <family>Tahoma</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Trebuchet MS</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Twentieth Century</family>
- <default><family>sans-serif</family></default>
- </alias>
- <alias>
- <family>Verdana</family>
- <default><family>sans-serif</family></default>
- </alias>
<!--
Monospace faces
-->
- <alias>
- <family>Andale Mono</family>
- <default><family>monospace</family></default>
- </alias>
<alias>
<family>Bitstream Vera Sans Mono</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Consolas</family>
- <default><family>monospace</family></default>
- </alias>
- <alias>
- <family>Courier New</family>
- <default><family>monospace</family></default>
- </alias>
- <alias>
- <family>Courier</family>
- <default><family>monospace</family></default>
- </alias>
- <alias>
- <family>Cumberland AMT</family>
+ <family>DejaVu Sans Mono</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Cumberland</family>
+ <family>Liberation Mono</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>DejaVu Sans Mono</family>
+ <family>Inconsolata</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Fixedsys</family>
+ <family>Courier New</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Inconsolata</family>
+ <family>Courier</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Liberation Mono</family>
+ <family>Andale Mono</family>
<default><family>monospace</family></default>
</alias>
<alias>
@@ -220,53 +140,49 @@
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Nimbus Mono L</family>
- <default><family>monospace</family></default>
- </alias>
- <alias>
- <family>Nimbus Mono</family>
+ <family>Cumberland AMT</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Nimbus Mono PS</family>
+ <family>Cumberland</family>
<default><family>monospace</family></default>
</alias>
<alias>
- <family>Terminal</family>
+ <family>Nimbus Mono L</family>
<default><family>monospace</family></default>
</alias>
<!--
Fantasy faces
-->
- <alias>
- <family>Bauhaus Std</family>
+ <alias>
+ <family>Impact</family>
<default><family>fantasy</family></default>
</alias>
<alias>
- <family>Cooper Std</family>
+ <family>Copperplate Gothic Std</family>
<default><family>fantasy</family></default>
</alias>
<alias>
- <family>Copperplate Gothic Std</family>
+ <family>Cooper Std</family>
<default><family>fantasy</family></default>
</alias>
<alias>
- <family>Impact</family>
+ <family>Bauhaus Std</family>
<default><family>fantasy</family></default>
</alias>
<!--
Cursive faces
-->
<alias>
- <family>Comic Sans MS</family>
+ <family>ITC Zapf Chancery Std</family>
<default><family>cursive</family></default>
</alias>
<alias>
- <family>ITC Zapf Chancery Std</family>
+ <family>Zapfino</family>
<default><family>cursive</family></default>
</alias>
<alias>
- <family>Zapfino</family>
+ <family>Comic Sans MS</family>
<default><family>cursive</family></default>
</alias>
diff --git a/chromium/third_party/fontconfig/src/conf.d/60-latin.conf b/chromium/third_party/fontconfig/src/conf.d/60-latin.conf
index 23ee91b253f..2107e31e4b4 100644
--- a/chromium/third_party/fontconfig/src/conf.d/60-latin.conf
+++ b/chromium/third_party/fontconfig/src/conf.d/60-latin.conf
@@ -10,7 +10,6 @@
<family>Thorndale AMT</family>
<family>Luxi Serif</family>
<family>Nimbus Roman No9 L</family>
- <family>Nimbus Roman</family>
<family>Times</family>
</prefer>
</alias>
@@ -24,7 +23,6 @@
<family>Albany AMT</family>
<family>Luxi Sans</family>
<family>Nimbus Sans L</family>
- <family>Nimbus Sans</family>
<family>Helvetica</family>
<family>Lucida Sans Unicode</family>
<family>BPG Glaho International</family> <!-- lat,cyr,arab,geor -->
@@ -42,8 +40,6 @@
<family>Cumberland AMT</family>
<family>Luxi Mono</family>
<family>Nimbus Mono L</family>
- <family>Nimbus Mono</family>
- <family>Nimbus Mono PS</family>
<family>Courier</family>
</prefer>
</alias>
diff --git a/chromium/third_party/fontconfig/src/conf.d/Makefile.am b/chromium/third_party/fontconfig/src/conf.d/Makefile.am
index ac68cd15dc4..d61756b816c 100644
--- a/chromium/third_party/fontconfig/src/conf.d/Makefile.am
+++ b/chromium/third_party/fontconfig/src/conf.d/Makefile.am
@@ -26,7 +26,6 @@ DOC_SOURCES = README.in
DOC_FILES = $(DOC_SOURCES:.in=)
CONF_LINKS = \
- 10-hinting-$(PREFERRED_HINTING).conf \
10-scale-bitmap-fonts.conf \
20-unhint-small-vera.conf \
30-urw-aliases.conf \
@@ -52,10 +51,6 @@ config_DATA = $(DOC_FILES)
templatedir = $(TEMPLATEDIR)
template_DATA = \
10-autohint.conf \
- 10-hinting-full.conf \
- 10-hinting-medium.conf \
- 10-hinting-none.conf \
- 10-hinting-slight.conf \
10-no-sub-pixel.conf \
10-scale-bitmap-fonts.conf \
10-sub-pixel-bgr.conf \
diff --git a/chromium/third_party/fontconfig/src/config/Makedefs.in b/chromium/third_party/fontconfig/src/config/Makedefs.in
new file mode 100644
index 00000000000..ae75aff4911
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/config/Makedefs.in
@@ -0,0 +1,76 @@
+#
+# fontconfig/config/Makedefs.in
+#
+# Copyright © 2002 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 the author(s) not be used in
+# advertising or publicity pertaining to distribution of the software without
+# specific, written prior permission. The authors make no
+# representations about the suitability of this software for any purpose. It
+# is provided "as is" without express or implied warranty.
+#
+# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+# EVENT SHALL THE AUTHOR(S) 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.
+#
+
+SHELL = @SHELL@
+
+srcdir=@srcdir@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+bindir=@bindir@
+datadir=@datadir@
+includedir=@includedir@
+sysconfdir=@sysconfdir@
+confdir=@confdir@
+
+DSO_LDOPTS=@DSO_LDOPTS@
+DSO_CFLAGS=@DSO_CFLAGS@
+DSO_PIC_CFLAGS=@DSO_PIC_CFLAGS@
+
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_SCRIPT=@INSTALL_SCRIPT@
+INSTALL_DATA=@INSTALL_DATA@
+MKSHLIB=@MKSHLIB@
+LN_S=@LN_S@
+
+# shared libraries
+LIBDIR=$(libdir)
+# programs
+BINDIR=$(bindir)
+# font configuration files
+CONFDIR=@CONFDIR@
+# include files
+INCLUDEDIR=$(includedir)/fontconfig
+
+X_FONT_DIR=@X_FONT_DIR@
+FC_DEFAULT_FONTS=@FC_DEFAULT_FONTS@
+FCPATH_DEF=-DFONTCONFIG_PATH=\"$(CONFDIR)\"
+
+CDEBUGFLAGS=@CFLAGS@
+
+INCLUDES=-I$(TOPDIR) -I$(srcdir) @CPPFLAGS@
+
+CFLAGS=$(CDEBUGFLAGS) @DEFS@ $(FCPATH_DEF) $(INCLUDES)
+
+LIBBASE=libfontconfig.so
+LIBFILE=$(LIBBASE).@PACKAGE_MAJOR@.@PACKAGE_MINOR@
+LIBMAJOR=$(LIBBASE).@PACKAGE_MAJOR@
+
+LIBFONTCONFIG=-L$(SRCDIR) -lfontconfig
+
+SRCDIR=$(TOPDIR)/src
+
+INCDIR=$(TOPDIR)/fontconfig
+HEADERS=$(INCDIR)/fontconfig.h $(INCDIR)/fcfreetype.h $(INCDIR)/fcprivate.h
diff --git a/chromium/third_party/fontconfig/src/config/config-subst b/chromium/third_party/fontconfig/src/config/config-subst
new file mode 100644
index 00000000000..5907e03286a
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/config/config-subst
@@ -0,0 +1,10 @@
+#!/bin/sh
+script=config-subst.$$
+trap "rm $script" 0
+rm -f $script
+for i in ${1+"$@"}; do
+ var="`echo "$i" | sed 's/=.*$//'`"
+ val="`echo "$i" | sed 's/^[^=]*=//'`"
+ echo "s;@$var@;$val;" >> $script
+done
+sed -f $script
diff --git a/chromium/third_party/fontconfig/src/config/config.guess b/chromium/third_party/fontconfig/src/config/config.guess
new file mode 100644
index 00000000000..c38553dc74b
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/config/config.guess
@@ -0,0 +1,1497 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2006-02-23'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:MSYS_NT-*:*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ x86:Interix*:[345]*)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T:Interix*:[345]*)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/chromium/third_party/fontconfig/src/config/config.sub b/chromium/third_party/fontconfig/src/config/config.sub
new file mode 100644
index 00000000000..ad9f3957118
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/config/config.sub
@@ -0,0 +1,1608 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2006-02-23'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ m32c-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/chromium/third_party/fontconfig/src/config/install.sh b/chromium/third_party/fontconfig/src/config/install.sh
new file mode 100644
index 00000000000..ddbcef3d91d
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/config/install.sh
@@ -0,0 +1,240 @@
+#! /bin/sh
+#
+# fontconfig/config/install.sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+#
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+tranformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd="$cpprog"
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd="$stripprog"
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "install: no input file specified"
+ exit 1
+else
+ true
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d $dst ]; then
+ instcmd=:
+ else
+ instcmd=mkdir
+ fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+ if [ -f $src -o -d $src ]
+ then
+ true
+ else
+ echo "install: $src does not exist"
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "install: no destination specified"
+ exit 1
+ else
+ true
+ fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+ if [ -d $dst ]
+ then
+ dst="$dst"/`basename $src`
+ else
+ true
+ fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+# this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp="${pathcomp}${1}"
+ shift
+
+ if [ ! -d "${pathcomp}" ] ;
+ then
+ $mkdirprog "${pathcomp}"
+ else
+ true
+ fi
+
+ pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd $dst &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+ if [ x"$transformarg" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ dstfile=`basename $dst $transformbasename |
+ sed $transformarg`$transformbasename
+ fi
+
+# don't allow the sed command to completely eliminate the filename
+
+ if [ x"$dstfile" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ true
+ fi
+
+# Make a temp file name in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd $src $dsttmp &&
+
+ trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing. If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+ $doit $rmcmd -f $dstdir/$dstfile &&
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
+
+fi &&
+
+
+exit 0
diff --git a/chromium/third_party/fontconfig/src/configure.ac b/chromium/third_party/fontconfig/src/configure.ac
index 49488162ece..c3743f43589 100644
--- a/chromium/third_party/fontconfig/src/configure.ac
+++ b/chromium/third_party/fontconfig/src/configure.ac
@@ -33,10 +33,30 @@ dnl This is the package version number, not the shared library
dnl version. This same version number must appear in fontconfig/fontconfig.h
dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
dnl not possible to extract the version number here from fontconfig.h
-AC_INIT([fontconfig], [2.12.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig])
+AC_INIT([fontconfig], [2.11.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig])
AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+dnl libtool versioning
+
+dnl bump revision when fixing bugs
+dnl bump current and age, reset revision to zero when adding APIs
+dnl bump current, leave age, reset revision to zero when changing/removing APIS
+LIBT_CURRENT=9
+LIBT_REVISION=0
+AC_SUBST(LIBT_CURRENT)
+AC_SUBST(LIBT_REVISION)
+LIBT_AGE=8
+
+LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
+AC_SUBST(LIBT_VERSION_INFO)
+
+LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
+AC_SUBST(LIBT_CURRENT_MINUS_AGE)
+
+PKGCONFIG_REQUIRES=
+PKGCONFIG_REQUIRES_PRIVATELY=
+
dnl ==========================================================================
AC_CONFIG_HEADERS(config.h)
@@ -47,14 +67,14 @@ AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
AC_PROG_INSTALL
AC_PROG_LN_S
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_LIBTOOL
AC_PROG_MAKE_SET
PKG_PROG_PKG_CONFIG
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
AM_MISSING_PROG([GIT], [git])
AM_MISSING_PROG([GPERF], [gperf])
-AM_PATH_PYTHON(,, [:])
-AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
AC_MSG_CHECKING([for RM macro])
_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
@@ -65,30 +85,6 @@ else
AC_MSG_RESULT($_predefined_rm)
fi
-dnl Initialize libtool
-LT_PREREQ([2.2])
-LT_INIT([disable-static win32-dll])
-
-dnl libtool versioning
-
-dnl bump revision when fixing bugs
-dnl bump current and age, reset revision to zero when adding APIs
-dnl bump current, leave age, reset revision to zero when changing/removing APIS
-LIBT_CURRENT=10
-LIBT_REVISION=2
-AC_SUBST(LIBT_CURRENT)
-AC_SUBST(LIBT_REVISION)
-LIBT_AGE=9
-
-LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
-AC_SUBST(LIBT_VERSION_INFO)
-
-LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
-AC_SUBST(LIBT_CURRENT_MINUS_AGE)
-
-PKGCONFIG_REQUIRES=
-PKGCONFIG_REQUIRES_PRIVATELY=
-
dnl ==========================================================================
case "$host" in
@@ -105,19 +101,11 @@ if test "$os_win32" = "yes"; then
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
-AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
WARN_CFLAGS=""
-WARNING_CPP_DIRECTIVE="no"
if test "x$GCC" = "xyes"; then
WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
-Wmissing-prototypes -Wmissing-declarations \
-Wnested-externs -fno-strict-aliasing"
- WARNING_CPP_DIRECTIVE="yes"
-elif test "x$SUNCC" = "xyes"; then
- WARN_CFLAGS="-v -fd"
- WARNING_CPP_DIRECTIVE="yes"
-fi
-if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
[Can use #warning in C files])
fi
@@ -148,7 +136,7 @@ dnl ==========================================================================
# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
+AC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
AX_CREATE_STDINT_H([src/fcstdint.h])
# Checks for typedefs, structures, and compiler characteristics.
@@ -160,15 +148,54 @@ AC_TYPE_PID_T
# Checks for library functions.
AC_FUNC_VPRINTF
AC_FUNC_MMAP
-AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat])
+AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
dnl AC_CHECK_FUNCS doesn't check for header files.
dnl posix_fadvise() may be not available in older libc.
-AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
-AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
-
-#
-AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
+fc_saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
+AC_MSG_CHECKING([for posix_fadvise])
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include <fcntl.h>
+ int main(void) {
+ return posix_fadvise(0, 0, 0, 0);
+ }
+ ]])],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
+ ],[AC_MSG_RESULT([no])])
+if test "$os_win32" = "no"; then
+ AC_MSG_CHECKING([for scandir])
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include <dirent.h>
+ int comp(const struct dirent **, const struct dirent **);
+ int comp(const struct dirent **a, const struct dirent **b) { return 0; }
+ int main(void) {
+ struct dirent **d;
+ return scandir(".", &d, 0, &comp) >= 0;
+ }
+ ]])],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_SCANDIR], [1], [Define to 1 if you have the 'scandir' function.])
+ ],[
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include <dirent.h>
+ int comp(const void *, const void *);
+ int comp(const void *a, const void *b) { return 0; }
+ int main(void) {
+ struct dirent **d;
+ return scandir(".", &d, 0, &comp) >= 0;
+ }
+ ]])],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_SCANDIR_VOID_P], [1], [Define to 1 if you have the 'scandir' function with int (* compar)(const void *, const void *)])
+ ],[
+ AC_MSG_ERROR([
+*** No scandir function available.])
+ ])
+ ])
+fi
+CFLAGS="$fc_saved_CFLAGS"
#
if test "x$ac_cv_func_fstatvfs" = "xyes"; then
@@ -192,6 +219,12 @@ if test "x$ac_cv_func_fstatfs" = "xyes"; then
fi
AC_CHECK_MEMBERS([struct dirent.d_type],,,
[#include <dirent.h>])
+#
+# regex
+#
+if test "x$ac_cv_func_regcomp" = "xyes" -a "x$ac_cv_func_regerror" = "xyes" -a "x$ac_cv_func_regexec" = "xyes" -a "x$ac_cv_func_regfree"; then
+ AC_DEFINE(USE_REGEX,,[Use regex])
+fi
#
# Checks for iconv
@@ -296,10 +329,6 @@ AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
#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])
-AC_CHECK_MEMBERS([TT_OS2.usLowerOpticalPointSize, TT_OS2.usUpperOpticalPointSize], [], [], [[
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_TRUETYPE_TABLES_H]])
CFLAGS="$fontconfig_save_cflags"
LIBS="$fontconfig_save_libs"
@@ -406,25 +435,6 @@ if test "$enable_libxml2" = "yes"; then
fi
#
-# Set default hinting
-#
-
-AC_ARG_WITH(default-hinting,
- [AC_HELP_STRING([--with-default-hinting=NAME],
- [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
- preferred_hinting="$withval", preferred_hinting=slight)
-
-case "$preferred_hinting" in
-none|slight|medium|full)
- PREFERRED_HINTING="$preferred_hinting"
- AC_SUBST(PREFERRED_HINTING)
- ;;
-*)
- AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
- ;;
-esac
-
-#
# Set default font directory
#
@@ -521,7 +531,7 @@ AC_ARG_WITH(cache-dir,
case $fc_cachedir in
no|yes)
if test "$os_win32" = "yes"; then
- fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
+ fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
else
fc_cachedir='${localstatedir}/cache/${PACKAGE}'
fi
@@ -704,7 +714,6 @@ dnl Figure out what cache format suffix to use for this architecture
AC_C_BIGENDIAN
AC_CHECK_SIZEOF([void *])
AC_CHECK_ALIGNOF([double])
-AC_CHECK_ALIGNOF([void *])
dnl include the header file for workaround of miscalculating size on autoconf
dnl particularly for fat binaries
@@ -721,7 +730,6 @@ Makefile
fontconfig/Makefile
fc-lang/Makefile
fc-glyphname/Makefile
-fc-blanks/Makefile
fc-case/Makefile
src/Makefile
conf.d/Makefile
diff --git a/chromium/third_party/fontconfig/src/doc/Makefile.am b/chromium/third_party/fontconfig/src/doc/Makefile.am
index 9141ab2364f..78a7cdbf1e2 100644
--- a/chromium/third_party/fontconfig/src/doc/Makefile.am
+++ b/chromium/third_party/fontconfig/src/doc/Makefile.am
@@ -81,11 +81,9 @@ DOC_FUNCS_FNCS = \
fcobjectset.fncs \
fcobjecttype.fncs \
fcpattern.fncs \
- fcrange.fncs \
fcstring.fncs \
fcstrset.fncs \
fcvalue.fncs \
- fcweight.fncs \
$(NULL)
SGML_FILES = \
fontconfig-user.sgml \
diff --git a/chromium/third_party/fontconfig/src/doc/fccache.fncs b/chromium/third_party/fontconfig/src/doc/fccache.fncs
index 34ce63f2780..ca8ffa03c0d 100644
--- a/chromium/third_party/fontconfig/src/doc/fccache.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fccache.fncs
@@ -74,7 +74,6 @@ FcCacheCopySet.
@PURPOSE@
This tries to clean up the cache directory of <parameter>cache_dir</parameter>.
This returns FcTrue if the operation is successfully complete. otherwise FcFalse.
-@SINCE@ 2.9.91
@@
@RET@ void
@@ -84,5 +83,4 @@ This returns FcTrue if the operation is successfully complete. otherwise FcFalse
@DESC@
This tries to create CACHEDIR.TAG file at the cache directory registered
to <parameter>config</parameter>.
-@SINCE@ 2.9.91
@@
diff --git a/chromium/third_party/fontconfig/src/doc/fccharset.fncs b/chromium/third_party/fontconfig/src/doc/fccharset.fncs
index 7245a2a0ee5..efcd0ccf15d 100644
--- a/chromium/third_party/fontconfig/src/doc/fccharset.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fccharset.fncs
@@ -60,7 +60,6 @@ running out of memory.
<function>FcCharSetDelChar</function> deletes a single Unicode char from the set,
returning FcFalse on failure, either as a result of a constant set or from
running out of memory.
-@SINCE@ 2.9.0
@@
@RET@ FcCharSet *
diff --git a/chromium/third_party/fontconfig/src/doc/fcconfig.fncs b/chromium/third_party/fontconfig/src/doc/fcconfig.fncs
index a2ce5c84db2..0491a566f48 100644
--- a/chromium/third_party/fontconfig/src/doc/fcconfig.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fcconfig.fncs
@@ -59,8 +59,7 @@ cause a new configuration to be created for use as current configuration.
@PURPOSE@ Set configuration as default
@DESC@
Sets the current default configuration to <parameter>config</parameter>. Implicitly calls
-FcConfigBuildFonts if necessary, and FcConfigReference() to inrease the reference count
-in <parameter>config</parameter> since 2.12.0, returning FcFalse if that call fails.
+FcConfigBuildFonts if necessary, returning FcFalse if that call fails.
@@
@RET@ FcConfig *
@@ -219,9 +218,8 @@ If <parameter>config</parameter> is NULL, the current configuration is used.
@PURPOSE@ Add font file to font database
@DESC@
Adds an application-specific font to the configuration. Returns FcFalse
-if the fonts cannot be added (due to allocation failure or no fonts found).
-Otherwise returns FcTrue. If <parameter>config</parameter> is NULL,
-the current configuration is used.
+if the fonts cannot be added (due to allocation failure). Otherwise returns FcTrue.
+If <parameter>config</parameter> is NULL, the current configuration is used.
@@
@RET@ FcBool
@@ -232,9 +230,8 @@ the current configuration is used.
@DESC@
Scans the specified directory for fonts, adding each one found to the
application-specific set of fonts. Returns FcFalse
-if the fonts cannot be added (due to allocation failure).
-Otherwise returns FcTrue. If <parameter>config</parameter> is NULL,
-the current configuration is used.
+if the fonts cannot be added (due to allocation failure). Otherwise returns FcTrue.
+If <parameter>config</parameter> is NULL, the current configuration is used.
@@
@RET@ void
@@ -381,7 +378,6 @@ parse error, semantic error or allocation failure. Otherwise returns FcTrue.
@PURPOSE@ Obtain the system root directory
@DESC@
Obtrains the system root directory in 'config' if available.
-@SINCE@ 2.10.92
@@
@RET@ void
@@ -394,6 +390,5 @@ Set 'sysroot' as the system root directory. fontconfig prepend 'sysroot'
to the cache directories in order to allow people to generate caches at
the build time. Note that this causes changing current config. i.e.
this function calls FcConfigSetCurrent() internally.
-@SINCE@ 2.10.92
@@
diff --git a/chromium/third_party/fontconfig/src/doc/fcdircache.fncs b/chromium/third_party/fontconfig/src/doc/fcdircache.fncs
index faeba292802..24dea8bc56b 100644
--- a/chromium/third_party/fontconfig/src/doc/fcdircache.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fcdircache.fncs
@@ -55,17 +55,6 @@ FcDirCacheRead.
@@
@RET@ FcCache *
-@FUNC@ FcDirCacheRescan
-@TYPE1@ const FcChar8 * @ARG1@ dir
-@TYPE2@ FcConfig * @ARG2@ config
-@PURPOSE@ Re-scan a directory cache
-@DESC@
-Re-scan directories only at <parameter>dir</parameter> and update the cache.
-returns NULL if failed.
-@SINCE@ 2.11.1
-@@
-
-@RET@ FcCache *
@FUNC@ FcDirCacheRead
@TYPE1@ const FcChar8 * @ARG1@ dir
@TYPE2@ FcBool% @ARG2@ force
diff --git a/chromium/third_party/fontconfig/src/doc/fcformat.fncs b/chromium/third_party/fontconfig/src/doc/fcformat.fncs
index 71b866b88a7..c136e8cf27c 100644
--- a/chromium/third_party/fontconfig/src/doc/fcformat.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fcformat.fncs
@@ -305,5 +305,4 @@ For example, the format "%{family|downcase|delete( )}\n" will expand
to the values of the family element in <parameter>pattern</parameter>,
lower-cased and with spaces removed.
-@SINCE@ 2.9.0
@@
diff --git a/chromium/third_party/fontconfig/src/doc/fclangset.fncs b/chromium/third_party/fontconfig/src/doc/fclangset.fncs
index c7ed83b3448..c08d60c7096 100644
--- a/chromium/third_party/fontconfig/src/doc/fclangset.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fclangset.fncs
@@ -68,7 +68,6 @@ two or three letter language from ISO 639 and Tt is a territory from ISO
<parameter>lang</parameter> should be of the form Ll-Tt where Ll is a
two or three letter language from ISO 639 and Tt is a territory from ISO
3166.
-@SINCE@ 2.9.0
@@
@RET@ FcLangSet *
@@ -78,7 +77,6 @@ two or three letter language from ISO 639 and Tt is a territory from ISO
@PURPOSE@ Add langsets
@DESC@
Returns a set including only those languages found in either <parameter>ls_a</parameter> or <parameter>ls_b</parameter>.
-@SINCE@ 2.9.0
@@
@RET@ FcLangSet *
@@ -88,7 +86,6 @@ Returns a set including only those languages found in either <parameter>ls_a</pa
@PURPOSE@ Subtract langsets
@DESC@
Returns a set including only those languages found in <parameter>ls_a</parameter> but not in <parameter>ls_b</parameter>.
-@SINCE@ 2.9.0
@@
@RET@ FcLangResult
@@ -164,8 +161,6 @@ has no matching language, this function returns FcLangDifferentLang.
Returns a string set of the default languages according to the environment variables on the system.
This function looks for them in order of FC_LANG, LC_ALL, LC_CTYPE and LANG then.
If there are no valid values in those environment variables, "en" will be set as fallback.
-@SINCE@ 2.9.91
-@@
@RET@ FcStrSet *
@FUNC@ FcLangSetGetLangs
@@ -189,7 +184,6 @@ Returns a string set of all known languages.
@PURPOSE@ Normalize the language string
@DESC@
Returns a string to make <parameter>lang</parameter> suitable on fontconfig.
-@SINCE@ 2.10.91
@@
@RET@ const FcCharSet *
diff --git a/chromium/third_party/fontconfig/src/doc/fcpattern.fncs b/chromium/third_party/fontconfig/src/doc/fcpattern.fncs
index 1049d77af07..1df1c4f6184 100644
--- a/chromium/third_party/fontconfig/src/doc/fcpattern.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fcpattern.fncs
@@ -181,21 +181,12 @@ values added to the list have binding <parameter>weak</parameter> instead of <pa
@TYPE2+++++++@ const char * @ARG2+++++++@ object
@TYPE3+++++++@ const FcLangSet * @ARG3+++++++@ l
-@PROTOTYPE++++++++@
-@RET++++++++@ FcBool
-@FUNC++++++++@ FcPatternAddRange
-@TYPE1++++++++@ FcPattern * @ARG1++++++++@ p
-@TYPE2++++++++@ const char * @ARG2++++++++@ object
-@TYPE3++++++++@ const FcRange * @ARG3++++++++@ r
-
@PURPOSE@ Add a typed value to a pattern
@DESC@
These are all convenience functions that insert objects of the specified
type into the pattern. Use these in preference to FcPatternAdd as they
will provide compile-time typechecking. These all append values to
any existing list of values.
-
-<function>FcPatternAddRange</function> are available since 2.11.91.
@@
@RET@ FcResult
@@ -266,24 +257,16 @@ within the pattern directly. Applications must not free this value.
@FUNC++++++@ FcPatternGetFTFace
@TYPE1++++++@ FcPattern * @ARG1++++++@ p
@TYPE2++++++@ const char * @ARG2++++++@ object
-@TYPE3++++++@ int% @ARG3++++++@ n
-@TYPE4++++++@ FT_Face * @ARG4++++++@ f
+@TYPE3+++++@ int% @ARG3+++++@ n
+@TYPE3++++++@ FT_Face * @ARG3++++++@ f
@PROTOTYPE+++++++@
@RET+++++++@ FcResult
@FUNC+++++++@ FcPatternGetLangSet
@TYPE1+++++++@ FcPattern * @ARG1+++++++@ p
@TYPE2+++++++@ const char * @ARG2+++++++@ object
-@TYPE3+++++++@ int% @ARG3+++++++@ n
-@TYPE4+++++++@ FcLangSet ** @ARG4+++++++@ l
-
-@PROTOTYPE++++++++@
-@RET++++++++@ FcResult
-@FUNC++++++++@ FcPatternGetRange
-@TYPE1++++++++@ FcPattern * @ARG1++++++++@ p
-@TYPE2++++++++@ const char * @ARG2++++++++@ object
-@TYPE3++++++++@ int% @ARG3++++++++@ n
-@TYPE4++++++++@ FcRange ** @ARG4++++++++@ r
+@TYPE3+++++@ int% @ARG3+++++@ n
+@TYPE3+++++++@ FcLangSet ** @ARG3+++++++@ l
@PURPOSE@ Return a typed value from a pattern
@DESC@
@@ -292,8 +275,6 @@ returned data is of the expected type. They return FcResultTypeMismatch if
this is not the case. Note that these (like FcPatternGet) do not make a
copy of any data structure referenced by the return value. Use these
in preference to FcPatternGet to provide compile-time typechecking.
-
-<function>FcPatternGetRange</function> are available since 2.11.91.
@@
@RET@ FcPattern *
diff --git a/chromium/third_party/fontconfig/src/doc/fcrange.fncs b/chromium/third_party/fontconfig/src/doc/fcrange.fncs
deleted file mode 100644
index ba76f65b284..00000000000
--- a/chromium/third_party/fontconfig/src/doc/fcrange.fncs
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * fontconfig/doc/fcrange.fncs
- *
- * Copyright © 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
-@RET@ FcRange *
-@FUNC@ FcRangeCopy
-@TYPE1@ const FcRange * @ARG1@ range
-@PURPOSE@ Copy a range object
-@DESC@
-<function>FcRangeCopy</function> creates a new FcRange object and
-populates it with the contents of <parameter>range</parameter>.
-@SINCE@ 2.11.91
-@@
-
-@RET@ FcRange *
-@FUNC@ FcRangeCreateDouble
-@TYPE1@ double @ARG1@ begin
-@TYPE2@ double @ARG2@ end
-@PURPOSE@ create a range object for double
-@DESC@
-<function>FcRangeCreateDouble</function> creates a new FcRange object with
-double sized value.
-@SINCE@ 2.11.91
-@@
-
-@RET@ FcRange *
-@FUNC@ FcRangeCreateInteger
-@TYPE1@ int @ARG1@ begin
-@TYPE2@ int @ARG2@ end
-@PURPOSE@ create a range object for integer
-@DESC@
-<function>FcRangeCreateInteger</function> creates a new FcRange object with
-integer sized value.
-@SINCE@ 2.11.91
-@@
-
-@RET@ void
-@FUNC@ FcRangeDestroy
-@TYPE1@ FcRange * @ARG1@ range
-@PURPOSE@ destroy a range object
-@DESC@
-<function>FcRangeDestroy</function> destroys a FcRange object, freeing
-all memory associated with it.
-@SINCE@ 2.11.91
-@@
-
-@RET@ FcBool
-@FUNC@ FcRangeGetDouble
-@TYPE1@ const FcRange * @ARG1@ range
-@TYPE2@ double * @ARG2@ begin
-@TYPE3@ double * @ARG3@ end
-@PURPOSE@ Get the range in double
-@DESC@
-Returns in <parameter>begin</parameter> and <parameter>end</parameter> as the range.
-@SINCE@ 2.11.91
-@@
diff --git a/chromium/third_party/fontconfig/src/doc/fcstrset.fncs b/chromium/third_party/fontconfig/src/doc/fcstrset.fncs
index 67aa61ac021..b96489a43f6 100644
--- a/chromium/third_party/fontconfig/src/doc/fcstrset.fncs
+++ b/chromium/third_party/fontconfig/src/doc/fcstrset.fncs
@@ -104,7 +104,6 @@ Creates an iterator to list the strings in <parameter>set</parameter>.
@PURPOSE@ get first string in iteration
@DESC@
Returns the first string in <parameter>list</parameter>.
-@SINCE@ 2.11.0
@@
@RET@ FcChar8 *
diff --git a/chromium/third_party/fontconfig/src/doc/fcweight.fncs b/chromium/third_party/fontconfig/src/doc/fcweight.fncs
deleted file mode 100644
index 2872dd66cb0..00000000000
--- a/chromium/third_party/fontconfig/src/doc/fcweight.fncs
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * fontconfig/doc/fcweight.fncs
- *
- * 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
-@RET@ int
-@FUNC@ FcWeightFromOpenType
-@TYPE1@ int @ARG1@ ot_weight
-@PURPOSE@ Convert from OpenType weight values to fontconfig ones
-@DESC@
-<function>FcWeightFromOpenType</function> returns an integer value
-to use with FC_WEIGHT, from an integer in the 1..1000 range, resembling
-the numbers from OpenType specification's OS/2 usWeight numbers, which
-are also similar to CSS font-weight numbers. If input is negative,
-zero, or greater than 1000, returns -1. This function linearly interpolates
-between various FC_WEIGHT_* constants. As such, the returned value does not
-necessarily match any of the predefined constants.
-@SINCE@ 2.11.91
-@@
-
-@RET@ int
-@FUNC@ FcWeightToOpenType
-@TYPE1@ int @ARG1@ ot_weight
-@PURPOSE@ Convert from fontconfig weight values to OpenType ones
-@DESC@
-<function>FcWeightToOpenType</function> is the inverse of
-<function>FcWeightFromOpenType</function>. If the input is less than
-FC_WEIGHT_THIN or greater than FC_WEIGHT_EXTRABLACK, returns -1. Otherwise
-returns a number in the range 1 to 1000.
-@SINCE@ 2.11.91
-@@
diff --git a/chromium/third_party/fontconfig/src/doc/fontconfig-devel.sgml b/chromium/third_party/fontconfig/src/doc/fontconfig-devel.sgml
index d0ec8a579f6..7306d79247a 100644
--- a/chromium/third_party/fontconfig/src/doc/fontconfig-devel.sgml
+++ b/chromium/third_party/fontconfig/src/doc/fontconfig-devel.sgml
@@ -16,11 +16,9 @@
<!ENTITY fcobjectset SYSTEM "fcobjectset.sgml">
<!ENTITY fcobjecttype SYSTEM "fcobjecttype.sgml">
<!ENTITY fcpattern SYSTEM "fcpattern.sgml">
-<!ENTITY fcrange SYSTEM "fcrange.sgml">
<!ENTITY fcstring SYSTEM "fcstring.sgml">
<!ENTITY fcstrset SYSTEM "fcstrset.sgml">
<!ENTITY fcvalue SYSTEM "fcvalue.sgml">
-<!ENTITY fcweight SYSTEM "fcweight.sgml">
<!ENTITY version SYSTEM "version.sgml">
]>
<!--
@@ -176,9 +174,7 @@ convenience for the application's rendering mechanism.
outline FC_OUTLINE Bool Whether the glyphs are outlines
scalable FC_SCALABLE Bool Whether glyphs can be scaled
scale FC_SCALE Double Scale factor for point->pixel
- conversions (deprecated)
- symbol FC_SYMBOL Bool Whether font uses MS symbol-font encoding
- color FC_COLOR Bool Whether any glyphs have color
+ conversions
dpi FC_DPI Double Target dots per inch
rgba FC_RGBA Int unknown, rgb, bgr, vrgb,
vbgr, none - subpixel geometry
@@ -192,13 +188,8 @@ convenience for the application's rendering mechanism.
fontversion FC_FONTVERSION Int Version number of the font
capability FC_CAPABILITY String List of layout capabilities in
the font
- fontformat FC_FONTFORMAT String String name of the font format
embolden FC_EMBOLDEN Bool Rasterizer should
synthetically embolden the font
- embeddedbitmap FC_EMBEDDED_BITMAP Bool Use the embedded bitmap instead
- of the outline
- decorative FC_DECORATIVE Bool Whether the style is a decorative
- variant
fontfeatures FC_FONT_FEATURES String List of extra feature tags in
OpenType to be enabled
namelang FC_NAMELANG String Language name to be used for the
@@ -206,7 +197,7 @@ convenience for the application's rendering mechanism.
stylelang and fullnamelang
prgname FC_PRGNAME String Name of the running program
hash FC_HASH String SHA256 hash value of the font data
- with "sha256:" prefix (deprecated)
+ with "sha256:" prefix.
postscriptname FC_POSTSCRIPT_NAME String Font name in PostScript
</programlisting>
</sect2>
@@ -517,12 +508,6 @@ FcMatrix structures hold an affine transformation in matrix form.
</para>
&fcmatrix;
</sect2>
- <sect2><title>FcRange</title>
- <para>
-An FcRange holds two variables to indicate a range in between.
- </para>
- &fcrange;
- </sect2>
<sect2><title>FcConfig</title>
<para>
An FcConfig object holds the internal representation of a configuration.
@@ -544,12 +529,6 @@ Provides for application-specified symbolic constants for font names.
</para>
&fcconstant;
</sect2>
- <sect2><title>FcWeight</title>
- <para>
-Maps weights to and from OpenType weights.
- </para>
- &fcweight;
- </sect2>
<sect2><title>FcBlanks</title>
<para>
An FcBlanks object holds a list of Unicode chars which are expected to
diff --git a/chromium/third_party/fontconfig/src/doc/fontconfig-user.sgml b/chromium/third_party/fontconfig/src/doc/fontconfig-user.sgml
index 30e7b871af1..775d1f725c2 100644
--- a/chromium/third_party/fontconfig/src/doc/fontconfig-user.sgml
+++ b/chromium/third_party/fontconfig/src/doc/fontconfig-user.sgml
@@ -119,8 +119,7 @@ convenience for the applications' rendering mechanism.
rasterizer String Which rasterizer is in use (deprecated)
outline Bool Whether the glyphs are outlines
scalable Bool Whether glyphs can be scaled
- color Bool Whether any glyphs have color
- scale Double Scale factor for point->pixel conversions (deprecated)
+ scale Double Scale factor for point->pixel conversions
dpi Double Target dots per inch
rgba Int unknown, rgb, bgr, vrgb, vbgr,
none - subpixel geometry
@@ -131,15 +130,9 @@ convenience for the applications' rendering mechanism.
font supports
fontversion Int Version number of the font
capability String List of layout capabilities in the font
- fontformat String String name of the font format
embolden Bool Rasterizer should synthetically embolden the font
- embeddedbitmap Bool Use the embedded bitmap instead of the outline
- decorative Bool Whether the style is a decorative variant
fontfeatures String List of the feature tags in OpenType to be enabled
- namelang String Language name to be used for the default value of
- familylang, stylelang, and fullnamelang
prgname String String Name of the running program
- postscriptname String Font family name in PostScript
</programlisting>
</refsect2>
<refsect2>
@@ -258,7 +251,7 @@ debugging messages.
MEMORY 512 Monitor fontconfig memory usage
CONFIG 1024 Monitor which config files are loaded
LANGSET 2048 Dump char sets used to construct lang values
- MATCH2 4096 Display font-matching transformation in patterns
+ OBJTYPES 4096 Display message when value typechecks fail
</programlisting>
<para>
Add the value of the desired debug levels together and assign that (in
@@ -321,9 +314,9 @@ the configuration file, the directory that can be accessed first in the list
will be used to store the cache files. If it starts with '~', it refers to
a directory in the users home directory. If 'prefix' is set to "xdg", the value in the XDG_CACHE_HOME environment variable will be added as the path prefix. please see XDG Base Directory Specification for more details.
The default directory is ``$XDG_CACHE_HOME/fontconfig'' and it contains the cache files
-named ``<literal>&lt;hash value&gt;</literal>-<literal>&lt;architecture&gt;</literal>.cache-<literal>&lt;version&gt;</literal>'',
-where <literal>&lt;version&gt;</literal> is the fontconfig cache file
-version number (currently 7).
+named ``<literal>&lt;hash value&gt;</literal>-<literal>&lt;architecture&gt;</literal>.cache-<literal>&lt;version</literal>'',
+where <literal>&lt;version&gt;</literal> is the font configureation file
+version number (currently 3).
</para></refsect2>
<refsect2><title><literal>&lt;include ignore_missing="no" prefix="default"&gt;</literal></title><para>
This element contains the name of an additional configuration file or
@@ -480,8 +473,6 @@ symbolic names for common font values:
extralight weight 40
ultralight weight 40
light weight 50
- demilight weight 55
- semilight weight 55
book weight 75
regular weight 80
normal weight 80
@@ -787,10 +778,6 @@ is used to override the default configuration directory.
is used to output the detailed debugging messages. see <link linkend="debug">Debugging Applications</link> section for more details.
</para>
<para>
-<emphasis>FC_DBG_MATCH_FILTER</emphasis>
-is used to filter out the patterns. this takes a comma-separated list of object names and effects only when FC_DEBUG has MATCH2. see <link linkend="debug">Debugging Applications</link> section for more details.
- </para>
- <para>
<emphasis>FONTCONFIG_USE_MMAP</emphasis>
is used to control the use of mmap(2) for the cache files if available. this take a boolean value. fontconfig will checks if the cache files are stored on the filesystem that is safe to use mmap(2). explicitly setting this environment variable will causes skipping this check and enforce to use or not use mmap(2) anyway.
</para>
diff --git a/chromium/third_party/fontconfig/src/doc/func.sgml b/chromium/third_party/fontconfig/src/doc/func.sgml
index f076baff291..73e7761ce39 100644
--- a/chromium/third_party/fontconfig/src/doc/func.sgml
+++ b/chromium/third_party/fontconfig/src/doc/func.sgml
@@ -33,7 +33,6 @@
<refentrytitle>@FUNC@</refentrytitle>
@;@
<manvolnum>3</manvolnum>
- <refmiscinfo class="software">Fontconfig &version;</refmiscinfo>
</refmeta>
<refnamediv>
@{PROTOTYPE@
@@ -83,9 +82,9 @@
@DESC@
</para>
</refsect1>
-@?SINCE@
- <refsect1><title>Since</title>
- <para>version @SINCE@</para>
+ <refsect1><title>Version</title>
+ <para>
+Fontconfig version &version;
+ </para>
</refsect1>
-@;@
</refentry>
diff --git a/chromium/third_party/fontconfig/src/fc-blanks/Makefile.am b/chromium/third_party/fontconfig/src/fc-blanks/Makefile.am
deleted file mode 100644
index 2b2075f8b1f..00000000000
--- a/chromium/third_party/fontconfig/src/fc-blanks/Makefile.am
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- encoding: utf-8 -*-
-#
-# Copyright © 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 the author(s) not be used in
-# advertising or publicity pertaining to distribution of the software without
-# specific, written prior permission. The authors make no
-# representations about the suitability of this software for any purpose. It
-# is provided "as is" without express or implied warranty.
-#
-# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-# EVENT SHALL THE AUTHOR(S) 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.
-
-NULL =
-BLANKSPY = fc-blanks.py
-BLANKS_H = fcblanks.h
-TMPL = fcblanks.tmpl.h
-noinst_SCRIPTS = $(BLANKSPY)
-noinst_HEADERS = $(BLANKS_H)
-
-$(BLANKS_H): $(TMPL) $(BLANKSPY)
-if HAVE_PYTHON
- $(AM_V_GEN) $(PYTHON) $(srcdir)/$(BLANKSPY) < $< > $(BLANKS_H).tmp && \
- mv $(BLANKS_H).tmp $(BLANKS_H) || ($(RM) $(BLANKS_H).tmp && false)
-else
- @echo "No python installed. please install python to build $(BLANKS_H)."
- @false
-endif
-
-EXTRA_DIST = \
- $(BLANKSPY) \
- $(BLANKS_H) \
- $(TMPL) \
- $(NULL)
-DISTCLEANFILES = $(BLANKS_H)
-
--include $(top_srcdir)/git.mk
diff --git a/chromium/third_party/fontconfig/src/fc-blanks/fc-blanks.py b/chromium/third_party/fontconfig/src/fc-blanks/fc-blanks.py
deleted file mode 100755
index cc23cde2d6f..00000000000
--- a/chromium/third_party/fontconfig/src/fc-blanks/fc-blanks.py
+++ /dev/null
@@ -1,156 +0,0 @@
-#! /usr/bin/python
-
-from __future__ import absolute_import
-from __future__ import print_function
-try:
- from urllib2 import urlopen
- from urllib2 import URLError
-except ImportError:
- from urllib.request import urlopen
- from urllib.error import URLError
-
-import sys
-import os
-from lxml import html
-from six.moves import range
-
-datafile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'list-unicodeset.html')
-try:
- fp = urlopen('http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[%3AGC%3DZs%3A][%3ADI%3A]&abb=on&ucd=on&esc=on&g')
- data = fp.read()
- fp.close()
- fp = open(datafile, 'wb');
- fp.write(data);
- fp.close();
-except URLError:
- # fall back reading the static data in repo
- try:
- fp = open(datafile)
- data = fp.read()
- fp.close()
- except IOError:
- sys.stderr.write("Error: No static data to generate the blank data. please make sure the network connection is reachable to Unicode.org\n")
- sys.exit(1)
-
-dom = html.fromstring(data)
-x = dom.xpath('/html/body/form/p/text()')
-p = x[1]
-if p[0] == '[' and p[-1] == ']':
- p = p.replace('[', '').replace(']', '')
-else:
- sys.exit(1)
-fescape = False
-funicode = False
-frange = False
-fprocess = False
-v = 0
-vbegin = 0
-vend = 0
-n = 0
-l = []
-
-def insert(db, begin, end):
- db.append([begin, end])
-
-for i in p:
- if i == '\\':
- if n > 0:
- if frange == True and funicode == True:
- vend = v
- insert(l, vbegin, vend)
- fprocess = True
- elif funicode == True:
- vbegin = v
- vend = v
- insert(l, vbegin, vend)
- fprocess = True
- funicode = False
- fescape = True
- elif i.lower() == 'u' and fescape == True:
- funicode = True
- fescape = False
- elif i >= '0' and i <= '9' or i.lower() >= 'a' and i.lower() <= 'f':
- if fescape == True:
- raise RuntimeError("Unexpected escape code")
- if funicode == True:
- v <<= 4
- v += int(i, 16)
- else:
- raise RuntimeError("Unable to parse Unicode")
- elif i == ' ':
- if fescape == True:
- funicode = True
- fescape = False
- v = 0x20
- if frange == True and funicode == True:
- vend = v
- insert(l, vbegin, vend)
- fprocess = True
- elif funicode == True:
- vbegin = v
- vend = v
- insert(l, vbegin, vend)
- fprocess = True
- funicode = False
- frange = False
- elif i == '-':
- if fescape == True:
- raise RuntimeError("Unexpected escape code")
- vbegin = v
- v = 0
- funicode = False
- frange = True
- else:
- raise RuntimeError("Unable to parse Unicode: %s" % i)
-
- if fprocess == True:
- vbegin = 0
- vend = 0
- v = 0
- fprocess = False
- funicode = False
- frange = False
- n += 1
-
-if frange == True and funicode == True:
- vend = v
- insert(l, vbegin, vend)
-elif funicode == True:
- vbegin = vend = v
- insert(l, vbegin, vend)
-
-ncode = 0
-for i in l:
- ncode += (i[1] - i[0] + 1)
-
-a = int(x[0].split(' ')[0].replace(',', ''))
-if a != ncode:
- sys.stderr.write("Unexpected the amount of code points: %d (expected %d)\n" % (ncode, a))
- sys.exit(1)
-
-# exception; BRAILLE PATTERN BLANK
-insert(l, 0x2800, 0x2800)
-
-while True:
- s = sys.stdin.readline().rstrip()
- if s == "@@@":
- break
- print(s)
-
-print("static FcChar32 _fcBlanks[%s] = {" % (ncode + 1))
-k = 0
-for i in sorted(l, key=lambda a: a[0]):
- for j in range(i[0], i[1] + 1):
- if k != 0:
- print(",")
- print(" 0x%04x" % j, end=' ')
- k += 1
-
-print("};")
-print('''
-static FcBlanks fcBlanks = {
- %s,
- -1,
- _fcBlanks
-};
-''' % (ncode + 1))
diff --git a/chromium/third_party/fontconfig/src/fc-blanks/fcblanks.tmpl.h b/chromium/third_party/fontconfig/src/fc-blanks/fcblanks.tmpl.h
deleted file mode 100644
index 2bcaa21d6c1..00000000000
--- a/chromium/third_party/fontconfig/src/fc-blanks/fcblanks.tmpl.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * fontconfig/fc-blanks/fcblanks.tmpl.h
- *
- * Copyright © 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
-
-@@@
diff --git a/chromium/third_party/fontconfig/src/fc-blanks/list-unicodeset.html b/chromium/third_party/fontconfig/src/fc-blanks/list-unicodeset.html
deleted file mode 100644
index 6e95efaf0e8..00000000000
--- a/chromium/third_party/fontconfig/src/fc-blanks/list-unicodeset.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="index.css">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<title>Unicode Utilities: UnicodeSet</title>
-</head>
-<body>
-
-<h1>Unicode Utilities: UnicodeSet </h1>
-<p><a target="help" href="http://cldr.unicode.org/unicode-utilities/list-unicodeset"><b>help</b></a> | <a target="character" href="character.jsp">character</a>
- | <a target="properties" href="properties.jsp">properties</a>
- | <a target="confusables" href="confusables.jsp">confusables</a>
- | <a target="list" href="list-unicodeset.jsp">unicode-set</a>
- | <a target="compare" href="unicodeset.jsp">compare-sets</a>
- | <a target="regex" href="regex.jsp">regex</a>
- | <a target="bnf" href="bnf.jsp">bnf-regex</a>
- | <a target="breaks" href="breaks.jsp">breaks</a>
- | <a target="transform" href="transform.jsp">transform</a>
- | <a target="bidi" href="bidi.jsp">bidi</a>
- | <a target="idna" href="idna.jsp">idna</a>
- | <a target="languageid" href="languageid.jsp">languageid</a></p>
-<form name="myform">
- <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width:100%">
- <tr>
- <th style="width: 50%">Input</th>
- </tr>
- <tr>
- <td><textarea name="a" rows="8" cols="10" style="width: 100%">[:GC=Zs:][:DI:]</textarea></td>
- </tr>
- <tr>
- <td>
- <input id='main' type="submit" value="Show Set" onClick="window.location.href='list-unicodeset.jsp?a='+document.getElementById('main').value"/>&nbsp;&nbsp;
- <input type="checkbox" checked name="abb"><label for="abb">Abbreviate</label>&nbsp;&nbsp;
- <input type="checkbox" name="c"><label for="c">Collate</label>&nbsp;&nbsp;
- <input type="checkbox" checked name="ucd"><label for="ucd">UCD format</label>&nbsp;&nbsp;
- <input type="checkbox" checked name="esc"><label for="esc">Escape</label>&nbsp;&nbsp;
- <label for="g">Group by:</label>
- <input type="text" checked name="g" size="25" value="">
- <label for="i">Info:</label>
- <input type="text" checked name="i" size="25" value="">
- </td>
- </tr>
-</table>
- <p>4,190 Code Points</p>
- <hr>
- <p>[\ \u00A0\u00AD\u034F\u061C\u115F\u1160\u1680\u17B4\u17B5\u180B-\u180E\u2000-\u200F\u202A-\u202F\u205F-\u206F\u3000\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8\U0001BCA0-\U0001BCA3\U0001D173-\U0001D17A\U000E0000-\U000E0FFF]</p>
- <hr>
- <table width='100%'><tr><td colSpan='4'><tr><td class='charCell' width='3m'>   </td><td width='7m'><code><a target='c' href='character.jsp?a=0020'>0020</a></code></td><td>SPACE</td></tr>
-<tr><td class='charCell' width='3m'>   </td><td width='7m'><code><a target='c' href='character.jsp?a=00A0'>00A0</a></code></td><td>NO-BREAK SPACE</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=00AD'>00AD</a></code></td><td>SOFT HYPHEN</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=034F'>034F</a></code></td><td>COMBINING GRAPHEME JOINER</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=061C'>061C</a></code></td><td>ARABIC LETTER MARK</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=115F'>115F</a></code></td><td>HANGUL CHOSEONG FILLER</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=1160'>1160</a></code></td><td>HANGUL JUNGSEONG FILLER</td></tr>
-<tr><td class='charCell' width='3m'>   </td><td width='7m'><code><a target='c' href='character.jsp?a=1680'>1680</a></code></td><td>OGHAM SPACE MARK</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=17B4'>17B4</a></code></td><td>KHMER VOWEL INHERENT AQ</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=17B5'>17B5</a></code></td><td>KHMER VOWEL INHERENT AA</td></tr>
-<code><a target='c' href='character.jsp?a=180B'>180B</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=180E'>180E</a></code></td><td>MONGOLIAN VOWEL SEPARATOR</td></tr>
-<code><a target='c' href='character.jsp?a=2000'>2000</a></code>..<tr><td class='charCell' width='3m'> ‎‏‎ </td><td width='7m'><code><a target='c' href='character.jsp?a=200F'>200F</a></code></td><td>RIGHT-TO-LEFT MARK</td></tr>
-<code><a target='c' href='character.jsp?a=202A'>202A</a></code>..<tr><td class='charCell' width='3m'>   </td><td width='7m'><code><a target='c' href='character.jsp?a=202F'>202F</a></code></td><td>NARROW NO-BREAK SPACE</td></tr>
-<code><a target='c' href='character.jsp?a=205F'>205F</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=206F'>206F</a></code></td><td>NOMINAL DIGIT SHAPES</td></tr>
-<tr><td class='charCell' width='3m'>   </td><td width='7m'><code><a target='c' href='character.jsp?a=3000'>3000</a></code></td><td>IDEOGRAPHIC SPACE</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=3164'>3164</a></code></td><td>HANGUL FILLER</td></tr>
-<code><a target='c' href='character.jsp?a=FE00'>FE00</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=FE0F'>FE0F</a></code></td><td>VARIATION SELECTOR-16</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=FEFF'>FEFF</a></code></td><td>ZERO WIDTH NO-BREAK SPACE</td></tr>
-<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=FFA0'>FFA0</a></code></td><td>HALFWIDTH HANGUL FILLER</td></tr>
-<code><a target='c' href='character.jsp?a=FFF0'>FFF0</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=FFF8'>FFF8</a></code></td><td><i>&lt;unassigned-FFF8&gt;</i></td></tr>
-<code><a target='c' href='character.jsp?a=1BCA0'>1BCA0</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=1BCA3'>1BCA3</a></code></td><td>SHORTHAND FORMAT UP STEP</td></tr>
-<code><a target='c' href='character.jsp?a=1D173'>1D173</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=1D17A'>1D17A</a></code></td><td>MUSICAL SYMBOL END PHRASE</td></tr>
-<code><a target='c' href='character.jsp?a=E0000'>E0000</a></code>..<tr><td class='charCell' width='3m'>  </td><td width='7m'><code><a target='c' href='character.jsp?a=E0FFF'>E0FFF</a></code></td><td><i>&lt;unassigned-E0FFF&gt;</i></td></tr>
-</td></tr></table>
-</form>
-<hr>
-<p style="font-size:80%"><b><a name="fonts">Fonts and Display.</a></b> If you don't have a good set of Unicode fonts (and modern browser),
-you may not be able to read some of the characters.
-Some suggested fonts that you can add for coverage are:
-<a href="http://greekfonts.teilar.gr/" target="_blank">Unicode Fonts for Ancient Scripts</a>,
-<a href="https://www.google.com/get/noto/" target="_blank">Noto Fonts site</a>,
-<a href="http://www.alanwood.net/unicode/fonts.html" target="_blank">Large, multi-script Unicode fonts</a>.
-See also: <a href="http://www.unicode.org/help/display_problems.html" target="_blank">Unicode Display Problems</a>.</p>
-<p style="font-size:80%">Version 3.7;
-ICU version: 57.0.1.0;
-Unicode version: 8.0.0.0
-</p>
-<script type="text/javascript">
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try {
-var pageTracker = _gat._getTracker("UA-8314904-1");
-pageTracker._trackPageview();
-} catch(err) {}
-</script>
-<hr>
-</body>
-</html>
diff --git a/chromium/third_party/fontconfig/src/fc-cache/fc-cache.c b/chromium/third_party/fontconfig/src/fc-cache/fc-cache.c
index 0336073a347..af7ba6dd6a9 100644
--- a/chromium/third_party/fontconfig/src/fc-cache/fc-cache.c
+++ b/chromium/third_party/fontconfig/src/fc-cache/fc-cache.c
@@ -65,10 +65,9 @@
#define _GNU_SOURCE
#include <getopt.h>
const struct option longopts[] = {
- {"error-on-no-fonts", 0, 0, 'E'},
{"force", 0, 0, 'f'},
{"really-force", 0, 0, 'r'},
- {"sysroot", required_argument, 0, 'y'},
+ {"sysroot", 0, 0, 'y'},
{"system-only", 0, 0, 's'},
{"version", 0, 0, 'V'},
{"verbose", 0, 0, 'v'},
@@ -87,17 +86,16 @@ usage (char *program, int error)
{
FILE *file = error ? stderr : stdout;
#if HAVE_GETOPT_LONG
- fprintf (file, "usage: %s [-EfrsvVh] [-y SYSROOT] [--error-on-no-fonts] [--force|--really-force] [--sysroot=SYSROOT] [--system-only] [--verbose] [--version] [--help] [dirs]\n",
+ fprintf (file, "usage: %s [-frsvVh] [-y SYSROOT] [--force|--really-force] [--sysroot=SYSROOT] [--system-only] [--verbose] [--version] [--help] [dirs]\n",
program);
#else
- fprintf (file, "usage: %s [-EfrsvVh] [-y SYSROOT] [dirs]\n",
+ fprintf (file, "usage: %s [-frsvVh] [-y SYSROOT] [dirs]\n",
program);
#endif
fprintf (file, "Build font information caches in [dirs]\n"
"(all directories in font configuration by default).\n");
fprintf (file, "\n");
#if HAVE_GETOPT_LONG
- fprintf (file, " -E, --error-on-no-fonts raise an error if no fonts in a directory\n");
fprintf (file, " -f, --force scan directories with apparently valid caches\n");
fprintf (file, " -r, --really-force erase all existing caches, then rescan\n");
fprintf (file, " -s, --system-only scan system-wide directories only\n");
@@ -106,8 +104,6 @@ usage (char *program, int error)
fprintf (file, " -V, --version display font config version and exit\n");
fprintf (file, " -h, --help display this help and exit\n");
#else
- fprintf (file, " -E (error-on-no-fonts)\n");
- fprintf (file, " raise an error if no fonts in a directory\n");
fprintf (file, " -f (force) scan directories with apparently valid caches\n");
fprintf (file, " -r, (really force) erase all existing caches, then rescan\n");
fprintf (file, " -s (system) scan system-wide directories only\n");
@@ -122,7 +118,7 @@ usage (char *program, int error)
static FcStrSet *processed_dirs;
static int
-scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, FcBool error_on_no_fonts, int *changed)
+scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, FcBool recursive, int *changed)
{
int ret = 0;
const FcChar8 *dir;
@@ -130,10 +126,9 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
FcStrList *sublist;
FcCache *cache;
struct stat statb;
- FcBool was_valid, was_processed = FcFalse;
+ FcBool was_valid;
int i;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
-
+
/*
* Now scan all of the directories into separate databases
* and write out the results
@@ -142,13 +137,11 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
{
if (verbose)
{
- if (sysroot)
- printf ("[%s]", sysroot);
printf ("%s: ", dir);
fflush (stdout);
}
- if (FcStrSetMember (processed_dirs, dir))
+ if (recursive && FcStrSetMember (processed_dirs, dir))
{
if (verbose)
printf ("skipping, looped directory detected\n");
@@ -177,7 +170,6 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
fprintf (stderr, "\"%s\": not a directory, skipping\n", dir);
continue;
}
- was_processed = FcTrue;
if (really_force)
FcDirCacheUnlink (dir, config);
@@ -222,33 +214,36 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
}
}
- subdirs = FcStrSetCreate ();
- if (!subdirs)
+ if (recursive)
{
- fprintf (stderr, "%s: Can't create subdir set\n", dir);
- ret++;
+ subdirs = FcStrSetCreate ();
+ if (!subdirs)
+ {
+ fprintf (stderr, "%s: Can't create subdir set\n", dir);
+ ret++;
+ FcDirCacheUnload (cache);
+ continue;
+ }
+ for (i = 0; i < FcCacheNumSubdir (cache); i++)
+ FcStrSetAdd (subdirs, FcCacheSubdir (cache, i));
+
FcDirCacheUnload (cache);
- continue;
- }
- for (i = 0; i < FcCacheNumSubdir (cache); i++)
- FcStrSetAdd (subdirs, FcCacheSubdir (cache, i));
- FcDirCacheUnload (cache);
-
- sublist = FcStrListCreate (subdirs);
- FcStrSetDestroy (subdirs);
- if (!sublist)
- {
- fprintf (stderr, "%s: Can't create subdir list\n", dir);
- ret++;
- continue;
+ sublist = FcStrListCreate (subdirs);
+ FcStrSetDestroy (subdirs);
+ if (!sublist)
+ {
+ fprintf (stderr, "%s: Can't create subdir list\n", dir);
+ ret++;
+ continue;
+ }
+ FcStrSetAdd (processed_dirs, dir);
+ ret += scanDirs (sublist, config, force, really_force, verbose, recursive, changed);
+ FcStrListDone (sublist);
}
- FcStrSetAdd (processed_dirs, dir);
- ret += scanDirs (sublist, config, force, really_force, verbose, error_on_no_fonts, changed);
- FcStrListDone (sublist);
+ else
+ FcDirCacheUnload (cache);
}
- if (error_on_no_fonts && !was_processed)
- ret++;
return ret;
}
@@ -282,7 +277,6 @@ main (int argc, char **argv)
FcBool force = FcFalse;
FcBool really_force = FcFalse;
FcBool systemOnly = FcFalse;
- FcBool error_on_no_fonts = FcFalse;
FcConfig *config;
FcChar8 *sysroot = NULL;
int i;
@@ -292,15 +286,12 @@ main (int argc, char **argv)
int c;
#if HAVE_GETOPT_LONG
- while ((c = getopt_long (argc, argv, "Efrsy:Vvh", longopts, NULL)) != -1)
+ while ((c = getopt_long (argc, argv, "frsy:Vvh", longopts, NULL)) != -1)
#else
- while ((c = getopt (argc, argv, "Efrsy:Vvh")) != -1)
+ while ((c = getopt (argc, argv, "frsy:Vvh")) != -1)
#endif
{
switch (c) {
- case 'E':
- error_on_no_fonts = FcTrue;
- break;
case 'r':
really_force = FcTrue;
/* fall through */
@@ -378,9 +369,12 @@ main (int argc, char **argv)
fprintf(stderr, "Cannot malloc\n");
return 1;
}
-
+
changed = 0;
- ret = scanDirs (list, config, force, really_force, verbose, error_on_no_fonts, &changed);
+ ret = scanDirs (list, config, force, really_force, verbose, FcTrue, &changed);
+ /* Update the directory cache again to avoid the race condition as much as possible */
+ FcStrListFirst (list);
+ ret += scanDirs (list, config, FcTrue, really_force, verbose, FcFalse, &changed);
FcStrListDone (list);
/*
diff --git a/chromium/third_party/fontconfig/src/fc-cache/fc-cache.sgml b/chromium/third_party/fontconfig/src/fc-cache/fc-cache.sgml
index 5ae01076582..3740be77f66 100644
--- a/chromium/third_party/fontconfig/src/fc-cache/fc-cache.sgml
+++ b/chromium/third_party/fontconfig/src/fc-cache/fc-cache.sgml
@@ -63,14 +63,9 @@ manpage.1: manpage.sgml
<cmdsynopsis>
<command>&dhpackage;</command>
- <arg><option>-EfrsvVh</option></arg>
- <arg><option>--error-on-no-fonts</option></arg>
+ <arg><option>-frsvVh</option></arg>
<arg><option>--force</option></arg>
<arg><option>--really-force</option></arg>
- <group>
- <arg><option>-y</option> <option><replaceable>dir</replaceable></option></arg>
- <arg><option>--sysroot</option> <option><replaceable>dir</replaceable></option></arg>
- </group>
<arg><option>--system-only</option></arg>
<arg><option>--verbose</option></arg>
<arg><option>--version</option></arg>
@@ -108,16 +103,6 @@ manpage.1: manpage.sgml
<variablelist>
<varlistentry>
- <term><option>-E</option>
- <option>--error-on-no-fonts</option>
- </term>
- <listitem>
- <para>Raise an error if there are no fonts in
- <option><replaceable>dir</replaceable></option> or directories
- in the configuration if not given.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
<term><option>-f</option>
<option>--force</option>
</term>
@@ -152,15 +137,6 @@ manpage.1: manpage.sgml
</listitem>
</varlistentry>
<varlistentry>
- <term><option>-y</option>
- <option>-sysroot</option>
- <option><replaceable>dir</replaceable></option>
- </term>
- <listitem>
- <para>Prepend <option><replaceable>dir</replaceable></option> to all paths for scanning.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
<term><option>-h</option>
<option>--help</option>
</term>
@@ -187,15 +163,10 @@ manpage.1: manpage.sgml
</refsect1>
<refsect1>
- <title>RETURN CODES</title>
- <para><command>fc-cache</command> returns zero if the caches successfully generated. otherwise non-zero.</para>
- </refsect1>
-
- <refsect1>
<title>FILES</title>
<variablelist>
<varlistentry>
- <term><filename><replaceable>%cachedir%</replaceable>/*-<replaceable>%arch%</replaceable>.cache-%version%</filename></term>
+ <term><filename><replaceable>%cachdir%</replaceable>/*-<replaceable>%arch%</replaceable>.cache-2</filename></term>
<listitem>
<para>These files are generated by <command>&dhpackage;</command>
and contain maps from file names to font properties. They are
diff --git a/chromium/third_party/fontconfig/src/fc-case/CaseFolding.txt b/chromium/third_party/fontconfig/src/fc-case/CaseFolding.txt
index 372ee68bd81..cf5779f4075 100644
--- a/chromium/third_party/fontconfig/src/fc-case/CaseFolding.txt
+++ b/chromium/third_party/fontconfig/src/fc-case/CaseFolding.txt
@@ -1,11 +1,10 @@
-# CaseFolding-9.0.0.txt
-# Date: 2016-03-02, 18:54:54 GMT
-# © 2016 Unicode®, Inc.
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
+# CaseFolding-6.3.0.txt
+# Date: 2012-12-20, 22:14:35 GMT [MD]
#
# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
+# Copyright (c) 1991-2013 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see http://www.unicode.org/reports/tr44/
#
# Case Folding Properties
#
@@ -26,7 +25,7 @@
#
# For information on case folding, including how to have case folding
# preserve normalization formats, see Section 3.13 Default Case Algorithms in
-# The Unicode Standard.
+# The Unicode Standard, Version 5.0.
#
# ================================================================================
# Format
@@ -59,6 +58,8 @@
# All code points not explicitly listed for Case_Folding
# have the value C for the status field, and the code point itself for the mapping field.
+# @missing: 0000..10FFFF; C; <code point>
+
# =================================================================
0041; C; 0061; # LATIN CAPITAL LETTER A
0042; C; 0062; # LATIN CAPITAL LETTER B
@@ -297,7 +298,6 @@
0370; C; 0371; # GREEK CAPITAL LETTER HETA
0372; C; 0373; # GREEK CAPITAL LETTER ARCHAIC SAMPI
0376; C; 0377; # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
-037F; C; 03F3; # GREEK CAPITAL LETTER YOT
0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS
0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS
0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS
@@ -505,10 +505,6 @@
0522; C; 0523; # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
0524; C; 0525; # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
0526; C; 0527; # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
-0528; C; 0529; # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
-052A; C; 052B; # CYRILLIC CAPITAL LETTER DZZHE
-052C; C; 052D; # CYRILLIC CAPITAL LETTER DCHE
-052E; C; 052F; # CYRILLIC CAPITAL LETTER EL WITH DESCENDER
0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB
0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN
0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM
@@ -588,21 +584,6 @@
10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE
10C7; C; 2D27; # GEORGIAN CAPITAL LETTER YN
10CD; C; 2D2D; # GEORGIAN CAPITAL LETTER AEN
-13F8; C; 13F0; # CHEROKEE SMALL LETTER YE
-13F9; C; 13F1; # CHEROKEE SMALL LETTER YI
-13FA; C; 13F2; # CHEROKEE SMALL LETTER YO
-13FB; C; 13F3; # CHEROKEE SMALL LETTER YU
-13FC; C; 13F4; # CHEROKEE SMALL LETTER YV
-13FD; C; 13F5; # CHEROKEE SMALL LETTER MV
-1C80; C; 0432; # CYRILLIC SMALL LETTER ROUNDED VE
-1C81; C; 0434; # CYRILLIC SMALL LETTER LONG-LEGGED DE
-1C82; C; 043E; # CYRILLIC SMALL LETTER NARROW O
-1C83; C; 0441; # CYRILLIC SMALL LETTER WIDE ES
-1C84; C; 0442; # CYRILLIC SMALL LETTER TALL TE
-1C85; C; 0442; # CYRILLIC SMALL LETTER THREE-LEGGED TE
-1C86; C; 044A; # CYRILLIC SMALL LETTER TALL HARD SIGN
-1C87; C; 0463; # CYRILLIC SMALL LETTER TALL YAT
-1C88; C; A64B; # CYRILLIC SMALL LETTER UNBLENDED UK
1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
@@ -1107,8 +1088,6 @@ A690; C; A691; # CYRILLIC CAPITAL LETTER TSSE
A692; C; A693; # CYRILLIC CAPITAL LETTER TCHE
A694; C; A695; # CYRILLIC CAPITAL LETTER HWE
A696; C; A697; # CYRILLIC CAPITAL LETTER SHWE
-A698; C; A699; # CYRILLIC CAPITAL LETTER DOUBLE O
-A69A; C; A69B; # CYRILLIC CAPITAL LETTER CROSSED O
A722; C; A723; # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
A724; C; A725; # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
A726; C; A727; # LATIN CAPITAL LETTER HENG
@@ -1159,107 +1138,12 @@ A78B; C; A78C; # LATIN CAPITAL LETTER SALTILLO
A78D; C; 0265; # LATIN CAPITAL LETTER TURNED H
A790; C; A791; # LATIN CAPITAL LETTER N WITH DESCENDER
A792; C; A793; # LATIN CAPITAL LETTER C WITH BAR
-A796; C; A797; # LATIN CAPITAL LETTER B WITH FLOURISH
-A798; C; A799; # LATIN CAPITAL LETTER F WITH STROKE
-A79A; C; A79B; # LATIN CAPITAL LETTER VOLAPUK AE
-A79C; C; A79D; # LATIN CAPITAL LETTER VOLAPUK OE
-A79E; C; A79F; # LATIN CAPITAL LETTER VOLAPUK UE
A7A0; C; A7A1; # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
A7A2; C; A7A3; # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
A7A4; C; A7A5; # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
A7A6; C; A7A7; # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
A7A8; C; A7A9; # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
A7AA; C; 0266; # LATIN CAPITAL LETTER H WITH HOOK
-A7AB; C; 025C; # LATIN CAPITAL LETTER REVERSED OPEN E
-A7AC; C; 0261; # LATIN CAPITAL LETTER SCRIPT G
-A7AD; C; 026C; # LATIN CAPITAL LETTER L WITH BELT
-A7AE; C; 026A; # LATIN CAPITAL LETTER SMALL CAPITAL I
-A7B0; C; 029E; # LATIN CAPITAL LETTER TURNED K
-A7B1; C; 0287; # LATIN CAPITAL LETTER TURNED T
-A7B2; C; 029D; # LATIN CAPITAL LETTER J WITH CROSSED-TAIL
-A7B3; C; AB53; # LATIN CAPITAL LETTER CHI
-A7B4; C; A7B5; # LATIN CAPITAL LETTER BETA
-A7B6; C; A7B7; # LATIN CAPITAL LETTER OMEGA
-AB70; C; 13A0; # CHEROKEE SMALL LETTER A
-AB71; C; 13A1; # CHEROKEE SMALL LETTER E
-AB72; C; 13A2; # CHEROKEE SMALL LETTER I
-AB73; C; 13A3; # CHEROKEE SMALL LETTER O
-AB74; C; 13A4; # CHEROKEE SMALL LETTER U
-AB75; C; 13A5; # CHEROKEE SMALL LETTER V
-AB76; C; 13A6; # CHEROKEE SMALL LETTER GA
-AB77; C; 13A7; # CHEROKEE SMALL LETTER KA
-AB78; C; 13A8; # CHEROKEE SMALL LETTER GE
-AB79; C; 13A9; # CHEROKEE SMALL LETTER GI
-AB7A; C; 13AA; # CHEROKEE SMALL LETTER GO
-AB7B; C; 13AB; # CHEROKEE SMALL LETTER GU
-AB7C; C; 13AC; # CHEROKEE SMALL LETTER GV
-AB7D; C; 13AD; # CHEROKEE SMALL LETTER HA
-AB7E; C; 13AE; # CHEROKEE SMALL LETTER HE
-AB7F; C; 13AF; # CHEROKEE SMALL LETTER HI
-AB80; C; 13B0; # CHEROKEE SMALL LETTER HO
-AB81; C; 13B1; # CHEROKEE SMALL LETTER HU
-AB82; C; 13B2; # CHEROKEE SMALL LETTER HV
-AB83; C; 13B3; # CHEROKEE SMALL LETTER LA
-AB84; C; 13B4; # CHEROKEE SMALL LETTER LE
-AB85; C; 13B5; # CHEROKEE SMALL LETTER LI
-AB86; C; 13B6; # CHEROKEE SMALL LETTER LO
-AB87; C; 13B7; # CHEROKEE SMALL LETTER LU
-AB88; C; 13B8; # CHEROKEE SMALL LETTER LV
-AB89; C; 13B9; # CHEROKEE SMALL LETTER MA
-AB8A; C; 13BA; # CHEROKEE SMALL LETTER ME
-AB8B; C; 13BB; # CHEROKEE SMALL LETTER MI
-AB8C; C; 13BC; # CHEROKEE SMALL LETTER MO
-AB8D; C; 13BD; # CHEROKEE SMALL LETTER MU
-AB8E; C; 13BE; # CHEROKEE SMALL LETTER NA
-AB8F; C; 13BF; # CHEROKEE SMALL LETTER HNA
-AB90; C; 13C0; # CHEROKEE SMALL LETTER NAH
-AB91; C; 13C1; # CHEROKEE SMALL LETTER NE
-AB92; C; 13C2; # CHEROKEE SMALL LETTER NI
-AB93; C; 13C3; # CHEROKEE SMALL LETTER NO
-AB94; C; 13C4; # CHEROKEE SMALL LETTER NU
-AB95; C; 13C5; # CHEROKEE SMALL LETTER NV
-AB96; C; 13C6; # CHEROKEE SMALL LETTER QUA
-AB97; C; 13C7; # CHEROKEE SMALL LETTER QUE
-AB98; C; 13C8; # CHEROKEE SMALL LETTER QUI
-AB99; C; 13C9; # CHEROKEE SMALL LETTER QUO
-AB9A; C; 13CA; # CHEROKEE SMALL LETTER QUU
-AB9B; C; 13CB; # CHEROKEE SMALL LETTER QUV
-AB9C; C; 13CC; # CHEROKEE SMALL LETTER SA
-AB9D; C; 13CD; # CHEROKEE SMALL LETTER S
-AB9E; C; 13CE; # CHEROKEE SMALL LETTER SE
-AB9F; C; 13CF; # CHEROKEE SMALL LETTER SI
-ABA0; C; 13D0; # CHEROKEE SMALL LETTER SO
-ABA1; C; 13D1; # CHEROKEE SMALL LETTER SU
-ABA2; C; 13D2; # CHEROKEE SMALL LETTER SV
-ABA3; C; 13D3; # CHEROKEE SMALL LETTER DA
-ABA4; C; 13D4; # CHEROKEE SMALL LETTER TA
-ABA5; C; 13D5; # CHEROKEE SMALL LETTER DE
-ABA6; C; 13D6; # CHEROKEE SMALL LETTER TE
-ABA7; C; 13D7; # CHEROKEE SMALL LETTER DI
-ABA8; C; 13D8; # CHEROKEE SMALL LETTER TI
-ABA9; C; 13D9; # CHEROKEE SMALL LETTER DO
-ABAA; C; 13DA; # CHEROKEE SMALL LETTER DU
-ABAB; C; 13DB; # CHEROKEE SMALL LETTER DV
-ABAC; C; 13DC; # CHEROKEE SMALL LETTER DLA
-ABAD; C; 13DD; # CHEROKEE SMALL LETTER TLA
-ABAE; C; 13DE; # CHEROKEE SMALL LETTER TLE
-ABAF; C; 13DF; # CHEROKEE SMALL LETTER TLI
-ABB0; C; 13E0; # CHEROKEE SMALL LETTER TLO
-ABB1; C; 13E1; # CHEROKEE SMALL LETTER TLU
-ABB2; C; 13E2; # CHEROKEE SMALL LETTER TLV
-ABB3; C; 13E3; # CHEROKEE SMALL LETTER TSA
-ABB4; C; 13E4; # CHEROKEE SMALL LETTER TSE
-ABB5; C; 13E5; # CHEROKEE SMALL LETTER TSI
-ABB6; C; 13E6; # CHEROKEE SMALL LETTER TSO
-ABB7; C; 13E7; # CHEROKEE SMALL LETTER TSU
-ABB8; C; 13E8; # CHEROKEE SMALL LETTER TSV
-ABB9; C; 13E9; # CHEROKEE SMALL LETTER WA
-ABBA; C; 13EA; # CHEROKEE SMALL LETTER WE
-ABBB; C; 13EB; # CHEROKEE SMALL LETTER WI
-ABBC; C; 13EC; # CHEROKEE SMALL LETTER WO
-ABBD; C; 13ED; # CHEROKEE SMALL LETTER WU
-ABBE; C; 13EE; # CHEROKEE SMALL LETTER WV
-ABBF; C; 13EF; # CHEROKEE SMALL LETTER YA
FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF
FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI
FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
@@ -1338,158 +1222,5 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
10425; C; 1044D; # DESERET CAPITAL LETTER ENG
10426; C; 1044E; # DESERET CAPITAL LETTER OI
10427; C; 1044F; # DESERET CAPITAL LETTER EW
-104B0; C; 104D8; # OSAGE CAPITAL LETTER A
-104B1; C; 104D9; # OSAGE CAPITAL LETTER AI
-104B2; C; 104DA; # OSAGE CAPITAL LETTER AIN
-104B3; C; 104DB; # OSAGE CAPITAL LETTER AH
-104B4; C; 104DC; # OSAGE CAPITAL LETTER BRA
-104B5; C; 104DD; # OSAGE CAPITAL LETTER CHA
-104B6; C; 104DE; # OSAGE CAPITAL LETTER EHCHA
-104B7; C; 104DF; # OSAGE CAPITAL LETTER E
-104B8; C; 104E0; # OSAGE CAPITAL LETTER EIN
-104B9; C; 104E1; # OSAGE CAPITAL LETTER HA
-104BA; C; 104E2; # OSAGE CAPITAL LETTER HYA
-104BB; C; 104E3; # OSAGE CAPITAL LETTER I
-104BC; C; 104E4; # OSAGE CAPITAL LETTER KA
-104BD; C; 104E5; # OSAGE CAPITAL LETTER EHKA
-104BE; C; 104E6; # OSAGE CAPITAL LETTER KYA
-104BF; C; 104E7; # OSAGE CAPITAL LETTER LA
-104C0; C; 104E8; # OSAGE CAPITAL LETTER MA
-104C1; C; 104E9; # OSAGE CAPITAL LETTER NA
-104C2; C; 104EA; # OSAGE CAPITAL LETTER O
-104C3; C; 104EB; # OSAGE CAPITAL LETTER OIN
-104C4; C; 104EC; # OSAGE CAPITAL LETTER PA
-104C5; C; 104ED; # OSAGE CAPITAL LETTER EHPA
-104C6; C; 104EE; # OSAGE CAPITAL LETTER SA
-104C7; C; 104EF; # OSAGE CAPITAL LETTER SHA
-104C8; C; 104F0; # OSAGE CAPITAL LETTER TA
-104C9; C; 104F1; # OSAGE CAPITAL LETTER EHTA
-104CA; C; 104F2; # OSAGE CAPITAL LETTER TSA
-104CB; C; 104F3; # OSAGE CAPITAL LETTER EHTSA
-104CC; C; 104F4; # OSAGE CAPITAL LETTER TSHA
-104CD; C; 104F5; # OSAGE CAPITAL LETTER DHA
-104CE; C; 104F6; # OSAGE CAPITAL LETTER U
-104CF; C; 104F7; # OSAGE CAPITAL LETTER WA
-104D0; C; 104F8; # OSAGE CAPITAL LETTER KHA
-104D1; C; 104F9; # OSAGE CAPITAL LETTER GHA
-104D2; C; 104FA; # OSAGE CAPITAL LETTER ZA
-104D3; C; 104FB; # OSAGE CAPITAL LETTER ZHA
-10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A
-10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA
-10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB
-10C83; C; 10CC3; # OLD HUNGARIAN CAPITAL LETTER AMB
-10C84; C; 10CC4; # OLD HUNGARIAN CAPITAL LETTER EC
-10C85; C; 10CC5; # OLD HUNGARIAN CAPITAL LETTER ENC
-10C86; C; 10CC6; # OLD HUNGARIAN CAPITAL LETTER ECS
-10C87; C; 10CC7; # OLD HUNGARIAN CAPITAL LETTER ED
-10C88; C; 10CC8; # OLD HUNGARIAN CAPITAL LETTER AND
-10C89; C; 10CC9; # OLD HUNGARIAN CAPITAL LETTER E
-10C8A; C; 10CCA; # OLD HUNGARIAN CAPITAL LETTER CLOSE E
-10C8B; C; 10CCB; # OLD HUNGARIAN CAPITAL LETTER EE
-10C8C; C; 10CCC; # OLD HUNGARIAN CAPITAL LETTER EF
-10C8D; C; 10CCD; # OLD HUNGARIAN CAPITAL LETTER EG
-10C8E; C; 10CCE; # OLD HUNGARIAN CAPITAL LETTER EGY
-10C8F; C; 10CCF; # OLD HUNGARIAN CAPITAL LETTER EH
-10C90; C; 10CD0; # OLD HUNGARIAN CAPITAL LETTER I
-10C91; C; 10CD1; # OLD HUNGARIAN CAPITAL LETTER II
-10C92; C; 10CD2; # OLD HUNGARIAN CAPITAL LETTER EJ
-10C93; C; 10CD3; # OLD HUNGARIAN CAPITAL LETTER EK
-10C94; C; 10CD4; # OLD HUNGARIAN CAPITAL LETTER AK
-10C95; C; 10CD5; # OLD HUNGARIAN CAPITAL LETTER UNK
-10C96; C; 10CD6; # OLD HUNGARIAN CAPITAL LETTER EL
-10C97; C; 10CD7; # OLD HUNGARIAN CAPITAL LETTER ELY
-10C98; C; 10CD8; # OLD HUNGARIAN CAPITAL LETTER EM
-10C99; C; 10CD9; # OLD HUNGARIAN CAPITAL LETTER EN
-10C9A; C; 10CDA; # OLD HUNGARIAN CAPITAL LETTER ENY
-10C9B; C; 10CDB; # OLD HUNGARIAN CAPITAL LETTER O
-10C9C; C; 10CDC; # OLD HUNGARIAN CAPITAL LETTER OO
-10C9D; C; 10CDD; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
-10C9E; C; 10CDE; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
-10C9F; C; 10CDF; # OLD HUNGARIAN CAPITAL LETTER OEE
-10CA0; C; 10CE0; # OLD HUNGARIAN CAPITAL LETTER EP
-10CA1; C; 10CE1; # OLD HUNGARIAN CAPITAL LETTER EMP
-10CA2; C; 10CE2; # OLD HUNGARIAN CAPITAL LETTER ER
-10CA3; C; 10CE3; # OLD HUNGARIAN CAPITAL LETTER SHORT ER
-10CA4; C; 10CE4; # OLD HUNGARIAN CAPITAL LETTER ES
-10CA5; C; 10CE5; # OLD HUNGARIAN CAPITAL LETTER ESZ
-10CA6; C; 10CE6; # OLD HUNGARIAN CAPITAL LETTER ET
-10CA7; C; 10CE7; # OLD HUNGARIAN CAPITAL LETTER ENT
-10CA8; C; 10CE8; # OLD HUNGARIAN CAPITAL LETTER ETY
-10CA9; C; 10CE9; # OLD HUNGARIAN CAPITAL LETTER ECH
-10CAA; C; 10CEA; # OLD HUNGARIAN CAPITAL LETTER U
-10CAB; C; 10CEB; # OLD HUNGARIAN CAPITAL LETTER UU
-10CAC; C; 10CEC; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
-10CAD; C; 10CED; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
-10CAE; C; 10CEE; # OLD HUNGARIAN CAPITAL LETTER EV
-10CAF; C; 10CEF; # OLD HUNGARIAN CAPITAL LETTER EZ
-10CB0; C; 10CF0; # OLD HUNGARIAN CAPITAL LETTER EZS
-10CB1; C; 10CF1; # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
-10CB2; C; 10CF2; # OLD HUNGARIAN CAPITAL LETTER US
-118A0; C; 118C0; # WARANG CITI CAPITAL LETTER NGAA
-118A1; C; 118C1; # WARANG CITI CAPITAL LETTER A
-118A2; C; 118C2; # WARANG CITI CAPITAL LETTER WI
-118A3; C; 118C3; # WARANG CITI CAPITAL LETTER YU
-118A4; C; 118C4; # WARANG CITI CAPITAL LETTER YA
-118A5; C; 118C5; # WARANG CITI CAPITAL LETTER YO
-118A6; C; 118C6; # WARANG CITI CAPITAL LETTER II
-118A7; C; 118C7; # WARANG CITI CAPITAL LETTER UU
-118A8; C; 118C8; # WARANG CITI CAPITAL LETTER E
-118A9; C; 118C9; # WARANG CITI CAPITAL LETTER O
-118AA; C; 118CA; # WARANG CITI CAPITAL LETTER ANG
-118AB; C; 118CB; # WARANG CITI CAPITAL LETTER GA
-118AC; C; 118CC; # WARANG CITI CAPITAL LETTER KO
-118AD; C; 118CD; # WARANG CITI CAPITAL LETTER ENY
-118AE; C; 118CE; # WARANG CITI CAPITAL LETTER YUJ
-118AF; C; 118CF; # WARANG CITI CAPITAL LETTER UC
-118B0; C; 118D0; # WARANG CITI CAPITAL LETTER ENN
-118B1; C; 118D1; # WARANG CITI CAPITAL LETTER ODD
-118B2; C; 118D2; # WARANG CITI CAPITAL LETTER TTE
-118B3; C; 118D3; # WARANG CITI CAPITAL LETTER NUNG
-118B4; C; 118D4; # WARANG CITI CAPITAL LETTER DA
-118B5; C; 118D5; # WARANG CITI CAPITAL LETTER AT
-118B6; C; 118D6; # WARANG CITI CAPITAL LETTER AM
-118B7; C; 118D7; # WARANG CITI CAPITAL LETTER BU
-118B8; C; 118D8; # WARANG CITI CAPITAL LETTER PU
-118B9; C; 118D9; # WARANG CITI CAPITAL LETTER HIYO
-118BA; C; 118DA; # WARANG CITI CAPITAL LETTER HOLO
-118BB; C; 118DB; # WARANG CITI CAPITAL LETTER HORR
-118BC; C; 118DC; # WARANG CITI CAPITAL LETTER HAR
-118BD; C; 118DD; # WARANG CITI CAPITAL LETTER SSUU
-118BE; C; 118DE; # WARANG CITI CAPITAL LETTER SII
-118BF; C; 118DF; # WARANG CITI CAPITAL LETTER VIYO
-1E900; C; 1E922; # ADLAM CAPITAL LETTER ALIF
-1E901; C; 1E923; # ADLAM CAPITAL LETTER DAALI
-1E902; C; 1E924; # ADLAM CAPITAL LETTER LAAM
-1E903; C; 1E925; # ADLAM CAPITAL LETTER MIIM
-1E904; C; 1E926; # ADLAM CAPITAL LETTER BA
-1E905; C; 1E927; # ADLAM CAPITAL LETTER SINNYIIYHE
-1E906; C; 1E928; # ADLAM CAPITAL LETTER PE
-1E907; C; 1E929; # ADLAM CAPITAL LETTER BHE
-1E908; C; 1E92A; # ADLAM CAPITAL LETTER RA
-1E909; C; 1E92B; # ADLAM CAPITAL LETTER E
-1E90A; C; 1E92C; # ADLAM CAPITAL LETTER FA
-1E90B; C; 1E92D; # ADLAM CAPITAL LETTER I
-1E90C; C; 1E92E; # ADLAM CAPITAL LETTER O
-1E90D; C; 1E92F; # ADLAM CAPITAL LETTER DHA
-1E90E; C; 1E930; # ADLAM CAPITAL LETTER YHE
-1E90F; C; 1E931; # ADLAM CAPITAL LETTER WAW
-1E910; C; 1E932; # ADLAM CAPITAL LETTER NUN
-1E911; C; 1E933; # ADLAM CAPITAL LETTER KAF
-1E912; C; 1E934; # ADLAM CAPITAL LETTER YA
-1E913; C; 1E935; # ADLAM CAPITAL LETTER U
-1E914; C; 1E936; # ADLAM CAPITAL LETTER JIIM
-1E915; C; 1E937; # ADLAM CAPITAL LETTER CHI
-1E916; C; 1E938; # ADLAM CAPITAL LETTER HA
-1E917; C; 1E939; # ADLAM CAPITAL LETTER QAAF
-1E918; C; 1E93A; # ADLAM CAPITAL LETTER GA
-1E919; C; 1E93B; # ADLAM CAPITAL LETTER NYA
-1E91A; C; 1E93C; # ADLAM CAPITAL LETTER TU
-1E91B; C; 1E93D; # ADLAM CAPITAL LETTER NHA
-1E91C; C; 1E93E; # ADLAM CAPITAL LETTER VA
-1E91D; C; 1E93F; # ADLAM CAPITAL LETTER KHA
-1E91E; C; 1E940; # ADLAM CAPITAL LETTER GBE
-1E91F; C; 1E941; # ADLAM CAPITAL LETTER ZAL
-1E920; C; 1E942; # ADLAM CAPITAL LETTER KPO
-1E921; C; 1E943; # ADLAM CAPITAL LETTER SHA
#
# EOF
diff --git a/chromium/third_party/fontconfig/src/fc-case/Makefile.am b/chromium/third_party/fontconfig/src/fc-case/Makefile.am
index 4c30a1eedc9..662f771af6d 100644
--- a/chromium/third_party/fontconfig/src/fc-case/Makefile.am
+++ b/chromium/third_party/fontconfig/src/fc-case/Makefile.am
@@ -28,9 +28,6 @@ DEPS = $(srcdir)/CaseFolding.txt
ARGS = $(srcdir)/CaseFolding.txt
DIST = $(srcdir)/CaseFolding.txt
-update:
- curl -s -o $(srcdir)/CaseFolding.txt http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
-
include $(top_srcdir)/Tools.mk
-include $(top_srcdir)/git.mk
diff --git a/chromium/third_party/fontconfig/src/fc-cat/fc-cat.c b/chromium/third_party/fontconfig/src/fc-cat/fc-cat.c
index a1dc848b8b1..9a2abb3fa31 100644
--- a/chromium/third_party/fontconfig/src/fc-cat/fc-cat.c
+++ b/chromium/third_party/fontconfig/src/fc-cat/fc-cat.c
@@ -298,7 +298,6 @@ main (int argc, char **argv)
return 1;
}
FcConfigSetCurrent (config);
- FcConfigDestroy (config);
args = FcStrSetCreate ();
if (!args)
@@ -316,6 +315,12 @@ main (int argc, char **argv)
return 1;
}
}
+ arglist = FcStrListCreate (args);
+ if (!arglist)
+ {
+ fprintf (stderr, "%s: malloc failure\n", argv[0]);
+ return 1;
+ }
}
else
{
@@ -335,26 +340,20 @@ main (int argc, char **argv)
fprintf (stderr, "%s: malloc failure\n", argv[0]);
return 1;
}
- FcStrSetDestroy (args);
while ((arg = FcStrListNext (arglist)))
{
int j;
FcChar8 *cache_file = NULL;
struct stat file_stat;
-
- /* reset errno */
- errno = 0;
+
if (FcFileIsDir (arg))
cache = FcDirCacheLoad (arg, config, &cache_file);
else
cache = FcDirCacheLoadFile (arg, &file_stat);
if (!cache)
{
- if (errno != 0)
- perror ((char *) arg);
- else
- fprintf (stderr, "%s: Unable to load the cache: %s\n", argv[0], arg);
+ perror ((char *) arg);
ret++;
continue;
}
@@ -385,7 +384,6 @@ main (int argc, char **argv)
if (cache_file)
FcStrFree (cache_file);
}
- FcStrListDone (arglist);
FcFini ();
return 0;
diff --git a/chromium/third_party/fontconfig/src/fc-cat/fc-cat.sgml b/chromium/third_party/fontconfig/src/fc-cat/fc-cat.sgml
index a51325433cd..ce4736de5e8 100644
--- a/chromium/third_party/fontconfig/src/fc-cat/fc-cat.sgml
+++ b/chromium/third_party/fontconfig/src/fc-cat/fc-cat.sgml
@@ -70,7 +70,7 @@ manpage.1: manpage.sgml
<arg><option>--help</option></arg>
<sbr>
<group rep="repeat">
- <arg><option><replaceable>fonts-cache-%version%-files</replaceable></option></arg>
+ <arg><option><replaceable>fonts-cache-2-files</replaceable></option></arg>
<arg><option><replaceable>dirs</replaceable></option></arg>
</group>
diff --git a/chromium/third_party/fontconfig/src/fc-glyphname/fc-glyphname.c b/chromium/third_party/fontconfig/src/fc-glyphname/fc-glyphname.c
index 078490ae442..84027816430 100644
--- a/chromium/third_party/fontconfig/src/fc-glyphname/fc-glyphname.c
+++ b/chromium/third_party/fontconfig/src/fc-glyphname/fc-glyphname.c
@@ -233,7 +233,7 @@ dump (FcGlyphName * const *table, const char *name)
int
main (int argc FC_UNUSED, char **argv)
{
- char *files[MAX_GLYPHFILE + 1];
+ char *files[MAX_GLYPHFILE];
char line[1024];
FILE *f;
int i;
diff --git a/chromium/third_party/fontconfig/src/fc-lang/README b/chromium/third_party/fontconfig/src/fc-lang/README
deleted file mode 100644
index 4aef7d1165f..00000000000
--- a/chromium/third_party/fontconfig/src/fc-lang/README
+++ /dev/null
@@ -1,28 +0,0 @@
-Requirements for adding new orth file:
-
-* we are following up to the locale name, 2 or 3 letter code
- in ISO 639 and ISO 3166-1 alpha-2 code to determine a
- filename. if it's not yet available, in advance, you
- should get it fixed in glibc or so.
-
-* Please add a reference URL (written in English as far as
- possible) into the orth file that explains the code
- coverage for the certain language. this would helps to
- review if it has enough coverage.
-
-* no need to add all of the codepoints for the certain
- language. good enough if it covers most frequently used
- codepoints in it.
-
-To update existing orth files:
-
-* Please make sure how the changes affects to the existing
- fonts and no regressions except it is expected behavior.
-
-* Please add any reference URL in bugzilla or any
- explanation why it needs to be added/removed and also why
- current orth file doesn't work.
-
-* Please provide a test case what fonts are supposed to be
- accepted against the change and what fonts aren't.
-
diff --git a/chromium/third_party/fontconfig/src/fc-lang/fc-lang.c b/chromium/third_party/fontconfig/src/fc-lang/fc-lang.c
index 38fc6973558..0f4217f78f5 100644
--- a/chromium/third_party/fontconfig/src/fc-lang/fc-lang.c
+++ b/chromium/third_party/fontconfig/src/fc-lang/fc-lang.c
@@ -254,7 +254,7 @@ static int compare (const void *a, const void *b)
int
main (int argc FC_UNUSED, char **argv)
{
- static Entry entries[MAX_LANG + 1];
+ static Entry entries[MAX_LANG];
static FcCharSet *sets[MAX_LANG];
static int duplicate[MAX_LANG];
static int country[MAX_LANG];
diff --git a/chromium/third_party/fontconfig/src/fc-lang/ja.orth b/chromium/third_party/fontconfig/src/fc-lang/ja.orth
index dbc16d4d719..e87269b85d0 100644
--- a/chromium/third_party/fontconfig/src/fc-lang/ja.orth
+++ b/chromium/third_party/fontconfig/src/fc-lang/ja.orth
@@ -21,14 +21,13 @@
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
-# Coverage from JIS X 0208 (1997) for non kanji characters, and
-# Joyo Kanji List (2010, cabinet notification of regular-use chinese characters)
+# Coverage from JIS X 0208 (1990)
#
0x3000 # IDEOGRAPHIC SPACE
0x3001 # IDEOGRAPHIC COMMA
0x3002 # IDEOGRAPHIC FULL STOP
0x3005 # IDEOGRAPHIC ITERATION MARK
-#0x3006 # IDEOGRAPHIC CLOSING MARK # not in Sawarabi Gothic
+0x3006 # IDEOGRAPHIC CLOSING MARK
0x3007 # IDEOGRAPHIC NUMBER ZERO
0x3041 # HIRAGANA LETTER SMALL A
0x3042 # HIRAGANA LETTER A
@@ -217,88 +216,171 @@
0x4E0B # <CJK>
0x4E0D # <CJK>
0x4E0E # <CJK>
+0x4E10 # <CJK>
+0x4E11 # <CJK>
0x4E14 # <CJK>
+0x4E15 # <CJK>
0x4E16 # <CJK>
+0x4E17 # <CJK>
0x4E18 # <CJK>
0x4E19 # <CJK>
+0x4E1E # <CJK>
0x4E21 # <CJK>
0x4E26 # <CJK>
+0x4E2A # <CJK>
0x4E2D # <CJK>
+0x4E31 # <CJK>
0x4E32 # <CJK>
+0x4E36 # <CJK>
0x4E38 # <CJK>
0x4E39 # <CJK>
0x4E3B # <CJK>
0x4E3C # <CJK>
+0x4E3F # <CJK>
+0x4E42 # <CJK>
+0x4E43 # <CJK>
0x4E45 # <CJK>
+0x4E4B # <CJK>
+0x4E4D # <CJK>
+0x4E4E # <CJK>
0x4E4F # <CJK>
+0x4E55 # <CJK>
+0x4E56 # <CJK>
0x4E57 # <CJK>
+0x4E58 # <CJK>
0x4E59 # <CJK>
0x4E5D # <CJK>
0x4E5E # <CJK>
+0x4E5F # <CJK>
+0x4E62 # <CJK>
0x4E71 # <CJK>
0x4E73 # <CJK>
0x4E7E # <CJK>
0x4E80 # <CJK>
+0x4E82 # <CJK>
+0x4E85 # <CJK>
0x4E86 # <CJK>
0x4E88 # <CJK>
0x4E89 # <CJK>
+0x4E8A # <CJK>
0x4E8B # <CJK>
0x4E8C # <CJK>
+0x4E8E # <CJK>
+0x4E91 # <CJK>
0x4E92 # <CJK>
0x4E94 # <CJK>
0x4E95 # <CJK>
+0x4E98 # <CJK>
+0x4E99 # <CJK>
+0x4E9B # <CJK>
0x4E9C # <CJK>
+0x4E9E # <CJK>
+0x4E9F # <CJK>
+0x4EA0 # <CJK>
0x4EA1 # <CJK>
+0x4EA2 # <CJK>
0x4EA4 # <CJK>
+0x4EA5 # <CJK>
+0x4EA6 # <CJK>
+0x4EA8 # <CJK>
0x4EAB # <CJK>
0x4EAC # <CJK>
0x4EAD # <CJK>
+0x4EAE # <CJK>
+0x4EB0 # <CJK>
+0x4EB3 # <CJK>
+0x4EB6 # <CJK>
0x4EBA # <CJK>
+0x4EC0 # <CJK>
0x4EC1 # <CJK>
+0x4EC2 # <CJK>
+0x4EC4 # <CJK>
+0x4EC6 # <CJK>
+0x4EC7 # <CJK>
0x4ECA # <CJK>
0x4ECB # <CJK>
+0x4ECD # <CJK>
+0x4ECE # <CJK>
0x4ECF # <CJK>
+0x4ED4 # <CJK>
0x4ED5 # <CJK>
0x4ED6 # <CJK>
+0x4ED7 # <CJK>
0x4ED8 # <CJK>
0x4ED9 # <CJK>
+0x4EDD # <CJK>
+0x4EDE # <CJK>
+0x4EDF # <CJK>
0x4EE3 # <CJK>
0x4EE4 # <CJK>
0x4EE5 # <CJK>
+0x4EED # <CJK>
0x4EEE # <CJK>
0x4EF0 # <CJK>
0x4EF2 # <CJK>
0x4EF6 # <CJK>
+0x4EF7 # <CJK>
0x4EFB # <CJK>
0x4F01 # <CJK>
+0x4F09 # <CJK>
+0x4F0A # <CJK>
+0x4F0D # <CJK>
0x4F0E # <CJK>
0x4F0F # <CJK>
0x4F10 # <CJK>
0x4F11 # <CJK>
0x4F1A # <CJK>
+0x4F1C # <CJK>
0x4F1D # <CJK>
0x4F2F # <CJK>
+0x4F30 # <CJK>
0x4F34 # <CJK>
+0x4F36 # <CJK>
0x4F38 # <CJK>
0x4F3A # <CJK>
0x4F3C # <CJK>
+0x4F3D # <CJK>
+0x4F43 # <CJK>
0x4F46 # <CJK>
+0x4F47 # <CJK>
0x4F4D # <CJK>
0x4F4E # <CJK>
0x4F4F # <CJK>
0x4F50 # <CJK>
+0x4F51 # <CJK>
0x4F53 # <CJK>
0x4F55 # <CJK>
+0x4F57 # <CJK>
0x4F59 # <CJK>
+0x4F5A # <CJK>
+0x4F5B # <CJK>
0x4F5C # <CJK>
+0x4F5D # <CJK>
+0x4F5E # <CJK>
+0x4F69 # <CJK>
+0x4F6F # <CJK>
+0x4F70 # <CJK>
0x4F73 # <CJK>
0x4F75 # <CJK>
+0x4F76 # <CJK>
+0x4F7B # <CJK>
+0x4F7C # <CJK>
0x4F7F # <CJK>
+0x4F83 # <CJK>
+0x4F86 # <CJK>
+0x4F88 # <CJK>
0x4F8B # <CJK>
0x4F8D # <CJK>
+0x4F8F # <CJK>
+0x4F91 # <CJK>
+0x4F96 # <CJK>
+0x4F98 # <CJK>
0x4F9B # <CJK>
0x4F9D # <CJK>
+0x4FA0 # <CJK>
0x4FA1 # <CJK>
+0x4FAB # <CJK>
+0x4FAD # <CJK>
0x4FAE # <CJK>
0x4FAF # <CJK>
0x4FB5 # <CJK>
@@ -306,165 +388,364 @@
0x4FBF # <CJK>
0x4FC2 # <CJK>
0x4FC3 # <CJK>
+0x4FC4 # <CJK>
0x4FCA # <CJK>
+0x4FCE # <CJK>
+0x4FD0 # <CJK>
+0x4FD1 # <CJK>
+0x4FD4 # <CJK>
0x4FD7 # <CJK>
+0x4FD8 # <CJK>
+0x4FDA # <CJK>
+0x4FDB # <CJK>
0x4FDD # <CJK>
+0x4FDF # <CJK>
0x4FE1 # <CJK>
+0x4FE3 # <CJK>
+0x4FE4 # <CJK>
+0x4FE5 # <CJK>
0x4FEE # <CJK>
+0x4FEF # <CJK>
0x4FF3 # <CJK>
0x4FF5 # <CJK>
+0x4FF6 # <CJK>
0x4FF8 # <CJK>
0x4FFA # <CJK>
+0x4FFE # <CJK>
+0x5005 # <CJK>
+0x5006 # <CJK>
0x5009 # <CJK>
0x500B # <CJK>
0x500D # <CJK>
+0x500F # <CJK>
+0x5011 # <CJK>
0x5012 # <CJK>
+0x5014 # <CJK>
+0x5016 # <CJK>
0x5019 # <CJK>
+0x501A # <CJK>
0x501F # <CJK>
+0x5021 # <CJK>
0x5023 # <CJK>
0x5024 # <CJK>
+0x5025 # <CJK>
+0x5026 # <CJK>
+0x5028 # <CJK>
+0x5029 # <CJK>
+0x502A # <CJK>
0x502B # <CJK>
+0x502C # <CJK>
+0x502D # <CJK>
+0x5036 # <CJK>
0x5039 # <CJK>
+0x5043 # <CJK>
+0x5047 # <CJK>
+0x5048 # <CJK>
0x5049 # <CJK>
0x504F # <CJK>
+0x5050 # <CJK>
+0x5055 # <CJK>
+0x5056 # <CJK>
+0x505A # <CJK>
0x505C # <CJK>
0x5065 # <CJK>
+0x506C # <CJK>
+0x5072 # <CJK>
0x5074 # <CJK>
0x5075 # <CJK>
0x5076 # <CJK>
+0x5078 # <CJK>
0x507D # <CJK>
+0x5080 # <CJK>
+0x5085 # <CJK>
0x508D # <CJK>
0x5091 # <CJK>
0x5098 # <CJK>
0x5099 # <CJK>
+0x509A # <CJK>
0x50AC # <CJK>
+0x50AD # <CJK>
0x50B2 # <CJK>
+0x50B3 # <CJK>
+0x50B4 # <CJK>
0x50B5 # <CJK>
0x50B7 # <CJK>
0x50BE # <CJK>
+0x50C2 # <CJK>
0x50C5 # <CJK>
+0x50C9 # <CJK>
+0x50CA # <CJK>
0x50CD # <CJK>
0x50CF # <CJK>
+0x50D1 # <CJK>
0x50D5 # <CJK>
+0x50D6 # <CJK>
0x50DA # <CJK>
+0x50DE # <CJK>
+0x50E3 # <CJK>
+0x50E5 # <CJK>
0x50E7 # <CJK>
+0x50ED # <CJK>
+0x50EE # <CJK>
+0x50F5 # <CJK>
+0x50F9 # <CJK>
+0x50FB # <CJK>
0x5100 # <CJK>
+0x5101 # <CJK>
+0x5102 # <CJK>
0x5104 # <CJK>
+0x5109 # <CJK>
0x5112 # <CJK>
+0x5114 # <CJK>
+0x5115 # <CJK>
+0x5116 # <CJK>
+0x5118 # <CJK>
+0x511A # <CJK>
0x511F # <CJK>
+0x5121 # <CJK>
0x512A # <CJK>
+0x5132 # <CJK>
+0x5137 # <CJK>
+0x513A # <CJK>
+0x513B # <CJK>
+0x513C # <CJK>
+0x513F # <CJK>
+0x5140 # <CJK>
+0x5141 # <CJK>
0x5143 # <CJK>
0x5144 # <CJK>
0x5145 # <CJK>
0x5146 # <CJK>
+0x5147 # <CJK>
0x5148 # <CJK>
0x5149 # <CJK>
0x514B # <CJK>
+0x514C # <CJK>
0x514D # <CJK>
+0x514E # <CJK>
0x5150 # <CJK>
+0x5152 # <CJK>
+0x5154 # <CJK>
0x515A # <CJK>
+0x515C # <CJK>
+0x5162 # <CJK>
0x5165 # <CJK>
0x5168 # <CJK>
+0x5169 # <CJK>
+0x516A # <CJK>
0x516B # <CJK>
0x516C # <CJK>
0x516D # <CJK>
+0x516E # <CJK>
0x5171 # <CJK>
0x5175 # <CJK>
+0x5176 # <CJK>
0x5177 # <CJK>
0x5178 # <CJK>
0x517C # <CJK>
+0x5180 # <CJK>
+0x5182 # <CJK>
0x5185 # <CJK>
0x5186 # <CJK>
+0x5189 # <CJK>
0x518A # <CJK>
+0x518C # <CJK>
0x518D # <CJK>
+0x518F # <CJK>
+0x5190 # <CJK>
+0x5191 # <CJK>
0x5192 # <CJK>
+0x5193 # <CJK>
+0x5195 # <CJK>
+0x5196 # <CJK>
0x5197 # <CJK>
0x5199 # <CJK>
0x51A0 # <CJK>
+0x51A2 # <CJK>
+0x51A4 # <CJK>
0x51A5 # <CJK>
+0x51A6 # <CJK>
+0x51A8 # <CJK>
+0x51A9 # <CJK>
+0x51AA # <CJK>
+0x51AB # <CJK>
0x51AC # <CJK>
+0x51B0 # <CJK>
+0x51B1 # <CJK>
+0x51B2 # <CJK>
+0x51B3 # <CJK>
+0x51B4 # <CJK>
+0x51B5 # <CJK>
0x51B6 # <CJK>
0x51B7 # <CJK>
+0x51BD # <CJK>
0x51C4 # <CJK>
+0x51C5 # <CJK>
0x51C6 # <CJK>
+0x51C9 # <CJK>
+0x51CB # <CJK>
+0x51CC # <CJK>
0x51CD # <CJK>
+0x51D6 # <CJK>
+0x51DB # <CJK>
+#0x51DC # <CJK> # not in kochi fonts
0x51DD # <CJK>
+0x51E0 # <CJK>
0x51E1 # <CJK>
0x51E6 # <CJK>
+0x51E7 # <CJK>
+0x51E9 # <CJK>
+0x51EA # <CJK>
+0x51ED # <CJK>
+0x51F0 # <CJK>
+0x51F1 # <CJK>
+0x51F5 # <CJK>
0x51F6 # <CJK>
0x51F8 # <CJK>
0x51F9 # <CJK>
0x51FA # <CJK>
+0x51FD # <CJK>
+0x51FE # <CJK>
0x5200 # <CJK>
0x5203 # <CJK>
+0x5204 # <CJK>
0x5206 # <CJK>
0x5207 # <CJK>
0x5208 # <CJK>
0x520A # <CJK>
+0x520B # <CJK>
+0x520E # <CJK>
0x5211 # <CJK>
+0x5214 # <CJK>
0x5217 # <CJK>
0x521D # <CJK>
0x5224 # <CJK>
0x5225 # <CJK>
+0x5227 # <CJK>
0x5229 # <CJK>
+0x522A # <CJK>
+0x522E # <CJK>
0x5230 # <CJK>
+0x5233 # <CJK>
0x5236 # <CJK>
0x5237 # <CJK>
0x5238 # <CJK>
0x5239 # <CJK>
0x523A # <CJK>
0x523B # <CJK>
+0x5243 # <CJK>
+0x5244 # <CJK>
0x5247 # <CJK>
0x524A # <CJK>
+0x524B # <CJK>
+0x524C # <CJK>
0x524D # <CJK>
+0x524F # <CJK>
+0x5254 # <CJK>
0x5256 # <CJK>
0x525B # <CJK>
-#0x525D # <CJK> # not in sazanami gothic/mincho, DroidSansJapanese
+0x525E # <CJK>
0x5263 # <CJK>
0x5264 # <CJK>
+0x5265 # <CJK>
+0x5269 # <CJK>
+0x526A # <CJK>
0x526F # <CJK>
0x5270 # <CJK>
+0x5271 # <CJK>
0x5272 # <CJK>
+0x5273 # <CJK>
+0x5274 # <CJK>
0x5275 # <CJK>
+0x527D # <CJK>
+0x527F # <CJK>
+0x5283 # <CJK>
0x5287 # <CJK>
+0x5288 # <CJK>
+0x5289 # <CJK>
+0x528D # <CJK>
+0x5291 # <CJK>
+0x5292 # <CJK>
+0x5294 # <CJK>
0x529B # <CJK>
0x529F # <CJK>
0x52A0 # <CJK>
0x52A3 # <CJK>
0x52A9 # <CJK>
0x52AA # <CJK>
+0x52AB # <CJK>
+0x52AC # <CJK>
+0x52AD # <CJK>
0x52B1 # <CJK>
0x52B4 # <CJK>
+0x52B5 # <CJK>
0x52B9 # <CJK>
+0x52BC # <CJK>
0x52BE # <CJK>
+0x52C1 # <CJK>
0x52C3 # <CJK>
0x52C5 # <CJK>
0x52C7 # <CJK>
0x52C9 # <CJK>
+0x52CD # <CJK>
+0x52D2 # <CJK>
0x52D5 # <CJK>
+0x52D7 # <CJK>
0x52D8 # <CJK>
0x52D9 # <CJK>
0x52DD # <CJK>
+0x52DE # <CJK>
0x52DF # <CJK>
+0x52E0 # <CJK>
0x52E2 # <CJK>
+0x52E3 # <CJK>
0x52E4 # <CJK>
+0x52E6 # <CJK>
0x52E7 # <CJK>
0x52F2 # <CJK>
+0x52F3 # <CJK>
+0x52F5 # <CJK>
+0x52F8 # <CJK>
+0x52F9 # <CJK>
+0x52FA # <CJK>
0x52FE # <CJK>
+0x52FF # <CJK>
+0x5301 # <CJK>
0x5302 # <CJK>
0x5305 # <CJK>
+0x5306 # <CJK>
+0x5308 # <CJK>
+0x530D # <CJK>
+0x530F # <CJK>
+0x5310 # <CJK>
+0x5315 # <CJK>
0x5316 # <CJK>
0x5317 # <CJK>
+0x5319 # <CJK>
+0x531A # <CJK>
+0x531D # <CJK>
0x5320 # <CJK>
+0x5321 # <CJK>
+0x5323 # <CJK>
+0x532A # <CJK>
+0x532F # <CJK>
+0x5331 # <CJK>
+0x5333 # <CJK>
+0x5338 # <CJK>
0x5339 # <CJK>
0x533A # <CJK>
0x533B # <CJK>
0x533F # <CJK>
+0x5340 # <CJK>
0x5341 # <CJK>
0x5343 # <CJK>
+0x5345 # <CJK>
+0x5346 # <CJK>
0x5347 # <CJK>
0x5348 # <CJK>
+0x5349 # <CJK>
0x534A # <CJK>
+0x534D # <CJK>
0x5351 # <CJK>
0x5352 # <CJK>
0x5353 # <CJK>
@@ -472,21 +753,43 @@
0x5357 # <CJK>
0x5358 # <CJK>
0x535A # <CJK>
+0x535C # <CJK>
+0x535E # <CJK>
0x5360 # <CJK>
+0x5366 # <CJK>
+0x5369 # <CJK>
+0x536E # <CJK>
+0x536F # <CJK>
0x5370 # <CJK>
0x5371 # <CJK>
0x5373 # <CJK>
0x5374 # <CJK>
0x5375 # <CJK>
+0x5377 # <CJK>
0x5378 # <CJK>
+0x537B # <CJK>
+0x537F # <CJK>
+0x5382 # <CJK>
0x5384 # <CJK>
+0x5396 # <CJK>
0x5398 # <CJK>
0x539A # <CJK>
0x539F # <CJK>
+0x53A0 # <CJK>
+0x53A5 # <CJK>
+0x53A6 # <CJK>
+0x53A8 # <CJK>
+0x53A9 # <CJK>
+0x53AD # <CJK>
+0x53AE # <CJK>
+0x53B0 # <CJK>
0x53B3 # <CJK>
+0x53B6 # <CJK>
0x53BB # <CJK>
0x53C2 # <CJK>
+0x53C3 # <CJK>
0x53C8 # <CJK>
+0x53C9 # <CJK>
0x53CA # <CJK>
0x53CB # <CJK>
0x53CC # <CJK>
@@ -496,20 +799,36 @@
0x53D6 # <CJK>
0x53D7 # <CJK>
0x53D9 # <CJK>
+0x53DB # <CJK>
+0x53DF # <CJK>
+0x53E1 # <CJK>
+0x53E2 # <CJK>
0x53E3 # <CJK>
0x53E4 # <CJK>
0x53E5 # <CJK>
+0x53E8 # <CJK>
+0x53E9 # <CJK>
+0x53EA # <CJK>
0x53EB # <CJK>
0x53EC # <CJK>
+0x53ED # <CJK>
+0x53EE # <CJK>
0x53EF # <CJK>
0x53F0 # <CJK>
+0x53F1 # <CJK>
0x53F2 # <CJK>
0x53F3 # <CJK>
+0x53F6 # <CJK>
0x53F7 # <CJK>
0x53F8 # <CJK>
+0x53FA # <CJK>
+0x5401 # <CJK>
+0x5403 # <CJK>
0x5404 # <CJK>
0x5408 # <CJK>
0x5409 # <CJK>
+0x540A # <CJK>
+0x540B # <CJK>
0x540C # <CJK>
0x540D # <CJK>
0x540E # <CJK>
@@ -517,82 +836,273 @@
0x5410 # <CJK>
0x5411 # <CJK>
0x541B # <CJK>
+0x541D # <CJK>
0x541F # <CJK>
+0x5420 # <CJK>
0x5426 # <CJK>
+0x5429 # <CJK>
0x542B # <CJK>
+0x542C # <CJK>
+0x542D # <CJK>
+0x542E # <CJK>
+0x5436 # <CJK>
0x5438 # <CJK>
0x5439 # <CJK>
+0x543B # <CJK>
+0x543C # <CJK>
+0x543D # <CJK>
+0x543E # <CJK>
+0x5440 # <CJK>
0x5442 # <CJK>
+0x5446 # <CJK>
0x5448 # <CJK>
0x5449 # <CJK>
0x544A # <CJK>
+0x544E # <CJK>
+0x5451 # <CJK>
+0x545F # <CJK>
0x5468 # <CJK>
0x546A # <CJK>
+0x5470 # <CJK>
+0x5471 # <CJK>
0x5473 # <CJK>
+0x5475 # <CJK>
+0x5476 # <CJK>
+0x5477 # <CJK>
+0x547B # <CJK>
0x547C # <CJK>
0x547D # <CJK>
+0x5480 # <CJK>
+0x5484 # <CJK>
+0x5486 # <CJK>
+0x548B # <CJK>
0x548C # <CJK>
+0x548E # <CJK>
+0x548F # <CJK>
+0x5490 # <CJK>
+0x5492 # <CJK>
+0x54A2 # <CJK>
+0x54A4 # <CJK>
+0x54A5 # <CJK>
+0x54A8 # <CJK>
+0x54AB # <CJK>
+0x54AC # <CJK>
+0x54AF # <CJK>
0x54B2 # <CJK>
+0x54B3 # <CJK>
+0x54B8 # <CJK>
+0x54BC # <CJK>
0x54BD # <CJK>
+0x54BE # <CJK>
0x54C0 # <CJK>
0x54C1 # <CJK>
+0x54C2 # <CJK>
+0x54C4 # <CJK>
+0x54C7 # <CJK>
+0x54C8 # <CJK>
+0x54C9 # <CJK>
+0x54D8 # <CJK>
0x54E1 # <CJK>
+0x54E2 # <CJK>
+0x54E5 # <CJK>
+0x54E6 # <CJK>
+0x54E8 # <CJK>
+0x54E9 # <CJK>
+0x54ED # <CJK>
+0x54EE # <CJK>
0x54F2 # <CJK>
0x54FA # <CJK>
+0x54FD # <CJK>
0x5504 # <CJK>
0x5506 # <CJK>
0x5507 # <CJK>
+0x550F # <CJK>
0x5510 # <CJK>
+0x5514 # <CJK>
+0x5516 # <CJK>
+0x552E # <CJK>
0x552F # <CJK>
0x5531 # <CJK>
+0x5533 # <CJK>
+0x5538 # <CJK>
+0x5539 # <CJK>
0x553E # <CJK>
+0x5540 # <CJK>
+0x5544 # <CJK>
+0x5545 # <CJK>
0x5546 # <CJK>
+0x554C # <CJK>
0x554F # <CJK>
0x5553 # <CJK>
+0x5556 # <CJK>
+0x5557 # <CJK>
+0x555C # <CJK>
+0x555D # <CJK>
+0x5563 # <CJK>
+0x557B # <CJK>
+0x557C # <CJK>
+0x557E # <CJK>
+0x5580 # <CJK>
+0x5583 # <CJK>
0x5584 # <CJK>
+0x5587 # <CJK>
0x5589 # <CJK>
+0x558A # <CJK>
+0x558B # <CJK>
+0x5598 # <CJK>
+0x5599 # <CJK>
0x559A # <CJK>
0x559C # <CJK>
0x559D # <CJK>
+0x559E # <CJK>
+0x559F # <CJK>
+0x55A7 # <CJK>
+0x55A8 # <CJK>
0x55A9 # <CJK>
0x55AA # <CJK>
0x55AB # <CJK>
+0x55AC # <CJK>
+0x55AE # <CJK>
+0x55B0 # <CJK>
0x55B6 # <CJK>
+0x55C4 # <CJK>
0x55C5 # <CJK>
+0x55C7 # <CJK>
+0x55D4 # <CJK>
+0x55DA # <CJK>
+0x55DC # <CJK>
+0x55DF # <CJK>
0x55E3 # <CJK>
+0x55E4 # <CJK>
+0x55F7 # <CJK>
+0x55F9 # <CJK>
+0x55FD # <CJK>
+0x55FE # <CJK>
0x5606 # <CJK>
+0x5609 # <CJK>
+0x5614 # <CJK>
+0x5616 # <CJK>
+0x5617 # <CJK>
+0x5618 # <CJK>
+0x561B # <CJK>
+0x5629 # <CJK>
+0x562F # <CJK>
0x5631 # <CJK>
0x5632 # <CJK>
+0x5634 # <CJK>
+0x5636 # <CJK>
+0x5638 # <CJK>
+0x5642 # <CJK>
+0x564C # <CJK>
+0x564E # <CJK>
+0x5650 # <CJK>
+0x565B # <CJK>
+0x5664 # <CJK>
0x5668 # <CJK>
+0x566A # <CJK>
+0x566B # <CJK>
+0x566C # <CJK>
0x5674 # <CJK>
+0x5678 # <CJK>
+0x567A # <CJK>
+0x5680 # <CJK>
+0x5686 # <CJK>
0x5687 # <CJK>
+0x568A # <CJK>
+0x568F # <CJK>
+0x5694 # <CJK>
+0x56A0 # <CJK>
+0x56A2 # <CJK>
+0x56A5 # <CJK>
+0x56AE # <CJK>
+0x56B4 # <CJK>
+0x56B6 # <CJK>
+0x56BC # <CJK>
+0x56C0 # <CJK>
+0x56C1 # <CJK>
+0x56C2 # <CJK>
+0x56C3 # <CJK>
+0x56C8 # <CJK>
+0x56CE # <CJK>
+0x56D1 # <CJK>
+0x56D3 # <CJK>
+0x56D7 # <CJK>
+0x56D8 # <CJK>
0x56DA # <CJK>
0x56DB # <CJK>
0x56DE # <CJK>
0x56E0 # <CJK>
0x56E3 # <CJK>
+0x56EE # <CJK>
0x56F0 # <CJK>
0x56F2 # <CJK>
0x56F3 # <CJK>
+0x56F9 # <CJK>
0x56FA # <CJK>
0x56FD # <CJK>
+0x56FF # <CJK>
+0x5700 # <CJK>
+0x5703 # <CJK>
+0x5704 # <CJK>
+0x5708 # <CJK>
+0x5709 # <CJK>
+0x570B # <CJK>
+0x570D # <CJK>
0x570F # <CJK>
0x5712 # <CJK>
+0x5713 # <CJK>
+0x5716 # <CJK>
+0x5718 # <CJK>
+0x571C # <CJK>
0x571F # <CJK>
+0x5726 # <CJK>
0x5727 # <CJK>
0x5728 # <CJK>
+0x572D # <CJK>
0x5730 # <CJK>
+0x5737 # <CJK>
+0x5738 # <CJK>
+0x573B # <CJK>
+0x5740 # <CJK>
0x5742 # <CJK>
0x5747 # <CJK>
0x574A # <CJK>
+0x574E # <CJK>
+0x574F # <CJK>
+0x5750 # <CJK>
0x5751 # <CJK>
+0x5761 # <CJK>
+0x5764 # <CJK>
+0x5766 # <CJK>
+0x5769 # <CJK>
0x576A # <CJK>
+0x577F # <CJK>
0x5782 # <CJK>
+0x5788 # <CJK>
+0x5789 # <CJK>
0x578B # <CJK>
+0x5793 # <CJK>
+0x57A0 # <CJK>
+0x57A2 # <CJK>
0x57A3 # <CJK>
+0x57A4 # <CJK>
+0x57AA # <CJK>
+0x57B0 # <CJK>
+0x57B3 # <CJK>
+0x57C0 # <CJK>
+0x57C3 # <CJK>
+0x57C6 # <CJK>
0x57CB # <CJK>
0x57CE # <CJK>
+0x57D2 # <CJK>
+0x57D3 # <CJK>
+0x57D4 # <CJK>
+0x57D6 # <CJK>
+0x57DC # <CJK>
0x57DF # <CJK>
+0x57E0 # <CJK>
+0x57E3 # <CJK>
+0x57F4 # <CJK>
0x57F7 # <CJK>
0x57F9 # <CJK>
0x57FA # <CJK>
@@ -601,111 +1111,267 @@
0x5802 # <CJK>
0x5805 # <CJK>
0x5806 # <CJK>
+0x580A # <CJK>
+0x580B # <CJK>
0x5815 # <CJK>
+0x5819 # <CJK>
+0x581D # <CJK>
+0x5821 # <CJK>
0x5824 # <CJK>
0x582A # <CJK>
+0x582F # <CJK>
+0x5830 # <CJK>
0x5831 # <CJK>
0x5834 # <CJK>
+0x5835 # <CJK>
+0x583A # <CJK>
+0x583D # <CJK>
0x5840 # <CJK>
0x5841 # <CJK>
0x584A # <CJK>
+0x584B # <CJK>
0x5851 # <CJK>
+0x5852 # <CJK>
0x5854 # <CJK>
0x5857 # <CJK>
+0x5858 # <CJK>
+0x5859 # <CJK>
0x585A # <CJK>
0x585E # <CJK>
-#0x5861 # <CJK> # not in DroidSansJapanese
+0x5862 # <CJK>
0x5869 # <CJK>
+0x586B # <CJK>
+0x5870 # <CJK>
+0x5872 # <CJK>
+0x5875 # <CJK>
+0x5879 # <CJK>
0x587E # <CJK>
0x5883 # <CJK>
+0x5885 # <CJK>
0x5893 # <CJK>
0x5897 # <CJK>
0x589C # <CJK>
+0x589F # <CJK>
0x58A8 # <CJK>
+0x58AB # <CJK>
+0x58AE # <CJK>
0x58B3 # <CJK>
+0x58B8 # <CJK>
+0x58B9 # <CJK>
+0x58BA # <CJK>
+0x58BB # <CJK>
0x58BE # <CJK>
0x58C1 # <CJK>
+0x58C5 # <CJK>
0x58C7 # <CJK>
0x58CA # <CJK>
0x58CC # <CJK>
+0x58D1 # <CJK>
+0x58D3 # <CJK>
+0x58D5 # <CJK>
+0x58D7 # <CJK>
+0x58D8 # <CJK>
+0x58D9 # <CJK>
+0x58DC # <CJK>
+0x58DE # <CJK>
+0x58DF # <CJK>
+0x58E4 # <CJK>
+0x58E5 # <CJK>
0x58EB # <CJK>
+0x58EC # <CJK>
0x58EE # <CJK>
+0x58EF # <CJK>
0x58F0 # <CJK>
0x58F1 # <CJK>
0x58F2 # <CJK>
+0x58F7 # <CJK>
+0x58F9 # <CJK>
+0x58FA # <CJK>
+0x58FB # <CJK>
+0x58FC # <CJK>
+0x58FD # <CJK>
+0x5902 # <CJK>
0x5909 # <CJK>
+0x590A # <CJK>
0x590F # <CJK>
+0x5910 # <CJK>
0x5915 # <CJK>
0x5916 # <CJK>
+0x5918 # <CJK>
+0x5919 # <CJK>
0x591A # <CJK>
+0x591B # <CJK>
0x591C # <CJK>
0x5922 # <CJK>
+0x5925 # <CJK>
0x5927 # <CJK>
0x5929 # <CJK>
0x592A # <CJK>
0x592B # <CJK>
+0x592C # <CJK>
+0x592D # <CJK>
0x592E # <CJK>
0x5931 # <CJK>
+0x5932 # <CJK>
+0x5937 # <CJK>
+0x5938 # <CJK>
+0x593E # <CJK>
+0x5944 # <CJK>
0x5947 # <CJK>
0x5948 # <CJK>
0x5949 # <CJK>
+0x594E # <CJK>
0x594F # <CJK>
+0x5950 # <CJK>
0x5951 # <CJK>
0x5954 # <CJK>
+0x5955 # <CJK>
+0x5957 # <CJK>
+0x5958 # <CJK>
+0x595A # <CJK>
+0x5960 # <CJK>
+0x5962 # <CJK>
0x5965 # <CJK>
+0x5967 # <CJK>
0x5968 # <CJK>
+0x5969 # <CJK>
0x596A # <CJK>
+0x596C # <CJK>
0x596E # <CJK>
0x5973 # <CJK>
0x5974 # <CJK>
+0x5978 # <CJK>
0x597D # <CJK>
+0x5981 # <CJK>
0x5982 # <CJK>
0x5983 # <CJK>
0x5984 # <CJK>
0x598A # <CJK>
+0x598D # <CJK>
+0x5993 # <CJK>
0x5996 # <CJK>
0x5999 # <CJK>
+0x599B # <CJK>
+0x599D # <CJK>
+0x59A3 # <CJK>
0x59A5 # <CJK>
0x59A8 # <CJK>
0x59AC # <CJK>
+0x59B2 # <CJK>
0x59B9 # <CJK>
0x59BB # <CJK>
+0x59BE # <CJK>
+0x59C6 # <CJK>
0x59C9 # <CJK>
0x59CB # <CJK>
+0x59D0 # <CJK>
+0x59D1 # <CJK>
0x59D3 # <CJK>
0x59D4 # <CJK>
+0x59D9 # <CJK>
+0x59DA # <CJK>
+0x59DC # <CJK>
+0x59E5 # <CJK>
+0x59E6 # <CJK>
+0x59E8 # <CJK>
+0x59EA # <CJK>
0x59EB # <CJK>
+0x59F6 # <CJK>
0x59FB # <CJK>
0x59FF # <CJK>
0x5A01 # <CJK>
+0x5A03 # <CJK>
+0x5A09 # <CJK>
+0x5A11 # <CJK>
0x5A18 # <CJK>
+0x5A1A # <CJK>
+0x5A1C # <CJK>
+0x5A1F # <CJK>
0x5A20 # <CJK>
+0x5A25 # <CJK>
+0x5A29 # <CJK>
0x5A2F # <CJK>
+0x5A35 # <CJK>
+0x5A36 # <CJK>
+0x5A3C # <CJK>
+0x5A40 # <CJK>
+0x5A41 # <CJK>
0x5A46 # <CJK>
+0x5A49 # <CJK>
0x5A5A # <CJK>
+0x5A62 # <CJK>
0x5A66 # <CJK>
+0x5A6A # <CJK>
+0x5A6C # <CJK>
0x5A7F # <CJK>
0x5A92 # <CJK>
+0x5A9A # <CJK>
0x5A9B # <CJK>
+0x5ABC # <CJK>
+0x5ABD # <CJK>
+0x5ABE # <CJK>
0x5AC1 # <CJK>
+0x5AC2 # <CJK>
0x5AC9 # <CJK>
+0x5ACB # <CJK>
0x5ACC # <CJK>
+0x5AD0 # <CJK>
+0x5AD6 # <CJK>
+0x5AD7 # <CJK>
0x5AE1 # <CJK>
+0x5AE3 # <CJK>
+0x5AE6 # <CJK>
+0x5AE9 # <CJK>
+0x5AFA # <CJK>
+0x5AFB # <CJK>
+0x5B09 # <CJK>
+0x5B0B # <CJK>
+0x5B0C # <CJK>
+0x5B16 # <CJK>
0x5B22 # <CJK>
+0x5B2A # <CJK>
+0x5B2C # <CJK>
+0x5B30 # <CJK>
+0x5B32 # <CJK>
+0x5B36 # <CJK>
+0x5B3E # <CJK>
+0x5B40 # <CJK>
+0x5B43 # <CJK>
+0x5B45 # <CJK>
0x5B50 # <CJK>
+0x5B51 # <CJK>
0x5B54 # <CJK>
+0x5B55 # <CJK>
0x5B57 # <CJK>
0x5B58 # <CJK>
+0x5B5A # <CJK>
+0x5B5B # <CJK>
+0x5B5C # <CJK>
0x5B5D # <CJK>
+0x5B5F # <CJK>
0x5B63 # <CJK>
0x5B64 # <CJK>
+0x5B65 # <CJK>
0x5B66 # <CJK>
+0x5B69 # <CJK>
0x5B6B # <CJK>
+0x5B70 # <CJK>
+0x5B71 # <CJK>
+0x5B73 # <CJK>
+0x5B75 # <CJK>
+0x5B78 # <CJK>
+0x5B7A # <CJK>
+0x5B80 # <CJK>
+0x5B83 # <CJK>
0x5B85 # <CJK>
0x5B87 # <CJK>
0x5B88 # <CJK>
0x5B89 # <CJK>
+0x5B8B # <CJK>
0x5B8C # <CJK>
+0x5B8D # <CJK>
+0x5B8F # <CJK>
+0x5B95 # <CJK>
0x5B97 # <CJK>
0x5B98 # <CJK>
0x5B99 # <CJK>
@@ -717,26 +1383,47 @@
0x5BA2 # <CJK>
0x5BA3 # <CJK>
0x5BA4 # <CJK>
+0x5BA5 # <CJK>
+0x5BA6 # <CJK>
0x5BAE # <CJK>
0x5BB0 # <CJK>
0x5BB3 # <CJK>
0x5BB4 # <CJK>
0x5BB5 # <CJK>
0x5BB6 # <CJK>
+0x5BB8 # <CJK>
0x5BB9 # <CJK>
0x5BBF # <CJK>
0x5BC2 # <CJK>
+0x5BC3 # <CJK>
0x5BC4 # <CJK>
+0x5BC5 # <CJK>
0x5BC6 # <CJK>
+0x5BC7 # <CJK>
+0x5BC9 # <CJK>
0x5BCC # <CJK>
+0x5BD0 # <CJK>
0x5BD2 # <CJK>
+0x5BD3 # <CJK>
+0x5BD4 # <CJK>
0x5BDB # <CJK>
0x5BDD # <CJK>
+0x5BDE # <CJK>
0x5BDF # <CJK>
0x5BE1 # <CJK>
+0x5BE2 # <CJK>
+0x5BE4 # <CJK>
+0x5BE5 # <CJK>
+0x5BE6 # <CJK>
0x5BE7 # <CJK>
+0x5BE8 # <CJK>
0x5BE9 # <CJK>
+0x5BEB # <CJK>
0x5BEE # <CJK>
+0x5BF0 # <CJK>
+0x5BF3 # <CJK>
+0x5BF5 # <CJK>
+0x5BF6 # <CJK>
0x5BF8 # <CJK>
0x5BFA # <CJK>
0x5BFE # <CJK>
@@ -744,15 +1431,28 @@
0x5C01 # <CJK>
0x5C02 # <CJK>
0x5C04 # <CJK>
+0x5C05 # <CJK>
0x5C06 # <CJK>
+0x5C07 # <CJK>
+0x5C08 # <CJK>
0x5C09 # <CJK>
0x5C0A # <CJK>
0x5C0B # <CJK>
+0x5C0D # <CJK>
0x5C0E # <CJK>
0x5C0F # <CJK>
0x5C11 # <CJK>
+0x5C13 # <CJK>
+0x5C16 # <CJK>
0x5C1A # <CJK>
+0x5C20 # <CJK>
+0x5C22 # <CJK>
+0x5C24 # <CJK>
+0x5C28 # <CJK>
+0x5C2D # <CJK>
0x5C31 # <CJK>
+0x5C38 # <CJK>
+0x5C39 # <CJK>
0x5C3A # <CJK>
0x5C3B # <CJK>
0x5C3C # <CJK>
@@ -760,31 +1460,109 @@
0x5C3E # <CJK>
0x5C3F # <CJK>
0x5C40 # <CJK>
+0x5C41 # <CJK>
0x5C45 # <CJK>
+0x5C46 # <CJK>
0x5C48 # <CJK>
0x5C4A # <CJK>
0x5C4B # <CJK>
+0x5C4D # <CJK>
+0x5C4E # <CJK>
+0x5C4F # <CJK>
+0x5C50 # <CJK>
+0x5C51 # <CJK>
+0x5C53 # <CJK>
0x5C55 # <CJK>
0x5C5E # <CJK>
+0x5C60 # <CJK>
+0x5C61 # <CJK>
0x5C64 # <CJK>
0x5C65 # <CJK>
+0x5C6C # <CJK>
+0x5C6E # <CJK>
0x5C6F # <CJK>
0x5C71 # <CJK>
+0x5C76 # <CJK>
+0x5C79 # <CJK>
+0x5C8C # <CJK>
0x5C90 # <CJK>
+0x5C91 # <CJK>
+0x5C94 # <CJK>
0x5CA1 # <CJK>
+0x5CA8 # <CJK>
0x5CA9 # <CJK>
+0x5CAB # <CJK>
0x5CAC # <CJK>
+0x5CB1 # <CJK>
0x5CB3 # <CJK>
+0x5CB6 # <CJK>
+0x5CB7 # <CJK>
0x5CB8 # <CJK>
+0x5CBB # <CJK>
+0x5CBC # <CJK>
+0x5CBE # <CJK>
+0x5CC5 # <CJK>
+0x5CC7 # <CJK>
+0x5CD9 # <CJK>
0x5CE0 # <CJK>
0x5CE1 # <CJK>
+0x5CE8 # <CJK>
+0x5CE9 # <CJK>
+0x5CEA # <CJK>
+0x5CED # <CJK>
+0x5CEF # <CJK>
0x5CF0 # <CJK>
0x5CF6 # <CJK>
+0x5CFA # <CJK>
+0x5CFB # <CJK>
+0x5CFD # <CJK>
0x5D07 # <CJK>
+0x5D0B # <CJK>
0x5D0E # <CJK>
+0x5D11 # <CJK>
+0x5D14 # <CJK>
+0x5D15 # <CJK>
0x5D16 # <CJK>
+0x5D17 # <CJK>
+0x5D18 # <CJK>
+0x5D19 # <CJK>
+0x5D1A # <CJK>
+0x5D1B # <CJK>
+0x5D1F # <CJK>
+0x5D22 # <CJK>
0x5D29 # <CJK>
+0x5D4B # <CJK>
+0x5D4C # <CJK>
+0x5D4E # <CJK>
0x5D50 # <CJK>
+0x5D52 # <CJK>
+0x5D5C # <CJK>
+0x5D69 # <CJK>
+0x5D6C # <CJK>
+0x5D6F # <CJK>
+0x5D73 # <CJK>
+0x5D76 # <CJK>
+0x5D82 # <CJK>
+0x5D84 # <CJK>
+0x5D87 # <CJK>
+0x5D8B # <CJK>
+0x5D8C # <CJK>
+0x5D90 # <CJK>
+0x5D9D # <CJK>
+0x5DA2 # <CJK>
+0x5DAC # <CJK>
+0x5DAE # <CJK>
+0x5DB7 # <CJK>
+0x5DBA # <CJK>
+0x5DBC # <CJK>
+0x5DBD # <CJK>
+0x5DC9 # <CJK>
+0x5DCC # <CJK>
+0x5DCD # <CJK>
+0x5DD2 # <CJK>
+0x5DD3 # <CJK>
+0x5DD6 # <CJK>
+0x5DDB # <CJK>
0x5DDD # <CJK>
0x5DDE # <CJK>
0x5DE1 # <CJK>
@@ -793,14 +1571,27 @@
0x5DE6 # <CJK>
0x5DE7 # <CJK>
0x5DE8 # <CJK>
+0x5DEB # <CJK>
0x5DEE # <CJK>
0x5DF1 # <CJK>
+0x5DF2 # <CJK>
+0x5DF3 # <CJK>
+0x5DF4 # <CJK>
+0x5DF5 # <CJK>
+0x5DF7 # <CJK>
0x5DFB # <CJK>
+0x5DFD # <CJK>
0x5DFE # <CJK>
0x5E02 # <CJK>
0x5E03 # <CJK>
0x5E06 # <CJK>
+0x5E0B # <CJK>
0x5E0C # <CJK>
+0x5E11 # <CJK>
+0x5E16 # <CJK>
+0x5E19 # <CJK>
+0x5E1A # <CJK>
+0x5E1B # <CJK>
0x5E1D # <CJK>
0x5E25 # <CJK>
0x5E2B # <CJK>
@@ -808,301 +1599,738 @@
0x5E2F # <CJK>
0x5E30 # <CJK>
0x5E33 # <CJK>
+0x5E36 # <CJK>
+0x5E37 # <CJK>
0x5E38 # <CJK>
0x5E3D # <CJK>
+0x5E40 # <CJK>
+0x5E43 # <CJK>
+0x5E44 # <CJK>
0x5E45 # <CJK>
+0x5E47 # <CJK>
+0x5E4C # <CJK>
+0x5E4E # <CJK>
+0x5E54 # <CJK>
0x5E55 # <CJK>
+0x5E57 # <CJK>
+0x5E5F # <CJK>
+0x5E61 # <CJK>
+0x5E62 # <CJK>
0x5E63 # <CJK>
+0x5E64 # <CJK>
0x5E72 # <CJK>
0x5E73 # <CJK>
0x5E74 # <CJK>
+0x5E75 # <CJK>
+0x5E76 # <CJK>
0x5E78 # <CJK>
0x5E79 # <CJK>
+0x5E7A # <CJK>
0x5E7B # <CJK>
0x5E7C # <CJK>
0x5E7D # <CJK>
0x5E7E # <CJK>
+0x5E7F # <CJK>
0x5E81 # <CJK>
0x5E83 # <CJK>
+0x5E84 # <CJK>
+0x5E87 # <CJK>
0x5E8A # <CJK>
0x5E8F # <CJK>
0x5E95 # <CJK>
+0x5E96 # <CJK>
0x5E97 # <CJK>
+0x5E9A # <CJK>
0x5E9C # <CJK>
+0x5EA0 # <CJK>
0x5EA6 # <CJK>
0x5EA7 # <CJK>
0x5EAB # <CJK>
0x5EAD # <CJK>
+0x5EB5 # <CJK>
0x5EB6 # <CJK>
0x5EB7 # <CJK>
0x5EB8 # <CJK>
+0x5EC1 # <CJK>
+0x5EC2 # <CJK>
0x5EC3 # <CJK>
+0x5EC8 # <CJK>
0x5EC9 # <CJK>
0x5ECA # <CJK>
+0x5ECF # <CJK>
+0x5ED0 # <CJK>
+0x5ED3 # <CJK>
+0x5ED6 # <CJK>
+0x5EDA # <CJK>
+0x5EDB # <CJK>
+0x5EDD # <CJK>
+0x5EDF # <CJK>
+0x5EE0 # <CJK>
+0x5EE1 # <CJK>
+0x5EE2 # <CJK>
+0x5EE3 # <CJK>
+0x5EE8 # <CJK>
+0x5EE9 # <CJK>
+0x5EEC # <CJK>
+0x5EF0 # <CJK>
+0x5EF1 # <CJK>
+0x5EF3 # <CJK>
+0x5EF4 # <CJK>
0x5EF6 # <CJK>
0x5EF7 # <CJK>
+0x5EF8 # <CJK>
0x5EFA # <CJK>
+0x5EFB # <CJK>
+0x5EFC # <CJK>
+0x5EFE # <CJK>
+0x5EFF # <CJK>
0x5F01 # <CJK>
+0x5F03 # <CJK>
0x5F04 # <CJK>
+0x5F09 # <CJK>
0x5F0A # <CJK>
+0x5F0B # <CJK>
+0x5F0C # <CJK>
+0x5F0D # <CJK>
0x5F0F # <CJK>
0x5F10 # <CJK>
+0x5F11 # <CJK>
0x5F13 # <CJK>
0x5F14 # <CJK>
0x5F15 # <CJK>
+0x5F16 # <CJK>
+0x5F17 # <CJK>
+0x5F18 # <CJK>
+0x5F1B # <CJK>
0x5F1F # <CJK>
0x5F25 # <CJK>
0x5F26 # <CJK>
0x5F27 # <CJK>
+0x5F29 # <CJK>
+0x5F2D # <CJK>
+0x5F2F # <CJK>
0x5F31 # <CJK>
0x5F35 # <CJK>
0x5F37 # <CJK>
+0x5F38 # <CJK>
+0x5F3C # <CJK>
0x5F3E # <CJK>
+0x5F41 # <CJK>
+0x5F48 # <CJK>
+0x5F4A # <CJK>
+0x5F4C # <CJK>
+0x5F4E # <CJK>
+0x5F51 # <CJK>
0x5F53 # <CJK>
+0x5F56 # <CJK>
+0x5F57 # <CJK>
0x5F59 # <CJK>
+0x5F5C # <CJK>
+0x5F5D # <CJK>
+0x5F61 # <CJK>
0x5F62 # <CJK>
+0x5F66 # <CJK>
0x5F69 # <CJK>
+0x5F6A # <CJK>
0x5F6B # <CJK>
+0x5F6C # <CJK>
+0x5F6D # <CJK>
0x5F70 # <CJK>
0x5F71 # <CJK>
+0x5F73 # <CJK>
+0x5F77 # <CJK>
0x5F79 # <CJK>
0x5F7C # <CJK>
+0x5F7F # <CJK>
0x5F80 # <CJK>
0x5F81 # <CJK>
+0x5F82 # <CJK>
+0x5F83 # <CJK>
0x5F84 # <CJK>
0x5F85 # <CJK>
+0x5F87 # <CJK>
+0x5F88 # <CJK>
+0x5F8A # <CJK>
0x5F8B # <CJK>
0x5F8C # <CJK>
0x5F90 # <CJK>
+0x5F91 # <CJK>
0x5F92 # <CJK>
0x5F93 # <CJK>
0x5F97 # <CJK>
+0x5F98 # <CJK>
+0x5F99 # <CJK>
+0x5F9E # <CJK>
+0x5FA0 # <CJK>
0x5FA1 # <CJK>
+0x5FA8 # <CJK>
0x5FA9 # <CJK>
0x5FAA # <CJK>
+0x5FAD # <CJK>
0x5FAE # <CJK>
0x5FB3 # <CJK>
0x5FB4 # <CJK>
0x5FB9 # <CJK>
+0x5FBC # <CJK>
+0x5FBD # <CJK>
0x5FC3 # <CJK>
0x5FC5 # <CJK>
0x5FCC # <CJK>
0x5FCD # <CJK>
+0x5FD6 # <CJK>
0x5FD7 # <CJK>
0x5FD8 # <CJK>
0x5FD9 # <CJK>
0x5FDC # <CJK>
+0x5FDD # <CJK>
0x5FE0 # <CJK>
+0x5FE4 # <CJK>
0x5FEB # <CJK>
+0x5FF0 # <CJK>
+0x5FF1 # <CJK>
0x5FF5 # <CJK>
+0x5FF8 # <CJK>
+0x5FFB # <CJK>
+0x5FFD # <CJK>
+0x5FFF # <CJK>
+0x600E # <CJK>
+0x600F # <CJK>
+0x6010 # <CJK>
0x6012 # <CJK>
+0x6015 # <CJK>
0x6016 # <CJK>
+0x6019 # <CJK>
+0x601B # <CJK>
+0x601C # <CJK>
0x601D # <CJK>
0x6020 # <CJK>
+0x6021 # <CJK>
0x6025 # <CJK>
+0x6026 # <CJK>
0x6027 # <CJK>
0x6028 # <CJK>
+0x6029 # <CJK>
0x602A # <CJK>
+0x602B # <CJK>
+0x602F # <CJK>
+0x6031 # <CJK>
+0x603A # <CJK>
+0x6041 # <CJK>
+0x6042 # <CJK>
+0x6043 # <CJK>
+0x6046 # <CJK>
+0x604A # <CJK>
0x604B # <CJK>
+0x604D # <CJK>
0x6050 # <CJK>
0x6052 # <CJK>
+0x6055 # <CJK>
+0x6059 # <CJK>
+0x605A # <CJK>
+0x605F # <CJK>
+0x6060 # <CJK>
+0x6062 # <CJK>
0x6063 # <CJK>
+0x6064 # <CJK>
0x6065 # <CJK>
0x6068 # <CJK>
0x6069 # <CJK>
+0x606A # <CJK>
+0x606B # <CJK>
+0x606C # <CJK>
0x606D # <CJK>
0x606F # <CJK>
+0x6070 # <CJK>
0x6075 # <CJK>
+0x6077 # <CJK>
+0x6081 # <CJK>
+0x6083 # <CJK>
+0x6084 # <CJK>
+0x6089 # <CJK>
+0x608B # <CJK>
+0x608C # <CJK>
+0x608D # <CJK>
+0x6092 # <CJK>
0x6094 # <CJK>
+0x6096 # <CJK>
+0x6097 # <CJK>
+0x609A # <CJK>
+0x609B # <CJK>
0x609F # <CJK>
0x60A0 # <CJK>
0x60A3 # <CJK>
0x60A6 # <CJK>
+0x60A7 # <CJK>
0x60A9 # <CJK>
0x60AA # <CJK>
0x60B2 # <CJK>
+0x60B3 # <CJK>
+0x60B4 # <CJK>
+0x60B5 # <CJK>
+0x60B6 # <CJK>
+0x60B8 # <CJK>
0x60BC # <CJK>
+0x60BD # <CJK>
0x60C5 # <CJK>
+0x60C6 # <CJK>
+0x60C7 # <CJK>
0x60D1 # <CJK>
+0x60D3 # <CJK>
+0x60D8 # <CJK>
+0x60DA # <CJK>
0x60DC # <CJK>
+0x60DF # <CJK>
+0x60E0 # <CJK>
+0x60E1 # <CJK>
+0x60E3 # <CJK>
0x60E7 # <CJK>
0x60E8 # <CJK>
0x60F0 # <CJK>
+0x60F1 # <CJK>
0x60F3 # <CJK>
+0x60F4 # <CJK>
+0x60F6 # <CJK>
+0x60F7 # <CJK>
+0x60F9 # <CJK>
+0x60FA # <CJK>
+0x60FB # <CJK>
+0x6100 # <CJK>
0x6101 # <CJK>
+0x6103 # <CJK>
+0x6106 # <CJK>
+0x6108 # <CJK>
0x6109 # <CJK>
+0x610D # <CJK>
+0x610E # <CJK>
0x610F # <CJK>
+0x6115 # <CJK>
0x611A # <CJK>
0x611B # <CJK>
0x611F # <CJK>
+0x6121 # <CJK>
+0x6127 # <CJK>
+0x6128 # <CJK>
+0x612C # <CJK>
+0x6134 # <CJK>
+0x613C # <CJK>
+0x613D # <CJK>
+0x613E # <CJK>
+0x613F # <CJK>
+0x6142 # <CJK>
0x6144 # <CJK>
+0x6147 # <CJK>
0x6148 # <CJK>
+0x614A # <CJK>
0x614B # <CJK>
0x614C # <CJK>
+0x614D # <CJK>
0x614E # <CJK>
+0x6153 # <CJK>
0x6155 # <CJK>
+0x6158 # <CJK>
+0x6159 # <CJK>
+0x615A # <CJK>
+0x615D # <CJK>
+0x615F # <CJK>
0x6162 # <CJK>
0x6163 # <CJK>
+0x6165 # <CJK>
+0x6167 # <CJK>
0x6168 # <CJK>
+0x616B # <CJK>
0x616E # <CJK>
+0x616F # <CJK>
0x6170 # <CJK>
+0x6171 # <CJK>
+0x6173 # <CJK>
+0x6174 # <CJK>
+0x6175 # <CJK>
0x6176 # <CJK>
+0x6177 # <CJK>
+0x617E # <CJK>
0x6182 # <CJK>
+0x6187 # <CJK>
+0x618A # <CJK>
0x618E # <CJK>
+0x6190 # <CJK>
+0x6191 # <CJK>
+0x6194 # <CJK>
+0x6196 # <CJK>
+0x6199 # <CJK>
+0x619A # <CJK>
0x61A4 # <CJK>
0x61A7 # <CJK>
0x61A9 # <CJK>
+0x61AB # <CJK>
0x61AC # <CJK>
+0x61AE # <CJK>
0x61B2 # <CJK>
0x61B6 # <CJK>
+0x61BA # <CJK>
0x61BE # <CJK>
+0x61C3 # <CJK>
+0x61C6 # <CJK>
0x61C7 # <CJK>
+0x61C8 # <CJK>
+0x61C9 # <CJK>
+0x61CA # <CJK>
+0x61CB # <CJK>
+0x61CC # <CJK>
+0x61CD # <CJK>
0x61D0 # <CJK>
+0x61E3 # <CJK>
+0x61E6 # <CJK>
0x61F2 # <CJK>
+0x61F4 # <CJK>
+0x61F6 # <CJK>
+0x61F7 # <CJK>
0x61F8 # <CJK>
+0x61FA # <CJK>
+0x61FC # <CJK>
+0x61FD # <CJK>
+0x61FE # <CJK>
+0x61FF # <CJK>
+0x6200 # <CJK>
+0x6208 # <CJK>
+0x6209 # <CJK>
+0x620A # <CJK>
+0x620C # <CJK>
+0x620D # <CJK>
+0x620E # <CJK>
0x6210 # <CJK>
0x6211 # <CJK>
0x6212 # <CJK>
+0x6214 # <CJK>
+0x6216 # <CJK>
0x621A # <CJK>
+0x621B # <CJK>
+0x621D # <CJK>
+0x621E # <CJK>
+0x621F # <CJK>
+0x6221 # <CJK>
0x6226 # <CJK>
+0x622A # <CJK>
+0x622E # <CJK>
0x622F # <CJK>
+0x6230 # <CJK>
+0x6232 # <CJK>
+0x6233 # <CJK>
0x6234 # <CJK>
0x6238 # <CJK>
0x623B # <CJK>
0x623F # <CJK>
0x6240 # <CJK>
+0x6241 # <CJK>
0x6247 # <CJK>
+0x6248 # <CJK>
0x6249 # <CJK>
0x624B # <CJK>
0x624D # <CJK>
+0x624E # <CJK>
0x6253 # <CJK>
0x6255 # <CJK>
+0x6258 # <CJK>
+0x625B # <CJK>
+0x625E # <CJK>
+0x6260 # <CJK>
+0x6263 # <CJK>
+0x6268 # <CJK>
+0x626E # <CJK>
0x6271 # <CJK>
0x6276 # <CJK>
0x6279 # <CJK>
+0x627C # <CJK>
+0x627E # <CJK>
0x627F # <CJK>
0x6280 # <CJK>
+0x6282 # <CJK>
+0x6283 # <CJK>
0x6284 # <CJK>
+0x6289 # <CJK>
0x628A # <CJK>
0x6291 # <CJK>
+0x6292 # <CJK>
+0x6293 # <CJK>
+0x6294 # <CJK>
0x6295 # <CJK>
+0x6296 # <CJK>
0x6297 # <CJK>
0x6298 # <CJK>
+0x629B # <CJK>
0x629C # <CJK>
0x629E # <CJK>
0x62AB # <CJK>
+0x62AC # <CJK>
0x62B1 # <CJK>
0x62B5 # <CJK>
0x62B9 # <CJK>
+0x62BB # <CJK>
0x62BC # <CJK>
0x62BD # <CJK>
+0x62C2 # <CJK>
0x62C5 # <CJK>
+0x62C6 # <CJK>
+0x62C7 # <CJK>
+0x62C8 # <CJK>
0x62C9 # <CJK>
+0x62CA # <CJK>
+0x62CC # <CJK>
0x62CD # <CJK>
+0x62CF # <CJK>
0x62D0 # <CJK>
+0x62D1 # <CJK>
0x62D2 # <CJK>
0x62D3 # <CJK>
+0x62D4 # <CJK>
+0x62D7 # <CJK>
0x62D8 # <CJK>
0x62D9 # <CJK>
0x62DB # <CJK>
+0x62DC # <CJK>
0x62DD # <CJK>
0x62E0 # <CJK>
0x62E1 # <CJK>
0x62EC # <CJK>
0x62ED # <CJK>
+0x62EE # <CJK>
+0x62EF # <CJK>
+0x62F1 # <CJK>
0x62F3 # <CJK>
+0x62F5 # <CJK>
0x62F6 # <CJK>
0x62F7 # <CJK>
0x62FE # <CJK>
+0x62FF # <CJK>
0x6301 # <CJK>
+0x6302 # <CJK>
0x6307 # <CJK>
+0x6308 # <CJK>
+0x6309 # <CJK>
+0x630C # <CJK>
0x6311 # <CJK>
0x6319 # <CJK>
0x631F # <CJK>
+0x6327 # <CJK>
0x6328 # <CJK>
0x632B # <CJK>
0x632F # <CJK>
+0x633A # <CJK>
+0x633D # <CJK>
+0x633E # <CJK>
0x633F # <CJK>
0x6349 # <CJK>
+0x634C # <CJK>
+0x634D # <CJK>
+0x634F # <CJK>
+0x6350 # <CJK>
0x6355 # <CJK>
0x6357 # <CJK>
0x635C # <CJK>
+0x6367 # <CJK>
0x6368 # <CJK>
+0x6369 # <CJK>
+0x636B # <CJK>
0x636E # <CJK>
+0x6372 # <CJK>
+0x6376 # <CJK>
+0x6377 # <CJK>
+0x637A # <CJK>
0x637B # <CJK>
+0x6380 # <CJK>
0x6383 # <CJK>
0x6388 # <CJK>
+0x6389 # <CJK>
0x638C # <CJK>
+0x638E # <CJK>
+0x638F # <CJK>
0x6392 # <CJK>
+0x6396 # <CJK>
0x6398 # <CJK>
0x639B # <CJK>
+0x639F # <CJK>
+0x63A0 # <CJK>
0x63A1 # <CJK>
0x63A2 # <CJK>
+0x63A3 # <CJK>
0x63A5 # <CJK>
0x63A7 # <CJK>
0x63A8 # <CJK>
+0x63A9 # <CJK>
0x63AA # <CJK>
+0x63AB # <CJK>
+0x63AC # <CJK>
0x63B2 # <CJK>
+0x63B4 # <CJK>
+0x63B5 # <CJK>
+0x63BB # <CJK>
+0x63BE # <CJK>
+0x63C0 # <CJK>
+0x63C3 # <CJK>
+0x63C4 # <CJK>
+0x63C6 # <CJK>
+0x63C9 # <CJK>
0x63CF # <CJK>
0x63D0 # <CJK>
+0x63D2 # <CJK>
+0x63D6 # <CJK>
0x63DA # <CJK>
0x63DB # <CJK>
0x63E1 # <CJK>
+0x63E3 # <CJK>
+0x63E9 # <CJK>
0x63EE # <CJK>
0x63F4 # <CJK>
+0x63F6 # <CJK>
0x63FA # <CJK>
+0x6406 # <CJK>
0x640D # <CJK>
+0x640F # <CJK>
+0x6413 # <CJK>
+0x6416 # <CJK>
+0x6417 # <CJK>
+0x641C # <CJK>
+0x6426 # <CJK>
+0x6428 # <CJK>
0x642C # <CJK>
0x642D # <CJK>
+0x6434 # <CJK>
+0x6436 # <CJK>
0x643A # <CJK>
0x643E # <CJK>
0x6442 # <CJK>
+0x644E # <CJK>
0x6458 # <CJK>
+0x6467 # <CJK>
0x6469 # <CJK>
0x646F # <CJK>
+0x6476 # <CJK>
+0x6478 # <CJK>
+0x647A # <CJK>
0x6483 # <CJK>
+0x6488 # <CJK>
+0x6492 # <CJK>
+0x6493 # <CJK>
+0x6495 # <CJK>
+0x649A # <CJK>
+0x649E # <CJK>
0x64A4 # <CJK>
+0x64A5 # <CJK>
+0x64A9 # <CJK>
+0x64AB # <CJK>
+0x64AD # <CJK>
0x64AE # <CJK>
+0x64B0 # <CJK>
0x64B2 # <CJK>
+0x64B9 # <CJK>
+0x64BB # <CJK>
+0x64BC # <CJK>
0x64C1 # <CJK>
+0x64C2 # <CJK>
+0x64C5 # <CJK>
+0x64C7 # <CJK>
0x64CD # <CJK>
+0x64D2 # <CJK>
+0x64D4 # <CJK>
+0x64D8 # <CJK>
+0x64DA # <CJK>
+0x64E0 # <CJK>
+0x64E1 # <CJK>
+0x64E2 # <CJK>
+0x64E3 # <CJK>
0x64E6 # <CJK>
+0x64E7 # <CJK>
0x64EC # <CJK>
+0x64EF # <CJK>
+0x64F1 # <CJK>
+0x64F2 # <CJK>
+0x64F4 # <CJK>
+0x64F6 # <CJK>
+0x64FA # <CJK>
+0x64FD # <CJK>
+0x64FE # <CJK>
+0x6500 # <CJK>
+0x6505 # <CJK>
+0x6518 # <CJK>
+0x651C # <CJK>
+0x651D # <CJK>
+0x6523 # <CJK>
+0x6524 # <CJK>
+0x652A # <CJK>
+0x652B # <CJK>
+0x652C # <CJK>
0x652F # <CJK>
+0x6534 # <CJK>
+0x6535 # <CJK>
+0x6536 # <CJK>
+0x6537 # <CJK>
+0x6538 # <CJK>
0x6539 # <CJK>
0x653B # <CJK>
0x653E # <CJK>
0x653F # <CJK>
0x6545 # <CJK>
+0x6548 # <CJK>
+0x654D # <CJK>
0x654F # <CJK>
0x6551 # <CJK>
+0x6555 # <CJK>
+0x6556 # <CJK>
0x6557 # <CJK>
+0x6558 # <CJK>
0x6559 # <CJK>
+0x655D # <CJK>
+0x655E # <CJK>
0x6562 # <CJK>
0x6563 # <CJK>
+0x6566 # <CJK>
0x656C # <CJK>
0x6570 # <CJK>
+0x6572 # <CJK>
0x6574 # <CJK>
0x6575 # <CJK>
0x6577 # <CJK>
+0x6578 # <CJK>
+0x6582 # <CJK>
+0x6583 # <CJK>
0x6587 # <CJK>
+0x6588 # <CJK>
0x6589 # <CJK>
+0x658C # <CJK>
0x658E # <CJK>
+0x6590 # <CJK>
0x6591 # <CJK>
0x6597 # <CJK>
0x6599 # <CJK>
+0x659B # <CJK>
0x659C # <CJK>
+0x659F # <CJK>
+0x65A1 # <CJK>
0x65A4 # <CJK>
0x65A5 # <CJK>
+0x65A7 # <CJK>
+0x65AB # <CJK>
0x65AC # <CJK>
0x65AD # <CJK>
+0x65AF # <CJK>
0x65B0 # <CJK>
+0x65B7 # <CJK>
0x65B9 # <CJK>
+0x65BC # <CJK>
0x65BD # <CJK>
+0x65C1 # <CJK>
+0x65C3 # <CJK>
+0x65C4 # <CJK>
0x65C5 # <CJK>
+0x65C6 # <CJK>
0x65CB # <CJK>
+0x65CC # <CJK>
0x65CF # <CJK>
+0x65D2 # <CJK>
0x65D7 # <CJK>
+0x65D9 # <CJK>
+0x65DB # <CJK>
+0x65E0 # <CJK>
+0x65E1 # <CJK>
0x65E2 # <CJK>
0x65E5 # <CJK>
0x65E6 # <CJK>
@@ -1110,12 +2338,21 @@
0x65E8 # <CJK>
0x65E9 # <CJK>
0x65EC # <CJK>
+0x65ED # <CJK>
+0x65F1 # <CJK>
0x65FA # <CJK>
+0x65FB # <CJK>
+0x6602 # <CJK>
+0x6603 # <CJK>
0x6606 # <CJK>
0x6607 # <CJK>
+0x660A # <CJK>
+0x660C # <CJK>
0x660E # <CJK>
+0x660F # <CJK>
0x6613 # <CJK>
0x6614 # <CJK>
+0x661C # <CJK>
0x661F # <CJK>
0x6620 # <CJK>
0x6625 # <CJK>
@@ -1123,59 +2360,146 @@
0x6628 # <CJK>
0x662D # <CJK>
0x662F # <CJK>
+0x6634 # <CJK>
+0x6635 # <CJK>
+0x6636 # <CJK>
0x663C # <CJK>
+0x663F # <CJK>
+0x6641 # <CJK>
0x6642 # <CJK>
+0x6643 # <CJK>
+0x6644 # <CJK>
+0x6649 # <CJK>
+0x664B # <CJK>
+0x664F # <CJK>
+0x6652 # <CJK>
+0x665D # <CJK>
+0x665E # <CJK>
+0x665F # <CJK>
+0x6662 # <CJK>
+0x6664 # <CJK>
+0x6666 # <CJK>
+0x6667 # <CJK>
+0x6668 # <CJK>
0x6669 # <CJK>
0x666E # <CJK>
0x666F # <CJK>
+0x6670 # <CJK>
0x6674 # <CJK>
0x6676 # <CJK>
+0x667A # <CJK>
0x6681 # <CJK>
+0x6683 # <CJK>
+0x6684 # <CJK>
0x6687 # <CJK>
+0x6688 # <CJK>
+0x6689 # <CJK>
+0x668E # <CJK>
0x6691 # <CJK>
0x6696 # <CJK>
0x6697 # <CJK>
+0x6698 # <CJK>
+0x669D # <CJK>
+0x66A2 # <CJK>
0x66A6 # <CJK>
0x66AB # <CJK>
0x66AE # <CJK>
0x66B4 # <CJK>
+0x66B8 # <CJK>
+0x66B9 # <CJK>
+0x66BC # <CJK>
+0x66BE # <CJK>
+0x66C1 # <CJK>
+0x66C4 # <CJK>
0x66C7 # <CJK>
+0x66C9 # <CJK>
0x66D6 # <CJK>
+0x66D9 # <CJK>
+0x66DA # <CJK>
0x66DC # <CJK>
+0x66DD # <CJK>
+0x66E0 # <CJK>
+0x66E6 # <CJK>
+0x66E9 # <CJK>
+0x66F0 # <CJK>
0x66F2 # <CJK>
+0x66F3 # <CJK>
0x66F4 # <CJK>
+0x66F5 # <CJK>
+0x66F7 # <CJK>
0x66F8 # <CJK>
0x66F9 # <CJK>
+0x66FC # <CJK>
0x66FD # <CJK>
+0x66FE # <CJK>
0x66FF # <CJK>
0x6700 # <CJK>
+0x6703 # <CJK>
0x6708 # <CJK>
0x6709 # <CJK>
+0x670B # <CJK>
0x670D # <CJK>
+0x670F # <CJK>
+0x6714 # <CJK>
0x6715 # <CJK>
+0x6716 # <CJK>
0x6717 # <CJK>
0x671B # <CJK>
0x671D # <CJK>
+0x671E # <CJK>
0x671F # <CJK>
+0x6726 # <CJK>
+0x6727 # <CJK>
0x6728 # <CJK>
0x672A # <CJK>
0x672B # <CJK>
0x672C # <CJK>
0x672D # <CJK>
+0x672E # <CJK>
0x6731 # <CJK>
0x6734 # <CJK>
+0x6736 # <CJK>
+0x6737 # <CJK>
+0x6738 # <CJK>
0x673A # <CJK>
0x673D # <CJK>
+0x673F # <CJK>
+0x6741 # <CJK>
+0x6746 # <CJK>
0x6749 # <CJK>
+0x674E # <CJK>
+0x674F # <CJK>
0x6750 # <CJK>
0x6751 # <CJK>
+0x6753 # <CJK>
+0x6756 # <CJK>
+0x6759 # <CJK>
+0x675C # <CJK>
+0x675E # <CJK>
0x675F # <CJK>
+0x6760 # <CJK>
0x6761 # <CJK>
+0x6762 # <CJK>
+0x6763 # <CJK>
+0x6764 # <CJK>
0x6765 # <CJK>
+0x676A # <CJK>
+0x676D # <CJK>
0x676F # <CJK>
+0x6770 # <CJK>
0x6771 # <CJK>
+0x6772 # <CJK>
+0x6773 # <CJK>
+0x6775 # <CJK>
+0x6777 # <CJK>
+0x677C # <CJK>
0x677E # <CJK>
0x677F # <CJK>
+0x6785 # <CJK>
+0x6787 # <CJK>
+0x6789 # <CJK>
+0x678B # <CJK>
+0x678C # <CJK>
0x6790 # <CJK>
0x6795 # <CJK>
0x6797 # <CJK>
@@ -1183,820 +2507,2836 @@
0x679C # <CJK>
0x679D # <CJK>
0x67A0 # <CJK>
+0x67A1 # <CJK>
0x67A2 # <CJK>
+0x67A6 # <CJK>
+0x67A9 # <CJK>
0x67AF # <CJK>
+0x67B3 # <CJK>
+0x67B4 # <CJK>
0x67B6 # <CJK>
+0x67B7 # <CJK>
+0x67B8 # <CJK>
+0x67B9 # <CJK>
+0x67C1 # <CJK>
0x67C4 # <CJK>
+0x67C6 # <CJK>
+0x67CA # <CJK>
+0x67CE # <CJK>
+0x67CF # <CJK>
0x67D0 # <CJK>
+0x67D1 # <CJK>
0x67D3 # <CJK>
0x67D4 # <CJK>
+0x67D8 # <CJK>
+0x67DA # <CJK>
+0x67DD # <CJK>
+0x67DE # <CJK>
+0x67E2 # <CJK>
+0x67E4 # <CJK>
+0x67E7 # <CJK>
+0x67E9 # <CJK>
+0x67EC # <CJK>
+0x67EE # <CJK>
+0x67EF # <CJK>
0x67F1 # <CJK>
0x67F3 # <CJK>
+0x67F4 # <CJK>
0x67F5 # <CJK>
0x67FB # <CJK>
+0x67FE # <CJK>
0x67FF # <CJK>
+0x6802 # <CJK>
0x6803 # <CJK>
0x6804 # <CJK>
0x6813 # <CJK>
+0x6816 # <CJK>
+0x6817 # <CJK>
+0x681E # <CJK>
0x6821 # <CJK>
+0x6822 # <CJK>
+0x6829 # <CJK>
0x682A # <CJK>
+0x682B # <CJK>
+0x6832 # <CJK>
+0x6834 # <CJK>
0x6838 # <CJK>
0x6839 # <CJK>
0x683C # <CJK>
0x683D # <CJK>
+0x6840 # <CJK>
0x6841 # <CJK>
+0x6842 # <CJK>
0x6843 # <CJK>
+0x6846 # <CJK>
0x6848 # <CJK>
+0x684D # <CJK>
+0x684E # <CJK>
+0x6850 # <CJK>
0x6851 # <CJK>
+0x6853 # <CJK>
+0x6854 # <CJK>
+0x6859 # <CJK>
0x685C # <CJK>
+0x685D # <CJK>
0x685F # <CJK>
+0x6863 # <CJK>
+0x6867 # <CJK>
+0x6874 # <CJK>
+0x6876 # <CJK>
+0x6877 # <CJK>
+0x687E # <CJK>
+0x687F # <CJK>
+0x6881 # <CJK>
+0x6883 # <CJK>
0x6885 # <CJK>
+0x688D # <CJK>
+0x688F # <CJK>
+0x6893 # <CJK>
+0x6894 # <CJK>
0x6897 # <CJK>
+0x689B # <CJK>
+0x689D # <CJK>
+0x689F # <CJK>
+0x68A0 # <CJK>
+0x68A2 # <CJK>
+0x68A6 # <CJK>
+0x68A7 # <CJK>
0x68A8 # <CJK>
+0x68AD # <CJK>
+0x68AF # <CJK>
0x68B0 # <CJK>
+0x68B1 # <CJK>
+0x68B3 # <CJK>
+0x68B5 # <CJK>
+0x68B6 # <CJK>
+0x68B9 # <CJK>
+0x68BA # <CJK>
+0x68BC # <CJK>
0x68C4 # <CJK>
+0x68C6 # <CJK>
+0x68C9 # <CJK>
+0x68CA # <CJK>
0x68CB # <CJK>
+0x68CD # <CJK>
0x68D2 # <CJK>
+0x68D4 # <CJK>
+0x68D5 # <CJK>
+0x68D7 # <CJK>
+0x68D8 # <CJK>
0x68DA # <CJK>
0x68DF # <CJK>
+0x68E0 # <CJK>
+0x68E1 # <CJK>
+0x68E3 # <CJK>
+0x68E7 # <CJK>
0x68EE # <CJK>
+0x68EF # <CJK>
+0x68F2 # <CJK>
+0x68F9 # <CJK>
0x68FA # <CJK>
+0x6900 # <CJK>
+0x6901 # <CJK>
+0x6904 # <CJK>
0x6905 # <CJK>
+0x6908 # <CJK>
+0x690B # <CJK>
+0x690C # <CJK>
0x690D # <CJK>
0x690E # <CJK>
+0x690F # <CJK>
+0x6912 # <CJK>
+0x6919 # <CJK>
+0x691A # <CJK>
+0x691B # <CJK>
0x691C # <CJK>
+0x6921 # <CJK>
+0x6922 # <CJK>
+0x6923 # <CJK>
+0x6925 # <CJK>
+0x6926 # <CJK>
+0x6928 # <CJK>
+0x692A # <CJK>
+0x6930 # <CJK>
+0x6934 # <CJK>
+0x6936 # <CJK>
+0x6939 # <CJK>
+0x693D # <CJK>
+0x693F # <CJK>
+0x694A # <CJK>
+0x6953 # <CJK>
+0x6954 # <CJK>
+0x6955 # <CJK>
+0x6959 # <CJK>
+0x695A # <CJK>
+0x695C # <CJK>
+0x695D # <CJK>
+0x695E # <CJK>
+0x6960 # <CJK>
+0x6961 # <CJK>
+0x6962 # <CJK>
+0x696A # <CJK>
+0x696B # <CJK>
0x696D # <CJK>
+0x696E # <CJK>
+0x696F # <CJK>
+0x6973 # <CJK>
+0x6974 # <CJK>
0x6975 # <CJK>
0x6977 # <CJK>
+0x6978 # <CJK>
+0x6979 # <CJK>
0x697C # <CJK>
0x697D # <CJK>
+0x697E # <CJK>
+0x6981 # <CJK>
0x6982 # <CJK>
+0x698A # <CJK>
+0x698E # <CJK>
+0x6991 # <CJK>
+0x6994 # <CJK>
+0x6995 # <CJK>
+0x699B # <CJK>
+0x699C # <CJK>
+0x69A0 # <CJK>
+0x69A7 # <CJK>
+0x69AE # <CJK>
+0x69B1 # <CJK>
+0x69B2 # <CJK>
+0x69B4 # <CJK>
+0x69BB # <CJK>
+0x69BE # <CJK>
+0x69BF # <CJK>
+0x69C1 # <CJK>
+0x69C3 # <CJK>
+0x69C7 # <CJK>
+0x69CA # <CJK>
0x69CB # <CJK>
+0x69CC # <CJK>
+0x69CD # <CJK>
+0x69CE # <CJK>
+0x69D0 # <CJK>
+0x69D3 # <CJK>
0x69D8 # <CJK>
+0x69D9 # <CJK>
+0x69DD # <CJK>
+0x69DE # <CJK>
+0x69E7 # <CJK>
+0x69E8 # <CJK>
+0x69EB # <CJK>
+0x69ED # <CJK>
+0x69F2 # <CJK>
+0x69F9 # <CJK>
+0x69FB # <CJK>
0x69FD # <CJK>
+0x69FF # <CJK>
+0x6A02 # <CJK>
+0x6A05 # <CJK>
+0x6A0A # <CJK>
+0x6A0B # <CJK>
+0x6A0C # <CJK>
+0x6A12 # <CJK>
+0x6A13 # <CJK>
+0x6A14 # <CJK>
+0x6A17 # <CJK>
0x6A19 # <CJK>
+0x6A1B # <CJK>
+0x6A1E # <CJK>
+0x6A1F # <CJK>
0x6A21 # <CJK>
+0x6A22 # <CJK>
+0x6A23 # <CJK>
0x6A29 # <CJK>
0x6A2A # <CJK>
+0x6A2B # <CJK>
+0x6A2E # <CJK>
+0x6A35 # <CJK>
+0x6A36 # <CJK>
+0x6A38 # <CJK>
0x6A39 # <CJK>
+0x6A3A # <CJK>
+0x6A3D # <CJK>
+0x6A44 # <CJK>
+0x6A47 # <CJK>
+0x6A48 # <CJK>
0x6A4B # <CJK>
+0x6A58 # <CJK>
+0x6A59 # <CJK>
0x6A5F # <CJK>
+0x6A61 # <CJK>
+0x6A62 # <CJK>
+0x6A66 # <CJK>
+0x6A72 # <CJK>
+0x6A78 # <CJK>
+0x6A7F # <CJK>
+0x6A80 # <CJK>
+0x6A84 # <CJK>
+0x6A8D # <CJK>
+0x6A8E # <CJK>
+0x6A90 # <CJK>
+0x6A97 # <CJK>
+0x6A9C # <CJK>
+0x6AA0 # <CJK>
+0x6AA2 # <CJK>
+0x6AA3 # <CJK>
+0x6AAA # <CJK>
+0x6AAC # <CJK>
+0x6AAE # <CJK>
+0x6AB3 # <CJK>
+0x6AB8 # <CJK>
+0x6ABB # <CJK>
+0x6AC1 # <CJK>
+0x6AC2 # <CJK>
+0x6AC3 # <CJK>
+0x6AD1 # <CJK>
+0x6AD3 # <CJK>
+0x6ADA # <CJK>
+0x6ADB # <CJK>
+0x6ADE # <CJK>
+0x6ADF # <CJK>
+0x6AE8 # <CJK>
+0x6AEA # <CJK>
+0x6AFA # <CJK>
+0x6AFB # <CJK>
0x6B04 # <CJK>
+0x6B05 # <CJK>
+0x6B0A # <CJK>
+0x6B12 # <CJK>
+0x6B16 # <CJK>
+0x6B1D # <CJK>
+0x6B1F # <CJK>
0x6B20 # <CJK>
0x6B21 # <CJK>
+0x6B23 # <CJK>
0x6B27 # <CJK>
0x6B32 # <CJK>
+0x6B37 # <CJK>
+0x6B38 # <CJK>
+0x6B39 # <CJK>
0x6B3A # <CJK>
+0x6B3D # <CJK>
0x6B3E # <CJK>
+0x6B43 # <CJK>
+0x6B47 # <CJK>
+0x6B49 # <CJK>
0x6B4C # <CJK>
+0x6B4E # <CJK>
+0x6B50 # <CJK>
0x6B53 # <CJK>
+0x6B54 # <CJK>
+0x6B59 # <CJK>
+0x6B5B # <CJK>
+0x6B5F # <CJK>
+0x6B61 # <CJK>
0x6B62 # <CJK>
0x6B63 # <CJK>
+0x6B64 # <CJK>
0x6B66 # <CJK>
0x6B69 # <CJK>
+0x6B6A # <CJK>
0x6B6F # <CJK>
0x6B73 # <CJK>
0x6B74 # <CJK>
+0x6B78 # <CJK>
+0x6B79 # <CJK>
0x6B7B # <CJK>
+0x6B7F # <CJK>
+0x6B80 # <CJK>
+0x6B83 # <CJK>
+0x6B84 # <CJK>
+0x6B86 # <CJK>
0x6B89 # <CJK>
0x6B8A # <CJK>
0x6B8B # <CJK>
+0x6B8D # <CJK>
+0x6B95 # <CJK>
0x6B96 # <CJK>
+0x6B98 # <CJK>
+0x6B9E # <CJK>
+0x6BA4 # <CJK>
+0x6BAA # <CJK>
+0x6BAB # <CJK>
+0x6BAF # <CJK>
+0x6BB1 # <CJK>
+0x6BB2 # <CJK>
+0x6BB3 # <CJK>
0x6BB4 # <CJK>
0x6BB5 # <CJK>
+0x6BB7 # <CJK>
0x6BBA # <CJK>
0x6BBB # <CJK>
+0x6BBC # <CJK>
0x6BBF # <CJK>
0x6BC0 # <CJK>
+0x6BC5 # <CJK>
+0x6BC6 # <CJK>
+0x6BCB # <CJK>
0x6BCD # <CJK>
0x6BCE # <CJK>
0x6BD2 # <CJK>
+0x6BD3 # <CJK>
0x6BD4 # <CJK>
+0x6BD8 # <CJK>
0x6BDB # <CJK>
+0x6BDF # <CJK>
+0x6BEB # <CJK>
+0x6BEC # <CJK>
+0x6BEF # <CJK>
+0x6BF3 # <CJK>
+0x6C08 # <CJK>
0x6C0F # <CJK>
0x6C11 # <CJK>
+0x6C13 # <CJK>
+0x6C14 # <CJK>
0x6C17 # <CJK>
+0x6C1B # <CJK>
+0x6C23 # <CJK>
+0x6C24 # <CJK>
0x6C34 # <CJK>
0x6C37 # <CJK>
0x6C38 # <CJK>
0x6C3E # <CJK>
+0x6C40 # <CJK>
0x6C41 # <CJK>
0x6C42 # <CJK>
0x6C4E # <CJK>
+0x6C50 # <CJK>
+0x6C55 # <CJK>
0x6C57 # <CJK>
0x6C5A # <CJK>
+0x6C5D # <CJK>
+0x6C5E # <CJK>
0x6C5F # <CJK>
0x6C60 # <CJK>
+0x6C62 # <CJK>
+0x6C68 # <CJK>
+0x6C6A # <CJK>
0x6C70 # <CJK>
+0x6C72 # <CJK>
+0x6C73 # <CJK>
0x6C7A # <CJK>
0x6C7D # <CJK>
+0x6C7E # <CJK>
+0x6C81 # <CJK>
+0x6C82 # <CJK>
0x6C83 # <CJK>
0x6C88 # <CJK>
+0x6C8C # <CJK>
+0x6C8D # <CJK>
+0x6C90 # <CJK>
+0x6C92 # <CJK>
+0x6C93 # <CJK>
0x6C96 # <CJK>
0x6C99 # <CJK>
+0x6C9A # <CJK>
+0x6C9B # <CJK>
0x6CA1 # <CJK>
0x6CA2 # <CJK>
+0x6CAB # <CJK>
+0x6CAE # <CJK>
+0x6CB1 # <CJK>
0x6CB3 # <CJK>
0x6CB8 # <CJK>
0x6CB9 # <CJK>
+0x6CBA # <CJK>
0x6CBB # <CJK>
0x6CBC # <CJK>
+0x6CBD # <CJK>
+0x6CBE # <CJK>
0x6CBF # <CJK>
0x6CC1 # <CJK>
+0x6CC4 # <CJK>
+0x6CC5 # <CJK>
0x6CC9 # <CJK>
0x6CCA # <CJK>
0x6CCC # <CJK>
+0x6CD3 # <CJK>
0x6CD5 # <CJK>
+0x6CD7 # <CJK>
+0x6CD9 # <CJK>
+0x6CDB # <CJK>
+0x6CDD # <CJK>
0x6CE1 # <CJK>
0x6CE2 # <CJK>
0x6CE3 # <CJK>
0x6CE5 # <CJK>
0x6CE8 # <CJK>
+0x6CEA # <CJK>
+0x6CEF # <CJK>
0x6CF0 # <CJK>
+0x6CF1 # <CJK>
0x6CF3 # <CJK>
0x6D0B # <CJK>
+0x6D0C # <CJK>
+0x6D12 # <CJK>
0x6D17 # <CJK>
+0x6D19 # <CJK>
+0x6D1B # <CJK>
0x6D1E # <CJK>
+0x6D1F # <CJK>
0x6D25 # <CJK>
+0x6D29 # <CJK>
0x6D2A # <CJK>
+0x6D2B # <CJK>
+0x6D32 # <CJK>
+0x6D33 # <CJK>
+0x6D35 # <CJK>
+0x6D36 # <CJK>
+0x6D38 # <CJK>
0x6D3B # <CJK>
+0x6D3D # <CJK>
0x6D3E # <CJK>
0x6D41 # <CJK>
0x6D44 # <CJK>
0x6D45 # <CJK>
+0x6D59 # <CJK>
+0x6D5A # <CJK>
0x6D5C # <CJK>
+0x6D63 # <CJK>
+0x6D64 # <CJK>
0x6D66 # <CJK>
+0x6D69 # <CJK>
0x6D6A # <CJK>
+0x6D6C # <CJK>
0x6D6E # <CJK>
0x6D74 # <CJK>
0x6D77 # <CJK>
0x6D78 # <CJK>
+0x6D79 # <CJK>
+0x6D85 # <CJK>
0x6D88 # <CJK>
+0x6D8C # <CJK>
+0x6D8E # <CJK>
+0x6D93 # <CJK>
+0x6D95 # <CJK>
0x6D99 # <CJK>
+0x6D9B # <CJK>
+0x6D9C # <CJK>
0x6DAF # <CJK>
0x6DB2 # <CJK>
+0x6DB5 # <CJK>
+0x6DB8 # <CJK>
0x6DBC # <CJK>
+0x6DC0 # <CJK>
+0x6DC5 # <CJK>
+0x6DC6 # <CJK>
+0x6DC7 # <CJK>
+0x6DCB # <CJK>
+0x6DCC # <CJK>
0x6DD1 # <CJK>
+0x6DD2 # <CJK>
+0x6DD5 # <CJK>
+0x6DD8 # <CJK>
+0x6DD9 # <CJK>
+0x6DDE # <CJK>
0x6DE1 # <CJK>
+0x6DE4 # <CJK>
+0x6DE6 # <CJK>
+0x6DE8 # <CJK>
+0x6DEA # <CJK>
0x6DEB # <CJK>
+0x6DEC # <CJK>
+0x6DEE # <CJK>
0x6DF1 # <CJK>
+0x6DF3 # <CJK>
+0x6DF5 # <CJK>
0x6DF7 # <CJK>
+0x6DF9 # <CJK>
+0x6DFA # <CJK>
0x6DFB # <CJK>
0x6E05 # <CJK>
0x6E07 # <CJK>
0x6E08 # <CJK>
0x6E09 # <CJK>
+0x6E0A # <CJK>
0x6E0B # <CJK>
0x6E13 # <CJK>
+0x6E15 # <CJK>
+0x6E19 # <CJK>
+0x6E1A # <CJK>
0x6E1B # <CJK>
+0x6E1D # <CJK>
+0x6E1F # <CJK>
+0x6E20 # <CJK>
0x6E21 # <CJK>
+0x6E23 # <CJK>
+0x6E24 # <CJK>
+0x6E25 # <CJK>
0x6E26 # <CJK>
0x6E29 # <CJK>
+0x6E2B # <CJK>
0x6E2C # <CJK>
+0x6E2D # <CJK>
+0x6E2E # <CJK>
0x6E2F # <CJK>
+0x6E38 # <CJK>
+0x6E3A # <CJK>
+0x6E3E # <CJK>
+0x6E43 # <CJK>
+0x6E4A # <CJK>
+0x6E4D # <CJK>
+0x6E4E # <CJK>
0x6E56 # <CJK>
+0x6E58 # <CJK>
+0x6E5B # <CJK>
+0x6E5F # <CJK>
0x6E67 # <CJK>
+0x6E6B # <CJK>
+0x6E6E # <CJK>
0x6E6F # <CJK>
+0x6E72 # <CJK>
+0x6E76 # <CJK>
0x6E7E # <CJK>
0x6E7F # <CJK>
0x6E80 # <CJK>
+0x6E82 # <CJK>
+0x6E8C # <CJK>
+0x6E8F # <CJK>
0x6E90 # <CJK>
0x6E96 # <CJK>
+0x6E98 # <CJK>
+0x6E9C # <CJK>
0x6E9D # <CJK>
+0x6E9F # <CJK>
+0x6EA2 # <CJK>
+0x6EA5 # <CJK>
+0x6EAA # <CJK>
+0x6EAF # <CJK>
+0x6EB2 # <CJK>
0x6EB6 # <CJK>
+0x6EB7 # <CJK>
0x6EBA # <CJK>
+0x6EBD # <CJK>
+0x6EC2 # <CJK>
+0x6EC4 # <CJK>
0x6EC5 # <CJK>
+0x6EC9 # <CJK>
0x6ECB # <CJK>
+0x6ECC # <CJK>
0x6ED1 # <CJK>
+0x6ED3 # <CJK>
+0x6ED4 # <CJK>
+0x6ED5 # <CJK>
0x6EDD # <CJK>
0x6EDE # <CJK>
+0x6EEC # <CJK>
+0x6EEF # <CJK>
+0x6EF2 # <CJK>
0x6EF4 # <CJK>
+0x6EF7 # <CJK>
+0x6EF8 # <CJK>
+0x6EFE # <CJK>
+0x6EFF # <CJK>
0x6F01 # <CJK>
0x6F02 # <CJK>
0x6F06 # <CJK>
+0x6F09 # <CJK>
0x6F0F # <CJK>
+0x6F11 # <CJK>
+0x6F13 # <CJK>
0x6F14 # <CJK>
+0x6F15 # <CJK>
0x6F20 # <CJK>
0x6F22 # <CJK>
+0x6F23 # <CJK>
0x6F2B # <CJK>
0x6F2C # <CJK>
+0x6F31 # <CJK>
+0x6F32 # <CJK>
0x6F38 # <CJK>
+0x6F3E # <CJK>
+0x6F3F # <CJK>
+0x6F41 # <CJK>
+0x6F45 # <CJK>
0x6F54 # <CJK>
+0x6F58 # <CJK>
+0x6F5B # <CJK>
0x6F5C # <CJK>
0x6F5F # <CJK>
0x6F64 # <CJK>
+0x6F66 # <CJK>
+0x6F6D # <CJK>
0x6F6E # <CJK>
+0x6F6F # <CJK>
0x6F70 # <CJK>
+0x6F74 # <CJK>
+0x6F78 # <CJK>
+0x6F7A # <CJK>
+0x6F7C # <CJK>
+0x6F80 # <CJK>
+0x6F81 # <CJK>
+0x6F82 # <CJK>
0x6F84 # <CJK>
+0x6F86 # <CJK>
+0x6F8E # <CJK>
+0x6F91 # <CJK>
+0x6F97 # <CJK>
+0x6FA1 # <CJK>
+0x6FA3 # <CJK>
+0x6FA4 # <CJK>
+0x6FAA # <CJK>
+0x6FB1 # <CJK>
+0x6FB3 # <CJK>
+0x6FB9 # <CJK>
0x6FC0 # <CJK>
0x6FC1 # <CJK>
+0x6FC2 # <CJK>
0x6FC3 # <CJK>
+0x6FC6 # <CJK>
+0x6FD4 # <CJK>
+0x6FD5 # <CJK>
+0x6FD8 # <CJK>
+0x6FDB # <CJK>
+0x6FDF # <CJK>
+0x6FE0 # <CJK>
+0x6FE1 # <CJK>
+0x6FE4 # <CJK>
0x6FEB # <CJK>
+0x6FEC # <CJK>
+0x6FEE # <CJK>
0x6FEF # <CJK>
+0x6FF1 # <CJK>
+0x6FF3 # <CJK>
+0x6FF6 # <CJK>
+0x6FFA # <CJK>
+0x6FFE # <CJK>
+0x7001 # <CJK>
+0x7009 # <CJK>
+0x700B # <CJK>
+0x700F # <CJK>
+0x7011 # <CJK>
+0x7015 # <CJK>
+0x7018 # <CJK>
+0x701A # <CJK>
+0x701B # <CJK>
+0x701D # <CJK>
+0x701E # <CJK>
+0x701F # <CJK>
+0x7026 # <CJK>
+0x7027 # <CJK>
0x702C # <CJK>
+0x7030 # <CJK>
+0x7032 # <CJK>
+0x703E # <CJK>
+0x704C # <CJK>
+0x7051 # <CJK>
+0x7058 # <CJK>
+0x7063 # <CJK>
0x706B # <CJK>
0x706F # <CJK>
0x7070 # <CJK>
+0x7078 # <CJK>
+0x707C # <CJK>
0x707D # <CJK>
0x7089 # <CJK>
0x708A # <CJK>
0x708E # <CJK>
+0x7092 # <CJK>
+0x7099 # <CJK>
+0x70AC # <CJK>
0x70AD # <CJK>
+0x70AE # <CJK>
+0x70AF # <CJK>
+0x70B3 # <CJK>
+0x70B8 # <CJK>
0x70B9 # <CJK>
0x70BA # <CJK>
0x70C8 # <CJK>
+0x70CB # <CJK>
+0x70CF # <CJK>
+0x70D9 # <CJK>
+0x70DD # <CJK>
+0x70DF # <CJK>
+0x70F1 # <CJK>
+0x70F9 # <CJK>
+0x70FD # <CJK>
+0x7109 # <CJK>
+0x7114 # <CJK>
+0x7119 # <CJK>
+0x711A # <CJK>
+0x711C # <CJK>
0x7121 # <CJK>
0x7126 # <CJK>
0x7136 # <CJK>
0x713C # <CJK>
+0x7149 # <CJK>
+0x714C # <CJK>
0x714E # <CJK>
+0x7155 # <CJK>
+0x7156 # <CJK>
0x7159 # <CJK>
+0x7162 # <CJK>
+0x7164 # <CJK>
+0x7165 # <CJK>
+0x7166 # <CJK>
0x7167 # <CJK>
0x7169 # <CJK>
+0x716C # <CJK>
0x716E # <CJK>
+0x717D # <CJK>
+0x7184 # <CJK>
+0x7188 # <CJK>
0x718A # <CJK>
+0x718F # <CJK>
+0x7194 # <CJK>
+0x7195 # <CJK>
+#0x7199 # <CJK> # not in kochi fonts
0x719F # <CJK>
+0x71A8 # <CJK>
+0x71AC # <CJK>
0x71B1 # <CJK>
+0x71B9 # <CJK>
+0x71BE # <CJK>
0x71C3 # <CJK>
+0x71C8 # <CJK>
+0x71C9 # <CJK>
+0x71CE # <CJK>
+0x71D0 # <CJK>
+0x71D2 # <CJK>
+0x71D4 # <CJK>
+0x71D5 # <CJK>
+0x71D7 # <CJK>
+0x71DF # <CJK>
+0x71E0 # <CJK>
0x71E5 # <CJK>
+0x71E6 # <CJK>
+0x71E7 # <CJK>
+0x71EC # <CJK>
+0x71ED # <CJK>
+0x71EE # <CJK>
+0x71F5 # <CJK>
+0x71F9 # <CJK>
+0x71FB # <CJK>
+0x71FC # <CJK>
+0x71FF # <CJK>
0x7206 # <CJK>
+0x720D # <CJK>
+0x7210 # <CJK>
+0x721B # <CJK>
+0x7228 # <CJK>
0x722A # <CJK>
+0x722C # <CJK>
+0x722D # <CJK>
+0x7230 # <CJK>
+0x7232 # <CJK>
0x7235 # <CJK>
0x7236 # <CJK>
+0x723A # <CJK>
+0x723B # <CJK>
+0x723C # <CJK>
0x723D # <CJK>
+0x723E # <CJK>
+0x723F # <CJK>
+0x7240 # <CJK>
+0x7246 # <CJK>
0x7247 # <CJK>
0x7248 # <CJK>
+0x724B # <CJK>
+0x724C # <CJK>
+0x7252 # <CJK>
+0x7258 # <CJK>
0x7259 # <CJK>
0x725B # <CJK>
+0x725D # <CJK>
+0x725F # <CJK>
+0x7261 # <CJK>
+0x7262 # <CJK>
0x7267 # <CJK>
0x7269 # <CJK>
0x7272 # <CJK>
+0x7274 # <CJK>
0x7279 # <CJK>
+0x727D # <CJK>
+0x727E # <CJK>
+0x7280 # <CJK>
+0x7281 # <CJK>
+0x7282 # <CJK>
+0x7287 # <CJK>
+0x7292 # <CJK>
+0x7296 # <CJK>
0x72A0 # <CJK>
+0x72A2 # <CJK>
+0x72A7 # <CJK>
0x72AC # <CJK>
0x72AF # <CJK>
+0x72B2 # <CJK>
0x72B6 # <CJK>
+0x72B9 # <CJK>
0x72C2 # <CJK>
+0x72C3 # <CJK>
+0x72C4 # <CJK>
+0x72C6 # <CJK>
+0x72CE # <CJK>
+0x72D0 # <CJK>
+0x72D2 # <CJK>
+0x72D7 # <CJK>
0x72D9 # <CJK>
+0x72DB # <CJK>
+0x72E0 # <CJK>
+0x72E1 # <CJK>
+0x72E2 # <CJK>
0x72E9 # <CJK>
0x72EC # <CJK>
0x72ED # <CJK>
+0x72F7 # <CJK>
+0x72F8 # <CJK>
+0x72F9 # <CJK>
+0x72FC # <CJK>
+0x72FD # <CJK>
+0x730A # <CJK>
+0x7316 # <CJK>
+0x7317 # <CJK>
0x731B # <CJK>
+0x731C # <CJK>
+0x731D # <CJK>
0x731F # <CJK>
+0x7325 # <CJK>
+0x7329 # <CJK>
+0x732A # <CJK>
0x732B # <CJK>
0x732E # <CJK>
+0x732F # <CJK>
+0x7334 # <CJK>
0x7336 # <CJK>
+0x7337 # <CJK>
+0x733E # <CJK>
0x733F # <CJK>
0x7344 # <CJK>
+0x7345 # <CJK>
+0x734E # <CJK>
+0x734F # <CJK>
+0x7357 # <CJK>
0x7363 # <CJK>
+0x7368 # <CJK>
+0x736A # <CJK>
+0x7370 # <CJK>
0x7372 # <CJK>
+0x7375 # <CJK>
+0x7378 # <CJK>
+0x737A # <CJK>
+0x737B # <CJK>
0x7384 # <CJK>
0x7387 # <CJK>
0x7389 # <CJK>
0x738B # <CJK>
+0x7396 # <CJK>
0x73A9 # <CJK>
+0x73B2 # <CJK>
+0x73B3 # <CJK>
+0x73BB # <CJK>
+0x73C0 # <CJK>
+0x73C2 # <CJK>
+0x73C8 # <CJK>
+0x73CA # <CJK>
0x73CD # <CJK>
+0x73CE # <CJK>
+0x73DE # <CJK>
0x73E0 # <CJK>
+0x73E5 # <CJK>
+0x73EA # <CJK>
0x73ED # <CJK>
+0x73EE # <CJK>
+0x73F1 # <CJK>
+0x73F8 # <CJK>
0x73FE # <CJK>
0x7403 # <CJK>
+0x7405 # <CJK>
0x7406 # <CJK>
+0x7409 # <CJK>
+0x7422 # <CJK>
+0x7425 # <CJK>
+0x7432 # <CJK>
+0x7433 # <CJK>
0x7434 # <CJK>
+0x7435 # <CJK>
+0x7436 # <CJK>
+0x743A # <CJK>
+0x743F # <CJK>
+0x7441 # <CJK>
+0x7455 # <CJK>
+0x7459 # <CJK>
+0x745A # <CJK>
+0x745B # <CJK>
+0x745C # <CJK>
+0x745E # <CJK>
+0x745F # <CJK>
0x7460 # <CJK>
+0x7463 # <CJK>
+0x7464 # <CJK>
+0x7469 # <CJK>
+0x746A # <CJK>
+0x746F # <CJK>
+0x7470 # <CJK>
+0x7473 # <CJK>
+0x7476 # <CJK>
+0x747E # <CJK>
0x7483 # <CJK>
+0x748B # <CJK>
+0x749E # <CJK>
+0x74A2 # <CJK>
0x74A7 # <CJK>
0x74B0 # <CJK>
0x74BD # <CJK>
+0x74CA # <CJK>
+0x74CF # <CJK>
+0x74D4 # <CJK>
+0x74DC # <CJK>
+0x74E0 # <CJK>
+0x74E2 # <CJK>
+0x74E3 # <CJK>
0x74E6 # <CJK>
+0x74E7 # <CJK>
+0x74E9 # <CJK>
+0x74EE # <CJK>
+0x74F0 # <CJK>
+0x74F1 # <CJK>
+0x74F2 # <CJK>
0x74F6 # <CJK>
+0x74F7 # <CJK>
+0x74F8 # <CJK>
+0x7503 # <CJK>
+0x7504 # <CJK>
+0x7505 # <CJK>
+0x750C # <CJK>
+0x750D # <CJK>
+0x750E # <CJK>
+0x7511 # <CJK>
+0x7513 # <CJK>
+0x7515 # <CJK>
0x7518 # <CJK>
0x751A # <CJK>
+0x751C # <CJK>
+0x751E # <CJK>
0x751F # <CJK>
0x7523 # <CJK>
+0x7525 # <CJK>
+0x7526 # <CJK>
0x7528 # <CJK>
+0x752B # <CJK>
+0x752C # <CJK>
0x7530 # <CJK>
0x7531 # <CJK>
0x7532 # <CJK>
0x7533 # <CJK>
0x7537 # <CJK>
+0x7538 # <CJK>
0x753A # <CJK>
0x753B # <CJK>
+0x753C # <CJK>
+0x7544 # <CJK>
+0x7546 # <CJK>
+0x7549 # <CJK>
+0x754A # <CJK>
+0x754B # <CJK>
0x754C # <CJK>
+0x754D # <CJK>
0x754F # <CJK>
0x7551 # <CJK>
0x7554 # <CJK>
0x7559 # <CJK>
+0x755A # <CJK>
+0x755B # <CJK>
0x755C # <CJK>
0x755D # <CJK>
+0x7560 # <CJK>
+0x7562 # <CJK>
+0x7564 # <CJK>
0x7565 # <CJK>
+0x7566 # <CJK>
+0x7567 # <CJK>
+0x7569 # <CJK>
0x756A # <CJK>
+0x756B # <CJK>
+0x756D # <CJK>
0x7570 # <CJK>
0x7573 # <CJK>
+0x7574 # <CJK>
+0x7576 # <CJK>
+0x7577 # <CJK>
+0x7578 # <CJK>
0x757F # <CJK>
+0x7582 # <CJK>
+0x7586 # <CJK>
+0x7587 # <CJK>
+0x7589 # <CJK>
+0x758A # <CJK>
+0x758B # <CJK>
0x758E # <CJK>
+0x758F # <CJK>
0x7591 # <CJK>
+0x7594 # <CJK>
+0x759A # <CJK>
+0x759D # <CJK>
+0x75A3 # <CJK>
+0x75A5 # <CJK>
0x75AB # <CJK>
+0x75B1 # <CJK>
0x75B2 # <CJK>
+0x75B3 # <CJK>
+0x75B5 # <CJK>
+0x75B8 # <CJK>
+0x75B9 # <CJK>
+0x75BC # <CJK>
+0x75BD # <CJK>
0x75BE # <CJK>
+0x75C2 # <CJK>
+0x75C3 # <CJK>
0x75C5 # <CJK>
0x75C7 # <CJK>
+0x75CA # <CJK>
+0x75CD # <CJK>
+0x75D2 # <CJK>
+0x75D4 # <CJK>
0x75D5 # <CJK>
0x75D8 # <CJK>
+0x75D9 # <CJK>
0x75DB # <CJK>
+0x75DE # <CJK>
0x75E2 # <CJK>
+0x75E3 # <CJK>
0x75E9 # <CJK>
+0x75F0 # <CJK>
+0x75F2 # <CJK>
+0x75F3 # <CJK>
0x75F4 # <CJK>
+0x75FA # <CJK>
+0x75FC # <CJK>
+0x75FE # <CJK>
+0x75FF # <CJK>
+0x7601 # <CJK>
+0x7609 # <CJK>
+0x760B # <CJK>
0x760D # <CJK>
+0x761F # <CJK>
+0x7620 # <CJK>
+0x7621 # <CJK>
+0x7622 # <CJK>
+0x7624 # <CJK>
+0x7627 # <CJK>
+0x7630 # <CJK>
+0x7634 # <CJK>
+0x763B # <CJK>
0x7642 # <CJK>
+0x7646 # <CJK>
+0x7647 # <CJK>
+0x7648 # <CJK>
+0x764C # <CJK>
0x7652 # <CJK>
0x7656 # <CJK>
+0x7658 # <CJK>
+0x765C # <CJK>
+0x7661 # <CJK>
+0x7662 # <CJK>
+0x7667 # <CJK>
+0x7668 # <CJK>
+0x7669 # <CJK>
+0x766A # <CJK>
+0x766C # <CJK>
+0x7670 # <CJK>
+0x7672 # <CJK>
+0x7676 # <CJK>
+0x7678 # <CJK>
0x767A # <CJK>
0x767B # <CJK>
+0x767C # <CJK>
0x767D # <CJK>
0x767E # <CJK>
+0x7680 # <CJK>
+0x7683 # <CJK>
0x7684 # <CJK>
0x7686 # <CJK>
0x7687 # <CJK>
+0x7688 # <CJK>
+0x768B # <CJK>
+0x768E # <CJK>
+0x7690 # <CJK>
+0x7693 # <CJK>
+0x7696 # <CJK>
+0x7699 # <CJK>
+0x769A # <CJK>
0x76AE # <CJK>
+0x76B0 # <CJK>
+0x76B4 # <CJK>
+0x76B7 # <CJK>
+0x76B8 # <CJK>
+0x76B9 # <CJK>
+0x76BA # <CJK>
0x76BF # <CJK>
+0x76C2 # <CJK>
+0x76C3 # <CJK>
0x76C6 # <CJK>
+0x76C8 # <CJK>
0x76CA # <CJK>
+0x76CD # <CJK>
+0x76D2 # <CJK>
+0x76D6 # <CJK>
0x76D7 # <CJK>
0x76DB # <CJK>
+0x76DC # <CJK>
+0x76DE # <CJK>
0x76DF # <CJK>
+0x76E1 # <CJK>
0x76E3 # <CJK>
0x76E4 # <CJK>
+0x76E5 # <CJK>
+0x76E7 # <CJK>
+0x76EA # <CJK>
0x76EE # <CJK>
0x76F2 # <CJK>
0x76F4 # <CJK>
0x76F8 # <CJK>
+0x76FB # <CJK>
0x76FE # <CJK>
0x7701 # <CJK>
+0x7704 # <CJK>
+0x7707 # <CJK>
+0x7708 # <CJK>
0x7709 # <CJK>
0x770B # <CJK>
0x770C # <CJK>
+0x771B # <CJK>
+0x771E # <CJK>
0x771F # <CJK>
0x7720 # <CJK>
+0x7724 # <CJK>
+0x7725 # <CJK>
+0x7726 # <CJK>
+0x7729 # <CJK>
+0x7737 # <CJK>
+0x7738 # <CJK>
0x773A # <CJK>
0x773C # <CJK>
0x7740 # <CJK>
+0x7747 # <CJK>
+0x775A # <CJK>
+0x775B # <CJK>
0x7761 # <CJK>
0x7763 # <CJK>
+0x7765 # <CJK>
0x7766 # <CJK>
+0x7768 # <CJK>
+0x776B # <CJK>
+0x7779 # <CJK>
+0x777E # <CJK>
+0x777F # <CJK>
+0x778B # <CJK>
+0x778E # <CJK>
+0x7791 # <CJK>
+0x779E # <CJK>
+0x77A0 # <CJK>
+0x77A5 # <CJK>
0x77AC # <CJK>
0x77AD # <CJK>
+0x77B0 # <CJK>
0x77B3 # <CJK>
+0x77B6 # <CJK>
+0x77B9 # <CJK>
+0x77BB # <CJK>
+0x77BC # <CJK>
+0x77BD # <CJK>
+0x77BF # <CJK>
+0x77C7 # <CJK>
+0x77CD # <CJK>
+0x77D7 # <CJK>
+0x77DA # <CJK>
0x77DB # <CJK>
+0x77DC # <CJK>
0x77E2 # <CJK>
+0x77E3 # <CJK>
0x77E5 # <CJK>
+0x77E7 # <CJK>
+0x77E9 # <CJK>
0x77ED # <CJK>
+0x77EE # <CJK>
0x77EF # <CJK>
0x77F3 # <CJK>
+0x77FC # <CJK>
0x7802 # <CJK>
+0x780C # <CJK>
+0x7812 # <CJK>
0x7814 # <CJK>
0x7815 # <CJK>
+0x7820 # <CJK>
+0x7825 # <CJK>
+0x7826 # <CJK>
+0x7827 # <CJK>
0x7832 # <CJK>
0x7834 # <CJK>
+0x783A # <CJK>
+0x783F # <CJK>
+0x7845 # <CJK>
0x785D # <CJK>
0x786B # <CJK>
0x786C # <CJK>
+0x786F # <CJK>
+0x7872 # <CJK>
+0x7874 # <CJK>
+0x787C # <CJK>
0x7881 # <CJK>
+0x7886 # <CJK>
+0x7887 # <CJK>
+0x788C # <CJK>
+0x788D # <CJK>
+0x788E # <CJK>
0x7891 # <CJK>
+0x7893 # <CJK>
+0x7895 # <CJK>
+0x7897 # <CJK>
+0x789A # <CJK>
+0x78A3 # <CJK>
+0x78A7 # <CJK>
+0x78A9 # <CJK>
+0x78AA # <CJK>
+0x78AF # <CJK>
+0x78B5 # <CJK>
0x78BA # <CJK>
+0x78BC # <CJK>
+0x78BE # <CJK>
0x78C1 # <CJK>
+0x78C5 # <CJK>
+0x78C6 # <CJK>
+0x78CA # <CJK>
+0x78CB # <CJK>
+0x78D0 # <CJK>
+0x78D1 # <CJK>
+0x78D4 # <CJK>
+0x78DA # <CJK>
+0x78E7 # <CJK>
0x78E8 # <CJK>
+0x78EC # <CJK>
+0x78EF # <CJK>
+0x78F4 # <CJK>
+0x78FD # <CJK>
0x7901 # <CJK>
+0x7907 # <CJK>
0x790E # <CJK>
+0x7911 # <CJK>
+0x7912 # <CJK>
+0x7919 # <CJK>
+0x7926 # <CJK>
+0x792A # <CJK>
+0x792B # <CJK>
+0x792C # <CJK>
0x793A # <CJK>
0x793C # <CJK>
0x793E # <CJK>
+0x7940 # <CJK>
+0x7941 # <CJK>
+0x7947 # <CJK>
0x7948 # <CJK>
0x7949 # <CJK>
+0x7950 # <CJK>
+0x7953 # <CJK>
+0x7955 # <CJK>
0x7956 # <CJK>
+0x7957 # <CJK>
+0x795A # <CJK>
0x795D # <CJK>
0x795E # <CJK>
+0x795F # <CJK>
+0x7960 # <CJK>
+0x7962 # <CJK>
0x7965 # <CJK>
0x7968 # <CJK>
0x796D # <CJK>
+0x7977 # <CJK>
+0x797A # <CJK>
+0x797F # <CJK>
+0x7980 # <CJK>
0x7981 # <CJK>
+0x7984 # <CJK>
0x7985 # <CJK>
+0x798A # <CJK>
0x798D # <CJK>
+0x798E # <CJK>
0x798F # <CJK>
+0x799D # <CJK>
+0x79A6 # <CJK>
+0x79A7 # <CJK>
+0x79AA # <CJK>
+0x79AE # <CJK>
+0x79B0 # <CJK>
+0x79B3 # <CJK>
+0x79B9 # <CJK>
+0x79BA # <CJK>
+0x79BD # <CJK>
+0x79BE # <CJK>
+0x79BF # <CJK>
0x79C0 # <CJK>
0x79C1 # <CJK>
+0x79C9 # <CJK>
0x79CB # <CJK>
0x79D1 # <CJK>
0x79D2 # <CJK>
+0x79D5 # <CJK>
0x79D8 # <CJK>
0x79DF # <CJK>
+0x79E1 # <CJK>
+0x79E3 # <CJK>
+0x79E4 # <CJK>
+0x79E6 # <CJK>
+0x79E7 # <CJK>
0x79E9 # <CJK>
+0x79EC # <CJK>
0x79F0 # <CJK>
0x79FB # <CJK>
+0x7A00 # <CJK>
+0x7A08 # <CJK>
0x7A0B # <CJK>
+0x7A0D # <CJK>
0x7A0E # <CJK>
+0x7A14 # <CJK>
+0x7A17 # <CJK>
+0x7A18 # <CJK>
+0x7A19 # <CJK>
0x7A1A # <CJK>
+0x7A1C # <CJK>
+0x7A1F # <CJK>
+0x7A20 # <CJK>
0x7A2E # <CJK>
+0x7A31 # <CJK>
0x7A32 # <CJK>
+0x7A37 # <CJK>
+0x7A3B # <CJK>
0x7A3C # <CJK>
0x7A3D # <CJK>
+0x7A3E # <CJK>
0x7A3F # <CJK>
0x7A40 # <CJK>
0x7A42 # <CJK>
+0x7A43 # <CJK>
+0x7A46 # <CJK>
+0x7A49 # <CJK>
0x7A4D # <CJK>
+0x7A4E # <CJK>
0x7A4F # <CJK>
+0x7A50 # <CJK>
+0x7A57 # <CJK>
+0x7A61 # <CJK>
+0x7A62 # <CJK>
+0x7A63 # <CJK>
+0x7A69 # <CJK>
0x7A6B # <CJK>
+0x7A70 # <CJK>
0x7A74 # <CJK>
0x7A76 # <CJK>
+0x7A79 # <CJK>
0x7A7A # <CJK>
+0x7A7D # <CJK>
+0x7A7F # <CJK>
0x7A81 # <CJK>
0x7A83 # <CJK>
+0x7A84 # <CJK>
+0x7A88 # <CJK>
0x7A92 # <CJK>
0x7A93 # <CJK>
+0x7A95 # <CJK>
+0x7A96 # <CJK>
+0x7A97 # <CJK>
+0x7A98 # <CJK>
0x7A9F # <CJK>
+0x7AA9 # <CJK>
+0x7AAA # <CJK>
0x7AAE # <CJK>
0x7AAF # <CJK>
+0x7AB0 # <CJK>
+0x7AB6 # <CJK>
+0x7ABA # <CJK>
+0x7ABF # <CJK>
+0x7AC3 # <CJK>
+0x7AC4 # <CJK>
+0x7AC5 # <CJK>
+0x7AC7 # <CJK>
+0x7AC8 # <CJK>
+0x7ACA # <CJK>
0x7ACB # <CJK>
+0x7ACD # <CJK>
+0x7ACF # <CJK>
+0x7AD2 # <CJK>
+0x7AD3 # <CJK>
+0x7AD5 # <CJK>
+0x7AD9 # <CJK>
+0x7ADA # <CJK>
0x7ADC # <CJK>
+0x7ADD # <CJK>
+0x7ADF # <CJK>
0x7AE0 # <CJK>
+0x7AE1 # <CJK>
+0x7AE2 # <CJK>
+0x7AE3 # <CJK>
0x7AE5 # <CJK>
+0x7AE6 # <CJK>
+0x7AEA # <CJK>
+0x7AED # <CJK>
0x7AEF # <CJK>
+0x7AF0 # <CJK>
0x7AF6 # <CJK>
+0x7AF8 # <CJK>
0x7AF9 # <CJK>
+0x7AFA # <CJK>
+0x7AFF # <CJK>
+0x7B02 # <CJK>
+0x7B04 # <CJK>
+0x7B06 # <CJK>
+0x7B08 # <CJK>
+0x7B0A # <CJK>
+0x7B0B # <CJK>
+0x7B0F # <CJK>
0x7B11 # <CJK>
+0x7B18 # <CJK>
+0x7B19 # <CJK>
0x7B1B # <CJK>
+0x7B1E # <CJK>
+0x7B20 # <CJK>
+0x7B25 # <CJK>
0x7B26 # <CJK>
+0x7B28 # <CJK>
0x7B2C # <CJK>
+0x7B33 # <CJK>
+0x7B35 # <CJK>
+0x7B36 # <CJK>
+0x7B39 # <CJK>
+0x7B45 # <CJK>
0x7B46 # <CJK>
+0x7B48 # <CJK>
0x7B49 # <CJK>
0x7B4B # <CJK>
+0x7B4C # <CJK>
+0x7B4D # <CJK>
+0x7B4F # <CJK>
+0x7B50 # <CJK>
+0x7B51 # <CJK>
0x7B52 # <CJK>
0x7B54 # <CJK>
0x7B56 # <CJK>
+0x7B5D # <CJK>
+0x7B65 # <CJK>
+0x7B67 # <CJK>
+0x7B6C # <CJK>
+0x7B6E # <CJK>
+0x7B70 # <CJK>
+0x7B71 # <CJK>
+0x7B74 # <CJK>
+0x7B75 # <CJK>
+0x7B7A # <CJK>
+0x7B86 # <CJK>
0x7B87 # <CJK>
0x7B8B # <CJK>
+0x7B8D # <CJK>
+0x7B8F # <CJK>
+0x7B92 # <CJK>
+0x7B94 # <CJK>
+0x7B95 # <CJK>
0x7B97 # <CJK>
+0x7B98 # <CJK>
+0x7B99 # <CJK>
+0x7B9A # <CJK>
+0x7B9C # <CJK>
+0x7B9D # <CJK>
+0x7B9F # <CJK>
0x7BA1 # <CJK>
+0x7BAA # <CJK>
+0x7BAD # <CJK>
0x7BB1 # <CJK>
+0x7BB4 # <CJK>
0x7BB8 # <CJK>
0x7BC0 # <CJK>
+0x7BC1 # <CJK>
0x7BC4 # <CJK>
+0x7BC6 # <CJK>
+0x7BC7 # <CJK>
0x7BC9 # <CJK>
+0x7BCB # <CJK>
+0x7BCC # <CJK>
+0x7BCF # <CJK>
+0x7BDD # <CJK>
+0x7BE0 # <CJK>
0x7BE4 # <CJK>
+0x7BE5 # <CJK>
+0x7BE6 # <CJK>
+0x7BE9 # <CJK>
+0x7BED # <CJK>
+0x7BF3 # <CJK>
+0x7BF6 # <CJK>
+0x7BF7 # <CJK>
+0x7C00 # <CJK>
+0x7C07 # <CJK>
+0x7C0D # <CJK>
+0x7C11 # <CJK>
+0x7C12 # <CJK>
+0x7C13 # <CJK>
+0x7C14 # <CJK>
+0x7C17 # <CJK>
+0x7C1F # <CJK>
0x7C21 # <CJK>
+0x7C23 # <CJK>
+0x7C27 # <CJK>
+0x7C2A # <CJK>
+0x7C2B # <CJK>
+0x7C37 # <CJK>
+0x7C38 # <CJK>
+0x7C3D # <CJK>
+0x7C3E # <CJK>
0x7C3F # <CJK>
+0x7C40 # <CJK>
+0x7C43 # <CJK>
+0x7C4C # <CJK>
0x7C4D # <CJK>
+0x7C4F # <CJK>
+0x7C50 # <CJK>
+0x7C54 # <CJK>
+0x7C56 # <CJK>
+0x7C58 # <CJK>
+0x7C5F # <CJK>
0x7C60 # <CJK>
+0x7C64 # <CJK>
+0x7C65 # <CJK>
+0x7C6C # <CJK>
0x7C73 # <CJK>
+0x7C75 # <CJK>
+0x7C7E # <CJK>
+0x7C81 # <CJK>
+0x7C82 # <CJK>
+0x7C83 # <CJK>
0x7C89 # <CJK>
0x7C8B # <CJK>
+0x7C8D # <CJK>
+0x7C90 # <CJK>
0x7C92 # <CJK>
+0x7C95 # <CJK>
0x7C97 # <CJK>
0x7C98 # <CJK>
0x7C9B # <CJK>
+0x7C9F # <CJK>
+0x7CA1 # <CJK>
+0x7CA2 # <CJK>
+0x7CA4 # <CJK>
+0x7CA5 # <CJK>
0x7CA7 # <CJK>
+0x7CA8 # <CJK>
+0x7CAB # <CJK>
+0x7CAD # <CJK>
+0x7CAE # <CJK>
+0x7CB1 # <CJK>
+0x7CB2 # <CJK>
+0x7CB3 # <CJK>
+0x7CB9 # <CJK>
+0x7CBD # <CJK>
0x7CBE # <CJK>
+0x7CC0 # <CJK>
+0x7CC2 # <CJK>
+0x7CC5 # <CJK>
+0x7CCA # <CJK>
+0x7CCE # <CJK>
+0x7CD2 # <CJK>
0x7CD6 # <CJK>
+0x7CD8 # <CJK>
+0x7CDC # <CJK>
+0x7CDE # <CJK>
+0x7CDF # <CJK>
+0x7CE0 # <CJK>
+0x7CE2 # <CJK>
0x7CE7 # <CJK>
+0x7CEF # <CJK>
+0x7CF2 # <CJK>
+0x7CF4 # <CJK>
+0x7CF6 # <CJK>
0x7CF8 # <CJK>
+0x7CFA # <CJK>
0x7CFB # <CJK>
0x7CFE # <CJK>
0x7D00 # <CJK>
+0x7D02 # <CJK>
0x7D04 # <CJK>
0x7D05 # <CJK>
+0x7D06 # <CJK>
+0x7D0A # <CJK>
0x7D0B # <CJK>
0x7D0D # <CJK>
+0x7D10 # <CJK>
0x7D14 # <CJK>
+0x7D15 # <CJK>
+0x7D17 # <CJK>
+0x7D18 # <CJK>
0x7D19 # <CJK>
0x7D1A # <CJK>
0x7D1B # <CJK>
+0x7D1C # <CJK>
0x7D20 # <CJK>
0x7D21 # <CJK>
0x7D22 # <CJK>
0x7D2B # <CJK>
+0x7D2C # <CJK>
+0x7D2E # <CJK>
0x7D2F # <CJK>
0x7D30 # <CJK>
+0x7D32 # <CJK>
0x7D33 # <CJK>
+0x7D35 # <CJK>
0x7D39 # <CJK>
0x7D3A # <CJK>
+0x7D3F # <CJK>
0x7D42 # <CJK>
+0x7D43 # <CJK>
0x7D44 # <CJK>
+0x7D45 # <CJK>
+0x7D46 # <CJK>
+0x7D4B # <CJK>
0x7D4C # <CJK>
+0x7D4E # <CJK>
+0x7D4F # <CJK>
0x7D50 # <CJK>
+0x7D56 # <CJK>
+0x7D5B # <CJK>
0x7D5E # <CJK>
0x7D61 # <CJK>
+0x7D62 # <CJK>
+0x7D63 # <CJK>
0x7D66 # <CJK>
+0x7D68 # <CJK>
+0x7D6E # <CJK>
0x7D71 # <CJK>
+0x7D72 # <CJK>
+0x7D73 # <CJK>
0x7D75 # <CJK>
0x7D76 # <CJK>
0x7D79 # <CJK>
+0x7D7D # <CJK>
+0x7D89 # <CJK>
+0x7D8F # <CJK>
+0x7D93 # <CJK>
0x7D99 # <CJK>
0x7D9A # <CJK>
+0x7D9B # <CJK>
+0x7D9C # <CJK>
+0x7D9F # <CJK>
+0x7DA2 # <CJK>
+0x7DA3 # <CJK>
+0x7DAB # <CJK>
+0x7DAC # <CJK>
0x7DAD # <CJK>
+0x7DAE # <CJK>
+0x7DAF # <CJK>
+0x7DB0 # <CJK>
0x7DB1 # <CJK>
0x7DB2 # <CJK>
+0x7DB4 # <CJK>
+0x7DB5 # <CJK>
+0x7DB8 # <CJK>
+0x7DBA # <CJK>
0x7DBB # <CJK>
+0x7DBD # <CJK>
+0x7DBE # <CJK>
0x7DBF # <CJK>
+0x7DC7 # <CJK>
0x7DCA # <CJK>
+0x7DCB # <CJK>
0x7DCF # <CJK>
0x7DD1 # <CJK>
0x7DD2 # <CJK>
+0x7DD5 # <CJK>
+0x7DD8 # <CJK>
0x7DDA # <CJK>
+0x7DDC # <CJK>
+0x7DDD # <CJK>
+0x7DDE # <CJK>
0x7DE0 # <CJK>
+0x7DE1 # <CJK>
+0x7DE4 # <CJK>
0x7DE8 # <CJK>
0x7DE9 # <CJK>
+0x7DEC # <CJK>
0x7DEF # <CJK>
+0x7DF2 # <CJK>
0x7DF4 # <CJK>
0x7DFB # <CJK>
0x7E01 # <CJK>
0x7E04 # <CJK>
+0x7E05 # <CJK>
+0x7E09 # <CJK>
+0x7E0A # <CJK>
+0x7E0B # <CJK>
+0x7E12 # <CJK>
0x7E1B # <CJK>
+0x7E1E # <CJK>
+0x7E1F # <CJK>
+0x7E21 # <CJK>
+0x7E22 # <CJK>
+0x7E23 # <CJK>
0x7E26 # <CJK>
0x7E2B # <CJK>
0x7E2E # <CJK>
+0x7E31 # <CJK>
+0x7E32 # <CJK>
+0x7E35 # <CJK>
+0x7E37 # <CJK>
+0x7E39 # <CJK>
+0x7E3A # <CJK>
+0x7E3B # <CJK>
+0x7E3D # <CJK>
0x7E3E # <CJK>
0x7E41 # <CJK>
+0x7E43 # <CJK>
+0x7E46 # <CJK>
0x7E4A # <CJK>
+0x7E4B # <CJK>
+0x7E4D # <CJK>
0x7E54 # <CJK>
0x7E55 # <CJK>
+0x7E56 # <CJK>
+0x7E59 # <CJK>
+0x7E5A # <CJK>
+0x7E5D # <CJK>
+0x7E5E # <CJK>
+0x7E66 # <CJK>
+0x7E67 # <CJK>
+0x7E69 # <CJK>
+0x7E6A # <CJK>
0x7E6D # <CJK>
0x7E70 # <CJK>
+0x7E79 # <CJK>
+0x7E7B # <CJK>
+0x7E7C # <CJK>
+0x7E7D # <CJK>
+0x7E7F # <CJK>
+0x7E82 # <CJK>
+0x7E83 # <CJK>
+0x7E88 # <CJK>
+0x7E89 # <CJK>
+0x7E8C # <CJK>
+0x7E8E # <CJK>
+0x7E8F # <CJK>
+0x7E90 # <CJK>
+0x7E92 # <CJK>
+0x7E93 # <CJK>
+0x7E94 # <CJK>
+0x7E96 # <CJK>
+0x7E9B # <CJK>
+0x7E9C # <CJK>
0x7F36 # <CJK>
+0x7F38 # <CJK>
+0x7F3A # <CJK>
+0x7F45 # <CJK>
+0x7F4C # <CJK>
+0x7F4D # <CJK>
+0x7F4E # <CJK>
+0x7F50 # <CJK>
+0x7F51 # <CJK>
+0x7F54 # <CJK>
+0x7F55 # <CJK>
+0x7F58 # <CJK>
+0x7F5F # <CJK>
+0x7F60 # <CJK>
+0x7F67 # <CJK>
+0x7F68 # <CJK>
+0x7F69 # <CJK>
0x7F6A # <CJK>
+0x7F6B # <CJK>
0x7F6E # <CJK>
0x7F70 # <CJK>
0x7F72 # <CJK>
0x7F75 # <CJK>
0x7F77 # <CJK>
+0x7F78 # <CJK>
+0x7F79 # <CJK>
+0x7F82 # <CJK>
+0x7F83 # <CJK>
0x7F85 # <CJK>
+0x7F86 # <CJK>
+0x7F87 # <CJK>
+0x7F88 # <CJK>
0x7F8A # <CJK>
+0x7F8C # <CJK>
0x7F8E # <CJK>
+0x7F94 # <CJK>
+0x7F9A # <CJK>
+0x7F9D # <CJK>
0x7F9E # <CJK>
+0x7FA3 # <CJK>
0x7FA4 # <CJK>
0x7FA8 # <CJK>
0x7FA9 # <CJK>
+0x7FAE # <CJK>
+0x7FAF # <CJK>
+0x7FB2 # <CJK>
+0x7FB6 # <CJK>
+0x7FB8 # <CJK>
+0x7FB9 # <CJK>
0x7FBD # <CJK>
0x7FC1 # <CJK>
+0x7FC5 # <CJK>
+0x7FC6 # <CJK>
+0x7FCA # <CJK>
0x7FCC # <CJK>
0x7FD2 # <CJK>
+0x7FD4 # <CJK>
+0x7FD5 # <CJK>
+0x7FE0 # <CJK>
+0x7FE1 # <CJK>
+0x7FE6 # <CJK>
+0x7FE9 # <CJK>
+0x7FEB # <CJK>
+0x7FF0 # <CJK>
+0x7FF3 # <CJK>
+0x7FF9 # <CJK>
0x7FFB # <CJK>
0x7FFC # <CJK>
+0x8000 # <CJK>
0x8001 # <CJK>
0x8003 # <CJK>
+0x8004 # <CJK>
0x8005 # <CJK>
+0x8006 # <CJK>
+0x800B # <CJK>
+0x800C # <CJK>
0x8010 # <CJK>
+0x8012 # <CJK>
0x8015 # <CJK>
0x8017 # <CJK>
+0x8018 # <CJK>
+0x8019 # <CJK>
+0x801C # <CJK>
+0x8021 # <CJK>
+0x8028 # <CJK>
0x8033 # <CJK>
+0x8036 # <CJK>
+0x803B # <CJK>
+0x803D # <CJK>
+0x803F # <CJK>
+0x8046 # <CJK>
+0x804A # <CJK>
+0x8052 # <CJK>
0x8056 # <CJK>
+0x8058 # <CJK>
+0x805A # <CJK>
0x805E # <CJK>
+0x805F # <CJK>
+0x8061 # <CJK>
+0x8062 # <CJK>
+0x8068 # <CJK>
+0x806F # <CJK>
+0x8070 # <CJK>
+0x8072 # <CJK>
+0x8073 # <CJK>
0x8074 # <CJK>
+0x8076 # <CJK>
0x8077 # <CJK>
+0x8079 # <CJK>
+0x807D # <CJK>
+0x807E # <CJK>
+0x807F # <CJK>
+0x8084 # <CJK>
+0x8085 # <CJK>
+0x8086 # <CJK>
+0x8087 # <CJK>
0x8089 # <CJK>
+0x808B # <CJK>
0x808C # <CJK>
+0x8093 # <CJK>
0x8096 # <CJK>
0x8098 # <CJK>
+0x809A # <CJK>
+0x809B # <CJK>
0x809D # <CJK>
0x80A1 # <CJK>
0x80A2 # <CJK>
0x80A5 # <CJK>
0x80A9 # <CJK>
0x80AA # <CJK>
+0x80AC # <CJK>
+0x80AD # <CJK>
0x80AF # <CJK>
+0x80B1 # <CJK>
0x80B2 # <CJK>
+0x80B4 # <CJK>
0x80BA # <CJK>
0x80C3 # <CJK>
+0x80C4 # <CJK>
0x80C6 # <CJK>
0x80CC # <CJK>
0x80CE # <CJK>
+0x80D6 # <CJK>
+0x80D9 # <CJK>
+0x80DA # <CJK>
+0x80DB # <CJK>
+0x80DD # <CJK>
0x80DE # <CJK>
+0x80E1 # <CJK>
+0x80E4 # <CJK>
+0x80E5 # <CJK>
+0x80EF # <CJK>
+0x80F1 # <CJK>
0x80F4 # <CJK>
0x80F8 # <CJK>
+0x80FC # <CJK>
0x80FD # <CJK>
0x8102 # <CJK>
0x8105 # <CJK>
+0x8106 # <CJK>
0x8107 # <CJK>
0x8108 # <CJK>
+0x8109 # <CJK>
0x810A # <CJK>
0x811A # <CJK>
+0x811B # <CJK>
+0x8123 # <CJK>
+0x8129 # <CJK>
+0x812F # <CJK>
0x8131 # <CJK>
0x8133 # <CJK>
+0x8139 # <CJK>
+0x813E # <CJK>
+0x8146 # <CJK>
+0x814B # <CJK>
0x814E # <CJK>
0x8150 # <CJK>
+0x8151 # <CJK>
+0x8153 # <CJK>
+0x8154 # <CJK>
0x8155 # <CJK>
+0x815F # <CJK>
+0x8165 # <CJK>
+0x8166 # <CJK>
0x816B # <CJK>
+0x816E # <CJK>
0x8170 # <CJK>
+0x8171 # <CJK>
+0x8174 # <CJK>
0x8178 # <CJK>
0x8179 # <CJK>
0x817A # <CJK>
+0x817F # <CJK>
+0x8180 # <CJK>
+0x8182 # <CJK>
+0x8183 # <CJK>
+0x8188 # <CJK>
+0x818A # <CJK>
+0x818F # <CJK>
+0x8193 # <CJK>
+0x8195 # <CJK>
0x819A # <CJK>
0x819C # <CJK>
0x819D # <CJK>
+0x81A0 # <CJK>
+0x81A3 # <CJK>
+0x81A4 # <CJK>
0x81A8 # <CJK>
+0x81A9 # <CJK>
+0x81B0 # <CJK>
0x81B3 # <CJK>
+0x81B5 # <CJK>
+0x81B8 # <CJK>
+0x81BA # <CJK>
+0x81BD # <CJK>
+0x81BE # <CJK>
+0x81BF # <CJK>
+0x81C0 # <CJK>
+0x81C2 # <CJK>
0x81C6 # <CJK>
+0x81C8 # <CJK>
+0x81C9 # <CJK>
+0x81CD # <CJK>
+0x81D1 # <CJK>
0x81D3 # <CJK>
+0x81D8 # <CJK>
+0x81D9 # <CJK>
+0x81DA # <CJK>
+0x81DF # <CJK>
+0x81E0 # <CJK>
0x81E3 # <CJK>
+0x81E5 # <CJK>
+0x81E7 # <CJK>
0x81E8 # <CJK>
0x81EA # <CJK>
0x81ED # <CJK>
0x81F3 # <CJK>
0x81F4 # <CJK>
+0x81FA # <CJK>
+0x81FB # <CJK>
0x81FC # <CJK>
+0x81FE # <CJK>
+0x8201 # <CJK>
+0x8202 # <CJK>
+0x8205 # <CJK>
+0x8207 # <CJK>
0x8208 # <CJK>
+0x8209 # <CJK>
+0x820A # <CJK>
0x820C # <CJK>
+0x820D # <CJK>
0x820E # <CJK>
+0x8210 # <CJK>
+0x8212 # <CJK>
+0x8216 # <CJK>
0x8217 # <CJK>
+0x8218 # <CJK>
+0x821B # <CJK>
+0x821C # <CJK>
0x821E # <CJK>
0x821F # <CJK>
+0x8229 # <CJK>
0x822A # <CJK>
+0x822B # <CJK>
0x822C # <CJK>
+0x822E # <CJK>
+0x8233 # <CJK>
+0x8235 # <CJK>
0x8236 # <CJK>
0x8237 # <CJK>
+0x8238 # <CJK>
0x8239 # <CJK>
+0x8240 # <CJK>
0x8247 # <CJK>
+0x8258 # <CJK>
+0x8259 # <CJK>
+0x825A # <CJK>
+0x825D # <CJK>
+0x825F # <CJK>
+0x8262 # <CJK>
+0x8264 # <CJK>
0x8266 # <CJK>
+0x8268 # <CJK>
+0x826A # <CJK>
+0x826B # <CJK>
+0x826E # <CJK>
0x826F # <CJK>
+0x8271 # <CJK>
0x8272 # <CJK>
0x8276 # <CJK>
+0x8277 # <CJK>
+0x8278 # <CJK>
+0x827E # <CJK>
0x828B # <CJK>
+0x828D # <CJK>
+0x8292 # <CJK>
+0x8299 # <CJK>
0x829D # <CJK>
+0x829F # <CJK>
+0x82A5 # <CJK>
+0x82A6 # <CJK>
+0x82AB # <CJK>
+0x82AC # <CJK>
+0x82AD # <CJK>
0x82AF # <CJK>
0x82B1 # <CJK>
0x82B3 # <CJK>
0x82B8 # <CJK>
+0x82B9 # <CJK>
+0x82BB # <CJK>
0x82BD # <CJK>
+0x82C5 # <CJK>
+0x82D1 # <CJK>
+0x82D2 # <CJK>
+0x82D3 # <CJK>
+0x82D4 # <CJK>
0x82D7 # <CJK>
+0x82D9 # <CJK>
0x82DB # <CJK>
+0x82DC # <CJK>
+0x82DE # <CJK>
+0x82DF # <CJK>
+0x82E1 # <CJK>
+0x82E3 # <CJK>
0x82E5 # <CJK>
0x82E6 # <CJK>
+0x82E7 # <CJK>
+0x82EB # <CJK>
0x82F1 # <CJK>
+0x82F3 # <CJK>
+0x82F4 # <CJK>
+0x82F9 # <CJK>
+0x82FA # <CJK>
+0x82FB # <CJK>
0x8302 # <CJK>
+0x8303 # <CJK>
+0x8304 # <CJK>
+0x8305 # <CJK>
+0x8306 # <CJK>
+0x8309 # <CJK>
0x830E # <CJK>
+0x8316 # <CJK>
+0x8317 # <CJK>
+0x8318 # <CJK>
+0x831C # <CJK>
+0x8323 # <CJK>
0x8328 # <CJK>
+0x832B # <CJK>
+0x832F # <CJK>
+0x8331 # <CJK>
+0x8332 # <CJK>
+0x8334 # <CJK>
+0x8335 # <CJK>
0x8336 # <CJK>
+0x8338 # <CJK>
+0x8339 # <CJK>
+0x8340 # <CJK>
+0x8345 # <CJK>
0x8349 # <CJK>
+0x834A # <CJK>
+0x834F # <CJK>
+0x8350 # <CJK>
0x8352 # <CJK>
0x8358 # <CJK>
+0x8373 # <CJK>
+0x8375 # <CJK>
0x8377 # <CJK>
+0x837B # <CJK>
+0x837C # <CJK>
+0x8385 # <CJK>
+0x8387 # <CJK>
+0x8389 # <CJK>
+0x838A # <CJK>
+0x838E # <CJK>
+0x8393 # <CJK>
+0x8396 # <CJK>
+0x839A # <CJK>
+0x839E # <CJK>
+0x839F # <CJK>
+0x83A0 # <CJK>
+0x83A2 # <CJK>
+0x83A8 # <CJK>
+0x83AA # <CJK>
+0x83AB # <CJK>
+0x83B1 # <CJK>
+0x83B5 # <CJK>
+0x83BD # <CJK>
+0x83C1 # <CJK>
+0x83C5 # <CJK>
0x83CA # <CJK>
0x83CC # <CJK>
+0x83CE # <CJK>
0x83D3 # <CJK>
+0x83D6 # <CJK>
+0x83D8 # <CJK>
0x83DC # <CJK>
+0x83DF # <CJK>
+0x83E0 # <CJK>
+0x83E9 # <CJK>
+0x83EB # <CJK>
0x83EF # <CJK>
+0x83F0 # <CJK>
+0x83F1 # <CJK>
+0x83F2 # <CJK>
+0x83F4 # <CJK>
+0x83F7 # <CJK>
+0x83FB # <CJK>
+0x83FD # <CJK>
+0x8403 # <CJK>
+0x8404 # <CJK>
+0x8407 # <CJK>
+0x840B # <CJK>
+0x840C # <CJK>
+0x840D # <CJK>
0x840E # <CJK>
+0x8413 # <CJK>
+0x8420 # <CJK>
+0x8422 # <CJK>
+0x8429 # <CJK>
+0x842A # <CJK>
+0x842C # <CJK>
+0x8431 # <CJK>
+0x8435 # <CJK>
+0x8438 # <CJK>
+0x843C # <CJK>
0x843D # <CJK>
+0x8446 # <CJK>
0x8449 # <CJK>
+0x844E # <CJK>
0x8457 # <CJK>
0x845B # <CJK>
+0x8461 # <CJK>
+0x8462 # <CJK>
+0x8463 # <CJK>
+0x8466 # <CJK>
+0x8469 # <CJK>
+0x846B # <CJK>
0x846C # <CJK>
+0x846D # <CJK>
+0x846E # <CJK>
+0x846F # <CJK>
+0x8471 # <CJK>
+0x8475 # <CJK>
+0x8477 # <CJK>
+0x8479 # <CJK>
+0x847A # <CJK>
+0x8482 # <CJK>
+0x8484 # <CJK>
+0x848B # <CJK>
+0x8490 # <CJK>
+0x8494 # <CJK>
+0x8499 # <CJK>
+0x849C # <CJK>
+0x849F # <CJK>
+0x84A1 # <CJK>
+0x84AD # <CJK>
+0x84B2 # <CJK>
0x84B8 # <CJK>
+0x84B9 # <CJK>
+0x84BB # <CJK>
+0x84BC # <CJK>
+0x84BF # <CJK>
+0x84C1 # <CJK>
0x84C4 # <CJK>
+0x84C6 # <CJK>
+0x84C9 # <CJK>
+0x84CA # <CJK>
0x84CB # <CJK>
+0x84CD # <CJK>
+0x84D0 # <CJK>
+0x84D1 # <CJK>
+0x84D6 # <CJK>
+0x84D9 # <CJK>
+0x84DA # <CJK>
+0x84EC # <CJK>
+0x84EE # <CJK>
+0x84F4 # <CJK>
+0x84FC # <CJK>
+0x84FF # <CJK>
+0x8500 # <CJK>
+0x8506 # <CJK>
0x8511 # <CJK>
+0x8513 # <CJK>
+0x8514 # <CJK>
+0x8515 # <CJK>
+0x8517 # <CJK>
+0x8518 # <CJK>
+0x851A # <CJK>
+0x851F # <CJK>
+0x8521 # <CJK>
+0x8526 # <CJK>
+0x852C # <CJK>
+0x852D # <CJK>
0x8535 # <CJK>
0x853D # <CJK>
+0x8540 # <CJK>
+0x8541 # <CJK>
+0x8543 # <CJK>
+0x8548 # <CJK>
+0x8549 # <CJK>
+0x854A # <CJK>
+0x854B # <CJK>
+0x854E # <CJK>
+0x8555 # <CJK>
+0x8557 # <CJK>
+0x8558 # <CJK>
+0x855A # <CJK>
+0x8563 # <CJK>
+0x8568 # <CJK>
+0x8569 # <CJK>
+0x856A # <CJK>
+0x856D # <CJK>
+0x8577 # <CJK>
+0x857E # <CJK>
+0x8580 # <CJK>
0x8584 # <CJK>
+0x8587 # <CJK>
+0x8588 # <CJK>
+0x858A # <CJK>
+0x8590 # <CJK>
+0x8591 # <CJK>
+0x8594 # <CJK>
+0x8597 # <CJK>
+0x8599 # <CJK>
+0x859B # <CJK>
+0x859C # <CJK>
+0x85A4 # <CJK>
0x85A6 # <CJK>
+0x85A8 # <CJK>
+0x85A9 # <CJK>
0x85AA # <CJK>
0x85AB # <CJK>
0x85AC # <CJK>
+0x85AE # <CJK>
+0x85AF # <CJK>
+0x85B9 # <CJK>
+0x85BA # <CJK>
+0x85C1 # <CJK>
+0x85C9 # <CJK>
0x85CD # <CJK>
+0x85CF # <CJK>
+0x85D0 # <CJK>
+0x85D5 # <CJK>
+0x85DC # <CJK>
+0x85DD # <CJK>
0x85E4 # <CJK>
+0x85E5 # <CJK>
0x85E9 # <CJK>
+0x85EA # <CJK>
+0x85F7 # <CJK>
+0x85F9 # <CJK>
+0x85FA # <CJK>
0x85FB # <CJK>
+0x85FE # <CJK>
+0x8602 # <CJK>
+0x8606 # <CJK>
+0x8607 # <CJK>
+0x860A # <CJK>
+0x860B # <CJK>
+0x8613 # <CJK>
+0x8616 # <CJK>
+0x8617 # <CJK>
+0x861A # <CJK>
+0x8622 # <CJK>
+0x862D # <CJK>
+0x862F # <CJK>
+0x8630 # <CJK>
+0x863F # <CJK>
+0x864D # <CJK>
0x864E # <CJK>
0x8650 # <CJK>
+0x8654 # <CJK>
+0x8655 # <CJK>
0x865A # <CJK>
0x865C # <CJK>
0x865E # <CJK>
+0x865F # <CJK>
+0x8667 # <CJK>
0x866B # <CJK>
+0x8671 # <CJK>
0x8679 # <CJK>
+0x867B # <CJK>
0x868A # <CJK>
+0x868B # <CJK>
+0x868C # <CJK>
+0x8693 # <CJK>
0x8695 # <CJK>
+0x86A3 # <CJK>
+0x86A4 # <CJK>
+0x86A9 # <CJK>
+0x86AA # <CJK>
+0x86AB # <CJK>
+0x86AF # <CJK>
+0x86B0 # <CJK>
+0x86B6 # <CJK>
+0x86C4 # <CJK>
+0x86C6 # <CJK>
0x86C7 # <CJK>
+0x86C9 # <CJK>
+0x86CB # <CJK>
0x86CD # <CJK>
+0x86CE # <CJK>
+0x86D4 # <CJK>
+0x86D9 # <CJK>
+0x86DB # <CJK>
+0x86DE # <CJK>
+0x86DF # <CJK>
+0x86E4 # <CJK>
+0x86E9 # <CJK>
+0x86EC # <CJK>
+0x86ED # <CJK>
0x86EE # <CJK>
+0x86EF # <CJK>
+0x86F8 # <CJK>
+0x86F9 # <CJK>
+0x86FB # <CJK>
+0x86FE # <CJK>
+0x8700 # <CJK>
0x8702 # <CJK>
+0x8703 # <CJK>
+0x8706 # <CJK>
+0x8708 # <CJK>
+0x8709 # <CJK>
+0x870A # <CJK>
+0x870D # <CJK>
+0x8711 # <CJK>
+0x8712 # <CJK>
+0x8718 # <CJK>
+0x871A # <CJK>
0x871C # <CJK>
+0x8725 # <CJK>
+0x8729 # <CJK>
+0x8734 # <CJK>
+0x8737 # <CJK>
+0x873B # <CJK>
+0x873F # <CJK>
+0x8749 # <CJK>
+0x874B # <CJK>
+0x874C # <CJK>
+0x874E # <CJK>
+0x8753 # <CJK>
+0x8755 # <CJK>
+0x8757 # <CJK>
+0x8759 # <CJK>
+0x875F # <CJK>
+0x8760 # <CJK>
+0x8763 # <CJK>
+0x8766 # <CJK>
+0x8768 # <CJK>
+0x876A # <CJK>
+0x876E # <CJK>
+0x8774 # <CJK>
+0x8776 # <CJK>
+0x8778 # <CJK>
+0x877F # <CJK>
+0x8782 # <CJK>
0x878D # <CJK>
+0x879F # <CJK>
+0x87A2 # <CJK>
+0x87AB # <CJK>
+0x87AF # <CJK>
+0x87B3 # <CJK>
+0x87BA # <CJK>
+0x87BB # <CJK>
+0x87BD # <CJK>
+0x87C0 # <CJK>
+0x87C4 # <CJK>
+0x87C6 # <CJK>
+0x87C7 # <CJK>
+0x87CB # <CJK>
+0x87D0 # <CJK>
+0x87D2 # <CJK>
+0x87E0 # <CJK>
+0x87EF # <CJK>
+0x87F2 # <CJK>
+0x87F6 # <CJK>
+0x87F7 # <CJK>
+0x87F9 # <CJK>
+0x87FB # <CJK>
+0x87FE # <CJK>
+0x8805 # <CJK>
+0x880D # <CJK>
+0x880E # <CJK>
+0x880F # <CJK>
+0x8811 # <CJK>
+0x8815 # <CJK>
+0x8816 # <CJK>
+0x8821 # <CJK>
+0x8822 # <CJK>
+0x8823 # <CJK>
+0x8827 # <CJK>
+0x8831 # <CJK>
+0x8836 # <CJK>
+0x8839 # <CJK>
+0x883B # <CJK>
0x8840 # <CJK>
+0x8842 # <CJK>
+0x8844 # <CJK>
0x8846 # <CJK>
0x884C # <CJK>
+0x884D # <CJK>
+0x8852 # <CJK>
0x8853 # <CJK>
0x8857 # <CJK>
+0x8859 # <CJK>
0x885B # <CJK>
0x885D # <CJK>
+0x885E # <CJK>
0x8861 # <CJK>
+0x8862 # <CJK>
0x8863 # <CJK>
0x8868 # <CJK>
+0x886B # <CJK>
0x8870 # <CJK>
+0x8872 # <CJK>
+0x8875 # <CJK>
0x8877 # <CJK>
+0x887D # <CJK>
+0x887E # <CJK>
+0x887F # <CJK>
+0x8881 # <CJK>
+0x8882 # <CJK>
+0x8888 # <CJK>
0x888B # <CJK>
+0x888D # <CJK>
+0x8892 # <CJK>
0x8896 # <CJK>
+0x8897 # <CJK>
+0x8899 # <CJK>
+0x889E # <CJK>
+0x88A2 # <CJK>
+0x88A4 # <CJK>
0x88AB # <CJK>
+0x88AE # <CJK>
+0x88B0 # <CJK>
+0x88B1 # <CJK>
+0x88B4 # <CJK>
+0x88B5 # <CJK>
+0x88B7 # <CJK>
+0x88BF # <CJK>
0x88C1 # <CJK>
0x88C2 # <CJK>
+0x88C3 # <CJK>
+0x88C4 # <CJK>
0x88C5 # <CJK>
0x88CF # <CJK>
+0x88D4 # <CJK>
0x88D5 # <CJK>
+0x88D8 # <CJK>
+0x88D9 # <CJK>
0x88DC # <CJK>
+0x88DD # <CJK>
+0x88DF # <CJK>
+0x88E1 # <CJK>
+0x88E8 # <CJK>
+0x88F2 # <CJK>
+0x88F3 # <CJK>
+0x88F4 # <CJK>
0x88F8 # <CJK>
+0x88F9 # <CJK>
+0x88FC # <CJK>
0x88FD # <CJK>
0x88FE # <CJK>
+0x8902 # <CJK>
+0x8904 # <CJK>
0x8907 # <CJK>
+0x890A # <CJK>
+0x890C # <CJK>
0x8910 # <CJK>
0x8912 # <CJK>
+0x8913 # <CJK>
+0x891D # <CJK>
+0x891E # <CJK>
+0x8925 # <CJK>
+0x892A # <CJK>
+0x892B # <CJK>
+0x8936 # <CJK>
+0x8938 # <CJK>
+0x893B # <CJK>
+0x8941 # <CJK>
+0x8943 # <CJK>
+0x8944 # <CJK>
+0x894C # <CJK>
+0x894D # <CJK>
+0x8956 # <CJK>
+0x895E # <CJK>
0x895F # <CJK>
+0x8960 # <CJK>
+0x8964 # <CJK>
+0x8966 # <CJK>
+0x896A # <CJK>
+0x896D # <CJK>
+0x896F # <CJK>
0x8972 # <CJK>
+0x8974 # <CJK>
+0x8977 # <CJK>
+0x897E # <CJK>
0x897F # <CJK>
0x8981 # <CJK>
+0x8983 # <CJK>
0x8986 # <CJK>
0x8987 # <CJK>
+0x8988 # <CJK>
+0x898A # <CJK>
0x898B # <CJK>
0x898F # <CJK>
+0x8993 # <CJK>
0x8996 # <CJK>
+0x8997 # <CJK>
+0x8998 # <CJK>
0x899A # <CJK>
+0x89A1 # <CJK>
+0x89A6 # <CJK>
0x89A7 # <CJK>
+0x89A9 # <CJK>
0x89AA # <CJK>
+0x89AC # <CJK>
+0x89AF # <CJK>
+0x89B2 # <CJK>
0x89B3 # <CJK>
+0x89BA # <CJK>
+0x89BD # <CJK>
+0x89BF # <CJK>
+0x89C0 # <CJK>
0x89D2 # <CJK>
+0x89DA # <CJK>
+0x89DC # <CJK>
+0x89DD # <CJK>
0x89E3 # <CJK>
0x89E6 # <CJK>
+0x89E7 # <CJK>
+0x89F4 # <CJK>
+0x89F8 # <CJK>
0x8A00 # <CJK>
0x8A02 # <CJK>
0x8A03 # <CJK>
0x8A08 # <CJK>
+0x8A0A # <CJK>
+0x8A0C # <CJK>
0x8A0E # <CJK>
+0x8A10 # <CJK>
0x8A13 # <CJK>
+0x8A16 # <CJK>
0x8A17 # <CJK>
0x8A18 # <CJK>
+0x8A1B # <CJK>
+0x8A1D # <CJK>
0x8A1F # <CJK>
+0x8A23 # <CJK>
+0x8A25 # <CJK>
0x8A2A # <CJK>
0x8A2D # <CJK>
0x8A31 # <CJK>
0x8A33 # <CJK>
0x8A34 # <CJK>
+0x8A36 # <CJK>
0x8A3A # <CJK>
+0x8A3B # <CJK>
0x8A3C # <CJK>
+0x8A41 # <CJK>
+0x8A46 # <CJK>
+0x8A48 # <CJK>
0x8A50 # <CJK>
+0x8A51 # <CJK>
+0x8A52 # <CJK>
0x8A54 # <CJK>
0x8A55 # <CJK>
+0x8A5B # <CJK>
0x8A5E # <CJK>
0x8A60 # <CJK>
+0x8A62 # <CJK>
0x8A63 # <CJK>
0x8A66 # <CJK>
0x8A69 # <CJK>
+0x8A6B # <CJK>
+0x8A6C # <CJK>
+0x8A6D # <CJK>
0x8A6E # <CJK>
0x8A70 # <CJK>
0x8A71 # <CJK>
0x8A72 # <CJK>
0x8A73 # <CJK>
+0x8A7C # <CJK>
+0x8A82 # <CJK>
+0x8A84 # <CJK>
+0x8A85 # <CJK>
0x8A87 # <CJK>
0x8A89 # <CJK>
0x8A8C # <CJK>
0x8A8D # <CJK>
+0x8A91 # <CJK>
0x8A93 # <CJK>
0x8A95 # <CJK>
0x8A98 # <CJK>
+0x8A9A # <CJK>
0x8A9E # <CJK>
0x8AA0 # <CJK>
+0x8AA1 # <CJK>
+0x8AA3 # <CJK>
0x8AA4 # <CJK>
+0x8AA5 # <CJK>
+0x8AA6 # <CJK>
+0x8AA8 # <CJK>
0x8AAC # <CJK>
0x8AAD # <CJK>
0x8AB0 # <CJK>
0x8AB2 # <CJK>
+0x8AB9 # <CJK>
+0x8ABC # <CJK>
0x8ABF # <CJK>
+0x8AC2 # <CJK>
+0x8AC4 # <CJK>
0x8AC7 # <CJK>
0x8ACB # <CJK>
+0x8ACC # <CJK>
+0x8ACD # <CJK>
+0x8ACF # <CJK>
+0x8AD2 # <CJK>
0x8AD6 # <CJK>
+0x8ADA # <CJK>
+0x8ADB # <CJK>
+0x8ADC # <CJK>
+0x8ADE # <CJK>
+0x8AE0 # <CJK>
+0x8AE1 # <CJK>
+0x8AE2 # <CJK>
+0x8AE4 # <CJK>
0x8AE6 # <CJK>
0x8AE7 # <CJK>
+0x8AEB # <CJK>
0x8AED # <CJK>
0x8AEE # <CJK>
+0x8AF1 # <CJK>
+0x8AF3 # <CJK>
+0x8AF7 # <CJK>
0x8AF8 # <CJK>
+0x8AFA # <CJK>
0x8AFE # <CJK>
0x8B00 # <CJK>
0x8B01 # <CJK>
+0x8B02 # <CJK>
0x8B04 # <CJK>
+0x8B07 # <CJK>
+0x8B0C # <CJK>
0x8B0E # <CJK>
+0x8B10 # <CJK>
+0x8B14 # <CJK>
+0x8B16 # <CJK>
+0x8B17 # <CJK>
0x8B19 # <CJK>
+0x8B1A # <CJK>
0x8B1B # <CJK>
0x8B1D # <CJK>
+0x8B20 # <CJK>
0x8B21 # <CJK>
+0x8B26 # <CJK>
+0x8B28 # <CJK>
+0x8B2B # <CJK>
+0x8B2C # <CJK>
+0x8B33 # <CJK>
0x8B39 # <CJK>
+0x8B3E # <CJK>
+0x8B41 # <CJK>
+0x8B49 # <CJK>
+0x8B4C # <CJK>
+0x8B4E # <CJK>
+0x8B4F # <CJK>
+0x8B56 # <CJK>
0x8B58 # <CJK>
+0x8B5A # <CJK>
+0x8B5B # <CJK>
0x8B5C # <CJK>
+0x8B5F # <CJK>
0x8B66 # <CJK>
+0x8B6B # <CJK>
+0x8B6C # <CJK>
+0x8B6F # <CJK>
0x8B70 # <CJK>
+0x8B71 # <CJK>
0x8B72 # <CJK>
+0x8B74 # <CJK>
0x8B77 # <CJK>
+0x8B7D # <CJK>
+0x8B80 # <CJK>
+0x8B83 # <CJK>
+0x8B8A # <CJK>
+0x8B8C # <CJK>
+0x8B8E # <CJK>
+0x8B90 # <CJK>
+0x8B92 # <CJK>
+0x8B93 # <CJK>
+0x8B96 # <CJK>
+0x8B99 # <CJK>
+0x8B9A # <CJK>
0x8C37 # <CJK>
+0x8C3A # <CJK>
+0x8C3F # <CJK>
+0x8C41 # <CJK>
0x8C46 # <CJK>
+0x8C48 # <CJK>
0x8C4A # <CJK>
+0x8C4C # <CJK>
+0x8C4E # <CJK>
+0x8C50 # <CJK>
+0x8C55 # <CJK>
0x8C5A # <CJK>
0x8C61 # <CJK>
+0x8C62 # <CJK>
0x8C6A # <CJK>
+0x8C6B # <CJK>
+0x8C6C # <CJK>
+0x8C78 # <CJK>
+0x8C79 # <CJK>
+0x8C7A # <CJK>
+0x8C7C # <CJK>
+0x8C82 # <CJK>
+0x8C85 # <CJK>
+0x8C89 # <CJK>
+0x8C8A # <CJK>
0x8C8C # <CJK>
+0x8C8D # <CJK>
+0x8C8E # <CJK>
+0x8C94 # <CJK>
+0x8C98 # <CJK>
0x8C9D # <CJK>
0x8C9E # <CJK>
0x8CA0 # <CJK>
@@ -2008,338 +5348,1218 @@
0x8CAA # <CJK>
0x8CAB # <CJK>
0x8CAC # <CJK>
+0x8CAD # <CJK>
+0x8CAE # <CJK>
0x8CAF # <CJK>
+0x8CB0 # <CJK>
+0x8CB2 # <CJK>
+0x8CB3 # <CJK>
0x8CB4 # <CJK>
+0x8CB6 # <CJK>
0x8CB7 # <CJK>
0x8CB8 # <CJK>
0x8CBB # <CJK>
0x8CBC # <CJK>
+0x8CBD # <CJK>
0x8CBF # <CJK>
0x8CC0 # <CJK>
+0x8CC1 # <CJK>
0x8CC2 # <CJK>
0x8CC3 # <CJK>
0x8CC4 # <CJK>
0x8CC7 # <CJK>
+0x8CC8 # <CJK>
0x8CCA # <CJK>
+0x8CCD # <CJK>
+0x8CCE # <CJK>
+0x8CD1 # <CJK>
0x8CD3 # <CJK>
+0x8CDA # <CJK>
0x8CDB # <CJK>
0x8CDC # <CJK>
0x8CDE # <CJK>
0x8CE0 # <CJK>
0x8CE2 # <CJK>
+0x8CE3 # <CJK>
+0x8CE4 # <CJK>
0x8CE6 # <CJK>
0x8CEA # <CJK>
0x8CED # <CJK>
+0x8CFA # <CJK>
+0x8CFB # <CJK>
0x8CFC # <CJK>
+0x8CFD # <CJK>
+0x8D04 # <CJK>
+0x8D05 # <CJK>
+0x8D07 # <CJK>
0x8D08 # <CJK>
+0x8D0A # <CJK>
+0x8D0B # <CJK>
+0x8D0D # <CJK>
+0x8D0F # <CJK>
+0x8D10 # <CJK>
+0x8D13 # <CJK>
+0x8D14 # <CJK>
+0x8D16 # <CJK>
0x8D64 # <CJK>
0x8D66 # <CJK>
+0x8D67 # <CJK>
+0x8D6B # <CJK>
+0x8D6D # <CJK>
0x8D70 # <CJK>
+0x8D71 # <CJK>
+0x8D73 # <CJK>
0x8D74 # <CJK>
0x8D77 # <CJK>
+0x8D81 # <CJK>
0x8D85 # <CJK>
0x8D8A # <CJK>
+0x8D99 # <CJK>
0x8DA3 # <CJK>
+0x8DA8 # <CJK>
0x8DB3 # <CJK>
+0x8DBA # <CJK>
+0x8DBE # <CJK>
+0x8DC2 # <CJK>
+0x8DCB # <CJK>
+0x8DCC # <CJK>
+0x8DCF # <CJK>
+0x8DD6 # <CJK>
+0x8DDA # <CJK>
+0x8DDB # <CJK>
0x8DDD # <CJK>
+0x8DDF # <CJK>
0x8DE1 # <CJK>
+0x8DE3 # <CJK>
+0x8DE8 # <CJK>
+0x8DEA # <CJK>
+0x8DEB # <CJK>
0x8DEF # <CJK>
0x8DF3 # <CJK>
0x8DF5 # <CJK>
+0x8DFC # <CJK>
+0x8DFF # <CJK>
+0x8E08 # <CJK>
+0x8E09 # <CJK>
0x8E0A # <CJK>
0x8E0F # <CJK>
+0x8E10 # <CJK>
+0x8E1D # <CJK>
+0x8E1E # <CJK>
+0x8E1F # <CJK>
0x8E2A # <CJK>
+0x8E30 # <CJK>
+0x8E34 # <CJK>
+0x8E35 # <CJK>
+0x8E42 # <CJK>
+0x8E44 # <CJK>
+0x8E47 # <CJK>
+0x8E48 # <CJK>
+0x8E49 # <CJK>
+0x8E4A # <CJK>
+0x8E4C # <CJK>
+0x8E50 # <CJK>
+0x8E55 # <CJK>
+0x8E59 # <CJK>
+0x8E5F # <CJK>
+0x8E60 # <CJK>
+0x8E63 # <CJK>
+0x8E64 # <CJK>
+0x8E72 # <CJK>
0x8E74 # <CJK>
+0x8E76 # <CJK>
+0x8E7C # <CJK>
+0x8E81 # <CJK>
+0x8E84 # <CJK>
+0x8E85 # <CJK>
+0x8E87 # <CJK>
+0x8E8A # <CJK>
+0x8E8B # <CJK>
0x8E8D # <CJK>
+0x8E91 # <CJK>
+0x8E93 # <CJK>
+0x8E94 # <CJK>
+0x8E99 # <CJK>
+0x8EA1 # <CJK>
+0x8EAA # <CJK>
0x8EAB # <CJK>
+0x8EAC # <CJK>
+0x8EAF # <CJK>
+0x8EB0 # <CJK>
+0x8EB1 # <CJK>
+0x8EBE # <CJK>
+0x8EC5 # <CJK>
+0x8EC6 # <CJK>
+0x8EC8 # <CJK>
0x8ECA # <CJK>
+0x8ECB # <CJK>
0x8ECC # <CJK>
0x8ECD # <CJK>
0x8ED2 # <CJK>
+0x8EDB # <CJK>
0x8EDF # <CJK>
0x8EE2 # <CJK>
+0x8EE3 # <CJK>
+0x8EEB # <CJK>
0x8EF8 # <CJK>
+0x8EFB # <CJK>
+0x8EFC # <CJK>
0x8EFD # <CJK>
+0x8EFE # <CJK>
0x8F03 # <CJK>
+0x8F05 # <CJK>
0x8F09 # <CJK>
+0x8F0A # <CJK>
+0x8F0C # <CJK>
+0x8F12 # <CJK>
+0x8F13 # <CJK>
+0x8F14 # <CJK>
+0x8F15 # <CJK>
+0x8F19 # <CJK>
+0x8F1B # <CJK>
+0x8F1C # <CJK>
0x8F1D # <CJK>
+0x8F1F # <CJK>
+0x8F26 # <CJK>
0x8F29 # <CJK>
0x8F2A # <CJK>
+0x8F2F # <CJK>
+0x8F33 # <CJK>
0x8F38 # <CJK>
+0x8F39 # <CJK>
+0x8F3B # <CJK>
+0x8F3E # <CJK>
+0x8F3F # <CJK>
+0x8F42 # <CJK>
0x8F44 # <CJK>
+0x8F45 # <CJK>
+0x8F46 # <CJK>
+0x8F49 # <CJK>
+0x8F4C # <CJK>
+0x8F4D # <CJK>
+0x8F4E # <CJK>
+0x8F57 # <CJK>
+0x8F5C # <CJK>
+0x8F5F # <CJK>
+0x8F61 # <CJK>
+0x8F62 # <CJK>
+0x8F63 # <CJK>
+0x8F64 # <CJK>
0x8F9B # <CJK>
+0x8F9C # <CJK>
0x8F9E # <CJK>
+0x8F9F # <CJK>
0x8FA3 # <CJK>
+0x8FA7 # <CJK>
+0x8FA8 # <CJK>
+0x8FAD # <CJK>
+0x8FAE # <CJK>
+0x8FAF # <CJK>
+0x8FB0 # <CJK>
0x8FB1 # <CJK>
0x8FB2 # <CJK>
+0x8FB7 # <CJK>
0x8FBA # <CJK>
+0x8FBB # <CJK>
0x8FBC # <CJK>
+0x8FBF # <CJK>
+0x8FC2 # <CJK>
+0x8FC4 # <CJK>
0x8FC5 # <CJK>
0x8FCE # <CJK>
0x8FD1 # <CJK>
0x8FD4 # <CJK>
+0x8FDA # <CJK>
+0x8FE2 # <CJK>
+0x8FE5 # <CJK>
+0x8FE6 # <CJK>
+0x8FE9 # <CJK>
+0x8FEA # <CJK>
0x8FEB # <CJK>
0x8FED # <CJK>
+0x8FEF # <CJK>
0x8FF0 # <CJK>
+0x8FF4 # <CJK>
0x8FF7 # <CJK>
+0x8FF8 # <CJK>
+0x8FF9 # <CJK>
+0x8FFA # <CJK>
0x8FFD # <CJK>
0x9000 # <CJK>
0x9001 # <CJK>
0x9003 # <CJK>
+0x9005 # <CJK>
0x9006 # <CJK>
+0x900B # <CJK>
+0x900D # <CJK>
+0x900E # <CJK>
0x900F # <CJK>
0x9010 # <CJK>
+0x9011 # <CJK>
0x9013 # <CJK>
0x9014 # <CJK>
+0x9015 # <CJK>
+0x9016 # <CJK>
+0x9017 # <CJK>
+0x9019 # <CJK>
0x901A # <CJK>
0x901D # <CJK>
+0x901E # <CJK>
0x901F # <CJK>
0x9020 # <CJK>
+0x9021 # <CJK>
+0x9022 # <CJK>
0x9023 # <CJK>
+0x9027 # <CJK>
0x902E # <CJK>
0x9031 # <CJK>
0x9032 # <CJK>
+0x9035 # <CJK>
+0x9036 # <CJK>
0x9038 # <CJK>
+0x9039 # <CJK>
+0x903C # <CJK>
+0x903E # <CJK>
+0x9041 # <CJK>
0x9042 # <CJK>
0x9045 # <CJK>
0x9047 # <CJK>
+0x9049 # <CJK>
0x904A # <CJK>
0x904B # <CJK>
0x904D # <CJK>
0x904E # <CJK>
+0x904F # <CJK>
+0x9050 # <CJK>
+0x9051 # <CJK>
+0x9052 # <CJK>
0x9053 # <CJK>
0x9054 # <CJK>
0x9055 # <CJK>
+0x9056 # <CJK>
+0x9058 # <CJK>
+0x9059 # <CJK>
0x905C # <CJK>
+0x905E # <CJK>
0x9060 # <CJK>
0x9061 # <CJK>
0x9063 # <CJK>
+0x9065 # <CJK>
+0x9068 # <CJK>
0x9069 # <CJK>
0x906D # <CJK>
0x906E # <CJK>
+0x906F # <CJK>
+0x9072 # <CJK>
0x9075 # <CJK>
+0x9076 # <CJK>
0x9077 # <CJK>
0x9078 # <CJK>
0x907A # <CJK>
+0x907C # <CJK>
+0x907D # <CJK>
0x907F # <CJK>
+0x9080 # <CJK>
+0x9081 # <CJK>
+0x9082 # <CJK>
+0x9083 # <CJK>
0x9084 # <CJK>
+0x9087 # <CJK>
+0x9089 # <CJK>
+0x908A # <CJK>
+0x908F # <CJK>
+0x9091 # <CJK>
0x90A3 # <CJK>
0x90A6 # <CJK>
+0x90A8 # <CJK>
0x90AA # <CJK>
+0x90AF # <CJK>
+0x90B1 # <CJK>
+0x90B5 # <CJK>
0x90B8 # <CJK>
+0x90C1 # <CJK>
0x90CA # <CJK>
0x90CE # <CJK>
+0x90DB # <CJK>
0x90E1 # <CJK>
+0x90E2 # <CJK>
+0x90E4 # <CJK>
0x90E8 # <CJK>
0x90ED # <CJK>
0x90F5 # <CJK>
0x90F7 # <CJK>
0x90FD # <CJK>
+0x9102 # <CJK>
+0x9112 # <CJK>
+0x9119 # <CJK>
+0x912D # <CJK>
+0x9130 # <CJK>
+0x9132 # <CJK>
+0x9149 # <CJK>
+0x914A # <CJK>
+0x914B # <CJK>
0x914C # <CJK>
0x914D # <CJK>
0x914E # <CJK>
0x9152 # <CJK>
0x9154 # <CJK>
+0x9156 # <CJK>
+0x9158 # <CJK>
0x9162 # <CJK>
+0x9163 # <CJK>
+0x9165 # <CJK>
+0x9169 # <CJK>
0x916A # <CJK>
0x916C # <CJK>
+0x9172 # <CJK>
+0x9173 # <CJK>
0x9175 # <CJK>
0x9177 # <CJK>
0x9178 # <CJK>
+0x9182 # <CJK>
+0x9187 # <CJK>
+0x9189 # <CJK>
+0x918B # <CJK>
+0x918D # <CJK>
+0x9190 # <CJK>
0x9192 # <CJK>
+0x9197 # <CJK>
0x919C # <CJK>
+0x91A2 # <CJK>
+0x91A4 # <CJK>
+0x91AA # <CJK>
+0x91AB # <CJK>
+0x91AF # <CJK>
+0x91B4 # <CJK>
+0x91B5 # <CJK>
0x91B8 # <CJK>
+0x91BA # <CJK>
+0x91C0 # <CJK>
+0x91C1 # <CJK>
+0x91C6 # <CJK>
0x91C7 # <CJK>
0x91C8 # <CJK>
+0x91C9 # <CJK>
+0x91CB # <CJK>
0x91CC # <CJK>
0x91CD # <CJK>
0x91CE # <CJK>
0x91CF # <CJK>
+0x91D0 # <CJK>
0x91D1 # <CJK>
+0x91D6 # <CJK>
+0x91D8 # <CJK>
+0x91DB # <CJK>
0x91DC # <CJK>
0x91DD # <CJK>
+0x91DF # <CJK>
+0x91E1 # <CJK>
0x91E3 # <CJK>
+0x91E6 # <CJK>
+0x91E7 # <CJK>
+0x91F5 # <CJK>
+0x91F6 # <CJK>
+0x91FC # <CJK>
+0x91FF # <CJK>
0x920D # <CJK>
+0x920E # <CJK>
+0x9211 # <CJK>
+0x9214 # <CJK>
+0x9215 # <CJK>
+0x921E # <CJK>
+0x9229 # <CJK>
+0x922C # <CJK>
0x9234 # <CJK>
+0x9237 # <CJK>
+0x923F # <CJK>
0x9244 # <CJK>
+0x9245 # <CJK>
+0x9248 # <CJK>
+0x9249 # <CJK>
+0x924B # <CJK>
+0x9250 # <CJK>
+0x9257 # <CJK>
+0x925A # <CJK>
0x925B # <CJK>
+0x925E # <CJK>
0x9262 # <CJK>
+0x9264 # <CJK>
+0x9266 # <CJK>
0x9271 # <CJK>
+0x927E # <CJK>
0x9280 # <CJK>
0x9283 # <CJK>
0x9285 # <CJK>
+0x9291 # <CJK>
+0x9293 # <CJK>
+0x9295 # <CJK>
+0x9296 # <CJK>
0x9298 # <CJK>
+0x929A # <CJK>
+0x929B # <CJK>
+0x929C # <CJK>
0x92AD # <CJK>
+0x92B7 # <CJK>
+0x92B9 # <CJK>
+0x92CF # <CJK>
+0x92D2 # <CJK>
+0x92E4 # <CJK>
+0x92E9 # <CJK>
+0x92EA # <CJK>
0x92ED # <CJK>
+0x92F2 # <CJK>
0x92F3 # <CJK>
+0x92F8 # <CJK>
+0x92FA # <CJK>
0x92FC # <CJK>
+0x9306 # <CJK>
+0x930F # <CJK>
+0x9310 # <CJK>
+0x9318 # <CJK>
+0x9319 # <CJK>
+0x931A # <CJK>
0x9320 # <CJK>
+0x9322 # <CJK>
+0x9323 # <CJK>
0x9326 # <CJK>
+0x9328 # <CJK>
+0x932B # <CJK>
0x932C # <CJK>
0x932E # <CJK>
0x932F # <CJK>
0x9332 # <CJK>
+0x9335 # <CJK>
+0x933A # <CJK>
+0x933B # <CJK>
+0x9344 # <CJK>
0x934B # <CJK>
+0x934D # <CJK>
+0x9354 # <CJK>
+0x9356 # <CJK>
0x935B # <CJK>
+0x935C # <CJK>
+0x9360 # <CJK>
+0x936C # <CJK>
+0x936E # <CJK>
0x9375 # <CJK>
+0x937C # <CJK>
+0x937E # <CJK>
0x938C # <CJK>
+0x9394 # <CJK>
0x9396 # <CJK>
+0x9397 # <CJK>
+0x939A # <CJK>
+0x93A7 # <CJK>
+0x93AC # <CJK>
+0x93AD # <CJK>
0x93AE # <CJK>
+0x93B0 # <CJK>
+0x93B9 # <CJK>
+0x93C3 # <CJK>
+0x93C8 # <CJK>
+0x93D0 # <CJK>
+0x93D1 # <CJK>
+0x93D6 # <CJK>
+0x93D7 # <CJK>
+0x93D8 # <CJK>
+0x93DD # <CJK>
0x93E1 # <CJK>
+0x93E4 # <CJK>
+0x93E5 # <CJK>
+0x93E8 # <CJK>
+0x9403 # <CJK>
+0x9407 # <CJK>
+0x9410 # <CJK>
+0x9413 # <CJK>
+0x9414 # <CJK>
0x9418 # <CJK>
+0x9419 # <CJK>
+0x941A # <CJK>
+0x9421 # <CJK>
+0x942B # <CJK>
+0x9435 # <CJK>
+0x9436 # <CJK>
+0x9438 # <CJK>
+0x943A # <CJK>
+0x9441 # <CJK>
+0x9444 # <CJK>
0x9451 # <CJK>
+0x9452 # <CJK>
+0x9453 # <CJK>
+0x945A # <CJK>
+0x945B # <CJK>
+0x945E # <CJK>
+0x9460 # <CJK>
+0x9462 # <CJK>
+0x946A # <CJK>
+0x9470 # <CJK>
+0x9475 # <CJK>
+0x9477 # <CJK>
+0x947C # <CJK>
+0x947D # <CJK>
+0x947E # <CJK>
+0x947F # <CJK>
+0x9481 # <CJK>
0x9577 # <CJK>
0x9580 # <CJK>
+0x9582 # <CJK>
+0x9583 # <CJK>
+0x9587 # <CJK>
0x9589 # <CJK>
+0x958A # <CJK>
0x958B # <CJK>
+0x958F # <CJK>
0x9591 # <CJK>
0x9593 # <CJK>
+0x9594 # <CJK>
+0x9596 # <CJK>
+0x9598 # <CJK>
+0x9599 # <CJK>
+0x95A0 # <CJK>
0x95A2 # <CJK>
0x95A3 # <CJK>
+0x95A4 # <CJK>
0x95A5 # <CJK>
+0x95A7 # <CJK>
+0x95A8 # <CJK>
+0x95AD # <CJK>
0x95B2 # <CJK>
+0x95B9 # <CJK>
+0x95BB # <CJK>
+0x95BC # <CJK>
+0x95BE # <CJK>
+0x95C3 # <CJK>
0x95C7 # <CJK>
+0x95CA # <CJK>
+0x95CC # <CJK>
+0x95CD # <CJK>
+0x95D4 # <CJK>
+0x95D5 # <CJK>
+0x95D6 # <CJK>
0x95D8 # <CJK>
+0x95DC # <CJK>
+0x95E1 # <CJK>
+0x95E2 # <CJK>
+0x95E5 # <CJK>
0x961C # <CJK>
+0x9621 # <CJK>
+0x9628 # <CJK>
0x962A # <CJK>
+0x962E # <CJK>
+0x962F # <CJK>
0x9632 # <CJK>
0x963B # <CJK>
+0x963F # <CJK>
+0x9640 # <CJK>
+0x9642 # <CJK>
0x9644 # <CJK>
+0x964B # <CJK>
+0x964C # <CJK>
0x964D # <CJK>
+0x964F # <CJK>
0x9650 # <CJK>
0x965B # <CJK>
+0x965C # <CJK>
+0x965D # <CJK>
+0x965E # <CJK>
+0x965F # <CJK>
0x9662 # <CJK>
0x9663 # <CJK>
0x9664 # <CJK>
0x9665 # <CJK>
+0x9666 # <CJK>
0x966A # <CJK>
+0x966C # <CJK>
0x9670 # <CJK>
+0x9672 # <CJK>
0x9673 # <CJK>
0x9675 # <CJK>
0x9676 # <CJK>
+0x9677 # <CJK>
0x9678 # <CJK>
0x967A # <CJK>
0x967D # <CJK>
0x9685 # <CJK>
0x9686 # <CJK>
+0x9688 # <CJK>
0x968A # <CJK>
+0x968B # <CJK>
+0x968D # <CJK>
0x968E # <CJK>
0x968F # <CJK>
0x9694 # <CJK>
+0x9695 # <CJK>
+0x9697 # <CJK>
+0x9698 # <CJK>
0x9699 # <CJK>
0x969B # <CJK>
0x969C # <CJK>
0x96A0 # <CJK>
0x96A3 # <CJK>
+0x96A7 # <CJK>
+0x96A8 # <CJK>
+0x96AA # <CJK>
+0x96B0 # <CJK>
+0x96B1 # <CJK>
+0x96B2 # <CJK>
+0x96B4 # <CJK>
+0x96B6 # <CJK>
0x96B7 # <CJK>
+0x96B8 # <CJK>
+0x96B9 # <CJK>
0x96BB # <CJK>
+0x96BC # <CJK>
+0x96C0 # <CJK>
+0x96C1 # <CJK>
0x96C4 # <CJK>
0x96C5 # <CJK>
0x96C6 # <CJK>
0x96C7 # <CJK>
+0x96C9 # <CJK>
+0x96CB # <CJK>
0x96CC # <CJK>
+0x96CD # <CJK>
+0x96CE # <CJK>
0x96D1 # <CJK>
+0x96D5 # <CJK>
+0x96D6 # <CJK>
+0x96D9 # <CJK>
+0x96DB # <CJK>
+0x96DC # <CJK>
0x96E2 # <CJK>
0x96E3 # <CJK>
0x96E8 # <CJK>
0x96EA # <CJK>
+0x96EB # <CJK>
0x96F0 # <CJK>
0x96F2 # <CJK>
0x96F6 # <CJK>
0x96F7 # <CJK>
+0x96F9 # <CJK>
0x96FB # <CJK>
0x9700 # <CJK>
+0x9704 # <CJK>
+0x9706 # <CJK>
0x9707 # <CJK>
+0x9708 # <CJK>
0x970A # <CJK>
+0x970D # <CJK>
+0x970E # <CJK>
+0x970F # <CJK>
+0x9711 # <CJK>
+0x9713 # <CJK>
+0x9716 # <CJK>
+0x9719 # <CJK>
0x971C # <CJK>
+0x971E # <CJK>
+0x9724 # <CJK>
0x9727 # <CJK>
+0x972A # <CJK>
+0x9730 # <CJK>
0x9732 # <CJK>
+0x9738 # <CJK>
+0x9739 # <CJK>
+0x973D # <CJK>
+0x973E # <CJK>
+0x9742 # <CJK>
+0x9744 # <CJK>
+0x9746 # <CJK>
+0x9748 # <CJK>
+0x9749 # <CJK>
0x9752 # <CJK>
+0x9756 # <CJK>
0x9759 # <CJK>
+0x975C # <CJK>
0x975E # <CJK>
+0x9760 # <CJK>
+0x9761 # <CJK>
0x9762 # <CJK>
+0x9764 # <CJK>
+0x9766 # <CJK>
+0x9768 # <CJK>
0x9769 # <CJK>
+0x976B # <CJK>
+0x976D # <CJK>
+0x9771 # <CJK>
0x9774 # <CJK>
+0x9779 # <CJK>
+0x977A # <CJK>
+0x977C # <CJK>
+0x9781 # <CJK>
+0x9784 # <CJK>
+0x9785 # <CJK>
+0x9786 # <CJK>
+0x978B # <CJK>
+0x978D # <CJK>
+0x978F # <CJK>
+0x9790 # <CJK>
+0x9798 # <CJK>
+0x979C # <CJK>
+0x97A0 # <CJK>
+0x97A3 # <CJK>
+0x97A6 # <CJK>
+0x97A8 # <CJK>
+0x97AB # <CJK>
+0x97AD # <CJK>
+0x97B3 # <CJK>
+0x97B4 # <CJK>
+0x97C3 # <CJK>
+0x97C6 # <CJK>
+0x97C8 # <CJK>
+0x97CB # <CJK>
0x97D3 # <CJK>
+0x97DC # <CJK>
+0x97ED # <CJK>
+0x97EE # <CJK>
+0x97F2 # <CJK>
0x97F3 # <CJK>
+0x97F5 # <CJK>
+0x97F6 # <CJK>
0x97FB # <CJK>
0x97FF # <CJK>
+0x9801 # <CJK>
0x9802 # <CJK>
0x9803 # <CJK>
0x9805 # <CJK>
0x9806 # <CJK>
0x9808 # <CJK>
+0x980C # <CJK>
+0x980F # <CJK>
0x9810 # <CJK>
0x9811 # <CJK>
0x9812 # <CJK>
0x9813 # <CJK>
+0x9817 # <CJK>
0x9818 # <CJK>
+0x981A # <CJK>
+0x9821 # <CJK>
+0x9824 # <CJK>
+0x982C # <CJK>
0x982D # <CJK>
-#0x9830 # <CJK> # not in DroidSansJapanese
+0x9834 # <CJK>
+0x9837 # <CJK>
+0x9838 # <CJK>
0x983B # <CJK>
0x983C # <CJK>
+0x983D # <CJK>
+0x9846 # <CJK>
+0x984B # <CJK>
0x984C # <CJK>
0x984D # <CJK>
0x984E # <CJK>
+0x984F # <CJK>
0x9854 # <CJK>
0x9855 # <CJK>
0x9858 # <CJK>
+0x985B # <CJK>
0x985E # <CJK>
0x9867 # <CJK>
+0x986B # <CJK>
+0x986F # <CJK>
+0x9870 # <CJK>
+0x9871 # <CJK>
+0x9873 # <CJK>
+0x9874 # <CJK>
0x98A8 # <CJK>
+0x98AA # <CJK>
+0x98AF # <CJK>
+0x98B1 # <CJK>
+0x98B6 # <CJK>
+0x98C3 # <CJK>
+0x98C4 # <CJK>
+0x98C6 # <CJK>
0x98DB # <CJK>
+0x98DC # <CJK>
0x98DF # <CJK>
0x98E2 # <CJK>
+0x98E9 # <CJK>
+0x98EB # <CJK>
+0x98ED # <CJK>
+0x98EE # <CJK>
0x98EF # <CJK>
0x98F2 # <CJK>
+0x98F4 # <CJK>
0x98FC # <CJK>
0x98FD # <CJK>
0x98FE # <CJK>
+0x9903 # <CJK>
0x9905 # <CJK>
+0x9909 # <CJK>
0x990A # <CJK>
0x990C # <CJK>
+0x9910 # <CJK>
+0x9912 # <CJK>
0x9913 # <CJK>
+0x9914 # <CJK>
+0x9918 # <CJK>
+0x991D # <CJK>
+0x991E # <CJK>
+0x9920 # <CJK>
+0x9921 # <CJK>
+0x9924 # <CJK>
0x9928 # <CJK>
+0x992C # <CJK>
+0x992E # <CJK>
+0x993D # <CJK>
+0x993E # <CJK>
+0x9942 # <CJK>
+0x9945 # <CJK>
+0x9949 # <CJK>
+0x994B # <CJK>
+0x994C # <CJK>
+0x9950 # <CJK>
+0x9951 # <CJK>
+0x9952 # <CJK>
+0x9955 # <CJK>
+0x9957 # <CJK>
0x9996 # <CJK>
+0x9997 # <CJK>
+0x9998 # <CJK>
0x9999 # <CJK>
+0x99A5 # <CJK>
+0x99A8 # <CJK>
0x99AC # <CJK>
+0x99AD # <CJK>
+0x99AE # <CJK>
+0x99B3 # <CJK>
+0x99B4 # <CJK>
+0x99BC # <CJK>
+0x99C1 # <CJK>
0x99C4 # <CJK>
0x99C5 # <CJK>
0x99C6 # <CJK>
+0x99C8 # <CJK>
0x99D0 # <CJK>
+0x99D1 # <CJK>
0x99D2 # <CJK>
+0x99D5 # <CJK>
+0x99D8 # <CJK>
+0x99DB # <CJK>
+0x99DD # <CJK>
+0x99DF # <CJK>
+0x99E2 # <CJK>
+0x99ED # <CJK>
+0x99EE # <CJK>
+0x99F1 # <CJK>
+0x99F2 # <CJK>
+0x99F8 # <CJK>
+0x99FB # <CJK>
+0x99FF # <CJK>
+0x9A01 # <CJK>
+0x9A05 # <CJK>
0x9A0E # <CJK>
+0x9A0F # <CJK>
0x9A12 # <CJK>
0x9A13 # <CJK>
+0x9A19 # <CJK>
+0x9A28 # <CJK>
+0x9A2B # <CJK>
0x9A30 # <CJK>
+0x9A37 # <CJK>
+0x9A3E # <CJK>
+0x9A40 # <CJK>
+0x9A42 # <CJK>
+0x9A43 # <CJK>
+0x9A45 # <CJK>
+0x9A4D # <CJK>
+0x9A55 # <CJK>
+0x9A57 # <CJK>
0x9A5A # <CJK>
+0x9A5B # <CJK>
+0x9A5F # <CJK>
+0x9A62 # <CJK>
+0x9A64 # <CJK>
+0x9A65 # <CJK>
+0x9A69 # <CJK>
+0x9A6A # <CJK>
+0x9A6B # <CJK>
0x9AA8 # <CJK>
+0x9AAD # <CJK>
+0x9AB0 # <CJK>
0x9AB8 # <CJK>
+0x9ABC # <CJK>
+0x9AC0 # <CJK>
0x9AC4 # <CJK>
+0x9ACF # <CJK>
+0x9AD1 # <CJK>
+0x9AD3 # <CJK>
+0x9AD4 # <CJK>
0x9AD8 # <CJK>
+0x9ADE # <CJK>
+0x9ADF # <CJK>
+0x9AE2 # <CJK>
+0x9AE3 # <CJK>
+0x9AE6 # <CJK>
0x9AEA # <CJK>
+0x9AEB # <CJK>
+0x9AED # <CJK>
+0x9AEE # <CJK>
+0x9AEF # <CJK>
+0x9AF1 # <CJK>
+0x9AF4 # <CJK>
+0x9AF7 # <CJK>
+0x9AFB # <CJK>
+0x9B06 # <CJK>
+0x9B18 # <CJK>
+0x9B1A # <CJK>
+0x9B1F # <CJK>
+0x9B22 # <CJK>
+0x9B23 # <CJK>
+0x9B25 # <CJK>
+0x9B27 # <CJK>
+0x9B28 # <CJK>
+0x9B29 # <CJK>
+0x9B2A # <CJK>
+0x9B2E # <CJK>
+0x9B2F # <CJK>
0x9B31 # <CJK>
+0x9B32 # <CJK>
+0x9B3B # <CJK>
0x9B3C # <CJK>
+0x9B41 # <CJK>
0x9B42 # <CJK>
+0x9B43 # <CJK>
+0x9B44 # <CJK>
0x9B45 # <CJK>
+0x9B4D # <CJK>
+0x9B4E # <CJK>
+0x9B4F # <CJK>
+0x9B51 # <CJK>
0x9B54 # <CJK>
+0x9B58 # <CJK>
0x9B5A # <CJK>
+0x9B6F # <CJK>
+0x9B74 # <CJK>
+0x9B83 # <CJK>
+0x9B8E # <CJK>
+0x9B91 # <CJK>
+0x9B92 # <CJK>
+0x9B93 # <CJK>
+0x9B96 # <CJK>
+0x9B97 # <CJK>
+0x9B9F # <CJK>
+0x9BA0 # <CJK>
+0x9BA8 # <CJK>
+0x9BAA # <CJK>
+0x9BAB # <CJK>
+0x9BAD # <CJK>
0x9BAE # <CJK>
+0x9BB4 # <CJK>
+0x9BB9 # <CJK>
+0x9BC0 # <CJK>
+0x9BC6 # <CJK>
+0x9BC9 # <CJK>
+0x9BCA # <CJK>
+0x9BCF # <CJK>
+0x9BD1 # <CJK>
+0x9BD2 # <CJK>
+0x9BD4 # <CJK>
+0x9BD6 # <CJK>
+0x9BDB # <CJK>
+0x9BE1 # <CJK>
+0x9BE2 # <CJK>
+0x9BE3 # <CJK>
+0x9BE4 # <CJK>
0x9BE8 # <CJK>
+0x9BF0 # <CJK>
+0x9BF1 # <CJK>
+0x9BF2 # <CJK>
+0x9BF5 # <CJK>
+0x9C04 # <CJK>
+0x9C06 # <CJK>
+0x9C08 # <CJK>
+0x9C09 # <CJK>
+0x9C0A # <CJK>
+0x9C0C # <CJK>
+0x9C0D # <CJK>
+0x9C10 # <CJK>
+0x9C12 # <CJK>
+0x9C13 # <CJK>
+0x9C14 # <CJK>
+0x9C15 # <CJK>
+0x9C1B # <CJK>
+0x9C21 # <CJK>
+0x9C24 # <CJK>
+0x9C25 # <CJK>
+0x9C2D # <CJK>
+0x9C2E # <CJK>
+0x9C2F # <CJK>
+0x9C30 # <CJK>
+0x9C32 # <CJK>
+0x9C39 # <CJK>
+0x9C3A # <CJK>
+0x9C3B # <CJK>
+0x9C3E # <CJK>
+0x9C46 # <CJK>
+0x9C47 # <CJK>
+0x9C48 # <CJK>
+0x9C52 # <CJK>
+0x9C57 # <CJK>
+0x9C5A # <CJK>
+0x9C60 # <CJK>
+0x9C67 # <CJK>
+0x9C76 # <CJK>
+0x9C78 # <CJK>
0x9CE5 # <CJK>
+0x9CE7 # <CJK>
+0x9CE9 # <CJK>
+0x9CEB # <CJK>
+0x9CEC # <CJK>
+0x9CF0 # <CJK>
+0x9CF3 # <CJK>
0x9CF4 # <CJK>
+0x9CF6 # <CJK>
+0x9D03 # <CJK>
+0x9D06 # <CJK>
+0x9D07 # <CJK>
+0x9D08 # <CJK>
+0x9D09 # <CJK>
+0x9D0E # <CJK>
+0x9D12 # <CJK>
+0x9D15 # <CJK>
+0x9D1B # <CJK>
+0x9D1F # <CJK>
+0x9D23 # <CJK>
+0x9D26 # <CJK>
+0x9D28 # <CJK>
+0x9D2A # <CJK>
+0x9D2B # <CJK>
+0x9D2C # <CJK>
+0x9D3B # <CJK>
+0x9D3E # <CJK>
+0x9D3F # <CJK>
+0x9D41 # <CJK>
+0x9D44 # <CJK>
+0x9D46 # <CJK>
+0x9D48 # <CJK>
+0x9D50 # <CJK>
+0x9D51 # <CJK>
+0x9D59 # <CJK>
+0x9D5C # <CJK>
+0x9D5D # <CJK>
+0x9D5E # <CJK>
+0x9D60 # <CJK>
+0x9D61 # <CJK>
+0x9D64 # <CJK>
+0x9D6C # <CJK>
+0x9D6F # <CJK>
+0x9D72 # <CJK>
+0x9D7A # <CJK>
+0x9D87 # <CJK>
+0x9D89 # <CJK>
0x9D8F # <CJK>
+0x9D9A # <CJK>
+0x9DA4 # <CJK>
+0x9DA9 # <CJK>
+0x9DAB # <CJK>
+0x9DAF # <CJK>
+0x9DB2 # <CJK>
0x9DB4 # <CJK>
+0x9DB8 # <CJK>
+0x9DBA # <CJK>
+0x9DBB # <CJK>
+0x9DC1 # <CJK>
+0x9DC2 # <CJK>
+0x9DC4 # <CJK>
+0x9DC6 # <CJK>
+0x9DCF # <CJK>
+0x9DD3 # <CJK>
+0x9DD9 # <CJK>
+0x9DE6 # <CJK>
+0x9DED # <CJK>
+0x9DEF # <CJK>
+0x9DF2 # <CJK>
+0x9DF8 # <CJK>
+0x9DF9 # <CJK>
+0x9DFA # <CJK>
+0x9DFD # <CJK>
+0x9E1A # <CJK>
+0x9E1B # <CJK>
+0x9E1E # <CJK>
+0x9E75 # <CJK>
+0x9E78 # <CJK>
+0x9E79 # <CJK>
+0x9E7D # <CJK>
0x9E7F # <CJK>
+0x9E81 # <CJK>
+0x9E88 # <CJK>
+0x9E8B # <CJK>
+0x9E8C # <CJK>
+0x9E91 # <CJK>
+0x9E92 # <CJK>
0x9E93 # <CJK>
+0x9E95 # <CJK>
0x9E97 # <CJK>
+0x9E9D # <CJK>
+0x9E9F # <CJK>
+0x9EA5 # <CJK>
0x9EA6 # <CJK>
+0x9EA9 # <CJK>
+0x9EAA # <CJK>
+0x9EAD # <CJK>
+0x9EB8 # <CJK>
+0x9EB9 # <CJK>
0x9EBA # <CJK>
0x9EBB # <CJK>
+0x9EBC # <CJK>
+0x9EBE # <CJK>
+0x9EBF # <CJK>
0x9EC4 # <CJK>
+0x9ECC # <CJK>
+0x9ECD # <CJK>
+0x9ECE # <CJK>
+0x9ECF # <CJK>
+0x9ED0 # <CJK>
0x9ED2 # <CJK>
+0x9ED4 # <CJK>
+0x9ED8 # <CJK>
0x9ED9 # <CJK>
+0x9EDB # <CJK>
+0x9EDC # <CJK>
+0x9EDD # <CJK>
+0x9EDE # <CJK>
+0x9EE0 # <CJK>
+0x9EE5 # <CJK>
+0x9EE8 # <CJK>
+0x9EEF # <CJK>
+0x9EF4 # <CJK>
+0x9EF6 # <CJK>
+0x9EF7 # <CJK>
+0x9EF9 # <CJK>
+0x9EFB # <CJK>
+0x9EFC # <CJK>
+0x9EFD # <CJK>
+0x9F07 # <CJK>
+0x9F08 # <CJK>
+0x9F0E # <CJK>
0x9F13 # <CJK>
+0x9F15 # <CJK>
+0x9F20 # <CJK>
+0x9F21 # <CJK>
+0x9F2C # <CJK>
0x9F3B # <CJK>
+0x9F3E # <CJK>
+0x9F4A # <CJK>
+0x9F4B # <CJK>
+0x9F4E # <CJK>
+0x9F4F # <CJK>
+0x9F52 # <CJK>
+0x9F54 # <CJK>
+0x9F5F # <CJK>
+0x9F60 # <CJK>
+0x9F61 # <CJK>
0x9F62 # <CJK>
-#0x20B9F # <CJK>
+0x9F63 # <CJK>
+0x9F66 # <CJK>
+0x9F67 # <CJK>
+0x9F6A # <CJK>
+0x9F6C # <CJK>
+0x9F72 # <CJK>
+0x9F76 # <CJK>
+0x9F77 # <CJK>
+0x9F8D # <CJK>
+0x9F95 # <CJK>
+0x9F9C # <CJK>
+0x9F9D # <CJK>
+0x9FA0 # <CJK>
+#0xFFE5 # FULLWIDTH YEN SIGN
diff --git a/chromium/third_party/fontconfig/src/fc-lang/ko.orth b/chromium/third_party/fontconfig/src/fc-lang/ko.orth
index 4bb52c6f487..39114a5af1f 100644
--- a/chromium/third_party/fontconfig/src/fc-lang/ko.orth
+++ b/chromium/third_party/fontconfig/src/fc-lang/ko.orth
@@ -86,6 +86,7 @@
0x3161 # HANGUL LETTER EU
0x3162 # HANGUL LETTER YI
0x3163 # HANGUL LETTER I
+0x3164 # HANGUL FILLER
0x3165 # HANGUL LETTER SSANGNIEUN
0x3166 # HANGUL LETTER NIEUN-TIKEUT
0x3167 # HANGUL LETTER NIEUN-SIOS
diff --git a/chromium/third_party/fontconfig/src/fc-lang/zh_hk.orth b/chromium/third_party/fontconfig/src/fc-lang/zh_hk.orth
index 8701cbcbc95..5d5ef052696 100644
--- a/chromium/third_party/fontconfig/src/fc-lang/zh_hk.orth
+++ b/chromium/third_party/fontconfig/src/fc-lang/zh_hk.orth
@@ -2,7 +2,6 @@
# fontconfig/fc-lang/zh_hk.orth
#
# Copyright © 2002 Keith Packard
-# Copyright © 2014 Abel Cheung
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -24,610 +23,546 @@
#
# Chinese Hong Kong Supplementary Character Set (ZH-HK)
#
-# This list is a concatenation of:
-# (1) Most frequently used HKSCS characters accounting for ~99.75% usage in:
-# i. Around 11000 crawled UTF-8 Hong Kong web pages in
-# http://html5.org/temp/hk-data.tar.gz
-# ii. Database dump of main content in Cantonese Wikipedia dated 20131228:
-# http://dumps.wikimedia.org/zh_yuewiki/
-# (2) Word recommendation list from a local linguist:
-# http://founder.acgvlyric.org/iu/doku.php/%E9%80%A0%E5%AD%97:%E5%B8%B8%E7%94%A8%E9%A6%99%E6%B8%AF%E5%A4%96%E5%AD%97%E8%A1%A8
-# Level 1-5 characters are taken, excluding non-HKSCS chars.
-#
-3007
-344C
-3464
-3473
-347A
-347D
-347E
-3493
-3496
-34A5
-34BC
-34C1
-34C8
-34DF
-34E4
-34FB
-3506
-353E
-3551
-3561
-356D
-3570
-3572
-3577
-3578
-3584
-3597
-35A1
-35A5
-35AD
-35BF
-35C1
-35C5
-35C7
-35CA
-35CE
-35D2
-35D6
-35DB
-35F1
-35F2
-35F3
-35FB
-35FE
-3609
-361A
-3623
-362D
-3635
-3639
-3647
-3648
-3649
-364E
-365F
-367A
-3681
-36A5
-36AA
-36AC
-36B0
-36B1
-36B5
-36B9
-36BC
-36C1
-36C3
-36C4
-36C5
-36D3
-36D4
-36D6
-36DD
-36E5
-36E6
-36F5
-3703
-3708
-370A
-370D
-371C
-3723
-3725
-3730
-3732
-3733
-373A
-3740
-3743
-3762
-376F
-3797
-37A0
-37B9
-37BE
-37F2
-37F8
-37FB
-380F
-3819
-3820
-382D
-3836
-3838
-3863
-38A0
-38C3
-38CC
-38D1
-38FA
-3908
-3914
-3927
-3932
-393F
-394D
-3963
-3980
-3989
-398A
-3992
-399B
-39A1
-39A4
-39B8
-39DC
-39E2
-39E5
-39EC
-39F8
-39FB
-39FE
-3A01
-3A03
-3A06
-3A17
-3A18
-3A29
-3A2A
-3A34
-3A4B
-3A52
-3A57
-3A5C
-3A5E
-3A66
-3A67
-3A97
-3AAB
-3ABD
-3ADE
-3AF0
-3AF2
-3AFB
-3B0E
-3B19
-3B22
-3B2B
-3B39
-3B42
-3B58
-3B60
-3B71
-3B72
-3B7B
-3B7C
-3B80
-3B96
-3B99
-3BA1
-3BBE
-3BC2
-3BC4
-3BD7
-3BDD
-3BEC
-3BF2
-3BF3
-3C0D
-3C11
-3C15
-3C54
-3CCB
-3CCD
-3CD1
-3CD6
-3CDC
-3CEB
-3D13
-3D1D
-3D32
-3D46
-3D4C
-3D4E
-3D51
-3D5F
-3D62
-3D69
-3D6A
-3D6F
-3D75
-3D7D
-3D85
-3D8F
-3D91
-3DA5
-3DAD
-3DB4
-3DBF
-3DC6
-3DC7
-3DCD
-3DD3
-3DDB
-3DEB
-3DF3
-3DF7
-3DFC
-3E40
-3E43
-3E48
-3E55
-3E74
-3EA8
-3EA9
-3EAA
-3EAD
-3EB1
-3EB8
-3EBF
-3EC2
-3ECA
-3ECC
-3ED1
-3ED6
-3ED7
-3EDE
-3EE1
-3EE7
-3EEB
-3EF0
-3EFA
-3EFF
-3F04
-3F0E
-3F58
-3F59
-3F63
-3F93
-3FC0
-3FD7
-3FDC
-3FE5
-3FED
-3FF9
-3FFA
-4004
-4039
-4045
-4053
-4057
-4062
-4065
-406A
-406F
-40BB
-40BF
-40C8
-40D8
-40DF
-40FA
-4103
-4104
-4109
-410E
-4132
-4167
-416C
-416E
-417F
-4190
-41B2
-41CF
-41DB
-41EF
-41F9
-4211
-4240
-4260
-426A
-427A
-4294
-42A2
-42B5
-42B9
-42BC
-42F4
-42FB
-42FC
-432B
-436E
-4397
-43BA
-43C1
-43D9
-43DF
-43ED
-43F2
-4401
-4402
-4413
-447A
-448F
-449F
-44A0
-44B0
-44B7
-44DD
-44DF
-44E4
-44EA
-44F4
-4503
-4504
-4509
-4516
-4527
-452E
-4533
-453B
-453F
-4543
-4551
-4552
-4555
-4562
-456A
-4577
-4585
-45E9
-4603
-4606
-460F
-4615
-4617
-465B
-467A
-46CF
-46D0
-46F5
-4718
-477C
-47D5
-47ED
-47F4
-4800
-480B
-4871
-489B
-48AD
-48D0
-48DD
-48ED
-48FA
-4906
-491E
-492A
-492D
-4935
-493C
-493E
-4945
-4951
-4953
-4965
-496A
-4972
-4989
-49A7
-49DF
-49E5
-4A0F
-4A1D
-4A24
-4A35
-4A96
-4AB4
-4AB8
-4AD1
-4AE4
-4AFF
-4B19
-4B2C
-4B37
-4B6F
-4B70
-4B72
-4B7B
-4B7E
-4B8E
-4B90
-4B93
-4B96
-4B97
-4B9D
-4BBD
-4BBE
-4BC0
-4C04
-4C07
-4C0E
-4C3B
-4C3E
-4C5B
-4C6D
-4C77
-4C7B
-4C7D
-4C81
-4CAE
-4CB0
-4CCD
-4CE1
-4CED
-4D09
-4D10
-4D34
-4D77
-4D91
-4D9C
+# Taken from the HKSCS-2001, including only the non-PUA BMP glyphs
+# as encoded in ISO/IEC 10646-1:2000
4E04
+4E1A
+4E1C
4E21
+4E24
+4E28
4E2A
+4E2C
+4E2F
+4E36
+4E37
+4E3D
+4E3F
+4E49
4E5A
4E5B
4E6A
4E78
4E80
+4E81
4E85
+4E87
+4E89
4E98
+4E9A
+4EA0
+4EA3
+4EB7
+4EBB
+4EBC
+4EBF
4ECE
+4EEA
+4EEB
4EEE
+4EF8
+4F03
+4F17
+4F1A
+4F28
+4F29
+4F32
4F37
+4F39
+4F42
+4F45
+4F4B
+4F72
+4F8A
+4FA2
+4FA8
+4FAB
+4FB0
+4FBD
+4FC8
+4FCC
+4FE4
4FE5
+4FF0
+4FF2
4FF9
+4FFD
+5003
5008
+502E
+5034
503B
+5056
+5058
+5066
+506C
+5081
+5088
+5090
+50A6
+50BC
50CD
+50D0
+50D9
+50DF
+50E1
+50F4
+50FC
+5101
510D
510E
+512B
+5156
+5160
516A
+5174
+5179
+5182
5186
+5188
+5196
519A
+519C
51A7
51A8
+51AB
+51AE
51B2
51B3
51B4
51B5
+51B8
+51C3
+51C7
51C9
+51CF
+51D1
+51D2
+51D3
+51DB
+51DF
+51E2
+51E4
51ED
51F4
+51FC
+51FE
+5202
+5205
520B
+521F
+5220
5226
5227
5234
523C
5257
+5259
+5260
+5268
+5273
+5279
528F
+5290
+5294
+529A
+52A1
+52A4
+52A8
52B5
52B9
52C5
+52CC
+52D0
52D1
+52E0
+52E1
+52F9
+5301
+5324
+5327
+532C
+5332
+5333
5338
+533B
+5342
+534E
+535D
+535F
+5364
+5367
+5369
+536D
5374
537D
+537E
5393
53A0
+53A2
53A6
53A8
+53A9
+53AA
+53AB
+53AE
+53B0
+53B6
53C1
+53C2
+53C5
53CC
+53D0
+53D1
+53D2
+53D8
53D9
+53DA
53E0
53F6
+53F7
53FE
5413
5414
5416
+541A
5421
-544C
+5423
+542F
+5432
+5434
+544B
544D
+5469
546A
546D
+5485
548F
5493
5494
5497
+549C
+549E
+54A3
54A4
54B2
+54B4
+54B9
54CB
+54CC
54CD
+54D0
+54DA
54E3
+54EF
5502
+550D
5513
+5518
551E
+5523
5525
+5528
+552B
+553F
+5547
+5549
5553
555D
5569
556B
5571
5572
+5573
5579
5586
5590
55A9
55B0
+55B4
+55B9
55BA
55BC
+55C1
55D7
+55D8
55DE
+55EA
55EC
55F0
55F1
+55F5
55FB
5605
5611
561E
+5620
+5621
5622
5623
5625
562D
+5637
5643
564D
564F
+5650
5652
5654
565D
+5661
+567A
+567B
+567C
5689
+568A
+568B
5692
+569E
569F
56A1
56A4
+56AF
56B1
56B9
56BF
56D6
+56E2
+56ED
+56EF
+56F1
56FD
+5700
+5715
+571D
+5732
+573D
+573F
5742
+5743
+5746
+5754
+5757
+575B
+575F
+5767
577A
+577E
+577F
+5788
+578A
+578D
+5790
+579C
+57A1
+57A7
+57AA
+57B4
+57BB
+57BE
+57C4
57C8
57D7
+57DD
57DE
+57E6
+57EF
+57FE
5803
+5812
+5822
5826
583A
5840
+5844
+5847
+585C
+585F
5869
+586C
5872
5873
+5892
+5899
+589A
+58A7
58AA
+58B0
+58B5
+58B6
58BB
+58CB
+58D0
+58DC
58E0
+58F0
58F2
58F3
58FB
+5902
+5904
+5905
+5907
590A
+5911
+591F
+5932
+5934
+5965
5975
+5989
+5994
+599A
599F
59AC
+59B0
+59B7
+59B8
+59C4
59C9
+59D9
59EB
+59EF
+59F0
59F8
+59F9
+5A02
+5A0B
+5A0D
+5A12
+5A1A
+5A21
+5A24
+5A27
+5A2A
5A2B
+5A2C
+5A3D
+5A45
+5A54
+5A59
+5A61
+5A63
+5A68
+5A6B
+5A6E
+5A71
+5A79
5A7E
+5A81
+5A82
+5A86
+5A88
+5A91
+5A96
+5A99
+5AA0
+5AA1
+5AAB
+5AC3
+5ACE
+5ACF
+5AD3
+5AE4
+5AF0
5AF2
5AFA
+5AFE
+5B0D
+5B11
+5B15
+5B1F
+5B2B
+5B41
+5B44
5B46
+5B4A
+5B4F
+5B66
+5B68
5B6D
+5B74
+5B76
+5B7C
+5B80
+5B82
+5B90
+5B96
5B9D
+5B9E
5B9F
+5BAA
5BC3
-5BDB
+5BD5
+5BD7
5BF3
+5BFF
5C05
+5C13
+5C14
+5C1C
+5C1E
+5C20
+5C23
+5C49
5C4A
+5C53
5C5E
+5C85
+5C99
+5C9A
+5C9C
+5C9E
+5CBA
+5CC1
+5CC2
+5CD1
+5CE5
+5CE9
5CEF
+5CF5
+5D10
+5D15
+5D18
+5D2C
+5D2F
+5D3E
+5D46
+5D48
+5D56
+5D57
+5D5B
+5D70
+5D74
+5D7B
+5D85
5D8B
+5D8E
+5DA4
+5DAB
+5DB6
+5DB9
+5DC1
+5DD7
+5DDB
5DF5
+5E09
+5E0B
+5E12
+5E2E
+5E42
+5E48
+5E5E
5E7A
+5E7F
5E83
+5E86
+5E92
+5E99
+5EBD
+5ECD
5ED0
+5EF4
5EF8
5EF9
5EFB
@@ -635,485 +570,1671 @@
5F0C
5F0D
5F0E
+5F25
+5F3A
+5F4D
+5F50
+5F51
5F5C
+5F61
+5F63
+5F72
+5F7B
+5F83
+5FA4
5FA7
+5FB1
+5FBA
+5FC2
+5FC4
+5FDB
5FDF
+6023
6031
+603B
+604A
+6052
6075
+6077
+607E
609E
60A4
+60A7
+60B3
60D7
+60DE
60E3
+60E7
+60E8
+60E9
+60FD
+6107
+610C
+6119
+6122
+6130
+613D
+6142
+6150
6159
+615C
+6160
6164
+616F
617D
+6181
6187
+6195
+6198
+6199
+619C
+61B7
+61B9
+61C0
+61CF
61D0
+61D3
+61DA
+61E2
+622C
+6237
6239
+624C
+6268
+6282
+6285
+6290
629D
+62A4
62A6
62C3
62C5
62D5
+62DF
+62E5
+6318
+632E
6331
+6335
+6337
+6364
+636C
6379
+637F
+638B
63B9
+63C1
63D1
63DE
+63E2
63E6
63F8
+63FB
63FC
63FE
6407
6432
+6438
643A
+643B
+645A
+6471
647C
648D
6491
+64AF
64B4
+64B6
+64C0
+64D3
64DD
64E1
+64E5
64E7
+64EA
+650A
+6511
651E
+651F
6530
+6534
+6535
654D
+655F
+656B
+656D
+6585
6586
+6588
6589
+658B
+65B5
+65BE
+65D1
+65D4
+65E0
65E3
+65FF
+6618
+661E
+6623
6630
6644
+6648
664B
+6653
+6657
+6663
6667
666B
6673
+667D
+6685
668E
+6692
+669A
+66A4
+66AD
+66B3
+66B6
+66BF
+66CD
+66CE
66F1
+6702
+670C
+670E
+6716
+6719
+671E
6725
6736
+6744
6761
+6762
6767
+676B
+678F
67A0
+67A4
+67AC
67B1
+67BF
+67D6
+67D7
+67F9
+67FE
+6800
+6801
+6802
6803
6804
+680D
+6810
+681B
681E
6822
+6836
+6837
+683E
+6847
+684A
+6855
+6856
+685D
+6865
+6884
+6888
6898
+68A6
68B6
+68B9
+68BD
+68C3
+68C5
+68CA
6900
+6901
+6902
+6903
+6909
+6918
+6919
+691A
+691B
+692C
6936
+693E
+6943
+6946
+6955
6961
+6964
+6967
+6972
6973
+6980
+6985
698A
+6998
+699F
+69A2
69B2
+69C0
+69D1
+69D5
+69D6
+69E1
+69E9
+69F9
+69FA
+6A03
6A0B
+6A0C
+6A1A
+6A1C
6A2B
+6A2C
+6A2D
+6A33
+6A43
+6A45
+6A4C
+6A52
+6A53
+6A57
+6A63
+6A65
+6A71
+6A74
+6A7A
+6A82
+6A8A
+6A8F
+6A99
+6A9D
+6AA7
+6AAB
+6AB1
+6AB2
+6AB5
+6ABE
6AC8
+6AC9
+6ACA
+6AD4
+6AD8
+6AF6
+6B05
+6B1D
6B35
+6B52
+6B57
6B6F
6B74
6B7A
+6B81
+6BC1
+6BDC
6BE1
+6BEA
+6BFA
+6C1C
+6C31
+6C35
6C37
6C39
+6C3A
+6C3D
+6C49
+6C58
6C5A
+6C6E
+6C75
+6C79
+6C7F
+6C9F
6CA2
+6CAA
+6CAF
+6CB2
+6CCB
+6CCE
+6CDF
6CEA
+6CFF
+6D02
+6D05
+6D06
+6D24
+6D26
+6D4E
+6D57
+6D5B
6D5C
+6D71
6D72
+6D81
+6D8F
6D96
+6DA4
+6DA5
+6DB1
+6DB9
+6DFE
+6E02
+6E04
+6E0A
+6E0F
6E15
+6E18
6E29
+6E2A
+6E4F
+6E50
+6E59
+6E76
6E7C
+6E86
+6E8B
+6E9A
+6EB5
+6EB8
+6EBB
6ED9
+6EDA
6EDB
6EDD
+6EE2
+6EE8
+6EE9
+6EFA
+6F04
+6F0B
+6F0C
6F16
+6F17
+6F24
+6F34
+6F3D
+6F44
6F56
+6F5C
+6F74
+6F79
6F81
+6F8A
+6F9D
+6F9F
+6FB5
+6FBB
6FBE
+6FD3
+6FD9
+6FDA
6FF6
+6FF8
+7003
701E
702C
+704B
+704D
+7050
+7054
+705C
+7067
+706C
+706F
+7075
+7077
+7079
+707E
+707F
7081
7089
+708B
+708F
+70A0
+70A3
+70A5
+70A6
+70A7
70B9
+70BB
+70BC
+70BD
+70C0
+70C4
+70CC
+70D0
+70D5
+70D6
70DF
70F1
+70F5
+70FE
7105
+711D
+7129
712B
+712C
+7133
+7134
+7135
+713B
+713E
7140
7145
714A
+714F
7151
+716B
7171
+7173
+7175
+7176
+7177
+717A
+717C
+717E
+7188
+718C
+718E
+7191
+7196
+7198
+71A2
+71A3
+71AD
+71B4
+71B7
+71BA
+71D1
+71DD
+71EB
+71F5
71F6
+7200
+7209
+720E
+720F
7215
+7216
+7217
+7224
+722B
+722E
7240
+7250
+7255
+7257
+725C
+7266
7282
7287
+728F
+7294
+729F
+72AD
+72B2
+72CD
+72E2
+7302
+7304
+7310
+7328
732A
+732B
+732C
732E
+7338
+7339
7341
+7348
+734F
+7371
7374
+738C
+738F
+7398
+739C
+739E
+73A7
+73AA
+73BA
73C9
+73CE
73CF
+73D0
+73D5
+73E1
+73E2
+73E4
+73E6
+73EF
+73F3
+73F7
+73F9
+73FB
+7402
+7411
+7412
+7414
+7415
+7417
+7419
+741C
+741E
+741F
+7437
+7438
7439
743C
+7443
+7445
+7447
7448
+7449
+7453
+7456
+745D
7460
+7465
+7468
+746B
+746C
+7474
+7476
+747A
+7482
+748C
+748D
+7499
+749B
+74A4
+74B4
+74B9
+74C8
+74CC
+74D0
+74D3
+74E7
+74F0
+74F1
+74F2
+74F8
7505
+750E
+7519
+751E
7534
+7535
753B
+7542
+7546
754A
+754D
7551
7553
+7555
7560
7567
+756D
+756E
+7572
+757A
+7583
758D
758E
+7592
+759E
75B1
75B4
+75C3
+75C8
+75DC
7602
+7607
+762C
763B
+7640
+764D
764E
+764F
+7651
+7654
7666
7667
+766F
+7673
+7674
7676
767A
+7690
+76A1
+76A5
+76B7
+76CC
+76D6
+76D9
770C
+770E
+770F
771E
+7724
+7726
+772B
7740
+7743
7758
+7772
+7777
7778
777A
+777B
7793
+7798
+77AF
77B9
+77BE
+77C3
+77C5
77CB
+77DD
+77E6
+77F4
+77FE
7808
+7818
+781C
+781E
+7839
+783C
+783D
+7842
+7844
+7847
+784B
+7851
+7853
+7854
+7866
+787A
7881
+7888
788D
+78AF
78B1
+78B6
78B8
+78B9
+78C7
+78D2
+78D3
78D7
+78D8
+78E4
+78EE
+78F0
+78F1
+78F5
7906
792E
+7932
+7933
+7934
+7936
+793B
+793C
7958
+7959
7962
+7971
+797E
+7980
+7983
+7986
+7987
7991
+7999
+799D
+799F
+79A5
+79A9
79C4
+79C6
+79CC
+79D4
+79E2
+79F1
+79F4
+7A06
+7A2A
+7A2D
+7A3A
+7A3E
+7A43
+7A45
+7A49
+7A65
+7A7D
+7A83
+7A91
7A93
7AB0
+7ABB
+7ABC
+7AC2
+7AC3
7AC8
7AC9
+7ACF
+7AD3
+7ADA
+7ADB
7ADC
7ADD
+7AE2
+7AE7
+7AE9
7AEA
+7AFE
7B0B
+7B0C
+7B14
+7B1F
+7B27
+7B29
7B39
+7B42
+7B43
+7B55
+7B62
+7B6C
7B6F
+7B7B
+7B92
+7BA2
+7BA3
+7BB2
+7BCF
+7BD0
+7BEC
+7BFA
+7BFC
+7C12
7C15
+7C1B
+7C35
+7C42
+7C44
+7C51
+7C56
+7C5D
+7C6D
+7C70
+7C74
+7C7B
+7C7C
+7C7E
+7C83
+7C86
+7C8E
+7C9C
7CA6
7CA7
+7CAC
7CAE
+7CB8
+7CC2
+7CC3
+7CC7
7CC9
7CCD
+7CD3
+7CDA
+7CE6
7CED
+7CF3
+7CF5
7CF9
7CFC
7D25
+7D4D
+7D5A
7D5D
7D89
+7D8B
+7D97
+7DA4
+7DA8
7DAB
7DB3
7DCD
7DCF
+7DD0
+7DD3
+7DD4
7DDC
+7DE4
+7DE5
+7DF5
+7DFD
+7DFE
+7E07
+7E27
+7E5B
+7E65
+7E67
+7E6C
7E6E
+7E7F
+7E8E
+7E92
+7E9F
+7EA4
+7EAC
+7EBA
+7EC7
+7ECF
+7EDF
+7F06
+7F37
+7F40
+7F41
7F47
7F49
7F4E
+7F52
+7F53
+7F71
7F78
+7F8F
+7F93
7F97
7FA3
+7FAE
+7FB4
+7FDD
+7FE7
+7FFA
+8002
+8008
+801D
+8020
+8025
+802E
+802F
+8031
+803B
+803C
+8054
+805B
8061
+8062
+8063
+8066
+8080
+809F
+80A7
80B6
+80B7
+80BC
80BD
80C6
+80E9
+80EC
+80F6
+8103
8107
+8109
+810C
+810E
+8112
+8114
8117
+811A
+812A
+8132
+8134
8137
+8142
+8148
+8156
+8159
+815A
+816D
+817C
+8184
+8193
81A5
+81AA
81B6
+81C1
+81C8
+81E4
81EF
+81F6
8218
+821A
8226
+8229
+822D
+823E
+8254
+8262
+8265
8276
+8279
+827A
+827B
+8287
82A6
82AA
+82BF
+82C4
+82CA
+82CF
+82D0
+82D8
+82E2
+82EE
82F7
+82F8
+82FC
+82FD
+82FF
+830B
8318
+831A
+831D
+833D
+8357
+8362
+8363
+8366
+836F
+8385
+8391
+839C
+83AC
+83B9
+83BE
+83CD
83D3
+83ED
+8405
+8414
+8416
8418
+841C
8420
+8421
+8424
+8426
+842E
+843E
+8448
+844A
+8453
+8455
+8458
+845C
+8462
+8464
8471
+8472
+847F
+8480
+8488
+8492
+8493
+8496
+84A3
84AD
84BD
+84BE
+84DA
+84DE
+84E1
84E2
+84E4
+84E5
+84F8
8503
+8505
+8510
+8533
8534
+8538
+8542
+854B
+854C
+8552
+855A
+855F
+856F
8570
+8573
+8597
+85C1
+85D6
+85E0
+85EE
+85FC
8602
+860D
+860F
+8610
+8614
+8616
+8628
862F
+8642
+8645
+866C
+8672
+867E
+8692
+86A0
+86AD
+86B2
86EF
+8770
+8771
+877D
8786
+878B
+878C
+87A5
+87A9
+87B1
+87C1
87CE
+87D6
+87DA
+87EE
+87F5
8804
+880F
+8818
+8827
882D
+8842
+8845
8846
+884F
885E
+8860
+8864
+8865
+886E
+8884
+8887
+888F
+8890
889C
+88A0
+88AE
+88B4
+88B5
+88BF
+88C5
88C7
88CF
+88E6
+88F5
+88FF
+8900
+8924
+8943
8947
+894D
+8954
+8965
+8977
+8980
8987
+8989
+898A
+8991
8994
89A5
89A7
+89A9
+89BC
+89C1
+89C6
+89E7
+8A1C
+8A29
+8A2B
+8A38
+8A3D
+8A49
+8A67
+8A7E
+8A90
8A94
+8A9C
+8AA9
+8AAF
+8AB4
+8ADA
+8AEA
+8B0C
+8B1F
+8B2D
+8B3F
+8B43
8B4C
+8B4D
+8B5E
+8B62
+8B69
8B81
8B83
8B90
+8B9B
+8BA0
+8BBE
+8BE2
+8C51
+8C9B
+8C9F
+8CAD
8CCD
+8CD4
+8CD6
8CDB
+8CE9
+8CEB
+8CF2
+8CF7
8D03
8D0B
+8D0C
+8D11
+8D12
+8D18
+8D1C
+8D1D
+8D7A
+8D82
+8DA6
+8DA9
+8DC0
+8DC3
+8DD4
+8E01
8E0E
+8E28
8E2A
8E2D
+8E3A
+8E46
8E4F
+8E68
+8E71
+8E75
+8E77
8E7E
8E80
+8EA7
8EAD
+8EB0
+8EB6
+8EB9
+8EBC
+8EC3
+8ECE
8EDA
8EE2
+8EE4
+8EED
8EF2
+8F19
8F2D
+8F30
+8F41
+8F4A
+8F5C
+8F66
+8F67
+8F6E
+8F93
+8FA0
+8FA5
+8FA7
+8FB3
8FB5
+8FB6
+8FB7
+8FB8
+8FB9
8FBA
8FBB
8FBC
+8FBE
+8FC1
+8FCA
+8FCC
+8FCF
+8FD0
+8FDA
8FF9
+9008
+9012
9033
+9037
+904C
9056
9061
+9064
+906C
90A8
+90AE
+90BB
+90C4
+9151
+9159
+915C
+915E
+9167
+9170
9176
+917C
+918C
+918E
+91A9
+91B6
+91BB
+91C4
+91D6
+91DF
+91E5
+91F6
+91FA
+91FE
9208
920E
+9213
+9221
+9228
922A
+922B
+9235
+923C
+9241
9244
9255
+9258
925D
+925F
9262
+926B
926E
+9277
+9281
+9284
+9289
+928F
+92AE
+92B1
92B9
+92BA
92BE
+92BF
+92D4
+92DB
+92E3
+92E5
+92EB
+92EC
+92F2
+92F3
+92F4
+92F6
+92FD
+9303
9307
+932C
+9330
+9331
9340
+9341
+9342
+9343
+9344
9345
9348
+935F
+9362
+9366
+9368
9369
+936B
+936E
+9373
+9374
+9378
+937D
+9381
9384
9385
+9386
9387
+9390
+939C
+93A0
93AD
+93B8
+93BB
+93BD
93BF
+93C6
+93CB
+93D3
+93DB
+93E0
93F0
+93F1
+93F3
+93F4
+9401
9404
+9408
+9417
+941B
+941D
+9424
+9425
9426
9427
+942D
+943E
+9442
+9443
+944D
9454
+9458
945B
9465
+9467
+946C
+9479
+947B
+9485
+949F
+94A2
+94C1
+94C3
+94DC
+94F6
+952D
+9547
+9578
+957F
+9585
+9596
+9597
9599
+95A0
95A2
+95A6
+95A7
95AA
+95E8
+95F4
+961D
+9633
+9638
+9641
+9645
+9656
+9669
+967B
+9681
+968F
9696
96A3
+96A5
+96B6
+96BD
+96F4
+9703
+971B
9721
+9731
+9736
+9740
+9741
9751
+9755
+9757
+975D
+975F
976D
+9771
+9787
+9789
+979B
+979F
+97B1
+97B2
+97B4
+97B8
+97BA
+97BD
+97BE
+97C0
+97C2
+97C8
+97D2
+97E0
+97E6
97EE
+97F2
97F5
+9814
+9815
+981F
+9823
+982E
+9833
9834
+9847
+984B
+9866
+9868
+986C
+9875
+98B4
98B7
+98B9
+98C3
+98C7
98C8
+98CA
+98CE
+98DC
+98DE
98E0
+98E1
+98E6
+98EC
+98F1
+98F5
+990E
+9919
991C
+9937
9938
+9939
+993B
+9940
+9942
994A
994D
+995D
9962
+9963
+999B
+99A4
+99AA
+99B8
+99BC
+99C4
99C5
+99DA
+99E0
99E1
+99E6
+99F5
+9A0C
9A10
+9A1F
+9A21
+9A26
+9A2F
+9A3B
+9A3C
+9A58
+9A5C
+9A63
+9A6C
+9A8F
+9AB2
+9AB6
+9ABA
+9ABD
+9AD7
+9AE0
+9AE2
+9AF4
+9AFF
+9B02
+9B09
+9B0F
+9B14
9B2A
9B2D
+9B34
+9B39
+9B40
+9B50
+9B69
+9B7F
9B81
+9B83
9B8B
+9B8D
9B8E
+9B8F
+9B97
+9B9D
+9B9F
+9BB0
+9BCF
+9BDD
+9BE9
9BED
9BF1
+9BF4
9BFF
9C02
+9C0A
9C0C
+9C10
+9C15
+9C1B
+9C1F
+9C20
+9C26
9C2F
9C35
9C3A
9C45
+9C4F
+9C53
9C5D
9C72
+9C7B
+9C7C
+9D02
+9D0C
+9D16
+9D21
9D34
+9D39
+9D44
+9D49
+9D4E
9D50
9D5E
+9D6D
+9D6E
+9D7C
+9D7E
+9D83
9D93
+9DA5
+9DAB
+9DBD
9DC0
9DC4
9DC9
9DD4
+9DFC
9E0A
9E0C
+9E0E
+9E18
+9E1C
+9E1F
+9E7B
+9E81
+9E84
+9E85
9E90
9E95
9E96
+9E98
+9E9E
+9EA2
+9EA6
+9EA8
9EAA
9EAB
+9EAC
9EAF
+9EB1
+9EBD
9EBF
+9EC1
+9EC4
+9EC6
+9EC7
+9EE2
+9EF1
+9EF8
+9EFE
+9F02
9F08
+9F17
9F26
+9F27
+9F39
+9F44
+9F45
+9F50
+9F53
+9F5A
9F62
+9F69
+9F7F
9F8E
-200CA
-201A4
-201A9
-20325
-20341
-2070E
-20779
-20C41
-20C53
-20C65
-20C78
-20C96
-20CB5
-20CCF
-20D31
-20D71
-20D7E
-20D7F
-20D9C
-20DA7
-20E04
-20E09
-20E4C
-20E73
-20E76
-20E7A
-20E9D
-20EA2
-20ED7
-20EF9
-20F2D
-20F2E
-20F3B
-20F4C
-20FB4
-20FEA
-21014
-2105C
-2106F
-21075
-21076
-2107B
-210C1
-210D3
-2113D
-21145
-2114F
-2197C
-21A34
-21C2A
-21DF9
-220C7
-221A1
-22ACF
-22B43
-22BCA
-22C51
-22C55
-22C62
-22CB2
-22CC2
-22D4C
-22D67
-22D8D
-22DEE
-22F74
-23231
-23595
-236BA
-23CB7
-23E89
-23F80
-244D3
-24DB8
-24DEA
-24EA7
-2512B
-25148
-2517E
-25535
-25E49
-26258
-266DA
-267CC
-2688A
-269F2
-269FA
-27285
-27574
-27657
-27735
-2775E
-2789D
-2797A
-279A0
-27A3E
-27A59
-27D73
-28024
-280BD
-2815D
-28207
-282E2
-2836D
-289C0
-289DC
-28A0F
-28B46
-28B4E
-28CCA
-28CCD
-28CD2
-28D99
-28EE7
-294E5
-29720
-298D1
-29A4D
-29D98
-2A632
-2A65B
+9F99
+9F9F
+9FA5
+20547
diff --git a/chromium/third_party/fontconfig/src/fc-query/fc-query.c b/chromium/third_party/fontconfig/src/fc-query/fc-query.c
index 9bd398059ac..2983e0f199b 100644
--- a/chromium/third_party/fontconfig/src/fc-query/fc-query.c
+++ b/chromium/third_party/fontconfig/src/fc-query/fc-query.c
@@ -52,7 +52,6 @@
#define _GNU_SOURCE
#include <getopt.h>
static const struct option longopts[] = {
- {"ignore-blanks", 0, 0, 'b'},
{"index", 1, 0, 'i'},
{"format", 1, 0, 'f'},
{"version", 0, 0, 'V'},
@@ -71,26 +70,24 @@ usage (char *program, int error)
{
FILE *file = error ? stderr : stdout;
#if HAVE_GETOPT_LONG
- fprintf (file, "usage: %s [-Vbh] [-i index] [-f FORMAT] [--ignore-blanks] [--index index] [--format FORMAT] [--version] [--help] font-file...\n",
+ fprintf (file, "usage: %s [-Vh] [-i index] [-f FORMAT] [--index index] [--format FORMAT] [--version] [--help] font-file...\n",
program);
#else
- fprintf (file, "usage: %s [-Vbh] [-i index] [-f FORMAT] font-file...\n",
+ fprintf (file, "usage: %s [-Vh] [-i index] [-f FORMAT] font-file...\n",
program);
#endif
fprintf (file, "Query font files and print resulting pattern(s)\n");
fprintf (file, "\n");
#if HAVE_GETOPT_LONG
- fprintf (file, " -b, --ignore-blanks ignore blanks to compute langauges\n");
fprintf (file, " -i, --index INDEX display the INDEX face of each font file only\n");
fprintf (file, " -f, --format=FORMAT use the given output format\n");
fprintf (file, " -V, --version display font config version and exit\n");
fprintf (file, " -h, --help display this help and exit\n");
#else
- fprintf (file, " -b (ignore-blanks) ignore blanks to compute languages\n");
- fprintf (file, " -i INDEX (index) display the INDEX face of each font file only\n");
- fprintf (file, " -f FORMAT (format) use the given output format\n");
- fprintf (file, " -V (version) display font config version and exit\n");
- fprintf (file, " -h (help) display this help and exit\n");
+ fprintf (file, " -i INDEX (index) display the INDEX face of each font file only\n");
+ fprintf (file, " -f FORMAT (format) use the given output format\n");
+ fprintf (file, " -V (version) display font config version and exit\n");
+ fprintf (file, " -h (help) display this help and exit\n");
#endif
exit (error);
}
@@ -100,24 +97,19 @@ main (int argc, char **argv)
{
int index_set = 0;
int set_index = 0;
- int ignore_blanks = 0;
FcChar8 *format = NULL;
- FcBlanks *blanks = NULL;
int err = 0;
int i;
#if HAVE_GETOPT_LONG || HAVE_GETOPT
int c;
#if HAVE_GETOPT_LONG
- while ((c = getopt_long (argc, argv, "bi:f:Vh", longopts, NULL)) != -1)
+ while ((c = getopt_long (argc, argv, "i:f:Vh", longopts, NULL)) != -1)
#else
- while ((c = getopt (argc, argv, "bi:f:Vh")) != -1)
+ while ((c = getopt (argc, argv, "i:f:Vh")) != -1)
#endif
{
switch (c) {
- case 'b':
- ignore_blanks = 1;
- break;
case 'i':
index_set = 1;
set_index = atoi (optarg);
@@ -143,8 +135,6 @@ main (int argc, char **argv)
if (i == argc)
usage (argv[0], 1);
- if (!ignore_blanks)
- blanks = FcConfigGetBlanks (NULL);
for (; i < argc; i++)
{
int index;
@@ -155,7 +145,7 @@ main (int argc, char **argv)
do {
FcPattern *pat;
- pat = FcFreeTypeQuery ((FcChar8 *) argv[i], index, blanks, &count);
+ pat = FcFreeTypeQuery ((FcChar8 *) argv[i], index, NULL, &count);
if (pat)
{
if (format)
diff --git a/chromium/third_party/fontconfig/src/fc-query/fc-query.sgml b/chromium/third_party/fontconfig/src/fc-query/fc-query.sgml
index fd51d217157..5351d1e4d70 100644
--- a/chromium/third_party/fontconfig/src/fc-query/fc-query.sgml
+++ b/chromium/third_party/fontconfig/src/fc-query/fc-query.sgml
@@ -65,10 +65,6 @@ manpage.1: manpage.sgml
<arg><option>-Vh</option></arg>
<sbr>
<group>
- <arg><option>-b</option></arg>
- <arg><option>--ignore-blanks</option></arg>
- </group>
- <group>
<arg><option>-i</option> <option><replaceable>index</replaceable></option></arg>
<arg><option>--index</option> <option><replaceable>index</replaceable></option></arg>
</group>
@@ -101,14 +97,6 @@ manpage.1: manpage.sgml
<variablelist>
<varlistentry>
- <term><option>-b</option>
- <option>--ignore-blanks</option>
- </term>
- <listitem>
- <para>Ignore blanks to compute languages</para>
- </listitem>
- </varlistentry>
- <varlistentry>
<term><option>-i</option>
<option>--index</option>
<option><replaceable>index</replaceable></option>
diff --git a/chromium/third_party/fontconfig/src/fc-scan/fc-scan.c b/chromium/third_party/fontconfig/src/fc-scan/fc-scan.c
index 4d0b1db44fb..5638b51cf43 100644
--- a/chromium/third_party/fontconfig/src/fc-scan/fc-scan.c
+++ b/chromium/third_party/fontconfig/src/fc-scan/fc-scan.c
@@ -52,7 +52,6 @@
#define _GNU_SOURCE
#include <getopt.h>
static const struct option longopts[] = {
- {"ignore-blanks", 0, 0, 'b'},
{"format", 1, 0, 'f'},
{"version", 0, 0, 'V'},
{"help", 0, 0, 'h'},
@@ -70,24 +69,22 @@ usage (char *program, int error)
{
FILE *file = error ? stderr : stdout;
#if HAVE_GETOPT_LONG
- fprintf (file, "usage: %s [-Vbh] [-f FORMAT] [--ignore-blanks] [--format FORMAT] [--version] [--help] font-file...\n",
+ fprintf (file, "usage: %s [-Vh] [-f FORMAT] [--format FORMAT] [--version] [--help] font-file...\n",
program);
#else
- fprintf (file, "usage: %s [-Vbh] [-f FORMAT] font-file...\n",
+ fprintf (file, "usage: %s [-Vh] [-f FORMAT] font-file...\n",
program);
#endif
fprintf (file, "Scan font files and directories, and print resulting pattern(s)\n");
fprintf (file, "\n");
#if HAVE_GETOPT_LONG
- fprintf (file, " -b, --ignore-blanks ignore blanks to compute languages\n");
fprintf (file, " -f, --format=FORMAT use the given output format\n");
fprintf (file, " -V, --version display font config version and exit\n");
fprintf (file, " -h, --help display this help and exit\n");
#else
- fprintf (file, " -b (ignore-blanks) ignore blanks to compute languages\n");
- fprintf (file, " -f FORMAT (format) use the given output format\n");
- fprintf (file, " -V (version) display font config version and exit\n");
- fprintf (file, " -h (help) display this help and exit\n");
+ fprintf (file, " -f FORMAT (format) use the given output format\n");
+ fprintf (file, " -V (version) display font config version and exit\n");
+ fprintf (file, " -h (help) display this help and exit\n");
#endif
exit (error);
}
@@ -97,22 +94,17 @@ main (int argc, char **argv)
{
FcChar8 *format = NULL;
int i;
- int ignore_blanks = 0;
FcFontSet *fs;
- FcBlanks *blanks = NULL;
#if HAVE_GETOPT_LONG || HAVE_GETOPT
int c;
#if HAVE_GETOPT_LONG
- while ((c = getopt_long (argc, argv, "bf:Vh", longopts, NULL)) != -1)
+ while ((c = getopt_long (argc, argv, "f:Vh", longopts, NULL)) != -1)
#else
- while ((c = getopt (argc, argv, "bf:Vh")) != -1)
+ while ((c = getopt (argc, argv, "f:Vh")) != -1)
#endif
{
switch (c) {
- case 'b':
- ignore_blanks = 1;
- break;
case 'f':
format = (FcChar8 *) strdup (optarg);
break;
@@ -135,22 +127,20 @@ main (int argc, char **argv)
usage (argv[0], 1);
fs = FcFontSetCreate ();
- if (!ignore_blanks)
- blanks = FcConfigGetBlanks (NULL);
for (; i < argc; i++)
{
const FcChar8 *file = (FcChar8*) argv[i];
if (!FcFileIsDir (file))
- FcFileScan (fs, NULL, NULL, blanks, file, FcTrue);
+ FcFileScan (fs, NULL, NULL, NULL, file, FcTrue);
else
{
FcStrSet *dirs = FcStrSetCreate ();
FcStrList *strlist = FcStrListCreate (dirs);
do
{
- FcDirScan (fs, dirs, NULL, blanks, file, FcTrue);
+ FcDirScan (fs, dirs, NULL, NULL, file, FcTrue);
}
while ((file = FcStrListNext (strlist)));
FcStrListDone (strlist);
diff --git a/chromium/third_party/fontconfig/src/fc-scan/fc-scan.sgml b/chromium/third_party/fontconfig/src/fc-scan/fc-scan.sgml
index 65a66c4f364..9af403c1fde 100644
--- a/chromium/third_party/fontconfig/src/fc-scan/fc-scan.sgml
+++ b/chromium/third_party/fontconfig/src/fc-scan/fc-scan.sgml
@@ -62,13 +62,9 @@ manpage.1: manpage.sgml
<cmdsynopsis>
<command>&dhpackage;</command>
- <arg><option>-Vbh</option></arg>
+ <arg><option>-Vh</option></arg>
<sbr>
<group>
- <arg><option>-b</option></arg>
- <arg><option>--ignore-blanks</option></arg>
- </group>
- <group>
<arg><option>-f</option> <option><replaceable>format</replaceable></option></arg>
<arg><option>--format</option> <option><replaceable>format</replaceable></option></arg>
</group>
@@ -95,14 +91,6 @@ manpage.1: manpage.sgml
<variablelist>
<varlistentry>
- <term><option>-b</option>
- <option>--ignore-blanks</option>
- </term>
- <listitem>
- <para>Ignore blanks to compute languages</para>
- </listitem>
- </varlistentry>
- <varlistentry>
<term><option>-f</option>
<option>--format</option>
<option><replaceable>format</replaceable></option>
diff --git a/chromium/third_party/fontconfig/src/fontconfig.pc.in b/chromium/third_party/fontconfig/src/fontconfig.pc.in
index fa00a72d7fd..6e112bb496e 100644
--- a/chromium/third_party/fontconfig/src/fontconfig.pc.in
+++ b/chromium/third_party/fontconfig/src/fontconfig.pc.in
@@ -5,7 +5,7 @@ includedir=@includedir@
sysconfdir=@sysconfdir@
localstatedir=@localstatedir@
PACKAGE=@PACKAGE@
-confdir=@BASECONFIGDIR@
+confdir=@baseconfigdir@
cachedir=@fc_cachedir@
Name: Fontconfig
diff --git a/chromium/third_party/fontconfig/src/fontconfig/fcprivate.h b/chromium/third_party/fontconfig/src/fontconfig/fcprivate.h
index a6ee5c23499..210c1d8a371 100644
--- a/chromium/third_party/fontconfig/src/fontconfig/fcprivate.h
+++ b/chromium/third_party/fontconfig/src/fontconfig/fcprivate.h
@@ -77,9 +77,6 @@
case FcTypeLangSet: \
__v__.u.l = va_arg (va, const FcLangSet *); \
break; \
- case FcTypeRange: \
- __v__.u.r = va_arg (va, const FcRange *); \
- break; \
} \
if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \
goto _FcPatternVapBuild_bail1; \
diff --git a/chromium/third_party/fontconfig/src/fontconfig/fontconfig.h b/chromium/third_party/fontconfig/src/fontconfig/fontconfig.h
index 5c72b227279..dfc48f9e337 100644
--- a/chromium/third_party/fontconfig/src/fontconfig/fontconfig.h
+++ b/chromium/third_party/fontconfig/src/fontconfig/fontconfig.h
@@ -51,8 +51,8 @@ typedef int FcBool;
*/
#define FC_MAJOR 2
-#define FC_MINOR 12
-#define FC_REVISION 1
+#define FC_MINOR 11
+#define FC_REVISION 0
#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
@@ -66,10 +66,7 @@ typedef int FcBool;
* it means multiple copies of the font information.
*/
-#define FC_CACHE_VERSION_NUMBER 7
-#define _FC_STRINGIFY_(s) #s
-#define _FC_STRINGIFY(s) _FC_STRINGIFY_(s)
-#define FC_CACHE_VERSION _FC_STRINGIFY(FC_CACHE_VERSION_NUMBER)
+#define FC_CACHE_VERSION "4"
#define FcTrue 1
#define FcFalse 0
@@ -78,7 +75,7 @@ typedef int FcBool;
#define FC_STYLE "style" /* String */
#define FC_SLANT "slant" /* Int */
#define FC_WEIGHT "weight" /* Int */
-#define FC_SIZE "size" /* Range (double) */
+#define FC_SIZE "size" /* Double */
#define FC_ASPECT "aspect" /* Double */
#define FC_PIXEL_SIZE "pixelsize" /* Double */
#define FC_SPACING "spacing" /* Int */
@@ -97,9 +94,7 @@ typedef int FcBool;
#define FC_RASTERIZER "rasterizer" /* String (deprecated) */
#define FC_OUTLINE "outline" /* Bool */
#define FC_SCALABLE "scalable" /* Bool */
-#define FC_COLOR "color" /* Bool */
-#define FC_SCALE "scale" /* double (deprecated) */
-#define FC_SYMBOL "symbol" /* Bool */
+#define FC_SCALE "scale" /* double */
#define FC_DPI "dpi" /* double */
#define FC_RGBA "rgba" /* Int */
#define FC_MINSPACE "minspace" /* Bool use minimum line spacing */
@@ -120,7 +115,7 @@ typedef int FcBool;
#define FC_FONT_FEATURES "fontfeatures" /* String */
#define FC_NAMELANG "namelang" /* String RFC 3866 langs */
#define FC_PRGNAME "prgname" /* String */
-#define FC_HASH "hash" /* String (deprecated) */
+#define FC_HASH "hash" /* String */
#define FC_POSTSCRIPT_NAME "postscriptname" /* String */
#define FC_CACHE_SUFFIX ".cache-" FC_CACHE_VERSION
@@ -136,8 +131,6 @@ typedef int FcBool;
#define FC_WEIGHT_EXTRALIGHT 40
#define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT
#define FC_WEIGHT_LIGHT 50
-#define FC_WEIGHT_DEMILIGHT 55
-#define FC_WEIGHT_SEMILIGHT FC_WEIGHT_DEMILIGHT
#define FC_WEIGHT_BOOK 75
#define FC_WEIGHT_REGULAR 80
#define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR
@@ -201,8 +194,7 @@ typedef enum _FcType {
FcTypeMatrix,
FcTypeCharSet,
FcTypeFTFace,
- FcTypeLangSet,
- FcTypeRange
+ FcTypeLangSet
} FcType;
typedef struct _FcMatrix {
@@ -220,7 +212,7 @@ typedef struct _FcMatrix {
typedef struct _FcCharSet FcCharSet;
typedef struct _FcObjectType {
- char *object;
+ const char *object;
FcType type;
} FcObjectType;
@@ -239,8 +231,6 @@ typedef struct _FcPattern FcPattern;
typedef struct _FcLangSet FcLangSet;
-typedef struct _FcRange FcRange;
-
typedef struct _FcValue {
FcType type;
union {
@@ -252,7 +242,6 @@ typedef struct _FcValue {
const FcCharSet *c;
void *f;
const FcLangSet *l;
- const FcRange *r;
} u;
} FcValue;
@@ -552,9 +541,6 @@ FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
FcPublic FcCache *
FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
-
-FcPublic FcCache *
-FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
FcPublic FcCache *
FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
@@ -864,9 +850,6 @@ FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
FcPublic FcBool
FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
-FcPublic FcBool
-FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r);
-
FcPublic FcResult
FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
@@ -888,9 +871,6 @@ FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
FcPublic FcResult
FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
-FcPublic FcResult
-FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r);
-
FcPublic FcPattern *
FcPatternVaBuild (FcPattern *p, va_list va);
@@ -900,30 +880,6 @@ FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0);
FcPublic FcChar8 *
FcPatternFormat (FcPattern *pat, const FcChar8 *format);
-/* fcrange.c */
-FcPublic FcRange *
-FcRangeCreateDouble (double begin, double end);
-
-FcPublic FcRange *
-FcRangeCreateInteger (FcChar32 begin, FcChar32 end);
-
-FcPublic void
-FcRangeDestroy (FcRange *range);
-
-FcPublic FcRange *
-FcRangeCopy (const FcRange *r);
-
-FcPublic FcBool
-FcRangeGetDouble(const FcRange *range, double *begin, double *end);
-
-/* fcweight.c */
-
-FcPublic int
-FcWeightFromOpenType (int ot_weight);
-
-FcPublic int
-FcWeightToOpenType (int fc_weight);
-
/* fcstr.c */
FcPublic FcChar8 *
diff --git a/chromium/third_party/fontconfig/src/fonts.conf.in b/chromium/third_party/fontconfig/src/fonts.conf.in
index 7c16a70747d..6a8753d01b3 100644
--- a/chromium/third_party/fontconfig/src/fonts.conf.in
+++ b/chromium/third_party/fontconfig/src/fonts.conf.in
@@ -79,6 +79,72 @@
<config>
<!--
+ These are the default Unicode chars that are expected to be blank
+ in fonts. All other blank chars are assumed to be broken and
+ won't appear in the resulting charsets
+ -->
+ <blank>
+ <int>0x0020</int> <!-- SPACE -->
+ <int>0x00A0</int> <!-- NO-BREAK SPACE -->
+ <int>0x00AD</int> <!-- SOFT HYPHEN -->
+ <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
+ <int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
+ <int>0x0601</int> <!-- ARABIC SIGN SANAH -->
+ <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
+ <int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
+ <int>0x06DD</int> <!-- ARABIC END OF AYAH -->
+ <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
+ <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
+ <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
+ <int>0x1680</int> <!-- OGHAM SPACE MARK -->
+ <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
+ <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
+ <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
+ <int>0x2000</int> <!-- EN QUAD -->
+ <int>0x2001</int> <!-- EM QUAD -->
+ <int>0x2002</int> <!-- EN SPACE -->
+ <int>0x2003</int> <!-- EM SPACE -->
+ <int>0x2004</int> <!-- THREE-PER-EM SPACE -->
+ <int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
+ <int>0x2006</int> <!-- SIX-PER-EM SPACE -->
+ <int>0x2007</int> <!-- FIGURE SPACE -->
+ <int>0x2008</int> <!-- PUNCTUATION SPACE -->
+ <int>0x2009</int> <!-- THIN SPACE -->
+ <int>0x200A</int> <!-- HAIR SPACE -->
+ <int>0x200B</int> <!-- ZERO WIDTH SPACE -->
+ <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
+ <int>0x200D</int> <!-- ZERO WIDTH JOINER -->
+ <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
+ <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
+ <int>0x2028</int> <!-- LINE SEPARATOR -->
+ <int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
+ <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
+ <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
+ <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
+ <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
+ <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
+ <int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
+ <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
+ <int>0x2060</int> <!-- WORD JOINER -->
+ <int>0x2061</int> <!-- FUNCTION APPLICATION -->
+ <int>0x2062</int> <!-- INVISIBLE TIMES -->
+ <int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
+ <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
+ <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
+ <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
+ <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
+ <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
+ <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
+ <int>0x2800</int> <!-- BRAILLE PATTERN BLANK -->
+ <int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
+ <int>0x3164</int> <!-- HANGUL FILLER -->
+ <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
+ <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
+ <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
+ <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
+ <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
+ </blank>
+<!--
Rescan configuration every 30 seconds when FcFontSetList is called
-->
<rescan>
diff --git a/chromium/third_party/fontconfig/src/fonts.dtd b/chromium/third_party/fontconfig/src/fonts.dtd
index 479f2c0fb84..4c38e77f08f 100644
--- a/chromium/third_party/fontconfig/src/fonts.dtd
+++ b/chromium/third_party/fontconfig/src/fonts.dtd
@@ -140,7 +140,7 @@
if 'target' is 'font', execute the match on the result of a font
selection.
-->
-<!ELEMENT match (test|edit)+>
+<!ELEMENT match (test*, edit*)+>
<!ATTLIST match
target (pattern|font|scan) "pattern">
diff --git a/chromium/third_party/fontconfig/src/m4/ac_check_symbol.m4 b/chromium/third_party/fontconfig/src/m4/ac_check_symbol.m4
deleted file mode 100644
index 41c15286a6f..00000000000
--- a/chromium/third_party/fontconfig/src/m4/ac_check_symbol.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-dnl @synopsis AC_CHECK_SYMBOL(SYMBOL, HEADER... [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
-dnl
-dnl a wrapper around AC_EGREP_HEADER the shellvar $ac_found will hold
-dnl the HEADER-name that had been containing the symbol. This value is
-dnl shown to the user.
-dnl
-dnl @category C
-dnl @author Guido U. Draheim <guidod@gmx.de>
-dnl @version 2006-10-13
-dnl @license GPLWithACException
-
-AC_DEFUN([AC_CHECK_SYMBOL],
-[AC_MSG_CHECKING([for $1 in $2])
-AC_CACHE_VAL(ac_cv_func_$1,
-[AC_REQUIRE_CPP()dnl
-changequote(, )dnl
-symbol="[^a-zA-Z_0-9]$1[^a-zA-Z_0-9]"
-changequote([, ])dnl
-ac_found=no
-for ac_header in $2 ; do
- ac_safe=`echo "$ac_header" | sed 'y%./+-%__p_%' `
- if test $ac_found != "yes" ; then
- if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- AC_EGREP_HEADER( $symbol, $ac_header, [ac_found="$ac_header"] )
- fi
- fi
-done
-if test "$ac_found" != "no" ; then
- AC_MSG_RESULT($ac_found)
- ifelse([$3], , :, [$3])
-else
- AC_MSG_RESULT(no)
- ifelse([$4], , , [$4
-])dnl
-fi
-])])
-
-dnl AC_CHECK_SYMBOLS( symbol..., header... [, action-if-found [, action-if-not-found]])
-AC_DEFUN([AC_CHECK_SYMBOLS],
-[for ac_func in $1
-do
-P4_CHECK_SYMBOL($ac_func, $2,
-[changequote(, )dnl
- ac_tr_func=HAVE_`echo $ac_func | sed -e 'y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:' -e 's:[[^A-Z0-9]]:_:'`
-changequote([, ])dnl
- AC_DEFINE_UNQUOTED($ac_tr_func) $2], $3)dnl
-done
-])
diff --git a/chromium/third_party/fontconfig/src/m4/ax_pthread.m4 b/chromium/third_party/fontconfig/src/m4/ax_pthread.m4
index e77541cea90..d90de34d14b 100644
--- a/chromium/third_party/fontconfig/src/m4/ax_pthread.m4
+++ b/chromium/third_party/fontconfig/src/m4/ax_pthread.m4
@@ -82,7 +82,7 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 21
+#serial 18
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
@@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
- AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
- AC_MSG_RESULT([$ax_pthread_ok])
+ AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+ AC_MSG_RESULT($ax_pthread_ok)
if test x"$ax_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
@@ -162,27 +162,8 @@ case ${host_os} in
darwin*)
ax_pthread_flags="-pthread $ax_pthread_flags"
;;
- netbsd*)
- # use libc stubs, don't link against libpthread, to allow
- # dynamic loading
- ax_pthread_flags=""
- ;;
esac
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
-
-AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
- [AC_MSG_RESULT([yes])],
- [ax_pthread_extra_flags=
- AC_MSG_RESULT([no])])
-CFLAGS="$save_CFLAGS"
-
if test x"$ax_pthread_ok" = xno; then
for flag in $ax_pthread_flags; do
@@ -197,7 +178,7 @@ for flag in $ax_pthread_flags; do
;;
pthread-config)
- AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+ AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
if test x"$ax_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
@@ -212,7 +193,7 @@ for flag in $ax_pthread_flags; do
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
@@ -238,7 +219,7 @@ for flag in $ax_pthread_flags; do
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
- AC_MSG_RESULT([$ax_pthread_ok])
+ AC_MSG_RESULT($ax_pthread_ok)
if test "x$ax_pthread_ok" = xyes; then
break;
fi
@@ -264,9 +245,9 @@ if test "x$ax_pthread_ok" = xyes; then
[attr_name=$attr; break],
[])
done
- AC_MSG_RESULT([$attr_name])
+ AC_MSG_RESULT($attr_name)
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
- AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
+ AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
@@ -280,54 +261,45 @@ if test "x$ax_pthread_ok" = xyes; then
if test "$GCC" = "yes"; then
flag="-D_REENTRANT"
else
- # TODO: What about Clang on Solaris?
flag="-mt -D_REENTRANT"
fi
;;
esac
- AC_MSG_RESULT([$flag])
+ AC_MSG_RESULT(${flag})
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
- [ax_cv_PTHREAD_PRIO_INHERIT], [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
- [[int i = PTHREAD_PRIO_INHERIT;]])],
+ ax_cv_PTHREAD_PRIO_INHERIT, [
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
])
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
- [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+ AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
- # More AIX lossage: compile with *_r variant
- if test "x$GCC" != xyes; then
- case $host_os in
- aix*)
- AS_CASE(["x/$CC"],
- [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
- [#handle absolute path differently from PATH based program lookup
- AS_CASE(["x$CC"],
- [x/*],
- [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
- [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
- ;;
- esac
+ # More AIX lossage: must compile with xlc_r or cc_r
+ if test x"$GCC" != xyes; then
+ AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+ else
+ PTHREAD_CC=$CC
fi
+else
+ PTHREAD_CC="$CC"
fi
-test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
-
-AC_SUBST([PTHREAD_LIBS])
-AC_SUBST([PTHREAD_CFLAGS])
-AC_SUBST([PTHREAD_CC])
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$ax_pthread_ok" = xyes; then
- ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
+ ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
ax_pthread_ok=no
diff --git a/chromium/third_party/fontconfig/src/m4/pkg.m4 b/chromium/third_party/fontconfig/src/m4/pkg.m4
deleted file mode 100644
index c5b26b52e6c..00000000000
--- a/chromium/third_party/fontconfig/src/m4/pkg.m4
+++ /dev/null
@@ -1,214 +0,0 @@
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=m4_default([$1], [0.9.0])
- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- PKG_CONFIG=""
- fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
- m4_default([$2], [:])
-m4_ifvaln([$3], [else
- $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
- pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
- PKG_CHECK_EXISTS([$3],
- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes ],
- [pkg_failed=yes])
- else
- pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
- _PKG_SHORT_ERRORS_SUPPORTED
- if test $_pkg_short_errors_supported = yes; then
- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
- $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
- m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
- ])
-elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
- m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
- ])
-else
- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
- AC_MSG_RESULT([yes])
- $3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
-AC_DEFUN([PKG_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([pkgconfigdir],
- [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
- [with_pkgconfigdir=]pkg_default)
-AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
-
-
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
-AC_DEFUN([PKG_NOARCH_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([noarch-pkgconfigdir],
- [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
- [with_noarch_pkgconfigdir=]pkg_default)
-AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
-
-
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
-AC_DEFUN([PKG_CHECK_VAR],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
-
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
-AS_VAR_COPY([$1], [pkg_cv_][$1])
-
-AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
diff --git a/chromium/third_party/fontconfig/src/new-version.sh b/chromium/third_party/fontconfig/src/new-version.sh
index eecfd81a028..36e46f59350 100644
--- a/chromium/third_party/fontconfig/src/new-version.sh
+++ b/chromium/third_party/fontconfig/src/new-version.sh
@@ -1,25 +1,4 @@
#!/bin/sh
-# fontconfig/new-version.sh
-#
-# Copyright © 2000 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 the author(s) not be used in
-# advertising or publicity pertaining to distribution of the software without
-# specific, written prior permission. The authors make no
-# representations about the suitability of this software for any purpose. It
-# is provided "as is" without express or implied warranty.
-#
-# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-# EVENT SHALL THE AUTHOR(S) 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.
if [ "x`git status -s -uno`" != "x" ]; then
echo 'Uncommited changes in repository' 1>&2
diff --git a/chromium/third_party/fontconfig/src/src/Makefile.am b/chromium/third_party/fontconfig/src/src/Makefile.am
index 3757cf8f3e5..066cc03e718 100644
--- a/chromium/third_party/fontconfig/src/src/Makefile.am
+++ b/chromium/third_party/fontconfig/src/src/Makefile.am
@@ -139,6 +139,7 @@ libfontconfig_la_SOURCES = \
fcformat.c \
fcfreetype.c \
fcfs.c \
+ fchash.c \
fcinit.c \
fclang.c \
fclist.c \
@@ -150,11 +151,9 @@ libfontconfig_la_SOURCES = \
fcobjs.h \
fcobjshash.h \
fcpat.c \
- fcrange.c \
fcserialize.c \
fcstat.c \
fcstr.c \
- fcweight.c \
fcwindows.h \
fcxml.c \
ftglue.h \
diff --git a/chromium/third_party/fontconfig/src/src/fcarch.c b/chromium/third_party/fontconfig/src/src/fcarch.c
index 6ca15a991f7..398f4bbfcd5 100644
--- a/chromium/third_party/fontconfig/src/src/fcarch.c
+++ b/chromium/third_party/fontconfig/src/src/fcarch.c
@@ -21,9 +21,10 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
+#include <stdio.h>
+
#include "fcint.h"
#include "fcarch.h"
-#include <stdio.h>
FC_ASSERT_STATIC (1 == sizeof (char));
FC_ASSERT_STATIC (2 == sizeof (FcChar16));
@@ -48,7 +49,7 @@ FC_ASSERT_STATIC (0x08 + 1*FC_MAX(SIZEOF_VOID_P,ALIGNOF_DOUBLE) == sizeof (FcVal
FC_ASSERT_STATIC (0x00 + 2*SIZEOF_VOID_P == sizeof (FcPatternElt));
FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcPattern));
FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcCharSet));
-FC_ASSERT_STATIC (0x10 + 6*SIZEOF_VOID_P == sizeof (FcCache));
+FC_ASSERT_STATIC (0x08 + 6*SIZEOF_VOID_P == sizeof (FcCache));
int
diff --git a/chromium/third_party/fontconfig/src/src/fcatomic.c b/chromium/third_party/fontconfig/src/src/fcatomic.c
index d12d32408d8..c1daed938e5 100644
--- a/chromium/third_party/fontconfig/src/src/fcatomic.c
+++ b/chromium/third_party/fontconfig/src/src/fcatomic.c
@@ -131,7 +131,7 @@ FcAtomicLock (FcAtomic *atomic)
return FcFalse;
}
ret = link ((char *) atomic->tmp, (char *) atomic->lck);
- if (ret < 0 && (errno == EPERM || errno == ENOTSUP || errno == EACCES))
+ if (ret < 0 && errno == EPERM)
{
/* the filesystem where atomic->lck points to may not supports
* the hard link. so better try to fallback
diff --git a/chromium/third_party/fontconfig/src/src/fcatomic.h b/chromium/third_party/fontconfig/src/src/fcatomic.h
index cc28a883c13..362e52164b7 100644
--- a/chromium/third_party/fontconfig/src/src/fcatomic.h
+++ b/chromium/third_party/fontconfig/src/src/fcatomic.h
@@ -48,22 +48,22 @@
#include "fcwindows.h"
-/* MinGW has a convoluted history of supporting MemoryBarrier
- * properly. As such, define a function to wrap the whole
- * thing. */
-static inline void _FCMemoryBarrier (void) {
-#if !defined(MemoryBarrier)
+/* mingw32 does not have MemoryBarrier.
+ * MemoryBarrier may be defined as a macro or a function.
+ * Just make a failsafe version for ourselves. */
+#ifdef MemoryBarrier
+#define HBMemoryBarrier MemoryBarrier
+#else
+static inline void HBMemoryBarrier (void) {
long dummy = 0;
InterlockedExchange (&dummy, 1);
-#else
- MemoryBarrier ();
-#endif
}
+#endif
typedef LONG fc_atomic_int_t;
#define fc_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V))
-#define fc_atomic_ptr_get(P) (_FCMemoryBarrier (), (void *) *(P))
+#define fc_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P))
#define fc_atomic_ptr_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O))
diff --git a/chromium/third_party/fontconfig/src/src/fcblanks.c b/chromium/third_party/fontconfig/src/src/fcblanks.c
index 5132a510f98..46698bcdac3 100644
--- a/chromium/third_party/fontconfig/src/src/fcblanks.c
+++ b/chromium/third_party/fontconfig/src/src/fcblanks.c
@@ -41,8 +41,6 @@ FcBlanksCreate (void)
void
FcBlanksDestroy (FcBlanks *b)
{
- if (b->sblank == -1)
- return;
if (b->blanks)
free (b->blanks);
free (b);
@@ -58,11 +56,6 @@ FcBlanksAdd (FcBlanks *b, FcChar32 ucs4)
if (b->blanks[sblank] == ucs4)
return FcTrue;
- if (b->sblank == -1)
- {
- fprintf (stderr, "Unable to update the static FcBlanks: 0x%04x\n", ucs4);
- return FcTrue;
- }
if (b->nblank == b->sblank)
{
sblank = b->sblank + 32;
@@ -82,25 +75,11 @@ FcBlanksAdd (FcBlanks *b, FcChar32 ucs4)
FcBool
FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4)
{
- int lower = 0, higher = b->nblank, middle;
+ int i;
- if (b->nblank == 0 ||
- b->blanks[0] > ucs4 ||
- b->blanks[b->nblank - 1] < ucs4)
- return FcFalse;
- while (1)
- {
- middle = (lower + higher) / 2;
- if (b->blanks[middle] == ucs4)
+ for (i = 0; i < b->nblank; i++)
+ if (b->blanks[i] == ucs4)
return FcTrue;
- if (lower >= higher)
- break;
- if (b->blanks[middle] < ucs4)
- lower = middle + 1;
- else
- higher = middle - 1;
- }
-
return FcFalse;
}
#define __fcblanks__
diff --git a/chromium/third_party/fontconfig/src/src/fccache.c b/chromium/third_party/fontconfig/src/src/fccache.c
index 6f3c68a2f16..3568595eda5 100644
--- a/chromium/third_party/fontconfig/src/src/fccache.c
+++ b/chromium/third_party/fontconfig/src/src/fccache.c
@@ -27,17 +27,12 @@
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
-#include <limits.h>
#include <sys/types.h>
-#include <sys/stat.h>
#include <assert.h>
#if defined(HAVE_MMAP) || defined(__CYGWIN__)
# include <unistd.h>
# include <sys/mman.h>
#endif
-#if defined(_WIN32)
-#include <sys/locking.h>
-#endif
#ifndef O_BINARY
#define O_BINARY 0
@@ -181,28 +176,19 @@ FcDirCacheOpenFile (const FcChar8 *cache_file, struct stat *file_stat)
*/
static FcBool
FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
- FcBool (*callback) (FcConfig *config, int fd, struct stat *fd_stat,
+ FcBool (*callback) (int fd, struct stat *fd_stat,
struct stat *dir_stat, void *closure),
void *closure, FcChar8 **cache_file_ret)
{
int fd = -1;
FcChar8 cache_base[CACHEBASE_LEN];
FcStrList *list;
- FcChar8 *cache_dir, *d;
+ FcChar8 *cache_dir;
struct stat file_stat, dir_stat;
FcBool ret = FcFalse;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- if (sysroot)
- d = FcStrBuildFilename (sysroot, dir, NULL);
- else
- d = FcStrdup (dir);
- if (FcStatChecksum (d, &dir_stat) < 0)
- {
- FcStrFree (d);
+ if (FcStatChecksum (dir, &dir_stat) < 0)
return FcFalse;
- }
- FcStrFree (d);
FcDirCacheBasename (dir, cache_base);
@@ -212,6 +198,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
while ((cache_dir = FcStrListNext (list)))
{
+ const FcChar8 *sysroot = FcConfigGetSysRoot (config);
FcChar8 *cache_hashed;
if (sysroot)
@@ -222,7 +209,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
break;
fd = FcDirCacheOpenFile (cache_hashed, &file_stat);
if (fd >= 0) {
- ret = (*callback) (config, fd, &file_stat, &dir_stat, closure);
+ ret = (*callback) (fd, &file_stat, &dir_stat, closure);
close (fd);
if (ret)
{
@@ -257,7 +244,6 @@ struct _FcCacheSkip {
dev_t cache_dev;
ino_t cache_ino;
time_t cache_mtime;
- long cache_mtime_nano;
FcCacheSkip *next[1];
};
@@ -385,18 +371,12 @@ FcCacheInsert (FcCache *cache, struct stat *cache_stat)
s->cache_dev = cache_stat->st_dev;
s->cache_ino = cache_stat->st_ino;
s->cache_mtime = cache_stat->st_mtime;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- s->cache_mtime_nano = cache_stat->st_mtim.tv_nsec;
-#else
- s->cache_mtime_nano = 0;
-#endif
}
else
{
s->cache_dev = 0;
s->cache_ino = 0;
s->cache_mtime = 0;
- s->cache_mtime_nano = 0;
}
/*
@@ -484,10 +464,6 @@ FcCacheFindByStat (struct stat *cache_stat)
s->cache_ino == cache_stat->st_ino &&
s->cache_mtime == cache_stat->st_mtime)
{
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- if (s->cache_mtime != cache_stat->st_mtim.tv_nsec)
- continue;
-#endif
FcRefInc (&s->ref);
unlock_cache ();
return s->cache;
@@ -552,141 +528,37 @@ FcCacheFini (void)
}
static FcBool
-FcCacheTimeValid (FcConfig *config, FcCache *cache, struct stat *dir_stat)
+FcCacheTimeValid (FcCache *cache, struct stat *dir_stat)
{
struct stat dir_static;
- FcBool fnano = FcTrue;
if (!dir_stat)
{
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- FcChar8 *d;
-
- if (sysroot)
- d = FcStrBuildFilename (sysroot, FcCacheDir (cache), NULL);
- else
- d = FcStrdup (FcCacheDir (cache));
- if (FcStatChecksum (d, &dir_static) < 0)
- {
- FcStrFree (d);
+ if (FcStatChecksum (FcCacheDir (cache), &dir_static) < 0)
return FcFalse;
- }
- FcStrFree (d);
dir_stat = &dir_static;
}
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- fnano = (cache->checksum_nano == dir_stat->st_mtim.tv_nsec);
- if (FcDebug () & FC_DBG_CACHE)
- printf ("FcCacheTimeValid dir \"%s\" cache checksum %d.%ld dir checksum %d.%ld\n",
- FcCacheDir (cache), cache->checksum, (long)cache->checksum_nano, (int) dir_stat->st_mtime, dir_stat->st_mtim.tv_nsec);
-#else
if (FcDebug () & FC_DBG_CACHE)
printf ("FcCacheTimeValid dir \"%s\" cache checksum %d dir checksum %d\n",
FcCacheDir (cache), cache->checksum, (int) dir_stat->st_mtime);
-#endif
-
- return cache->checksum == (int) dir_stat->st_mtime && fnano;
-}
-
-static FcBool
-FcCacheOffsetsValid (FcCache *cache)
-{
- char *base = (char *)cache;
- char *end = base + cache->size;
- intptr_t *dirs;
- FcFontSet *fs;
- int i, j;
-
- if (cache->dir < 0 || cache->dir > cache->size - sizeof (intptr_t) ||
- memchr (base + cache->dir, '\0', cache->size - cache->dir) == NULL)
- return FcFalse;
-
- if (cache->dirs < 0 || cache->dirs >= cache->size ||
- cache->dirs_count < 0 ||
- cache->dirs_count > (cache->size - cache->dirs) / sizeof (intptr_t))
- return FcFalse;
-
- dirs = FcCacheDirs (cache);
- if (dirs)
- {
- for (i = 0; i < cache->dirs_count; i++)
- {
- FcChar8 *dir;
-
- if (dirs[i] < 0 ||
- dirs[i] > end - (char *) dirs - sizeof (intptr_t))
- return FcFalse;
-
- dir = FcOffsetToPtr (dirs, dirs[i], FcChar8);
- if (memchr (dir, '\0', end - (char *) dir) == NULL)
- return FcFalse;
- }
- }
-
- if (cache->set < 0 || cache->set > cache->size - sizeof (FcFontSet))
- return FcFalse;
-
- fs = FcCacheSet (cache);
- if (fs)
- {
- if (fs->nfont > (end - (char *) fs) / sizeof (FcPattern))
- return FcFalse;
-
- if (fs->fonts != 0 && !FcIsEncodedOffset(fs->fonts))
- return FcFalse;
-
- for (i = 0; i < fs->nfont; i++)
- {
- FcPattern *font = FcFontSetFont (fs, i);
- FcPatternElt *e;
- FcValueListPtr l;
- char *last_offset;
-
- if ((char *) font < base ||
- (char *) font > end - sizeof (FcFontSet) ||
- font->elts_offset < 0 ||
- font->elts_offset > end - (char *) font ||
- font->num > (end - (char *) font - font->elts_offset) / sizeof (FcPatternElt))
- return FcFalse;
-
-
- e = FcPatternElts(font);
- if (e->values != 0 && !FcIsEncodedOffset(e->values))
- return FcFalse;
-
- for (j = 0; j < font->num; j++)
- {
- last_offset = (char *) font + font->elts_offset;
- for (l = FcPatternEltValues(&e[j]); l; l = FcValueListNext(l))
- {
- if ((char *) l < last_offset || (char *) l > end - sizeof (*l) ||
- (l->next != NULL && !FcIsEncodedOffset(l->next)))
- return FcFalse;
- last_offset = (char *) l + 1;
- }
- }
- }
- }
-
- return FcTrue;
+ return cache->checksum == (int) dir_stat->st_mtime;
}
/*
* Map a cache file into memory
*/
static FcCache *
-FcDirCacheMapFd (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat)
+FcDirCacheMapFd (int fd, struct stat *fd_stat, struct stat *dir_stat)
{
FcCache *cache;
FcBool allocated = FcFalse;
- if (fd_stat->st_size > INTPTR_MAX ||
- fd_stat->st_size < (int) sizeof (FcCache))
+ if (fd_stat->st_size < (int) sizeof (FcCache))
return NULL;
cache = FcCacheFindByStat (fd_stat);
if (cache)
{
- if (FcCacheTimeValid (config, cache, dir_stat))
+ if (FcCacheTimeValid (cache, dir_stat))
return cache;
FcDirCacheUnload (cache);
cache = NULL;
@@ -700,7 +572,7 @@ FcDirCacheMapFd (FcConfig *config, int fd, struct stat *fd_stat, struct stat *di
{
#if defined(HAVE_MMAP) || defined(__CYGWIN__)
cache = mmap (0, fd_stat->st_size, PROT_READ, MAP_SHARED, fd, 0);
-#if (HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED)
+#ifdef HAVE_POSIX_FADVISE
posix_fadvise (fd, 0, fd_stat->st_size, POSIX_FADV_WILLNEED);
#endif
if (cache == MAP_FAILED)
@@ -735,10 +607,9 @@ FcDirCacheMapFd (FcConfig *config, int fd, struct stat *fd_stat, struct stat *di
allocated = FcTrue;
}
if (cache->magic != FC_CACHE_MAGIC_MMAP ||
- cache->version < FC_CACHE_VERSION_NUMBER ||
+ cache->version < FC_CACHE_CONTENT_VERSION ||
cache->size != (intptr_t) fd_stat->st_size ||
- !FcCacheOffsetsValid (cache) ||
- !FcCacheTimeValid (config, cache, dir_stat) ||
+ !FcCacheTimeValid (cache, dir_stat) ||
!FcCacheInsert (cache, fd_stat))
{
if (allocated)
@@ -777,9 +648,9 @@ FcDirCacheUnload (FcCache *cache)
}
static FcBool
-FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure)
+FcDirCacheMapHelper (int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure)
{
- FcCache *cache = FcDirCacheMapFd (config, fd, fd_stat, dir_stat);
+ FcCache *cache = FcDirCacheMapFd (fd, fd_stat, dir_stat);
if (!cache)
return FcFalse;
@@ -796,7 +667,6 @@ FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file)
FcDirCacheMapHelper,
&cache, cache_file))
return NULL;
-
return cache;
}
@@ -812,7 +682,7 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
fd = FcDirCacheOpenFile (cache_file, file_stat);
if (fd < 0)
return NULL;
- cache = FcDirCacheMapFd (FcConfigGetCurrent (), fd, file_stat, NULL);
+ cache = FcDirCacheMapFd (fd, file_stat, NULL);
close (fd);
return cache;
}
@@ -822,7 +692,7 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
* the magic number and the size field
*/
static FcBool
-FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure FC_UNUSED)
+FcDirCacheValidateHelper (int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure FC_UNUSED)
{
FcBool ret = FcTrue;
FcCache c;
@@ -831,16 +701,12 @@ FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct
ret = FcFalse;
else if (c.magic != FC_CACHE_MAGIC_MMAP)
ret = FcFalse;
- else if (c.version < FC_CACHE_VERSION_NUMBER)
+ else if (c.version < FC_CACHE_CONTENT_VERSION)
ret = FcFalse;
else if (fd_stat->st_size != c.size)
ret = FcFalse;
else if (c.checksum != (int) dir_stat->st_mtime)
ret = FcFalse;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- else if (c.checksum_nano != dir_stat->st_mtim.tv_nsec)
- ret = FcFalse;
-#endif
return ret;
}
@@ -912,12 +778,9 @@ FcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, struct stat *dir_stat, FcSt
serialize->linear = cache;
cache->magic = FC_CACHE_MAGIC_ALLOC;
- cache->version = FC_CACHE_VERSION_NUMBER;
+ cache->version = FC_CACHE_CONTENT_VERSION;
cache->size = serialize->size;
cache->checksum = (int) dir_stat->st_mtime;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- cache->checksum_nano = dir_stat->st_mtim.tv_nsec;
-#endif
/*
* Serialize directory name
@@ -964,19 +827,6 @@ bail1:
return NULL;
}
-FcCache *
-FcDirCacheRebuild (FcCache *cache, struct stat *dir_stat, FcStrSet *dirs)
-{
- FcCache *new;
- FcFontSet *set = FcFontSetDeserialize (FcCacheSet (cache));
- const FcChar8 *dir = FcCacheDir (cache);
-
- new = FcDirCacheBuild (set, dir, dir_stat, dirs);
- FcFontSetDestroy (set);
-
- return new;
-}
-
/* write serialized state to the cache file */
FcBool
FcDirCacheWrite (FcCache *cache, FcConfig *config)
@@ -1105,11 +955,6 @@ FcDirCacheWrite (FcCache *cache, FcConfig *config)
skip->cache_dev = cache_stat.st_dev;
skip->cache_ino = cache_stat.st_ino;
skip->cache_mtime = cache_stat.st_mtime;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- skip->cache_mtime_nano = cache_stat.st_mtim.tv_nsec;
-#else
- skip->cache_mtime_nano = 0;
-#endif
}
unlock_cache ();
}
@@ -1199,22 +1044,15 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose)
}
else
{
- FcChar8 *s;
-
target_dir = FcCacheDir (cache);
- if (sysroot)
- s = FcStrBuildFilename (sysroot, target_dir, NULL);
- else
- s = FcStrdup (target_dir);
- if (stat ((char *) s, &target_stat) < 0)
+ if (stat ((char *) target_dir, &target_stat) < 0)
{
if (verbose || FcDebug () & FC_DBG_CACHE)
printf ("%s: %s: missing directory: %s \n",
- dir, ent->d_name, s);
+ dir, ent->d_name, target_dir);
remove = FcTrue;
}
FcDirCacheUnload (cache);
- FcStrFree (s);
}
if (remove)
{
@@ -1234,82 +1072,6 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose)
return ret;
}
-int
-FcDirCacheLock (const FcChar8 *dir,
- FcConfig *config)
-{
- FcChar8 *cache_hashed = NULL;
- FcChar8 cache_base[CACHEBASE_LEN];
- FcStrList *list;
- FcChar8 *cache_dir;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- int fd = -1;
-
- FcDirCacheBasename (dir, cache_base);
- list = FcStrListCreate (config->cacheDirs);
- if (!list)
- return -1;
-
- while ((cache_dir = FcStrListNext (list)))
- {
- if (sysroot)
- cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL);
- else
- cache_hashed = FcStrBuildFilename (cache_dir, cache_base, NULL);
- if (!cache_hashed)
- break;
- fd = FcOpen ((const char *)cache_hashed, O_RDWR);
- FcStrFree (cache_hashed);
- /* No caches in that directory. simply retry with another one */
- if (fd != -1)
- {
-#if defined(_WIN32)
- if (_locking (fd, _LK_LOCK, 1) == -1)
- goto bail;
-#else
- struct flock fl;
-
- fl.l_type = F_WRLCK;
- fl.l_whence = SEEK_SET;
- fl.l_start = 0;
- fl.l_len = 0;
- fl.l_pid = getpid ();
- if (fcntl (fd, F_SETLKW, &fl) == -1)
- goto bail;
-#endif
- break;
- }
- }
- FcStrListDone (list);
- return fd;
-bail:
- FcStrListDone (list);
- if (fd != -1)
- close (fd);
- return -1;
-}
-
-void
-FcDirCacheUnlock (int fd)
-{
- if (fd != -1)
- {
-#if defined(_WIN32)
- _locking (fd, _LK_UNLCK, 1);
-#else
- struct flock fl;
-
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_start = 0;
- fl.l_len = 0;
- fl.l_pid = getpid ();
- fcntl (fd, F_SETLK, &fl);
-#endif
- close (fd);
- }
-}
-
/*
* Hokey little macro trick to permit the definitions of C functions
* with the same name as CPP macros
diff --git a/chromium/third_party/fontconfig/src/src/fccfg.c b/chromium/third_party/fontconfig/src/src/fccfg.c
index 9f8ee7c7e6f..6377fd7c6b1 100644
--- a/chromium/third_party/fontconfig/src/src/fccfg.c
+++ b/chromium/third_party/fontconfig/src/src/fccfg.c
@@ -27,7 +27,6 @@
#include "fcint.h"
#include <dirent.h>
#include <sys/types.h>
-#include "../fc-blanks/fcblanks.h"
#if defined (_WIN32) && !defined (R_OK)
#define R_OK 4
@@ -110,7 +109,7 @@ FcConfigCreate (void)
if (!config->cacheDirs)
goto bail8;
- config->blanks = &fcBlanks;
+ config->blanks = 0;
config->substPattern = 0;
config->substFont = 0;
@@ -376,7 +375,7 @@ FcConfigAddDirList (FcConfig *config, FcSetName set, FcStrSet *dirSet)
while ((dir = FcStrListNext (dirlist)))
{
if (FcDebug () & FC_DBG_FONTSET)
- printf ("adding fonts from %s\n", dir);
+ printf ("adding fonts from%s\n", dir);
cache = FcDirCacheRead (dir, FcFalse, config);
if (!cache)
continue;
@@ -435,7 +434,6 @@ retry:
if (!fc_atomic_ptr_cmpexch (&_fcConfig, cfg, config))
goto retry;
- FcConfigReference (config);
if (cfg)
FcConfigDestroy (cfg);
@@ -724,21 +722,6 @@ FcConfigPromote (FcValue v, FcValue u, FcValuePromotionBuffer *buf)
v.u.l = FcLangSetPromote (v.u.s, buf);
v.type = FcTypeLangSet;
}
- else if (v.type == FcTypeVoid && u.type == FcTypeLangSet)
- {
- v.u.l = FcLangSetPromote (NULL, buf);
- v.type = FcTypeLangSet;
- }
- else if (v.type == FcTypeVoid && u.type == FcTypeCharSet)
- {
- v.u.c = FcCharSetPromote (buf);
- v.type = FcTypeCharSet;
- }
- if (buf && v.type == FcTypeDouble && u.type == FcTypeRange)
- {
- v.u.r = FcRangePromote (v.u.d, buf);
- v.type = FcTypeRange;
- }
return v;
}
@@ -911,9 +894,6 @@ FcConfigCompareValue (const FcValue *left_o,
break;
}
break;
- case FcTypeRange:
- ret = FcRangeCompare (op, left.u.r, right.u.r);
- break;
}
}
else
@@ -935,11 +915,10 @@ FcConfigCompareValue (const FcValue *left_o,
static FcValue
FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
{
- FcValue v, vl, vr, vle, vre;
+ FcValue v, vl, vr;
FcMatrix *m;
FcChar8 *str;
FcOp op = FC_OP_GET_OP (e->op);
- FcValuePromotionBuffer buf1, buf2;
switch ((int) op) {
case FcOpInteger:
@@ -988,11 +967,6 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
v.u.l = e->u.lval;
v = FcValueSave (v);
break;
- case FcOpRange:
- v.type = FcTypeRange;
- v.u.r = e->u.rval;
- v = FcValueSave (v);
- break;
case FcOpBool:
v.type = FcTypeBool;
v.u.b = e->u.bval;
@@ -1059,28 +1033,28 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
case FcOpDivide:
vl = FcConfigEvaluate (p, p_pat, kind, e->u.tree.left);
vr = FcConfigEvaluate (p, p_pat, kind, e->u.tree.right);
- vle = FcConfigPromote (vl, vr, &buf1);
- vre = FcConfigPromote (vr, vle, &buf2);
- if (vle.type == vre.type)
+ vl = FcConfigPromote (vl, vr, NULL);
+ vr = FcConfigPromote (vr, vl, NULL);
+ if (vl.type == vr.type)
{
- switch ((int) vle.type) {
+ switch ((int) vl.type) {
case FcTypeDouble:
switch ((int) op) {
case FcOpPlus:
v.type = FcTypeDouble;
- v.u.d = vle.u.d + vre.u.d;
+ v.u.d = vl.u.d + vr.u.d;
break;
case FcOpMinus:
v.type = FcTypeDouble;
- v.u.d = vle.u.d - vre.u.d;
+ v.u.d = vl.u.d - vr.u.d;
break;
case FcOpTimes:
v.type = FcTypeDouble;
- v.u.d = vle.u.d * vre.u.d;
+ v.u.d = vl.u.d * vr.u.d;
break;
case FcOpDivide:
v.type = FcTypeDouble;
- v.u.d = vle.u.d / vre.u.d;
+ v.u.d = vl.u.d / vr.u.d;
break;
default:
v.type = FcTypeVoid;
@@ -1097,11 +1071,11 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
switch ((int) op) {
case FcOpOr:
v.type = FcTypeBool;
- v.u.b = vle.u.b || vre.u.b;
+ v.u.b = vl.u.b || vr.u.b;
break;
case FcOpAnd:
v.type = FcTypeBool;
- v.u.b = vle.u.b && vre.u.b;
+ v.u.b = vl.u.b && vr.u.b;
break;
default:
v.type = FcTypeVoid;
@@ -1112,7 +1086,7 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
switch ((int) op) {
case FcOpPlus:
v.type = FcTypeString;
- str = FcStrPlus (vle.u.s, vre.u.s);
+ str = FcStrPlus (vl.u.s, vr.u.s);
v.u.s = FcStrdup (str);
FcStrFree (str);
@@ -1131,7 +1105,7 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
m = malloc (sizeof (FcMatrix));
if (m)
{
- FcMatrixMultiply (m, vle.u.m, vre.u.m);
+ FcMatrixMultiply (m, vl.u.m, vr.u.m);
v.u.m = m;
}
else
@@ -1148,13 +1122,13 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
switch ((int) op) {
case FcOpPlus:
v.type = FcTypeCharSet;
- v.u.c = FcCharSetUnion (vle.u.c, vre.u.c);
+ v.u.c = FcCharSetUnion (vl.u.c, vr.u.c);
if (!v.u.c)
v.type = FcTypeVoid;
break;
case FcOpMinus:
v.type = FcTypeCharSet;
- v.u.c = FcCharSetSubtract (vle.u.c, vre.u.c);
+ v.u.c = FcCharSetSubtract (vl.u.c, vr.u.c);
if (!v.u.c)
v.type = FcTypeVoid;
break;
@@ -1167,13 +1141,13 @@ FcConfigEvaluate (FcPattern *p, FcPattern *p_pat, FcMatchKind kind, FcExpr *e)
switch ((int) op) {
case FcOpPlus:
v.type = FcTypeLangSet;
- v.u.l = FcLangSetUnion (vle.u.l, vre.u.l);
+ v.u.l = FcLangSetUnion (vl.u.l, vr.u.l);
if (!v.u.l)
v.type = FcTypeVoid;
break;
case FcOpMinus:
v.type = FcTypeLangSet;
- v.u.l = FcLangSetSubtract (vle.u.l, vre.u.l);
+ v.u.l = FcLangSetSubtract (vl.u.l, vr.u.l);
if (!v.u.l)
v.type = FcTypeVoid;
break;
@@ -1544,52 +1518,15 @@ FcConfigSubstituteWithPat (FcConfig *config,
FcStrList *l = FcStrListCreate (strs);
FcChar8 *lang;
FcValue v;
- FcLangSet *lsund = FcLangSetCreate ();
- FcLangSetAdd (lsund, (const FcChar8 *)"und");
FcStrSetDestroy (strs);
while (l && (lang = FcStrListNext (l)))
{
- FcPatternElt *e = FcPatternObjectFindElt (p, FC_LANG_OBJECT);
-
- if (e)
- {
- FcValueListPtr ll;
-
- for (ll = FcPatternEltValues (e); ll; ll = FcValueListNext (ll))
- {
- FcValue vv = FcValueCanonicalize (&ll->value);
-
- if (vv.type == FcTypeLangSet)
- {
- FcLangSet *ls = FcLangSetCreate ();
- FcBool b;
-
- FcLangSetAdd (ls, lang);
- b = FcLangSetContains (vv.u.l, ls);
- FcLangSetDestroy (ls);
- if (b)
- goto bail_lang;
- if (FcLangSetContains (vv.u.l, lsund))
- goto bail_lang;
- }
- else
- {
- if (FcStrCmpIgnoreCase (vv.u.s, lang) == 0)
- goto bail_lang;
- if (FcStrCmpIgnoreCase (vv.u.s, (const FcChar8 *)"und") == 0)
- goto bail_lang;
- }
- }
- }
v.type = FcTypeString;
v.u.s = lang;
-
FcPatternObjectAddWithBinding (p, FC_LANG_OBJECT, v, FcValueBindingWeak, FcTrue);
}
- bail_lang:
FcStrListDone (l);
- FcLangSetDestroy (lsund);
}
if (FcPatternObjectGet (p, FC_PRGNAME_OBJECT, 0, &v) == FcResultNoMatch)
{
@@ -1841,7 +1778,6 @@ FcConfigSubstitute (FcConfig *config,
#if defined (_WIN32)
static FcChar8 fontconfig_path[1000] = ""; /* MT-dontcare */
-FcChar8 fontconfig_instprefix[1000] = ""; /* MT-dontcare */
# if (defined (PIC) || defined (DLL_EXPORT))
@@ -1876,7 +1812,6 @@ DllMain (HINSTANCE hinstDLL,
if (p && (FcStrCmpIgnoreCase (p + 1, (const FcChar8 *) "bin") == 0 ||
FcStrCmpIgnoreCase (p + 1, (const FcChar8 *) "lib") == 0))
*p = '\0';
- strcat ((char *) fontconfig_instprefix, (char *) fontconfig_path);
strcat ((char *) fontconfig_path, "\\etc\\fonts");
}
else
@@ -2050,8 +1985,6 @@ FcConfigXdgCacheHome (void)
const char *env = getenv ("XDG_CACHE_HOME");
FcChar8 *ret = NULL;
- if (!_FcConfigHomeEnabled)
- return NULL;
if (env)
ret = FcStrCopy ((const FcChar8 *)env);
else
@@ -2077,8 +2010,6 @@ FcConfigXdgConfigHome (void)
const char *env = getenv ("XDG_CONFIG_HOME");
FcChar8 *ret = NULL;
- if (!_FcConfigHomeEnabled)
- return NULL;
if (env)
ret = FcStrCopy ((const FcChar8 *)env);
else
@@ -2104,8 +2035,6 @@ FcConfigXdgDataHome (void)
const char *env = getenv ("XDG_DATA_HOME");
FcChar8 *ret = NULL;
- if (!_FcConfigHomeEnabled)
- return NULL;
if (env)
ret = FcStrCopy ((const FcChar8 *)env);
else
@@ -2205,7 +2134,7 @@ FcConfigAppFontAddFile (FcConfig *config,
return FcFalse;
}
- subdirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ subdirs = FcStrSetCreate ();
if (!subdirs)
return FcFalse;
@@ -2252,7 +2181,7 @@ FcConfigAppFontAddDir (FcConfig *config,
return FcFalse;
}
- dirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ dirs = FcStrSetCreate ();
if (!dirs)
return FcFalse;
@@ -2383,7 +2312,7 @@ void
FcConfigSetSysRoot (FcConfig *config,
const FcChar8 *sysroot)
{
- FcChar8 *s = NULL;
+ FcChar8 *s;
FcBool init = FcFalse;
if (!config)
@@ -2403,12 +2332,9 @@ FcConfigSetSysRoot (FcConfig *config,
}
}
- if (sysroot)
- {
- s = FcStrCopyFilename (sysroot);
- if (!s)
- return;
- }
+ s = FcStrCopyFilename (sysroot);
+ if (!s)
+ return;
if (config->sysRoot)
FcStrFree (config->sysRoot);
@@ -2418,10 +2344,6 @@ FcConfigSetSysRoot (FcConfig *config,
{
config = FcInitLoadOwnConfigAndFonts (config);
FcConfigSetCurrent (config);
- /* FcConfigSetCurrent() increases the refcount.
- * decrease it here to avoid the memory leak.
- */
- FcConfigDestroy (config);
}
}
diff --git a/chromium/third_party/fontconfig/src/src/fccharset.c b/chromium/third_party/fontconfig/src/src/fccharset.c
index 3f1789230e6..c9f928cd480 100644
--- a/chromium/third_party/fontconfig/src/src/fccharset.c
+++ b/chromium/third_party/fontconfig/src/src/fccharset.c
@@ -43,21 +43,6 @@ FcCharSetCreate (void)
}
FcCharSet *
-FcCharSetPromote (FcValuePromotionBuffer *vbuf)
-{
- FcCharSet *fcs = (FcCharSet *) vbuf;
-
- FC_ASSERT_STATIC (sizeof (FcCharSet) <= sizeof (FcValuePromotionBuffer));
-
- FcRefSetConst (&fcs->ref);
- fcs->num = 0;
- fcs->leaves_offset = 0;
- fcs->numbers_offset = 0;
-
- return fcs;
-}
-
-FcCharSet *
FcCharSetNew (void)
{
return FcCharSetCreate ();
@@ -164,14 +149,6 @@ FcCharSetPutLeaf (FcCharSet *fcs,
unsigned int alloced = 8;
leaves = malloc (alloced * sizeof (*leaves));
numbers = malloc (alloced * sizeof (*numbers));
- if (!leaves || !numbers)
- {
- if (leaves)
- free (leaves);
- if (numbers)
- free (numbers);
- return FcFalse;
- }
}
else
{
@@ -180,19 +157,8 @@ FcCharSetPutLeaf (FcCharSet *fcs,
alloced *= 2;
new_leaves = realloc (leaves, alloced * sizeof (*leaves));
- if (!new_leaves)
- return FcFalse;
numbers = realloc (numbers, alloced * sizeof (*numbers));
- if (!numbers)
- {
- /* Revert the reallocation of leaves */
- leaves = realloc (new_leaves, (alloced / 2) * sizeof (*new_leaves));
- /* unlikely to fail though */
- if (!leaves)
- return FcFalse;
- fcs->leaves_offset = FcPtrToOffset (fcs, leaves);
- return FcFalse;
- }
+
distance = (intptr_t) new_leaves - (intptr_t) leaves;
if (new_leaves && distance)
{
@@ -203,6 +169,9 @@ FcCharSetPutLeaf (FcCharSet *fcs,
leaves = new_leaves;
}
+ if (!leaves || !numbers)
+ return FcFalse;
+
fcs->leaves_offset = FcPtrToOffset (fcs, leaves);
fcs->numbers_offset = FcPtrToOffset (fcs, numbers);
}
@@ -831,123 +800,188 @@ FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result)
return page;
}
-static FcBool
-FcNameParseRange (FcChar8 **string, FcChar32 *pfirst, FcChar32 *plast)
+/*
+ * ASCII representation of charsets.
+ *
+ * Each leaf is represented as 9 32-bit values, the code of the first character followed
+ * by 8 32 bit values for the leaf itself. Each value is encoded as 5 ASCII characters,
+ * only 85 different values are used to avoid control characters as well as the other
+ * characters used to encode font names. 85**5 > 2^32 so things work out, but
+ * it's not exactly human readable output. As a special case, 0 is encoded as a space
+ */
+
+static const unsigned char charToValue[256] = {
+ /* "" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\b" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\020" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\030" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* " " */ 0xff, 0x00, 0xff, 0x01, 0x02, 0x03, 0x04, 0xff,
+ /* "(" */ 0x05, 0x06, 0x07, 0x08, 0xff, 0xff, 0x09, 0x0a,
+ /* "0" */ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+ /* "8" */ 0x13, 0x14, 0xff, 0x15, 0x16, 0xff, 0x17, 0x18,
+ /* "@" */ 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+ /* "H" */ 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
+ /* "P" */ 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
+ /* "X" */ 0x31, 0x32, 0x33, 0x34, 0xff, 0x35, 0x36, 0xff,
+ /* "`" */ 0xff, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
+ /* "h" */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
+ /* "p" */ 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
+ /* "x" */ 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0xff,
+ /* "\200" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\210" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\220" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\230" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\240" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\250" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\260" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\270" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\300" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\310" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\320" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\330" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\340" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\350" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\360" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ /* "\370" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+};
+
+static const FcChar8 valueToChar[0x55] = {
+ /* 0x00 */ '!', '#', '$', '%', '&', '(', ')', '*',
+ /* 0x08 */ '+', '.', '/', '0', '1', '2', '3', '4',
+ /* 0x10 */ '5', '6', '7', '8', '9', ';', '<', '>',
+ /* 0x18 */ '?', '@', 'A', 'B', 'C', 'D', 'E', 'F',
+ /* 0x20 */ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
+ /* 0x28 */ 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
+ /* 0x30 */ 'W', 'X', 'Y', 'Z', '[', ']', '^', 'a',
+ /* 0x38 */ 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
+ /* 0x40 */ 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
+ /* 0x48 */ 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+ /* 0x50 */ 'z', '{', '|', '}', '~',
+};
+
+static FcChar8 *
+FcCharSetParseValue (FcChar8 *string, FcChar32 *value)
{
- char *s = (char *) *string;
- char *t;
- long first, last;
-
- while (isspace(*s))
- s++;
- t = s;
- errno = 0;
- first = last = strtol (s, &s, 16);
- if (errno)
- return FcFalse;
- while (isspace(*s))
- s++;
- if (*s == '-')
+ int i;
+ FcChar32 v;
+ FcChar32 c;
+
+ if (*string == ' ')
+ {
+ v = 0;
+ string++;
+ }
+ else
+ {
+ v = 0;
+ for (i = 0; i < 5; i++)
{
- s++;
- errno = 0;
- last = strtol (s, &s, 16);
- if (errno)
- return FcFalse;
+ if (!(c = (FcChar32) (unsigned char) *string++))
+ return 0;
+ c = charToValue[c];
+ if (c == 0xff)
+ return 0;
+ v = v * 85 + c;
}
+ }
+ *value = v;
+ return string;
+}
- if (s == t || first < 0 || last < 0 || last < first || last > 0x10ffff)
- return FcFalse;
-
- *string = (FcChar8 *) s;
- *pfirst = first;
- *plast = last;
- return FcTrue;
+static FcBool
+FcCharSetUnparseValue (FcStrBuf *buf, FcChar32 value)
+{
+ int i;
+ if (value == 0)
+ {
+ return FcStrBufChar (buf, ' ');
+ }
+ else
+ {
+ FcChar8 string[6];
+ FcChar8 *s = string + 5;
+ string[5] = '\0';
+ for (i = 0; i < 5; i++)
+ {
+ *--s = valueToChar[value % 85];
+ value /= 85;
+ }
+ for (i = 0; i < 5; i++)
+ if (!FcStrBufChar (buf, *s++))
+ return FcFalse;
+ }
+ return FcTrue;
}
FcCharSet *
FcNameParseCharSet (FcChar8 *string)
{
FcCharSet *c;
- FcChar32 first, last;
+ FcChar32 ucs4;
+ FcCharLeaf *leaf;
+ FcCharLeaf temp;
+ FcChar32 bits;
+ int i;
c = FcCharSetCreate ();
if (!c)
goto bail0;
while (*string)
{
- FcChar32 u;
-
- if (!FcNameParseRange (&string, &first, &last))
+ string = FcCharSetParseValue (string, &ucs4);
+ if (!string)
+ goto bail1;
+ bits = 0;
+ for (i = 0; i < 256/32; i++)
+ {
+ string = FcCharSetParseValue (string, &temp.map[i]);
+ if (!string)
goto bail1;
-
- for (u = first; u < last + 1; u++)
- FcCharSetAddChar (c, u);
+ bits |= temp.map[i];
+ }
+ if (bits)
+ {
+ leaf = malloc (sizeof (FcCharLeaf));
+ if (!leaf)
+ goto bail1;
+ *leaf = temp;
+ if (!FcCharSetInsertLeaf (c, ucs4, leaf))
+ goto bail1;
+ }
}
return c;
bail1:
- FcCharSetDestroy (c);
+ if (c->num)
+ {
+ free (FcCharSetLeaves (c));
+ }
+ if (c->num)
+ {
+ free (FcCharSetNumbers (c));
+ }
+ free (c);
bail0:
return NULL;
}
-static void
-FcNameUnparseUnicode (FcStrBuf *buf, FcChar32 u)
-{
- FcChar8 buf_static[64];
- snprintf ((char *) buf_static, sizeof (buf_static), "%x", u);
- FcStrBufString (buf, buf_static);
-}
-
FcBool
FcNameUnparseCharSet (FcStrBuf *buf, const FcCharSet *c)
{
FcCharSetIter ci;
- FcChar32 first, last;
int i;
#ifdef CHECK
int len = buf->len;
#endif
- first = last = 0x7FFFFFFF;
-
for (FcCharSetIterStart (c, &ci);
ci.leaf;
FcCharSetIterNext (c, &ci))
{
+ if (!FcCharSetUnparseValue (buf, ci.ucs4))
+ return FcFalse;
for (i = 0; i < 256/32; i++)
- {
- FcChar32 bits = ci.leaf->map[i];
- FcChar32 u = ci.ucs4 + i * 32;
-
- while (bits)
- {
- if (bits & 1)
- {
- if (u != last + 1)
- {
- if (last != first)
- {
- FcStrBufChar (buf, '-');
- FcNameUnparseUnicode (buf, last);
- }
- if (last != 0x7FFFFFFF)
- FcStrBufChar (buf, ' ');
- /* Start new range. */
- first = u;
- FcNameUnparseUnicode (buf, u);
- }
- last = u;
- }
- bits >>= 1;
- u++;
- }
- }
- }
- if (last != first)
- {
- FcStrBufChar (buf, '-');
- FcNameUnparseUnicode (buf, last);
+ if (!FcCharSetUnparseValue (buf, ci.leaf->map[i]))
+ return FcFalse;
}
#ifdef CHECK
{
diff --git a/chromium/third_party/fontconfig/src/src/fccompat.c b/chromium/third_party/fontconfig/src/src/fccompat.c
index 31d80bef162..1c2ba8bedde 100644
--- a/chromium/third_party/fontconfig/src/src/fccompat.c
+++ b/chromium/third_party/fontconfig/src/src/fccompat.c
@@ -170,27 +170,14 @@ FcRandom(void)
static struct random_data fcrandbuf;
static char statebuf[256];
static FcBool initialized = FcFalse;
-#ifdef _AIX
- static char *retval;
- long res;
-#endif
if (initialized != FcTrue)
{
-#ifdef _AIX
- initstate_r (time (NULL), statebuf, 256, &retval, &fcrandbuf);
-#else
- initstate_r (time (NULL), statebuf, 256, &fcrandbuf);
-#endif
+ initstate_r(time(NULL), statebuf, 256, &fcrandbuf);
initialized = FcTrue;
}
-#ifdef _AIX
- random_r (&res, &fcrandbuf);
- result = (int32_t)res;
-#else
- random_r (&fcrandbuf, &result);
-#endif
+ random_r(&fcrandbuf, &result);
#elif HAVE_RANDOM
static char statebuf[256];
char *state;
@@ -198,30 +185,30 @@ FcRandom(void)
if (initialized != FcTrue)
{
- state = initstate (time (NULL), statebuf, 256);
+ state = initstate(time(NULL), statebuf, 256);
initialized = FcTrue;
}
else
- state = setstate (statebuf);
+ state = setstate(statebuf);
- result = random ();
+ result = random();
- setstate (state);
+ setstate(state);
#elif HAVE_LRAND48
- result = lrand48 ();
+ result = lrand48();
#elif HAVE_RAND_R
- static unsigned int seed = time (NULL);
+ static unsigned int seed = time(NULL);
- result = rand_r (&seed);
+ result = rand_r(&seed);
#elif HAVE_RAND
static FcBool initialized = FcFalse;
if (initialized != FcTrue)
{
- srand (time (NULL));
+ srand(time(NULL));
initialized = FcTrue;
}
- result = rand ();
+ result = rand();
#else
# error no random number generator function available.
#endif
@@ -255,7 +242,3 @@ FcMakeDirectory (const FcChar8 *dir)
FcStrFree (parent);
return ret;
}
-
-#define __fccompat__
-#include "fcaliastail.h"
-#undef __fccompat__
diff --git a/chromium/third_party/fontconfig/src/src/fcdbg.c b/chromium/third_party/fontconfig/src/src/fcdbg.c
index c2853fff376..d74bc276940 100644
--- a/chromium/third_party/fontconfig/src/src/fcdbg.c
+++ b/chromium/third_party/fontconfig/src/src/fcdbg.c
@@ -61,9 +61,6 @@ _FcValuePrintFile (FILE *f, const FcValue v)
case FcTypeFTFace:
fprintf (f, "face");
break;
- case FcTypeRange:
- fprintf (f, "[%g %g)", v.u.r->begin, v.u.r->end);
- break;
}
}
@@ -211,84 +208,6 @@ FcPatternPrint (const FcPattern *p)
}
void
-FcPatternPrint2 (FcPattern *pp1,
- FcPattern *pp2,
- const FcObjectSet *os)
-{
- int i, j, k, pos;
- FcPatternElt *e1, *e2;
- FcPattern *p1, *p2;
-
- if (os)
- {
- p1 = FcPatternFilter (pp1, os);
- p2 = FcPatternFilter (pp2, os);
- }
- else
- {
- p1 = pp1;
- p2 = pp2;
- }
- printf ("Pattern has %d elts (size %d), %d elts (size %d)\n",
- p1->num, p1->size, p2->num, p2->size);
- for (i = 0, j = 0; i < p1->num; i++)
- {
- e1 = &FcPatternElts(p1)[i];
- e2 = &FcPatternElts(p2)[j];
- if (!e2 || e1->object != e2->object)
- {
- pos = FcPatternPosition (p2, FcObjectName (e1->object));
- if (pos >= 0)
- {
- for (k = j; k < pos; k++)
- {
- e2 = &FcPatternElts(p2)[k];
- printf ("\t%s: (None) -> ", FcObjectName (e2->object));
- FcValueListPrint (FcPatternEltValues (e2));
- printf ("\n");
- }
- j = pos;
- goto cont;
- }
- else
- {
- printf ("\t%s:", FcObjectName (e1->object));
- FcValueListPrint (FcPatternEltValues (e1));
- printf (" -> (None)\n");
- }
- }
- else
- {
- cont:
- printf ("\t%s:", FcObjectName (e1->object));
- FcValueListPrint (FcPatternEltValues (e1));
- printf (" -> ");
- e2 = &FcPatternElts(p2)[j];
- FcValueListPrint (FcPatternEltValues (e2));
- printf ("\n");
- j++;
- }
- }
- if (j < p2->num)
- {
- for (k = j; k < p2->num; k++)
- {
- e2 = &FcPatternElts(p2)[k];
- if (FcObjectName (e2->object))
- {
- printf ("\t%s: (None) -> ", FcObjectName (e2->object));
- FcValueListPrint (FcPatternEltValues (e2));
- printf ("\n");
- }
- }
- }
- if (p1 != pp1)
- FcPatternDestroy (p1);
- if (p2 != pp2)
- FcPatternDestroy (p2);
-}
-
-void
FcOpPrint (FcOp op_)
{
FcOp op = FC_OP_GET_OP (op_);
@@ -358,9 +277,7 @@ FcExprPrint (const FcExpr *expr)
FcExprPrint (expr->u.mexpr->yy);
printf ("]");
break;
- case FcOpRange:
- printf ("(%g, %g)", expr->u.rval->begin, expr->u.rval->end);
- break;
+ case FcOpRange: break;
case FcOpBool: printf ("%s", expr->u.bval ? "true" : "false"); break;
case FcOpCharSet: printf ("charset\n"); break;
case FcOpLangSet:
diff --git a/chromium/third_party/fontconfig/src/src/fcdefault.c b/chromium/third_party/fontconfig/src/src/fcdefault.c
index 6647a8fe81c..d1b917fd9de 100644
--- a/chromium/third_party/fontconfig/src/src/fcdefault.c
+++ b/chromium/third_party/fontconfig/src/src/fcdefault.c
@@ -38,7 +38,6 @@ static const struct {
{ FC_GLOBAL_ADVANCE_OBJECT, FcTrue }, /* !FC_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */
{ FC_EMBEDDED_BITMAP_OBJECT, FcTrue }, /* !FC_LOAD_NO_BITMAP */
{ FC_DECORATIVE_OBJECT, FcFalse },
- { FC_SYMBOL_OBJECT, FcFalse },
};
#define NUM_FC_BOOL_DEFAULTS (int) (sizeof FcBoolDefaults / sizeof FcBoolDefaults[0])
@@ -95,6 +94,7 @@ retry:
{
FcStrSet *langs = FcGetDefaultLangs ();
lang = FcStrdup (langs->strs[0]);
+ FcStrSetDestroy (langs);
if (!fc_atomic_ptr_cmpexch (&default_lang, NULL, lang)) {
free (lang);
@@ -149,7 +149,7 @@ retry:
#else
# if defined (HAVE_GETEXECNAME)
const char *p = getexecname ();
-# elif defined (HAVE_READLINK)
+# else
char buf[PATH_MAX + 1];
int len;
char *p = NULL;
@@ -160,8 +160,6 @@ retry:
buf[len] = '\0';
p = buf;
}
-# else
- char *p = NULL;
# endif
if (p)
{
@@ -219,10 +217,9 @@ FcDefaultSubstitute (FcPattern *pattern)
{
FcValue v, namelang, v2;
int i;
- double dpi, size, scale, pixelsize;
if (FcPatternObjectGet (pattern, FC_WEIGHT_OBJECT, 0, &v) == FcResultNoMatch )
- FcPatternObjectAddInteger (pattern, FC_WEIGHT_OBJECT, FC_WEIGHT_NORMAL);
+ FcPatternObjectAddInteger (pattern, FC_WEIGHT_OBJECT, FC_WEIGHT_MEDIUM);
if (FcPatternObjectGet (pattern, FC_SLANT_OBJECT, 0, &v) == FcResultNoMatch)
FcPatternObjectAddInteger (pattern, FC_SLANT_OBJECT, FC_SLANT_ROMAN);
@@ -234,30 +231,32 @@ FcDefaultSubstitute (FcPattern *pattern)
if (FcPatternObjectGet (pattern, FcBoolDefaults[i].field, 0, &v) == FcResultNoMatch)
FcPatternObjectAddBool (pattern, FcBoolDefaults[i].field, FcBoolDefaults[i].value);
- if (FcPatternObjectGetDouble (pattern, FC_SIZE_OBJECT, 0, &size) != FcResultMatch)
- size = 12.0L;
- if (FcPatternObjectGetDouble (pattern, FC_SCALE_OBJECT, 0, &scale) != FcResultMatch)
- scale = 1.0;
- if (FcPatternObjectGetDouble (pattern, FC_DPI_OBJECT, 0, &dpi) != FcResultMatch)
- dpi = 75.0;
-
- if (FcPatternObjectGet (pattern, FC_PIXEL_SIZE_OBJECT, 0, &v) != FcResultMatch)
- {
- (void) FcPatternObjectDel (pattern, FC_SCALE_OBJECT);
- FcPatternObjectAddDouble (pattern, FC_SCALE_OBJECT, scale);
- pixelsize = size * scale;
- (void) FcPatternObjectDel (pattern, FC_DPI_OBJECT);
- FcPatternObjectAddDouble (pattern, FC_DPI_OBJECT, dpi);
- pixelsize *= dpi / 72.0;
- FcPatternObjectAddDouble (pattern, FC_PIXEL_SIZE_OBJECT, pixelsize);
- }
- else
+ if (FcPatternObjectGet (pattern, FC_PIXEL_SIZE_OBJECT, 0, &v) == FcResultNoMatch)
{
- size = v.u.d;
- size = size / dpi * 72.0 / scale;
+ double dpi, size, scale;
+
+ if (FcPatternObjectGetDouble (pattern, FC_SIZE_OBJECT, 0, &size) != FcResultMatch)
+ {
+ size = 12.0;
+ (void) FcPatternObjectDel (pattern, FC_SIZE_OBJECT);
+ FcPatternObjectAddDouble (pattern, FC_SIZE_OBJECT, size);
+ }
+ if (FcPatternObjectGetDouble (pattern, FC_SCALE_OBJECT, 0, &scale) != FcResultMatch)
+ {
+ scale = 1.0;
+ (void) FcPatternObjectDel (pattern, FC_SCALE_OBJECT);
+ FcPatternObjectAddDouble (pattern, FC_SCALE_OBJECT, scale);
+ }
+ size *= scale;
+ if (FcPatternObjectGetDouble (pattern, FC_DPI_OBJECT, 0, &dpi) != FcResultMatch)
+ {
+ dpi = 75.0;
+ (void) FcPatternObjectDel (pattern, FC_DPI_OBJECT);
+ FcPatternObjectAddDouble (pattern, FC_DPI_OBJECT, dpi);
+ }
+ size *= dpi / 72.0;
+ FcPatternObjectAddDouble (pattern, FC_PIXEL_SIZE_OBJECT, size);
}
- (void) FcPatternObjectDel (pattern, FC_SIZE_OBJECT);
- FcPatternObjectAddDouble (pattern, FC_SIZE_OBJECT, size);
if (FcPatternObjectGet (pattern, FC_FONTVERSION_OBJECT, 0, &v) == FcResultNoMatch)
{
diff --git a/chromium/third_party/fontconfig/src/src/fcdir.c b/chromium/third_party/fontconfig/src/src/fcdir.c
index fd62a342f81..b040a285ad6 100644
--- a/chromium/third_party/fontconfig/src/src/fcdir.c
+++ b/chromium/third_party/fontconfig/src/src/fcdir.c
@@ -23,9 +23,6 @@
*/
#include "fcint.h"
-#include "fcftint.h"
-#include <ft2build.h>
-#include FT_FREETYPE_H
#include <dirent.h>
FcBool
@@ -68,20 +65,12 @@ FcFileScanFontConfig (FcFontSet *set,
const FcChar8 *file,
FcConfig *config)
{
- FT_Library ftLibrary;
- FT_Face face;
FcPattern *font;
FcBool ret = FcTrue;
- int num_faces = 0;
- int num_instances = 0;
- int face_num = 0;
- int instance_num = 0;
int id;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
-
- if (FT_Init_FreeType (&ftLibrary))
- return FcFalse;
+ int count = 0;
+ id = 0;
do
{
font = 0;
@@ -93,39 +82,9 @@ FcFileScanFontConfig (FcFontSet *set,
printf ("\tScanning file %s...", file);
fflush (stdout);
}
-
- id = ((instance_num << 16) + face_num);
- if (FT_New_Face (ftLibrary, (char *) file, id, &face))
- return FcFalse;
- num_faces = face->num_faces;
- num_instances = face->style_flags >> 16;
- font = FcFreeTypeQueryFace (face, file, id, blanks);
- FT_Done_Face (face);
-
+ font = FcFreeTypeQuery (file, id, blanks, &count);
if (FcDebug () & FC_DBG_SCAN)
printf ("done\n");
- /*
- * Get rid of sysroot here so that targeting scan rule may contains FC_FILE pattern
- * and they should usually expect without sysroot.
- */
- if (font && sysroot)
- {
- size_t len = strlen ((const char *)sysroot);
- FcChar8 *f = NULL;
-
- if (FcPatternObjectGetString (font, FC_FILE_OBJECT, 0, &f) == FcResultMatch &&
- strncmp ((const char *)f, (const char *)sysroot, len) == 0)
- {
- FcChar8 *s = FcStrdup (f);
- FcPatternObjectDel (font, FC_FILE_OBJECT);
- if (s[len] != '/')
- len--;
- else if (s[len+1] == '/')
- len++;
- FcPatternObjectAddString (font, FC_FILE_OBJECT, &s[len]);
- FcStrFree (s);
- }
- }
/*
* Edit pattern with user-defined rules
@@ -154,20 +113,10 @@ FcFileScanFontConfig (FcFontSet *set,
ret = FcFalse;
}
}
- else
- ret = FcFalse;
-
- if (instance_num < num_instances)
- instance_num++;
- else
- {
- face_num++;
- instance_num = 0;
- }
- } while (font && ret && face_num < num_faces);
-
- FT_Done_FreeType (ftLibrary);
-
+ else if (font)
+ FcPatternDestroy (font);
+ id++;
+ } while (font && ret && id < count);
return ret;
}
@@ -179,32 +128,9 @@ FcFileScanConfig (FcFontSet *set,
FcConfig *config)
{
if (FcFileIsDir (file))
- {
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- const FcChar8 *d = file;
- size_t len;
-
- if (sysroot)
- {
- len = strlen ((const char *)sysroot);
- if (strncmp ((const char *)file, (const char *)sysroot, len) == 0)
- {
- if (file[len] != '/')
- len--;
- else if (file[len+1] == '/')
- len++;
- d = &file[len];
- }
- }
- return FcStrSetAdd (dirs, d);
- }
+ return FcStrSetAdd (dirs, file);
else
- {
- if (set)
- return FcFileScanFontConfig (set, blanks, file, config);
- else
- return FcTrue;
- }
+ return FcFileScanFontConfig (set, blanks, file, config);
}
FcBool
@@ -275,7 +201,7 @@ FcDirScanConfig (FcFontSet *set,
goto bail;
}
- files = FcStrSetCreateEx (FCSS_ALLOW_DUPLICATES | FCSS_GROW_BY_64);
+ files = FcStrSetCreate ();
if (!files)
{
ret = FcFalse;
@@ -339,34 +265,25 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config)
FcFontSet *set;
FcCache *cache = NULL;
struct stat dir_stat;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- FcChar8 *d;
- int fd = -1;
-
- if (sysroot)
- d = FcStrBuildFilename (sysroot, dir, NULL);
- else
- d = FcStrdup (dir);
if (FcDebug () & FC_DBG_FONTSET)
- printf ("cache scan dir %s\n", d);
+ printf ("cache scan dir %s\n", dir);
- if (FcStatChecksum (d, &dir_stat) < 0)
+ if (FcStatChecksum (dir, &dir_stat) < 0)
goto bail;
set = FcFontSetCreate();
if (!set)
goto bail;
- dirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ dirs = FcStrSetCreate ();
if (!dirs)
goto bail1;
- fd = FcDirCacheLock (dir, config);
/*
* Scan the dir
*/
- if (!FcDirScanConfig (set, dirs, NULL, d, FcTrue, config))
+ if (!FcDirScanConfig (set, dirs, NULL, dir, FcTrue, config))
goto bail2;
/*
@@ -382,69 +299,13 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config)
FcDirCacheWrite (cache, config);
bail2:
- FcDirCacheUnlock (fd);
FcStrSetDestroy (dirs);
bail1:
FcFontSetDestroy (set);
bail:
- FcStrFree (d);
-
return cache;
}
-FcCache *
-FcDirCacheRescan (const FcChar8 *dir, FcConfig *config)
-{
- FcCache *cache;
- FcCache *new = NULL;
- struct stat dir_stat;
- FcStrSet *dirs;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- FcChar8 *d = NULL;
- int fd = -1;
-
- cache = FcDirCacheLoad (dir, config, NULL);
- if (!cache)
- goto bail;
-
- if (sysroot)
- d = FcStrBuildFilename (sysroot, dir, NULL);
- else
- d = FcStrdup (dir);
- if (FcStatChecksum (d, &dir_stat) < 0)
- goto bail;
- dirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
- if (!dirs)
- goto bail;
-
- fd = FcDirCacheLock (dir, config);
- /*
- * Scan the dir
- */
- if (!FcDirScanConfig (NULL, dirs, NULL, d, FcTrue, config))
- goto bail1;
- /*
- * Rebuild the cache object
- */
- new = FcDirCacheRebuild (cache, &dir_stat, dirs);
- if (!new)
- goto bail1;
- FcDirCacheUnload (cache);
- /*
- * Write out the cache file, ignoring any troubles
- */
- FcDirCacheWrite (new, config);
-
-bail1:
- FcDirCacheUnlock (fd);
- FcStrSetDestroy (dirs);
-bail:
- if (d)
- FcStrFree (d);
-
- return new;
-}
-
/*
* Read (or construct) the cache for a directory
*/
diff --git a/chromium/third_party/fontconfig/src/src/fcfreetype.c b/chromium/third_party/fontconfig/src/src/fcfreetype.c
index b4d926d4667..e39430762c7 100644
--- a/chromium/third_party/fontconfig/src/src/fcfreetype.c
+++ b/chromium/third_party/fontconfig/src/src/fcfreetype.c
@@ -62,7 +62,6 @@
#include FT_BDF_H
#include FT_MODULE_H
#endif
-#include FT_MULTIPLE_MASTERS_H
#include "ftglue.h"
@@ -559,139 +558,6 @@ FcFontCapabilities(FT_Face face);
#define NUM_FC_MAC_ROMAN_FAKE (int) (sizeof (fcMacRomanFake) / sizeof (fcMacRomanFake[0]))
-
-/* From http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT */
-static const FcChar16 fcMacRomanNonASCIIToUnicode[128] = {
- /*0x80*/ 0x00C4, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
- /*0x81*/ 0x00C5, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
- /*0x82*/ 0x00C7, /* LATIN CAPITAL LETTER C WITH CEDILLA */
- /*0x83*/ 0x00C9, /* LATIN CAPITAL LETTER E WITH ACUTE */
- /*0x84*/ 0x00D1, /* LATIN CAPITAL LETTER N WITH TILDE */
- /*0x85*/ 0x00D6, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
- /*0x86*/ 0x00DC, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
- /*0x87*/ 0x00E1, /* LATIN SMALL LETTER A WITH ACUTE */
- /*0x88*/ 0x00E0, /* LATIN SMALL LETTER A WITH GRAVE */
- /*0x89*/ 0x00E2, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
- /*0x8A*/ 0x00E4, /* LATIN SMALL LETTER A WITH DIAERESIS */
- /*0x8B*/ 0x00E3, /* LATIN SMALL LETTER A WITH TILDE */
- /*0x8C*/ 0x00E5, /* LATIN SMALL LETTER A WITH RING ABOVE */
- /*0x8D*/ 0x00E7, /* LATIN SMALL LETTER C WITH CEDILLA */
- /*0x8E*/ 0x00E9, /* LATIN SMALL LETTER E WITH ACUTE */
- /*0x8F*/ 0x00E8, /* LATIN SMALL LETTER E WITH GRAVE */
- /*0x90*/ 0x00EA, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
- /*0x91*/ 0x00EB, /* LATIN SMALL LETTER E WITH DIAERESIS */
- /*0x92*/ 0x00ED, /* LATIN SMALL LETTER I WITH ACUTE */
- /*0x93*/ 0x00EC, /* LATIN SMALL LETTER I WITH GRAVE */
- /*0x94*/ 0x00EE, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
- /*0x95*/ 0x00EF, /* LATIN SMALL LETTER I WITH DIAERESIS */
- /*0x96*/ 0x00F1, /* LATIN SMALL LETTER N WITH TILDE */
- /*0x97*/ 0x00F3, /* LATIN SMALL LETTER O WITH ACUTE */
- /*0x98*/ 0x00F2, /* LATIN SMALL LETTER O WITH GRAVE */
- /*0x99*/ 0x00F4, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
- /*0x9A*/ 0x00F6, /* LATIN SMALL LETTER O WITH DIAERESIS */
- /*0x9B*/ 0x00F5, /* LATIN SMALL LETTER O WITH TILDE */
- /*0x9C*/ 0x00FA, /* LATIN SMALL LETTER U WITH ACUTE */
- /*0x9D*/ 0x00F9, /* LATIN SMALL LETTER U WITH GRAVE */
- /*0x9E*/ 0x00FB, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
- /*0x9F*/ 0x00FC, /* LATIN SMALL LETTER U WITH DIAERESIS */
- /*0xA0*/ 0x2020, /* DAGGER */
- /*0xA1*/ 0x00B0, /* DEGREE SIGN */
- /*0xA2*/ 0x00A2, /* CENT SIGN */
- /*0xA3*/ 0x00A3, /* POUND SIGN */
- /*0xA4*/ 0x00A7, /* SECTION SIGN */
- /*0xA5*/ 0x2022, /* BULLET */
- /*0xA6*/ 0x00B6, /* PILCROW SIGN */
- /*0xA7*/ 0x00DF, /* LATIN SMALL LETTER SHARP S */
- /*0xA8*/ 0x00AE, /* REGISTERED SIGN */
- /*0xA9*/ 0x00A9, /* COPYRIGHT SIGN */
- /*0xAA*/ 0x2122, /* TRADE MARK SIGN */
- /*0xAB*/ 0x00B4, /* ACUTE ACCENT */
- /*0xAC*/ 0x00A8, /* DIAERESIS */
- /*0xAD*/ 0x2260, /* NOT EQUAL TO */
- /*0xAE*/ 0x00C6, /* LATIN CAPITAL LETTER AE */
- /*0xAF*/ 0x00D8, /* LATIN CAPITAL LETTER O WITH STROKE */
- /*0xB0*/ 0x221E, /* INFINITY */
- /*0xB1*/ 0x00B1, /* PLUS-MINUS SIGN */
- /*0xB2*/ 0x2264, /* LESS-THAN OR EQUAL TO */
- /*0xB3*/ 0x2265, /* GREATER-THAN OR EQUAL TO */
- /*0xB4*/ 0x00A5, /* YEN SIGN */
- /*0xB5*/ 0x00B5, /* MICRO SIGN */
- /*0xB6*/ 0x2202, /* PARTIAL DIFFERENTIAL */
- /*0xB7*/ 0x2211, /* N-ARY SUMMATION */
- /*0xB8*/ 0x220F, /* N-ARY PRODUCT */
- /*0xB9*/ 0x03C0, /* GREEK SMALL LETTER PI */
- /*0xBA*/ 0x222B, /* INTEGRAL */
- /*0xBB*/ 0x00AA, /* FEMININE ORDINAL INDICATOR */
- /*0xBC*/ 0x00BA, /* MASCULINE ORDINAL INDICATOR */
- /*0xBD*/ 0x03A9, /* GREEK CAPITAL LETTER OMEGA */
- /*0xBE*/ 0x00E6, /* LATIN SMALL LETTER AE */
- /*0xBF*/ 0x00F8, /* LATIN SMALL LETTER O WITH STROKE */
- /*0xC0*/ 0x00BF, /* INVERTED QUESTION MARK */
- /*0xC1*/ 0x00A1, /* INVERTED EXCLAMATION MARK */
- /*0xC2*/ 0x00AC, /* NOT SIGN */
- /*0xC3*/ 0x221A, /* SQUARE ROOT */
- /*0xC4*/ 0x0192, /* LATIN SMALL LETTER F WITH HOOK */
- /*0xC5*/ 0x2248, /* ALMOST EQUAL TO */
- /*0xC6*/ 0x2206, /* INCREMENT */
- /*0xC7*/ 0x00AB, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
- /*0xC8*/ 0x00BB, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
- /*0xC9*/ 0x2026, /* HORIZONTAL ELLIPSIS */
- /*0xCA*/ 0x00A0, /* NO-BREAK SPACE */
- /*0xCB*/ 0x00C0, /* LATIN CAPITAL LETTER A WITH GRAVE */
- /*0xCC*/ 0x00C3, /* LATIN CAPITAL LETTER A WITH TILDE */
- /*0xCD*/ 0x00D5, /* LATIN CAPITAL LETTER O WITH TILDE */
- /*0xCE*/ 0x0152, /* LATIN CAPITAL LIGATURE OE */
- /*0xCF*/ 0x0153, /* LATIN SMALL LIGATURE OE */
- /*0xD0*/ 0x2013, /* EN DASH */
- /*0xD1*/ 0x2014, /* EM DASH */
- /*0xD2*/ 0x201C, /* LEFT DOUBLE QUOTATION MARK */
- /*0xD3*/ 0x201D, /* RIGHT DOUBLE QUOTATION MARK */
- /*0xD4*/ 0x2018, /* LEFT SINGLE QUOTATION MARK */
- /*0xD5*/ 0x2019, /* RIGHT SINGLE QUOTATION MARK */
- /*0xD6*/ 0x00F7, /* DIVISION SIGN */
- /*0xD7*/ 0x25CA, /* LOZENGE */
- /*0xD8*/ 0x00FF, /* LATIN SMALL LETTER Y WITH DIAERESIS */
- /*0xD9*/ 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAERESIS */
- /*0xDA*/ 0x2044, /* FRACTION SLASH */
- /*0xDB*/ 0x20AC, /* EURO SIGN */
- /*0xDC*/ 0x2039, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
- /*0xDD*/ 0x203A, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
- /*0xDE*/ 0xFB01, /* LATIN SMALL LIGATURE FI */
- /*0xDF*/ 0xFB02, /* LATIN SMALL LIGATURE FL */
- /*0xE0*/ 0x2021, /* DOUBLE DAGGER */
- /*0xE1*/ 0x00B7, /* MIDDLE DOT */
- /*0xE2*/ 0x201A, /* SINGLE LOW-9 QUOTATION MARK */
- /*0xE3*/ 0x201E, /* DOUBLE LOW-9 QUOTATION MARK */
- /*0xE4*/ 0x2030, /* PER MILLE SIGN */
- /*0xE5*/ 0x00C2, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
- /*0xE6*/ 0x00CA, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
- /*0xE7*/ 0x00C1, /* LATIN CAPITAL LETTER A WITH ACUTE */
- /*0xE8*/ 0x00CB, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
- /*0xE9*/ 0x00C8, /* LATIN CAPITAL LETTER E WITH GRAVE */
- /*0xEA*/ 0x00CD, /* LATIN CAPITAL LETTER I WITH ACUTE */
- /*0xEB*/ 0x00CE, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
- /*0xEC*/ 0x00CF, /* LATIN CAPITAL LETTER I WITH DIAERESIS */
- /*0xED*/ 0x00CC, /* LATIN CAPITAL LETTER I WITH GRAVE */
- /*0xEE*/ 0x00D3, /* LATIN CAPITAL LETTER O WITH ACUTE */
- /*0xEF*/ 0x00D4, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
- /*0xF0*/ 0xF8FF, /* Apple logo */
- /*0xF1*/ 0x00D2, /* LATIN CAPITAL LETTER O WITH GRAVE */
- /*0xF2*/ 0x00DA, /* LATIN CAPITAL LETTER U WITH ACUTE */
- /*0xF3*/ 0x00DB, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
- /*0xF4*/ 0x00D9, /* LATIN CAPITAL LETTER U WITH GRAVE */
- /*0xF5*/ 0x0131, /* LATIN SMALL LETTER DOTLESS I */
- /*0xF6*/ 0x02C6, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
- /*0xF7*/ 0x02DC, /* SMALL TILDE */
- /*0xF8*/ 0x00AF, /* MACRON */
- /*0xF9*/ 0x02D8, /* BREVE */
- /*0xFA*/ 0x02D9, /* DOT ABOVE */
- /*0xFB*/ 0x02DA, /* RING ABOVE */
- /*0xFC*/ 0x00B8, /* CEDILLA */
- /*0xFD*/ 0x02DD, /* DOUBLE ACUTE ACCENT */
- /*0xFE*/ 0x02DB, /* OGONEK */
- /*0xFF*/ 0x02C7, /* CARON */
-};
-
#if USE_ICONV
#include <iconv.h>
#endif
@@ -830,35 +696,6 @@ FcSfntNameTranscode (FT_SfntName *sname)
*u8 = '\0';
goto done;
}
- if (!strcmp (fromcode, FC_ENCODING_MAC_ROMAN))
- {
- FcChar8 *src = sname->string;
- int src_len = sname->string_len;
- int olen;
- FcChar8 *u8;
- FcChar32 ucs4;
-
- /*
- * Convert Latin1 to Utf8. Freed below
- */
- utf8 = malloc (src_len * 3 + 1);
- if (!utf8)
- return 0;
-
- u8 = utf8;
- while (src_len > 0)
- {
- ucs4 = *src++;
- if (ucs4 >= 128)
- ucs4 = fcMacRomanNonASCIIToUnicode[ucs4 - 128];
- src_len--;
- olen = FcUcs4ToUtf8 (ucs4, u8);
- u8 += olen;
- }
- *u8 = '\0';
- goto done;
- }
-
#if USE_ICONV
cd = iconv_open ("UTF-8", fromcode);
if (cd && cd != (iconv_t) (-1))
@@ -979,6 +816,76 @@ FcNoticeFoundry(const FT_String *notice)
return 0;
}
+static FcBool
+FcVendorMatch(const FT_Char vendor[4], const FT_Char *vendor_string)
+{
+ /* vendor is not necessarily NUL-terminated. */
+ int i, len;
+
+ len = strlen((char *) vendor_string);
+ if (memcmp(vendor, vendor_string, len) != 0)
+ return FcFalse;
+ for (i = len; i < 4; i++)
+ if (vendor[i] != ' ' && vendor[i] != '\0')
+ return FcFalse;
+ return FcTrue;
+}
+
+/* This table is partly taken from ttmkfdir by Joerg Pommnitz. */
+
+/* It should not contain useless entries (such as UNKN) nor duplicate
+ entries for padding both with spaces and NULs. */
+
+static const struct {
+ const FT_Char vendor[5];
+ const FcChar8 foundry[13];
+} FcVendorFoundries[] = {
+ { "ADBE", "adobe"},
+ { "AGFA", "agfa"},
+ { "ALTS", "altsys"},
+ { "APPL", "apple"},
+ { "ARPH", "arphic"},
+ { "ATEC", "alltype"},
+ { "B&H", "b&h"},
+ { "BITS", "bitstream"},
+ { "CANO", "cannon"},
+ { "CLM", "culmus"},
+ { "DYNA", "dynalab"},
+ { "EPSN", "epson"},
+ { "FJ", "fujitsu"},
+ { "IBM", "ibm"},
+ { "ITC", "itc"},
+ { "IMPR", "impress"},
+ { "LARA", "larabiefonts"},
+ { "LEAF", "interleaf"},
+ { "LETR", "letraset"},
+ { "LINO", "linotype"},
+ { "MACR", "macromedia"},
+ { "MONO", "monotype"},
+ { "MS", "microsoft"},
+ { "MT", "monotype"},
+ { "NEC", "nec"},
+ { "PARA", "paratype"},
+ { "QMSI", "qms"},
+ { "RICO", "ricoh"},
+ { "URW", "urw"},
+ { "Y&Y", "y&y"}
+};
+
+#define NUM_VENDOR_FOUNDRIES (int) (sizeof (FcVendorFoundries) / sizeof (FcVendorFoundries[0]))
+
+static const FcChar8 *
+FcVendorFoundry(const FT_Char vendor[4])
+{
+ int i;
+
+ if (vendor)
+ for(i = 0; i < NUM_VENDOR_FOUNDRIES; i++)
+ if (FcVendorMatch (vendor, FcVendorFoundries[i].vendor))
+ return FcVendorFoundries[i].foundry;
+ return 0;
+}
+
typedef struct _FcStringConst {
const FcChar8 *name;
int value;
@@ -1026,8 +933,6 @@ static const FcStringConst weightConsts[] = {
{ (FC8) "thin", FC_WEIGHT_THIN },
{ (FC8) "extralight", FC_WEIGHT_EXTRALIGHT },
{ (FC8) "ultralight", FC_WEIGHT_ULTRALIGHT },
- { (FC8) "demilight", FC_WEIGHT_DEMILIGHT },
- { (FC8) "semilight", FC_WEIGHT_SEMILIGHT },
{ (FC8) "light", FC_WEIGHT_LIGHT },
{ (FC8) "book", FC_WEIGHT_BOOK },
{ (FC8) "regular", FC_WEIGHT_REGULAR },
@@ -1170,16 +1075,9 @@ FcFreeTypeQueryFace (const FT_Face face,
#if 0
FcChar8 *family = 0;
#endif
- FcChar8 *complex_, *foundry_ = NULL;
+ FcChar8 *complex_;
const FcChar8 *foundry = 0;
int spacing;
-
- /* Support for glyph-variation named-instances. */
- FT_MM_Var *master = NULL;
- FT_Var_Named_Style *instance = NULL;
- double weight_mult = 1.0;
- double width_mult = 1.0;
-
TT_OS2 *os2;
#if HAVE_FT_GET_PS_FONT_INFO
PS_FontInfoRec psfontinfo;
@@ -1206,70 +1104,22 @@ FcFreeTypeQueryFace (const FT_Face face,
char psname[256];
const char *tmp;
- FcRange *r = NULL;
-
- FcBool symbol = FcFalse;
-
- FcInitDebug (); /* We might be called with no initizalization whatsoever. */
+ FcChar8 *hashstr = NULL;
+ FT_Error err;
+ FT_ULong len = 0, alen;
pat = FcPatternCreate ();
if (!pat)
goto bail0;
- {
- int has_outline = !!(face->face_flags & FT_FACE_FLAG_SCALABLE);
- int has_color = 0;
-
-#ifdef FT_FACE_FLAG_COLOR
- has_color = !!(face->face_flags & FT_FACE_FLAG_COLOR);
-#endif
-
- if (!FcPatternAddBool (pat, FC_OUTLINE, has_outline))
- goto bail1;
-
-#ifdef FT_FACE_FLAG_COLOR
- if (!FcPatternAddBool (pat, FC_COLOR, has_color))
- goto bail1;
-#endif
-
- /* All color fonts are designed to be scaled, even if they only have
- * bitmap strikes. Client is responsible to scale the bitmaps. This
- * is in constrast to non-color strikes... */
- if (!FcPatternAddBool (pat, FC_SCALABLE, has_outline || has_color))
- goto bail1;
- }
-
- if (id >> 16)
- {
- if (!FT_Get_MM_Var (face, &master))
- instance = &master->namedstyle[(id >> 16) - 1];
-
- if (instance)
- {
- /* Pull out weight and width from named-instance. */
- unsigned int i;
-
- for (i = 0; i < master->num_axis; i++)
- {
- double value = instance->coords[i] / (double) (1 << 16);
- double default_value = master->axis[i].def / (double) (1 << 16);
- double mult = value / default_value;
- //printf ("named-instance, axis %d tag %lx value %g\n", i, master->axis[i].tag, value);
- switch (master->axis[i].tag)
- {
- case FT_MAKE_TAG ('w','g','h','t'):
- weight_mult = mult;
- break;
+ if (!FcPatternAddBool (pat, FC_OUTLINE,
+ (face->face_flags & FT_FACE_FLAG_SCALABLE) != 0))
+ goto bail1;
- case FT_MAKE_TAG ('w','d','t','h'):
- width_mult = mult;
- break;
+ if (!FcPatternAddBool (pat, FC_SCALABLE,
+ (face->face_flags & FT_FACE_FLAG_SCALABLE) != 0))
+ goto bail1;
- /* TODO optical size! */
- }
- }
- }
- }
/*
* Get the OS/2 table
@@ -1285,15 +1135,7 @@ FcFreeTypeQueryFace (const FT_Face face,
*/
if (os2 && os2->version >= 0x0001 && os2->version != 0xffff)
- {
- if (os2->achVendID && os2->achVendID[0] != 0)
- {
- foundry_ = (FcChar8 *) malloc (sizeof (os2->achVendID) + 1);
- memcpy ((void *)foundry_, os2->achVendID, sizeof (os2->achVendID));
- foundry_[sizeof (os2->achVendID)] = 0;
- foundry = foundry_;
- }
- }
+ foundry = FcVendorFoundry(os2->achVendID);
if (FcDebug () & FC_DBG_SCANV)
printf ("\n");
@@ -1328,19 +1170,6 @@ FcFreeTypeQueryFace (const FT_Face face,
if (FT_Get_Sfnt_Name (face, snamei, &sname) != 0)
continue;
-
- if (instance)
- {
- /* For named-instances, we regular style nameIDs,
- * and map the instance's strid to FONT_SUBFAMILY. */
- if (sname.name_id == TT_NAME_ID_WWS_SUBFAMILY ||
- sname.name_id == TT_NAME_ID_PREFERRED_SUBFAMILY ||
- sname.name_id == TT_NAME_ID_FONT_SUBFAMILY)
- continue;
- if (sname.name_id == instance->strid)
- sname.name_id = TT_NAME_ID_FONT_SUBFAMILY;
- }
-
if (sname.name_id != nameid)
continue;
@@ -1454,10 +1283,10 @@ FcFreeTypeQueryFace (const FT_Face face,
free (utf8);
if (lang)
{
- /* pad lang list with 'und' to line up with elt */
+ /* pad lang list with 'xx' to line up with elt */
while (*nlangp < *np)
{
- if (!FcPatternAddString (pat, eltlang, (FcChar8 *) "und"))
+ if (!FcPatternAddString (pat, eltlang, (FcChar8 *) "xx"))
goto bail1;
++*nlangp;
}
@@ -1480,8 +1309,6 @@ FcFreeTypeQueryFace (const FT_Face face,
printf ("using FreeType family \"%s\"\n", face->family_name);
if (!FcPatternAddString (pat, FC_FAMILY, (FcChar8 *) face->family_name))
goto bail1;
- if (!FcPatternAddString (pat, FC_STYLELANG, (FcChar8 *) "en"))
- goto bail1;
++nfamily;
}
@@ -1492,12 +1319,10 @@ FcFreeTypeQueryFace (const FT_Face face,
printf ("using FreeType style \"%s\"\n", face->style_name);
if (!FcPatternAddString (pat, FC_STYLE, (FcChar8 *) face->style_name))
goto bail1;
- if (!FcPatternAddString (pat, FC_STYLELANG, (FcChar8 *) "en"))
- goto bail1;
++nstyle;
}
- if (!nfamily && file && *file)
+ if (!nfamily)
{
FcChar8 *start, *end;
FcChar8 *family;
@@ -1566,13 +1391,12 @@ FcFreeTypeQueryFace (const FT_Face face,
}
else
{
- strncpy (psname, tmp, 255);
- psname[255] = 0;
+ strcpy (psname, tmp);
}
if (!FcPatternAddString (pat, FC_POSTSCRIPT_NAME, (const FcChar8 *)psname))
goto bail1;
- if (file && *file && !FcPatternAddString (pat, FC_FILE, file))
+ if (!FcPatternAddString (pat, FC_FILE, file))
goto bail1;
if (!FcPatternAddInteger (pat, FC_INDEX, id))
@@ -1639,22 +1463,33 @@ FcFreeTypeQueryFace (const FT_Face face,
if (os2 && os2->version != 0xffff)
{
- weight = os2->usWeightClass;
- if (weight < 10 && weight_mult != 1.0)
- {
- /* Work around bad values by cleaning them up before
- * multiplying by weight_mult. */
- weight = FcWeightToOpenType (FcWeightFromOpenType (weight));
- }
- weight = FcWeightFromOpenType ((int) (weight * weight_mult + .5));
+ if (os2->usWeightClass == 0)
+ ;
+ else if (os2->usWeightClass < 150)
+ weight = FC_WEIGHT_THIN;
+ else if (os2->usWeightClass < 250)
+ weight = FC_WEIGHT_EXTRALIGHT;
+ else if (os2->usWeightClass < 350)
+ weight = FC_WEIGHT_LIGHT;
+ else if (os2->usWeightClass < 450)
+ weight = FC_WEIGHT_REGULAR;
+ else if (os2->usWeightClass < 550)
+ weight = FC_WEIGHT_MEDIUM;
+ else if (os2->usWeightClass < 650)
+ weight = FC_WEIGHT_SEMIBOLD;
+ else if (os2->usWeightClass < 750)
+ weight = FC_WEIGHT_BOLD;
+ else if (os2->usWeightClass < 850)
+ weight = FC_WEIGHT_EXTRABOLD;
+ else if (os2->usWeightClass < 925)
+ weight = FC_WEIGHT_BLACK;
+ else if (os2->usWeightClass < 1000)
+ weight = FC_WEIGHT_EXTRABLACK;
if ((FcDebug() & FC_DBG_SCANV) && weight != -1)
- printf ("\tos2 weight class %d multiplier %g maps to weight %d\n",
- os2->usWeightClass, weight_mult, weight);
+ printf ("\tos2 weight class %d maps to weight %d\n",
+ os2->usWeightClass, weight);
- /* TODO:
- * Add FcWidthFromOpenType and FcWidthToOpenType,
- * and apply width_mult post-conversion? */
- switch ((int) (os2->usWidthClass * width_mult + .5)) {
+ switch (os2->usWidthClass) {
case 1: width = FC_WIDTH_ULTRACONDENSED; break;
case 2: width = FC_WIDTH_EXTRACONDENSED; break;
case 3: width = FC_WIDTH_CONDENSED; break;
@@ -1666,8 +1501,8 @@ FcFreeTypeQueryFace (const FT_Face face,
case 9: width = FC_WIDTH_ULTRAEXPANDED; break;
}
if ((FcDebug() & FC_DBG_SCANV) && width != -1)
- printf ("\tos2 width class %d multiplier %g maps to width %d\n",
- os2->usWidthClass, width_mult, width);
+ printf ("\tos2 width class %d maps to width %d\n",
+ os2->usWidthClass, width);
}
if (os2 && (complex_ = FcFontCapabilities(face)))
{
@@ -1679,25 +1514,6 @@ FcFreeTypeQueryFace (const FT_Face face,
free (complex_);
}
-#if defined (HAVE_TT_OS2_USUPPEROPTICALPOINTSIZE) && defined (HAVE_TT_OS2_USLOWEROPTICALPOINTSIZE)
- if (os2 && os2->version >= 0x0005 && os2->version != 0xffff)
- {
- double lower_size, upper_size;
-
- /* usLowerPointSize and usUpperPointSize is actually twips */
- lower_size = os2->usLowerOpticalPointSize / 20.0L;
- upper_size = os2->usUpperOpticalPointSize / 20.0L;
-
- r = FcRangeCreateDouble (lower_size, upper_size);
- if (!FcPatternAddRange (pat, FC_SIZE, r))
- {
- FcRangeDestroy (r);
- goto bail1;
- }
- FcRangeDestroy (r);
- }
-#endif
-
/*
* Type 1: Check for FontInfo dictionary information
* Code from g2@magestudios.net (Gerard Escalante)
@@ -1770,7 +1586,7 @@ FcFreeTypeQueryFace (const FT_Face face,
}
if (width == -1 &&
FT_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
- prop.type == BDF_PROPERTY_TYPE_ATOM && prop.u.atom != NULL)
+ prop.type == BDF_PROPERTY_TYPE_ATOM)
{
width = FcIsWidth ((FcChar8 *) prop.u.atom);
if (FcDebug () & FC_DBG_SCANV)
@@ -1848,6 +1664,46 @@ FcFreeTypeQueryFace (const FT_Face face,
if (!FcPatternAddBool (pat, FC_DECORATIVE, decorative))
goto bail1;
+ err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len);
+ if (err == FT_Err_Ok)
+ {
+ char *fontdata;
+
+ alen = (len + 63) & ~63;
+ fontdata = malloc (alen);
+ if (!fontdata)
+ goto bail3;
+ err = FT_Load_Sfnt_Table (face, 0, 0, (FT_Byte *)fontdata, &len);
+ if (err != FT_Err_Ok)
+ {
+ free (fontdata);
+ goto bail3;
+ }
+ memset (&fontdata[len], 0, alen - len);
+ hashstr = FcHashGetSHA256DigestFromMemory (fontdata, len);
+ free (fontdata);
+ }
+ else if (err == FT_Err_Invalid_Face_Handle)
+ {
+ /* font may not support SFNT. falling back to
+ * read the font data from file directly
+ */
+ hashstr = FcHashGetSHA256DigestFromFile (file);
+ }
+ else
+ {
+ goto bail3;
+ }
+ if (hashstr)
+ {
+ if (!FcPatternAddString (pat, FC_HASH, hashstr))
+ {
+ free (hashstr);
+ goto bail1;
+ }
+ free (hashstr);
+ }
+bail3:
/*
* Compute the unicode coverage for the font
@@ -1856,16 +1712,11 @@ FcFreeTypeQueryFace (const FT_Face face,
if (!cs)
goto bail1;
- /* The FcFreeTypeCharSetAndSpacing() chose the encoding; test it for symbol. */
- symbol = face->charmap && face->charmap->encoding == FT_ENCODING_MS_SYMBOL;
- if (!FcPatternAddBool (pat, FC_SYMBOL, symbol))
- goto bail1;
-
#if HAVE_FT_GET_BDF_PROPERTY
/* For PCF fonts, override the computed spacing with the one from
the property */
if(FT_Get_BDF_Property(face, "SPACING", &prop) == 0 &&
- prop.type == BDF_PROPERTY_TYPE_ATOM && prop.u.atom != NULL) {
+ prop.type == BDF_PROPERTY_TYPE_ATOM) {
if(!strcmp(prop.u.atom, "c") || !strcmp(prop.u.atom, "C"))
spacing = FC_CHARCELL;
else if(!strcmp(prop.u.atom, "m") || !strcmp(prop.u.atom, "M"))
@@ -1893,18 +1744,9 @@ FcFreeTypeQueryFace (const FT_Face face,
if (!FcPatternAddCharSet (pat, FC_CHARSET, cs))
goto bail2;
- if (!symbol)
- {
- ls = FcFreeTypeLangSet (cs, exclusiveLang);
- if (!ls)
- goto bail2;
- }
- else
- {
- /* Symbol fonts don't cover any language, even though they
- * claim to support Latin1 range. */
- ls = FcLangSetCreate ();
- }
+ ls = FcFreeTypeLangSet (cs, exclusiveLang);
+ if (!ls)
+ goto bail2;
if (!FcPatternAddLangSet (pat, FC_LANG, ls))
{
@@ -1944,13 +1786,6 @@ FcFreeTypeQueryFace (const FT_Face face,
* Drop our reference to the charset
*/
FcCharSetDestroy (cs);
- if (foundry_)
- free (foundry_);
-
- if (master)
- {
- /* TODO: How to free master?! */
- }
return pat;
@@ -1958,8 +1793,6 @@ bail2:
FcCharSetDestroy (cs);
bail1:
FcPatternDestroy (pat);
- if (foundry_)
- free (foundry_);
bail0:
return NULL;
}
@@ -2000,12 +1833,282 @@ bail:
#warning "No FT_Get_Next_Char: Please install freetype version 2.1.0 or newer"
#endif
-static const FT_Encoding fcFontEncodings[] = {
- FT_ENCODING_UNICODE,
- FT_ENCODING_MS_SYMBOL
+typedef struct _FcCharEnt {
+ FcChar16 bmp;
+ unsigned char encode;
+} FcCharEnt;
+
+struct _FcCharMap {
+ const FcCharEnt *ent;
+ int nent;
+};
+
+typedef struct _FcFontDecode {
+ FT_Encoding encoding;
+ const FcCharMap *map;
+ FcChar32 max;
+} FcFontDecode;
+
+static const FcCharEnt AdobeSymbolEnt[] = {
+ { 0x0020, 0x20 }, /* SPACE # space */
+ { 0x0021, 0x21 }, /* EXCLAMATION MARK # exclam */
+ { 0x0023, 0x23 }, /* NUMBER SIGN # numbersign */
+ { 0x0025, 0x25 }, /* PERCENT SIGN # percent */
+ { 0x0026, 0x26 }, /* AMPERSAND # ampersand */
+ { 0x0028, 0x28 }, /* LEFT PARENTHESIS # parenleft */
+ { 0x0029, 0x29 }, /* RIGHT PARENTHESIS # parenright */
+ { 0x002B, 0x2B }, /* PLUS SIGN # plus */
+ { 0x002C, 0x2C }, /* COMMA # comma */
+ { 0x002E, 0x2E }, /* FULL STOP # period */
+ { 0x002F, 0x2F }, /* SOLIDUS # slash */
+ { 0x0030, 0x30 }, /* DIGIT ZERO # zero */
+ { 0x0031, 0x31 }, /* DIGIT ONE # one */
+ { 0x0032, 0x32 }, /* DIGIT TWO # two */
+ { 0x0033, 0x33 }, /* DIGIT THREE # three */
+ { 0x0034, 0x34 }, /* DIGIT FOUR # four */
+ { 0x0035, 0x35 }, /* DIGIT FIVE # five */
+ { 0x0036, 0x36 }, /* DIGIT SIX # six */
+ { 0x0037, 0x37 }, /* DIGIT SEVEN # seven */
+ { 0x0038, 0x38 }, /* DIGIT EIGHT # eight */
+ { 0x0039, 0x39 }, /* DIGIT NINE # nine */
+ { 0x003A, 0x3A }, /* COLON # colon */
+ { 0x003B, 0x3B }, /* SEMICOLON # semicolon */
+ { 0x003C, 0x3C }, /* LESS-THAN SIGN # less */
+ { 0x003D, 0x3D }, /* EQUALS SIGN # equal */
+ { 0x003E, 0x3E }, /* GREATER-THAN SIGN # greater */
+ { 0x003F, 0x3F }, /* QUESTION MARK # question */
+ { 0x005B, 0x5B }, /* LEFT SQUARE BRACKET # bracketleft */
+ { 0x005D, 0x5D }, /* RIGHT SQUARE BRACKET # bracketright */
+ { 0x005F, 0x5F }, /* LOW LINE # underscore */
+ { 0x007B, 0x7B }, /* LEFT CURLY BRACKET # braceleft */
+ { 0x007C, 0x7C }, /* VERTICAL LINE # bar */
+ { 0x007D, 0x7D }, /* RIGHT CURLY BRACKET # braceright */
+ { 0x00A0, 0x20 }, /* NO-BREAK SPACE # space */
+ { 0x00AC, 0xD8 }, /* NOT SIGN # logicalnot */
+ { 0x00B0, 0xB0 }, /* DEGREE SIGN # degree */
+ { 0x00B1, 0xB1 }, /* PLUS-MINUS SIGN # plusminus */
+ { 0x00B5, 0x6D }, /* MICRO SIGN # mu */
+ { 0x00D7, 0xB4 }, /* MULTIPLICATION SIGN # multiply */
+ { 0x00F7, 0xB8 }, /* DIVISION SIGN # divide */
+ { 0x0192, 0xA6 }, /* LATIN SMALL LETTER F WITH HOOK # florin */
+ { 0x0391, 0x41 }, /* GREEK CAPITAL LETTER ALPHA # Alpha */
+ { 0x0392, 0x42 }, /* GREEK CAPITAL LETTER BETA # Beta */
+ { 0x0393, 0x47 }, /* GREEK CAPITAL LETTER GAMMA # Gamma */
+ { 0x0394, 0x44 }, /* GREEK CAPITAL LETTER DELTA # Delta */
+ { 0x0395, 0x45 }, /* GREEK CAPITAL LETTER EPSILON # Epsilon */
+ { 0x0396, 0x5A }, /* GREEK CAPITAL LETTER ZETA # Zeta */
+ { 0x0397, 0x48 }, /* GREEK CAPITAL LETTER ETA # Eta */
+ { 0x0398, 0x51 }, /* GREEK CAPITAL LETTER THETA # Theta */
+ { 0x0399, 0x49 }, /* GREEK CAPITAL LETTER IOTA # Iota */
+ { 0x039A, 0x4B }, /* GREEK CAPITAL LETTER KAPPA # Kappa */
+ { 0x039B, 0x4C }, /* GREEK CAPITAL LETTER LAMDA # Lambda */
+ { 0x039C, 0x4D }, /* GREEK CAPITAL LETTER MU # Mu */
+ { 0x039D, 0x4E }, /* GREEK CAPITAL LETTER NU # Nu */
+ { 0x039E, 0x58 }, /* GREEK CAPITAL LETTER XI # Xi */
+ { 0x039F, 0x4F }, /* GREEK CAPITAL LETTER OMICRON # Omicron */
+ { 0x03A0, 0x50 }, /* GREEK CAPITAL LETTER PI # Pi */
+ { 0x03A1, 0x52 }, /* GREEK CAPITAL LETTER RHO # Rho */
+ { 0x03A3, 0x53 }, /* GREEK CAPITAL LETTER SIGMA # Sigma */
+ { 0x03A4, 0x54 }, /* GREEK CAPITAL LETTER TAU # Tau */
+ { 0x03A5, 0x55 }, /* GREEK CAPITAL LETTER UPSILON # Upsilon */
+ { 0x03A6, 0x46 }, /* GREEK CAPITAL LETTER PHI # Phi */
+ { 0x03A7, 0x43 }, /* GREEK CAPITAL LETTER CHI # Chi */
+ { 0x03A8, 0x59 }, /* GREEK CAPITAL LETTER PSI # Psi */
+ { 0x03A9, 0x57 }, /* GREEK CAPITAL LETTER OMEGA # Omega */
+ { 0x03B1, 0x61 }, /* GREEK SMALL LETTER ALPHA # alpha */
+ { 0x03B2, 0x62 }, /* GREEK SMALL LETTER BETA # beta */
+ { 0x03B3, 0x67 }, /* GREEK SMALL LETTER GAMMA # gamma */
+ { 0x03B4, 0x64 }, /* GREEK SMALL LETTER DELTA # delta */
+ { 0x03B5, 0x65 }, /* GREEK SMALL LETTER EPSILON # epsilon */
+ { 0x03B6, 0x7A }, /* GREEK SMALL LETTER ZETA # zeta */
+ { 0x03B7, 0x68 }, /* GREEK SMALL LETTER ETA # eta */
+ { 0x03B8, 0x71 }, /* GREEK SMALL LETTER THETA # theta */
+ { 0x03B9, 0x69 }, /* GREEK SMALL LETTER IOTA # iota */
+ { 0x03BA, 0x6B }, /* GREEK SMALL LETTER KAPPA # kappa */
+ { 0x03BB, 0x6C }, /* GREEK SMALL LETTER LAMDA # lambda */
+ { 0x03BC, 0x6D }, /* GREEK SMALL LETTER MU # mu */
+ { 0x03BD, 0x6E }, /* GREEK SMALL LETTER NU # nu */
+ { 0x03BE, 0x78 }, /* GREEK SMALL LETTER XI # xi */
+ { 0x03BF, 0x6F }, /* GREEK SMALL LETTER OMICRON # omicron */
+ { 0x03C0, 0x70 }, /* GREEK SMALL LETTER PI # pi */
+ { 0x03C1, 0x72 }, /* GREEK SMALL LETTER RHO # rho */
+ { 0x03C2, 0x56 }, /* GREEK SMALL LETTER FINAL SIGMA # sigma1 */
+ { 0x03C3, 0x73 }, /* GREEK SMALL LETTER SIGMA # sigma */
+ { 0x03C4, 0x74 }, /* GREEK SMALL LETTER TAU # tau */
+ { 0x03C5, 0x75 }, /* GREEK SMALL LETTER UPSILON # upsilon */
+ { 0x03C6, 0x66 }, /* GREEK SMALL LETTER PHI # phi */
+ { 0x03C7, 0x63 }, /* GREEK SMALL LETTER CHI # chi */
+ { 0x03C8, 0x79 }, /* GREEK SMALL LETTER PSI # psi */
+ { 0x03C9, 0x77 }, /* GREEK SMALL LETTER OMEGA # omega */
+ { 0x03D1, 0x4A }, /* GREEK THETA SYMBOL # theta1 */
+ { 0x03D2, 0xA1 }, /* GREEK UPSILON WITH HOOK SYMBOL # Upsilon1 */
+ { 0x03D5, 0x6A }, /* GREEK PHI SYMBOL # phi1 */
+ { 0x03D6, 0x76 }, /* GREEK PI SYMBOL # omega1 */
+ { 0x2022, 0xB7 }, /* BULLET # bullet */
+ { 0x2026, 0xBC }, /* HORIZONTAL ELLIPSIS # ellipsis */
+ { 0x2032, 0xA2 }, /* PRIME # minute */
+ { 0x2033, 0xB2 }, /* DOUBLE PRIME # second */
+ { 0x2044, 0xA4 }, /* FRACTION SLASH # fraction */
+ { 0x20AC, 0xA0 }, /* EURO SIGN # Euro */
+ { 0x2111, 0xC1 }, /* BLACK-LETTER CAPITAL I # Ifraktur */
+ { 0x2118, 0xC3 }, /* SCRIPT CAPITAL P # weierstrass */
+ { 0x211C, 0xC2 }, /* BLACK-LETTER CAPITAL R # Rfraktur */
+ { 0x2126, 0x57 }, /* OHM SIGN # Omega */
+ { 0x2135, 0xC0 }, /* ALEF SYMBOL # aleph */
+ { 0x2190, 0xAC }, /* LEFTWARDS ARROW # arrowleft */
+ { 0x2191, 0xAD }, /* UPWARDS ARROW # arrowup */
+ { 0x2192, 0xAE }, /* RIGHTWARDS ARROW # arrowright */
+ { 0x2193, 0xAF }, /* DOWNWARDS ARROW # arrowdown */
+ { 0x2194, 0xAB }, /* LEFT RIGHT ARROW # arrowboth */
+ { 0x21B5, 0xBF }, /* DOWNWARDS ARROW WITH CORNER LEFTWARDS # carriagereturn */
+ { 0x21D0, 0xDC }, /* LEFTWARDS DOUBLE ARROW # arrowdblleft */
+ { 0x21D1, 0xDD }, /* UPWARDS DOUBLE ARROW # arrowdblup */
+ { 0x21D2, 0xDE }, /* RIGHTWARDS DOUBLE ARROW # arrowdblright */
+ { 0x21D3, 0xDF }, /* DOWNWARDS DOUBLE ARROW # arrowdbldown */
+ { 0x21D4, 0xDB }, /* LEFT RIGHT DOUBLE ARROW # arrowdblboth */
+ { 0x2200, 0x22 }, /* FOR ALL # universal */
+ { 0x2202, 0xB6 }, /* PARTIAL DIFFERENTIAL # partialdiff */
+ { 0x2203, 0x24 }, /* THERE EXISTS # existential */
+ { 0x2205, 0xC6 }, /* EMPTY SET # emptyset */
+ { 0x2206, 0x44 }, /* INCREMENT # Delta */
+ { 0x2207, 0xD1 }, /* NABLA # gradient */
+ { 0x2208, 0xCE }, /* ELEMENT OF # element */
+ { 0x2209, 0xCF }, /* NOT AN ELEMENT OF # notelement */
+ { 0x220B, 0x27 }, /* CONTAINS AS MEMBER # suchthat */
+ { 0x220F, 0xD5 }, /* N-ARY PRODUCT # product */
+ { 0x2211, 0xE5 }, /* N-ARY SUMMATION # summation */
+ { 0x2212, 0x2D }, /* MINUS SIGN # minus */
+ { 0x2215, 0xA4 }, /* DIVISION SLASH # fraction */
+ { 0x2217, 0x2A }, /* ASTERISK OPERATOR # asteriskmath */
+ { 0x221A, 0xD6 }, /* SQUARE ROOT # radical */
+ { 0x221D, 0xB5 }, /* PROPORTIONAL TO # proportional */
+ { 0x221E, 0xA5 }, /* INFINITY # infinity */
+ { 0x2220, 0xD0 }, /* ANGLE # angle */
+ { 0x2227, 0xD9 }, /* LOGICAL AND # logicaland */
+ { 0x2228, 0xDA }, /* LOGICAL OR # logicalor */
+ { 0x2229, 0xC7 }, /* INTERSECTION # intersection */
+ { 0x222A, 0xC8 }, /* UNION # union */
+ { 0x222B, 0xF2 }, /* INTEGRAL # integral */
+ { 0x2234, 0x5C }, /* THEREFORE # therefore */
+ { 0x223C, 0x7E }, /* TILDE OPERATOR # similar */
+ { 0x2245, 0x40 }, /* APPROXIMATELY EQUAL TO # congruent */
+ { 0x2248, 0xBB }, /* ALMOST EQUAL TO # approxequal */
+ { 0x2260, 0xB9 }, /* NOT EQUAL TO # notequal */
+ { 0x2261, 0xBA }, /* IDENTICAL TO # equivalence */
+ { 0x2264, 0xA3 }, /* LESS-THAN OR EQUAL TO # lessequal */
+ { 0x2265, 0xB3 }, /* GREATER-THAN OR EQUAL TO # greaterequal */
+ { 0x2282, 0xCC }, /* SUBSET OF # propersubset */
+ { 0x2283, 0xC9 }, /* SUPERSET OF # propersuperset */
+ { 0x2284, 0xCB }, /* NOT A SUBSET OF # notsubset */
+ { 0x2286, 0xCD }, /* SUBSET OF OR EQUAL TO # reflexsubset */
+ { 0x2287, 0xCA }, /* SUPERSET OF OR EQUAL TO # reflexsuperset */
+ { 0x2295, 0xC5 }, /* CIRCLED PLUS # circleplus */
+ { 0x2297, 0xC4 }, /* CIRCLED TIMES # circlemultiply */
+ { 0x22A5, 0x5E }, /* UP TACK # perpendicular */
+ { 0x22C5, 0xD7 }, /* DOT OPERATOR # dotmath */
+ { 0x2320, 0xF3 }, /* TOP HALF INTEGRAL # integraltp */
+ { 0x2321, 0xF5 }, /* BOTTOM HALF INTEGRAL # integralbt */
+ { 0x2329, 0xE1 }, /* LEFT-POINTING ANGLE BRACKET # angleleft */
+ { 0x232A, 0xF1 }, /* RIGHT-POINTING ANGLE BRACKET # angleright */
+ { 0x25CA, 0xE0 }, /* LOZENGE # lozenge */
+ { 0x2660, 0xAA }, /* BLACK SPADE SUIT # spade */
+ { 0x2663, 0xA7 }, /* BLACK CLUB SUIT # club */
+ { 0x2665, 0xA9 }, /* BLACK HEART SUIT # heart */
+ { 0x2666, 0xA8 }, /* BLACK DIAMOND SUIT # diamond */
+ { 0xF6D9, 0xD3 }, /* COPYRIGHT SIGN SERIF # copyrightserif (CUS) */
+ { 0xF6DA, 0xD2 }, /* REGISTERED SIGN SERIF # registerserif (CUS) */
+ { 0xF6DB, 0xD4 }, /* TRADE MARK SIGN SERIF # trademarkserif (CUS) */
+ { 0xF8E5, 0x60 }, /* RADICAL EXTENDER # radicalex (CUS) */
+ { 0xF8E6, 0xBD }, /* VERTICAL ARROW EXTENDER # arrowvertex (CUS) */
+ { 0xF8E7, 0xBE }, /* HORIZONTAL ARROW EXTENDER # arrowhorizex (CUS) */
+ { 0xF8E8, 0xE2 }, /* REGISTERED SIGN SANS SERIF # registersans (CUS) */
+ { 0xF8E9, 0xE3 }, /* COPYRIGHT SIGN SANS SERIF # copyrightsans (CUS) */
+ { 0xF8EA, 0xE4 }, /* TRADE MARK SIGN SANS SERIF # trademarksans (CUS) */
+ { 0xF8EB, 0xE6 }, /* LEFT PAREN TOP # parenlefttp (CUS) */
+ { 0xF8EC, 0xE7 }, /* LEFT PAREN EXTENDER # parenleftex (CUS) */
+ { 0xF8ED, 0xE8 }, /* LEFT PAREN BOTTOM # parenleftbt (CUS) */
+ { 0xF8EE, 0xE9 }, /* LEFT SQUARE BRACKET TOP # bracketlefttp (CUS) */
+ { 0xF8EF, 0xEA }, /* LEFT SQUARE BRACKET EXTENDER # bracketleftex (CUS) */
+ { 0xF8F0, 0xEB }, /* LEFT SQUARE BRACKET BOTTOM # bracketleftbt (CUS) */
+ { 0xF8F1, 0xEC }, /* LEFT CURLY BRACKET TOP # bracelefttp (CUS) */
+ { 0xF8F2, 0xED }, /* LEFT CURLY BRACKET MID # braceleftmid (CUS) */
+ { 0xF8F3, 0xEE }, /* LEFT CURLY BRACKET BOTTOM # braceleftbt (CUS) */
+ { 0xF8F4, 0xEF }, /* CURLY BRACKET EXTENDER # braceex (CUS) */
+ { 0xF8F5, 0xF4 }, /* INTEGRAL EXTENDER # integralex (CUS) */
+ { 0xF8F6, 0xF6 }, /* RIGHT PAREN TOP # parenrighttp (CUS) */
+ { 0xF8F7, 0xF7 }, /* RIGHT PAREN EXTENDER # parenrightex (CUS) */
+ { 0xF8F8, 0xF8 }, /* RIGHT PAREN BOTTOM # parenrightbt (CUS) */
+ { 0xF8F9, 0xF9 }, /* RIGHT SQUARE BRACKET TOP # bracketrighttp (CUS) */
+ { 0xF8FA, 0xFA }, /* RIGHT SQUARE BRACKET EXTENDER # bracketrightex (CUS) */
+ { 0xF8FB, 0xFB }, /* RIGHT SQUARE BRACKET BOTTOM # bracketrightbt (CUS) */
+ { 0xF8FC, 0xFC }, /* RIGHT CURLY BRACKET TOP # bracerighttp (CUS) */
+ { 0xF8FD, 0xFD }, /* RIGHT CURLY BRACKET MID # bracerightmid (CUS) */
+ { 0xF8FE, 0xFE }, /* RIGHT CURLY BRACKET BOTTOM # bracerightbt (CUS) */
};
-#define NUM_DECODE (int) (sizeof (fcFontEncodings) / sizeof (fcFontEncodings[0]))
+static const FcCharMap AdobeSymbol = {
+ AdobeSymbolEnt,
+ sizeof (AdobeSymbolEnt) / sizeof (AdobeSymbolEnt[0]),
+};
+
+static const FcFontDecode fcFontDecoders[] = {
+ { ft_encoding_unicode, 0, (1 << 21) - 1 },
+ { ft_encoding_symbol, &AdobeSymbol, (1 << 16) - 1 },
+};
+
+#define NUM_DECODE (int) (sizeof (fcFontDecoders) / sizeof (fcFontDecoders[0]))
+
+static const FcChar32 prefer_unicode[] = {
+ 0x20ac, /* EURO SIGN */
+};
+
+#define NUM_PREFER_UNICODE (int) (sizeof (prefer_unicode) / sizeof (prefer_unicode[0]))
+
+FcChar32
+FcFreeTypeUcs4ToPrivate (FcChar32 ucs4, const FcCharMap *map)
+{
+ int low, high, mid;
+ FcChar16 bmp;
+
+ low = 0;
+ high = map->nent - 1;
+ if (ucs4 < map->ent[low].bmp || map->ent[high].bmp < ucs4)
+ return ~0;
+ while (low <= high)
+ {
+ mid = (high + low) >> 1;
+ bmp = map->ent[mid].bmp;
+ if (ucs4 == bmp)
+ return (FT_ULong) map->ent[mid].encode;
+ if (ucs4 < bmp)
+ high = mid - 1;
+ else
+ low = mid + 1;
+ }
+ return ~0;
+}
+
+FcChar32
+FcFreeTypePrivateToUcs4 (FcChar32 private, const FcCharMap *map)
+{
+ int i;
+
+ for (i = 0; i < map->nent; i++)
+ if (map->ent[i].encode == private)
+ return (FcChar32) map->ent[i].bmp;
+ return ~0;
+}
+
+const FcCharMap *
+FcFreeTypeGetPrivateMap (FT_Encoding encoding)
+{
+ int i;
+
+ for (i = 0; i < NUM_DECODE; i++)
+ if (fcFontDecoders[i].encoding == encoding)
+ return fcFontDecoders[i].map;
+ return 0;
+}
#include "../fc-glyphname/fcglyphname.h"
@@ -2134,6 +2237,8 @@ FcFreeTypeCharIndex (FT_Face face, FcChar32 ucs4)
{
int initial, offset, decode;
FT_UInt glyphindex;
+ FcChar32 charcode;
+ int p;
initial = 0;
@@ -2146,39 +2251,37 @@ FcFreeTypeCharIndex (FT_Face face, FcChar32 ucs4)
if (face->charmap)
{
for (; initial < NUM_DECODE; initial++)
- if (fcFontEncodings[initial] == face->charmap->encoding)
+ if (fcFontDecoders[initial].encoding == face->charmap->encoding)
break;
if (initial == NUM_DECODE)
initial = 0;
}
+ for (p = 0; p < NUM_PREFER_UNICODE; p++)
+ if (ucs4 == prefer_unicode[p])
+ {
+ initial = 0;
+ break;
+ }
/*
* Check each encoding for the glyph, starting with the current one
*/
for (offset = 0; offset < NUM_DECODE; offset++)
{
decode = (initial + offset) % NUM_DECODE;
- if (!face->charmap || face->charmap->encoding != fcFontEncodings[decode])
- if (FT_Select_Charmap (face, fcFontEncodings[decode]) != 0)
+ if (!face->charmap || face->charmap->encoding != fcFontDecoders[decode].encoding)
+ if (FT_Select_Charmap (face, fcFontDecoders[decode].encoding) != 0)
continue;
- glyphindex = FT_Get_Char_Index (face, (FT_ULong) ucs4);
- if (glyphindex)
- return glyphindex;
- if (ucs4 < 0x100 && face->charmap &&
- face->charmap->encoding == FT_ENCODING_MS_SYMBOL)
+ if (fcFontDecoders[decode].map)
{
- /* For symbol-encoded OpenType fonts, we duplicate the
- * U+F000..F0FF range at U+0000..U+00FF. That's what
- * Windows seems to do, and that's hinted about at:
- * http://www.microsoft.com/typography/otspec/recom.htm
- * under "Non-Standard (Symbol) Fonts".
- *
- * See thread with subject "Webdings and other MS symbol
- * fonts don't display" on mailing list from May 2015.
- */
- glyphindex = FT_Get_Char_Index (face, (FT_ULong) ucs4 + 0xF000);
- if (glyphindex)
- return glyphindex;
+ charcode = FcFreeTypeUcs4ToPrivate (ucs4, fcFontDecoders[decode].map);
+ if (charcode == ~0U)
+ continue;
}
+ else
+ charcode = ucs4;
+ glyphindex = FT_Get_Char_Index (face, (FT_ULong) charcode);
+ if (glyphindex)
+ return glyphindex;
}
#if HAVE_FT_HAS_PS_GLYPH_NAMES
/*
@@ -2269,7 +2372,9 @@ FcFreeTypeCharSetAndSpacingForSize (FT_Face face, FcBlanks *blanks, int *spacing
#endif
FcCharSet *fcs;
FcCharLeaf *leaf;
+ const FcCharMap *map;
int o;
+ int i;
FT_UInt glyph;
FT_Pos advance, advance_one = 0, advance_two = 0;
FcBool has_advance = FcFalse, fixed_advance = FcTrue, dual_advance = FcFalse;
@@ -2292,9 +2397,62 @@ FcFreeTypeCharSetAndSpacingForSize (FT_Face face, FcBlanks *blanks, int *spacing
#endif
for (o = 0; o < NUM_DECODE; o++)
{
- if (FT_Select_Charmap (face, fcFontEncodings[o]) != 0)
+ if (FT_Select_Charmap (face, fcFontDecoders[o].encoding) != 0)
continue;
+ map = fcFontDecoders[o].map;
+ if (map)
+ {
+ /*
+ * Non-Unicode tables are easy; there's a list of all possible
+ * characters
+ */
+ for (i = 0; i < map->nent; i++)
+ {
+ ucs4 = map->ent[i].bmp;
+ glyph = FT_Get_Char_Index (face, map->ent[i].encode);
+ if (glyph &&
+ FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike))
+ {
+ /*
+ * ignore glyphs with zero advance. They’re
+ * combining characters, and while their behaviour
+ * isn’t well defined for monospaced applications in
+ * Unicode, there are many fonts which include
+ * zero-width combining characters in otherwise
+ * monospaced fonts.
+ */
+ if (advance)
+ {
+ if (!has_advance)
+ {
+ has_advance = FcTrue;
+ advance_one = advance;
+ }
+ else if (!APPROXIMATELY_EQUAL (advance, advance_one))
+ {
+ if (fixed_advance)
+ {
+ dual_advance = FcTrue;
+ fixed_advance = FcFalse;
+ advance_two = advance;
+ }
+ else if (!APPROXIMATELY_EQUAL (advance, advance_two))
+ dual_advance = FcFalse;
+ }
+ }
+ leaf = FcCharSetFindLeafCreate (fcs, ucs4);
+ if (!leaf)
+ goto bail1;
+ leaf->map[(ucs4 & 0xff) >> 5] |= (1 << (ucs4 & 0x1f));
+#ifdef CHECK
+ if (ucs4 > font_max)
+ font_max = ucs4;
+#endif
+ }
+ }
+ }
+ else
{
page = ~0;
leaf = NULL;
@@ -2339,23 +2497,6 @@ FcFreeTypeCharSetAndSpacingForSize (FT_Face face, FcBlanks *blanks, int *spacing
}
ucs4 = FT_Get_Next_Char (face, ucs4, &glyph);
}
- if (fcFontEncodings[o] == FT_ENCODING_MS_SYMBOL)
- {
- /* For symbol-encoded OpenType fonts, we duplicate the
- * U+F000..F0FF range at U+0000..U+00FF. That's what
- * Windows seems to do, and that's hinted about at:
- * http://www.microsoft.com/typography/otspec/recom.htm
- * under "Non-Standard (Symbol) Fonts".
- *
- * See thread with subject "Webdings and other MS symbol
- * fonts don't display" on mailing list from May 2015.
- */
- for (ucs4 = 0xF000; ucs4 < 0xF100; ucs4++)
- {
- if (FcCharSetHasChar (fcs, ucs4))
- FcCharSetAddChar (fcs, ucs4 - 0xF000);
- }
- }
#ifdef CHECK
for (ucs4 = 0; ucs4 < 0x10000; ucs4++)
{
@@ -2370,8 +2511,6 @@ FcFreeTypeCharSetAndSpacingForSize (FT_Face face, FcBlanks *blanks, int *spacing
}
#endif
}
-
- break;
}
#if HAVE_FT_HAS_PS_GLYPH_NAMES
/*
diff --git a/chromium/third_party/fontconfig/src/src/fcfs.c b/chromium/third_party/fontconfig/src/src/fcfs.c
index 21c6c7cbb0e..941abba8f40 100644
--- a/chromium/third_party/fontconfig/src/src/fcfs.c
+++ b/chromium/third_party/fontconfig/src/src/fcfs.c
@@ -122,28 +122,6 @@ FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s)
return s_serialize;
}
-
-FcFontSet *
-FcFontSetDeserialize (const FcFontSet *set)
-{
- int i;
- FcFontSet *new = FcFontSetCreate ();
-
- if (!new)
- return NULL;
- for (i = 0; i < set->nfont; i++)
- {
- if (!FcFontSetAdd (new, FcPatternDuplicate (FcFontSetFont (set, i))))
- goto bail;
- }
-
- return new;
-bail:
- FcFontSetDestroy (new);
-
- return NULL;
-}
-
#define __fcfs__
#include "fcaliastail.h"
#undef __fcfs__
diff --git a/chromium/third_party/fontconfig/src/src/fchash.c b/chromium/third_party/fontconfig/src/src/fchash.c
new file mode 100644
index 00000000000..38300028c8e
--- /dev/null
+++ b/chromium/third_party/fontconfig/src/src/fchash.c
@@ -0,0 +1,317 @@
+/*
+ * fontconfig/src/fchash.c
+ *
+ * Copyright © 2003 Keith Packard
+ * Copyright © 2013 Red Hat, Inc.
+ * Red Hat Author(s): Akira TAGOH
+ *
+ * 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 the author(s) not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. The authors make no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE AUTHOR(S) 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.
+ */
+#include "fcint.h"
+#include <stdio.h>
+#include <string.h>
+
+#define ROTRN(w, v, n) ((((FcChar32)v) >> n) | (((FcChar32)v) << (w - n)))
+#define ROTR32(v, n) ROTRN(32, v, n)
+#define SHR(v, n) (v >> n)
+#define Ch(x, y, z) ((x & y) ^ (~x & z))
+#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
+#define SS0(x) (ROTR32(x, 2) ^ ROTR32(x, 13) ^ ROTR32(x, 22))
+#define SS1(x) (ROTR32(x, 6) ^ ROTR32(x, 11) ^ ROTR32(x, 25))
+#define ss0(x) (ROTR32(x, 7) ^ ROTR32(x, 18) ^ SHR(x, 3))
+#define ss1(x) (ROTR32(x, 17) ^ ROTR32(x, 19) ^ SHR(x, 10))
+
+
+static FcChar32 *
+FcHashInitSHA256Digest (void)
+{
+ int i;
+ static const FcChar32 h[] = {
+ 0x6a09e667UL, 0xbb67ae85UL, 0x3c6ef372UL, 0xa54ff53aUL,
+ 0x510e527fUL, 0x9b05688cUL, 0x1f83d9abUL, 0x5be0cd19UL
+ };
+ FcChar32 *ret = malloc (sizeof (FcChar32) * 8);
+
+ if (!ret)
+ return NULL;
+
+ for (i = 0; i < 8; i++)
+ ret[i] = h[i];
+
+ return ret;
+}
+
+static void
+FcHashComputeSHA256Digest (FcChar32 *hash,
+ const char *block)
+{
+ static const FcChar32 k[] = {
+ 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
+ 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
+ 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
+ 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
+ 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
+ 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
+ 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
+ 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,
+ 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
+ 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
+ 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
+ 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
+ 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
+ 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
+ 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
+ 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
+ };
+ FcChar32 w[64], i, j, t1, t2;
+ FcChar32 a, b, c, d, e, f, g, h;
+
+#define H(n) (hash[n])
+
+ a = H(0);
+ b = H(1);
+ c = H(2);
+ d = H(3);
+ e = H(4);
+ f = H(5);
+ g = H(6);
+ h = H(7);
+
+ for (i = 0; i < 16; i++)
+ {
+ j = (block[(i * 4) + 0] & 0xff) << (8 * 3);
+ j |= (block[(i * 4) + 1] & 0xff) << (8 * 2);
+ j |= (block[(i * 4) + 2] & 0xff) << (8 * 1);
+ j |= (block[(i * 4) + 3] & 0xff);
+ w[i] = j;
+ }
+ for (i = 16; i < 64; i++)
+ w[i] = ss1(w[i - 2]) + w[i - 7] + ss0(w[i - 15]) + w[i - 16];
+
+ for (i = 0; i < 64; i++)
+ {
+ t1 = h + SS1(e) + Ch(e, f, g) + k[i] + w[i];
+ t2 = SS0(a) + Maj(a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + t1;
+ d = c;
+ c = b;
+ b = a;
+ a = t1 + t2;
+ }
+
+ H(0) += a;
+ H(1) += b;
+ H(2) += c;
+ H(3) += d;
+ H(4) += e;
+ H(5) += f;
+ H(6) += g;
+ H(7) += h;
+
+#undef H
+}
+
+static FcChar8 *
+FcHashSHA256ToString (FcChar32 *hash)
+{
+ FcChar8 *ret = NULL;
+ static const char hex[] = "0123456789abcdef";
+ int i, j;
+
+ if (hash)
+ {
+ ret = malloc (sizeof (FcChar8) * (8 * 8 + 7 + 1));
+ if (!ret)
+ return NULL;
+ memcpy (ret, "sha256:", 7);
+#define H(n) hash[n]
+ for (i = 0; i < 8; i++)
+ {
+ FcChar32 v = H(i);
+
+ for (j = 0; j < 8; j++)
+ ret[7 + (i * 8) + j] = hex[(v >> (28 - j * 4)) & 0xf];
+ }
+ ret[7 + i * 8] = 0;
+#undef H
+ free (hash);
+ }
+
+ return ret;
+}
+
+FcChar8 *
+FcHashGetSHA256Digest (const FcChar8 *input_strings,
+ size_t len)
+{
+ size_t i, round_len = len / 64;
+ char block[64];
+ FcChar32 *ret = FcHashInitSHA256Digest ();
+
+ if (!ret)
+ return NULL;
+
+ for (i = 0; i < round_len; i++)
+ {
+ FcHashComputeSHA256Digest (ret, (const char *)&input_strings[i * 64]);
+ }
+ /* padding */
+ if ((len % 64) != 0)
+ memcpy (block, &input_strings[len / 64], len % 64);
+ memset (&block[len % 64], 0, 64 - (len % 64));
+ block[len % 64] = 0x80;
+ if ((64 - (len % 64)) < 9)
+ {
+ /* process a block once */
+ FcHashComputeSHA256Digest (ret, block);
+ memset (block, 0, 64);
+ }
+ /* set input size at the end */
+ len *= 8;
+ block[63 - 0] = (uint64_t)len & 0xff;
+ block[63 - 1] = ((uint64_t)len >> 8) & 0xff;
+ block[63 - 2] = ((uint64_t)len >> 16) & 0xff;
+ block[63 - 3] = ((uint64_t)len >> 24) & 0xff;
+ block[63 - 4] = ((uint64_t)len >> 32) & 0xff;
+ block[63 - 5] = ((uint64_t)len >> 40) & 0xff;
+ block[63 - 6] = ((uint64_t)len >> 48) & 0xff;
+ block[63 - 7] = ((uint64_t)len >> 56) & 0xff;
+ FcHashComputeSHA256Digest (ret, block);
+
+ return FcHashSHA256ToString (ret);
+}
+
+FcChar8 *
+FcHashGetSHA256DigestFromFile (const FcChar8 *filename)
+{
+ FILE *fp = fopen ((const char *)filename, "rb");
+ char ibuf[64];
+ FcChar32 *ret;
+ size_t len;
+ struct stat st;
+
+ if (!fp)
+ return NULL;
+
+ if (FcStat (filename, &st))
+ goto bail0;
+
+ ret = FcHashInitSHA256Digest ();
+ if (!ret)
+ goto bail0;
+
+ while (!feof (fp))
+ {
+ if ((len = fread (ibuf, sizeof (char), 64, fp)) < 64)
+ {
+ uint64_t v;
+
+ /* add a padding */
+ memset (&ibuf[len], 0, 64 - len);
+ ibuf[len] = 0x80;
+ if ((64 - len) < 9)
+ {
+ /* process a block once */
+ FcHashComputeSHA256Digest (ret, ibuf);
+ memset (ibuf, 0, 64);
+ }
+ /* set input size at the end */
+ v = (long)st.st_size * 8;
+ ibuf[63 - 0] = v & 0xff;
+ ibuf[63 - 1] = (v >> 8) & 0xff;
+ ibuf[63 - 2] = (v >> 16) & 0xff;
+ ibuf[63 - 3] = (v >> 24) & 0xff;
+ ibuf[63 - 4] = (v >> 32) & 0xff;
+ ibuf[63 - 5] = (v >> 40) & 0xff;
+ ibuf[63 - 6] = (v >> 48) & 0xff;
+ ibuf[63 - 7] = (v >> 56) & 0xff;
+ FcHashComputeSHA256Digest (ret, ibuf);
+ break;
+ }
+ else
+ {
+ FcHashComputeSHA256Digest (ret, ibuf);
+ }
+ }
+ fclose (fp);
+
+ return FcHashSHA256ToString (ret);
+
+bail0:
+ fclose (fp);
+
+ return NULL;
+}
+
+FcChar8 *
+FcHashGetSHA256DigestFromMemory (const char *fontdata,
+ size_t length)
+{
+ char ibuf[64];
+ FcChar32 *ret;
+ size_t i = 0;
+
+ ret = FcHashInitSHA256Digest ();
+ if (!ret)
+ return NULL;
+
+ while (i <= length)
+ {
+ if ((length - i) < 64)
+ {
+ uint64_t v;
+ size_t n;
+
+ /* add a padding */
+ n = length - i;
+ if (n > 0)
+ memcpy (ibuf, &fontdata[i], n);
+ memset (&ibuf[n], 0, 64 - n);
+ ibuf[n] = 0x80;
+ if ((64 - n) < 9)
+ {
+ /* process a block once */
+ FcHashComputeSHA256Digest (ret, ibuf);
+ memset (ibuf, 0, 64);
+ }
+ /* set input size at the end */
+ v = length * 8;
+ ibuf[63 - 0] = v & 0xff;
+ ibuf[63 - 1] = (v >> 8) & 0xff;
+ ibuf[63 - 2] = (v >> 16) & 0xff;
+ ibuf[63 - 3] = (v >> 24) & 0xff;
+ ibuf[63 - 4] = (v >> 32) & 0xff;
+ ibuf[63 - 5] = (v >> 40) & 0xff;
+ ibuf[63 - 6] = (v >> 48) & 0xff;
+ ibuf[63 - 7] = (v >> 56) & 0xff;
+ FcHashComputeSHA256Digest (ret, ibuf);
+ break;
+ }
+ else
+ {
+ FcHashComputeSHA256Digest (ret, &fontdata[i]);
+ }
+ i += 64;
+ }
+
+ return FcHashSHA256ToString (ret);
+}
diff --git a/chromium/third_party/fontconfig/src/src/fcinit.c b/chromium/third_party/fontconfig/src/src/fcinit.c
index 5e7c2f15662..b8d5d060c71 100644
--- a/chromium/third_party/fontconfig/src/src/fcinit.c
+++ b/chromium/third_party/fontconfig/src/src/fcinit.c
@@ -36,14 +36,13 @@
#endif
static FcConfig *
-FcInitFallbackConfig (const FcChar8 *sysroot)
+FcInitFallbackConfig (void)
{
FcConfig *config;
config = FcConfigCreate ();
if (!config)
goto bail0;
- FcConfigSetSysRoot (config, sysroot);
if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS))
goto bail1;
if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR))
@@ -79,35 +78,20 @@ FcInitLoadOwnConfig (FcConfig *config)
if (!FcConfigParseAndLoad (config, 0, FcTrue))
{
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
- FcConfig *fallback = FcInitFallbackConfig (sysroot);
-
FcConfigDestroy (config);
-
- return fallback;
+ return FcInitFallbackConfig ();
}
if (config->cacheDirs && config->cacheDirs->num == 0)
{
FcChar8 *prefix, *p;
size_t plen;
- FcBool have_own = FcFalse;
- char *env_file, *env_path;
- env_file = getenv ("FONTCONFIG_FILE");
- env_path = getenv ("FONTCONFIG_PATH");
- if ((env_file != NULL && env_file[0] != 0) ||
- (env_path != NULL && env_path[0] != 0))
- have_own = FcTrue;
-
- if (!have_own)
- {
- fprintf (stderr,
- "Fontconfig warning: no <cachedir> elements found. Check configuration.\n");
- fprintf (stderr,
- "Fontconfig warning: adding <cachedir>%s</cachedir>\n",
- FC_CACHEDIR);
- }
+ fprintf (stderr,
+ "Fontconfig warning: no <cachedir> elements found. Check configuration.\n");
+ fprintf (stderr,
+ "Fontconfig warning: adding <cachedir>%s</cachedir>\n",
+ FC_CACHEDIR);
prefix = FcConfigXdgCacheHome ();
if (!prefix)
goto bail;
@@ -118,26 +102,19 @@ FcInitLoadOwnConfig (FcConfig *config)
prefix = p;
memcpy (&prefix[plen], FC_DIR_SEPARATOR_S "fontconfig", 11);
prefix[plen + 11] = 0;
- if (!have_own)
- fprintf (stderr,
- "Fontconfig warning: adding <cachedir prefix=\"xdg\">fontconfig</cachedir>\n");
+ fprintf (stderr,
+ "Fontconfig warning: adding <cachedir prefix=\"xdg\">fontconfig</cachedir>\n");
if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR) ||
!FcConfigAddCacheDir (config, (FcChar8 *) prefix))
{
- FcConfig *fallback;
- const FcChar8 *sysroot;
-
bail:
- sysroot = FcConfigGetSysRoot (config);
fprintf (stderr,
"Fontconfig error: out of memory");
if (prefix)
FcStrFree (prefix);
- fallback = FcInitFallbackConfig (sysroot);
FcConfigDestroy (config);
-
- return fallback;
+ return FcInitFallbackConfig ();
}
FcStrFree (prefix);
}
@@ -192,8 +169,6 @@ FcFini (void)
FcConfigFini ();
FcCacheFini ();
FcDefaultFini ();
- FcObjectFini ();
- FcConfigPathFini ();
}
/*
@@ -203,18 +178,11 @@ FcBool
FcInitReinitialize (void)
{
FcConfig *config;
- FcBool ret;
config = FcInitLoadConfigAndFonts ();
if (!config)
return FcFalse;
- ret = FcConfigSetCurrent (config);
- /* FcConfigSetCurrent() increases the refcount.
- * decrease it here to avoid the memory leak.
- */
- FcConfigDestroy (config);
-
- return ret;
+ return FcConfigSetCurrent (config);
}
FcBool
@@ -223,8 +191,6 @@ FcInitBringUptoDate (void)
FcConfig *config = FcConfigGetCurrent ();
time_t now;
- if (!config)
- return FcFalse;
/*
* rescanInterval == 0 disables automatic up to date
*/
diff --git a/chromium/third_party/fontconfig/src/src/fcint.h b/chromium/third_party/fontconfig/src/src/fcint.h
index ac911ad4076..362ea6f99ad 100644
--- a/chromium/third_party/fontconfig/src/src/fcint.h
+++ b/chromium/third_party/fontconfig/src/src/fcint.h
@@ -38,8 +38,6 @@
#include <assert.h>
#include <errno.h>
#include <limits.h>
-#include <float.h>
-#include <math.h>
#include <unistd.h>
#include <stddef.h>
#include <sys/types.h>
@@ -87,7 +85,6 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA;
#define FC_DBG_SCANV 256
#define FC_DBG_CONFIG 1024
#define FC_DBG_LANGSET 2048
-#define FC_DBG_MATCH2 4096
#define _FC_ASSERT_STATIC1(_line, _cond) typedef int _static_assert_on_line_##_line##_failed[(_cond)?1:-1] FC_UNUSED
#define _FC_ASSERT_STATIC0(_line, _cond) _FC_ASSERT_STATIC1 (_line, (_cond))
@@ -164,7 +161,6 @@ typedef enum _FcValueBinding {
#define FcValueString(v) FcPointerMember(v,u.s,FcChar8)
#define FcValueCharSet(v) FcPointerMember(v,u.c,const FcCharSet)
#define FcValueLangSet(v) FcPointerMember(v,u.l,const FcLangSet)
-#define FcValueRange(v) FcPointerMember(v,u.r,const FcRange)
typedef struct _FcValueList *FcValueListPtr;
@@ -248,26 +244,20 @@ typedef struct _FcExprName {
FcMatchKind kind;
} FcExprName;
-struct _FcRange {
- double begin;
- double end;
-};
-
typedef struct _FcExpr {
FcOp op;
union {
- int ival;
- double dval;
- const FcChar8 *sval;
- FcExprMatrix *mexpr;
- FcBool bval;
- FcCharSet *cval;
- FcLangSet *lval;
- FcRange *rval;
-
- FcExprName name;
- const FcChar8 *constant;
+ int ival;
+ double dval;
+ const FcChar8 *sval;
+ FcExprMatrix *mexpr;
+ FcBool bval;
+ FcCharSet *cval;
+ FcLangSet *lval;
+
+ FcExprName name;
+ const FcChar8 *constant;
struct {
struct _FcExpr *left, *right;
} tree;
@@ -339,19 +329,11 @@ struct _FcCharSet {
FcCharLeaf))
#define FcCharSetNumbers(c) FcOffsetMember(c,numbers_offset,FcChar16)
-#define FCSS_DEFAULT 0 /* default behavior */
-#define FCSS_ALLOW_DUPLICATES 1 /* allows for duplicate strings in the set */
-#define FCSS_GROW_BY_64 2 /* grows buffer by 64 elements instead of 1 */
-
-#define FcStrSetHasControlBit(s,c) (s->control & c)
-#define FcStrSetHasControlBits(s,c) ( (c) == (s->control & (c)) )
-
struct _FcStrSet {
FcRef ref; /* reference count */
int num;
int size;
FcChar8 **strs;
- unsigned int control; /* control bits for set behavior */
};
struct _FcStrList {
@@ -370,14 +352,13 @@ typedef struct _FcStrBuf {
struct _FcCache {
unsigned int magic; /* FC_CACHE_MAGIC_MMAP or FC_CACHE_ALLOC */
- int version; /* FC_CACHE_VERSION_NUMBER */
+ int version; /* FC_CACHE_CONTENT_VERSION */
intptr_t size; /* size of file */
intptr_t dir; /* offset to dir name */
intptr_t dirs; /* offset to subdirs */
int dirs_count; /* number of subdir strings */
intptr_t set; /* offset to font set */
int checksum; /* checksum of directory state */
- int64_t checksum_nano; /* checksum of directory state */
};
#undef FcCacheDir
@@ -463,6 +444,7 @@ typedef struct _FcCaseFold {
#define FC_CACHE_MAGIC_MMAP 0xFC02FC04
#define FC_CACHE_MAGIC_ALLOC 0xFC02FC05
+#define FC_CACHE_CONTENT_VERSION 4
struct _FcAtomic {
FcChar8 *file; /* original file name */
@@ -550,6 +532,13 @@ typedef struct _FcFileTime {
typedef struct _FcCharMap FcCharMap;
+typedef struct _FcRange FcRange;
+
+struct _FcRange {
+ FcChar32 begin;
+ FcChar32 end;
+};
+
typedef struct _FcStatFS FcStatFS;
struct _FcStatFS {
@@ -578,9 +567,6 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config);
FcPrivate FcCache *
FcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, struct stat *dir_stat, FcStrSet *dirs);
-FcPrivate FcCache *
-FcDirCacheRebuild (FcCache *cache, struct stat *dir_stat, FcStrSet *dirs);
-
FcPrivate FcBool
FcDirCacheWrite (FcCache *cache, FcConfig *config);
@@ -599,13 +585,6 @@ FcCacheFini (void);
FcPrivate void
FcDirCacheReference (FcCache *cache, int nref);
-FcPrivate int
-FcDirCacheLock (const FcChar8 *dir,
- FcConfig *config);
-
-FcPrivate void
-FcDirCacheUnlock (int fd);
-
/* fccfg.c */
FcPrivate FcBool
@@ -719,9 +698,6 @@ FcPrivate FcLangSet *
FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l);
/* fccharset.c */
-FcPrivate FcCharSet *
-FcCharSetPromote (FcValuePromotionBuffer *vbuf);
-
FcPrivate void
FcLangCharSetPopulate (void);
@@ -810,9 +786,6 @@ FcSubstPrint (const FcSubst *subst);
FcPrivate void
FcCharSetPrint (const FcCharSet *c);
-FcPrivate void
-FcPatternPrint2 (FcPattern *p1, FcPattern *p2, const FcObjectSet *os);
-
extern FcPrivate int FcDebugVal;
#define FcDebug() (FcDebugVal)
@@ -865,8 +838,17 @@ FcFontSetSerializeAlloc (FcSerialize *serialize, const FcFontSet *s);
FcPrivate FcFontSet *
FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s);
-FcPrivate FcFontSet *
-FcFontSetDeserialize (const FcFontSet *set);
+/* fchash.c */
+FcPrivate FcChar8 *
+FcHashGetSHA256Digest (const FcChar8 *input_strings,
+ size_t len);
+
+FcPrivate FcChar8 *
+FcHashGetSHA256DigestFromFile (const FcChar8 *filename);
+
+FcPrivate FcChar8 *
+FcHashGetSHA256DigestFromMemory (const char *fontdata,
+ size_t length);
/* fcinit.c */
FcPrivate FcConfig *
@@ -877,9 +859,6 @@ FcInitLoadOwnConfigAndFonts (FcConfig *config);
/* fcxml.c */
FcPrivate void
-FcConfigPathFini (void);
-
-FcPrivate void
FcTestDestroy (FcTest *test);
FcPrivate void
@@ -1023,9 +1002,6 @@ FcPatternObjectAddBool (FcPattern *p, FcObject object, FcBool b);
FcPrivate FcBool
FcPatternObjectAddLangSet (FcPattern *p, FcObject object, const FcLangSet *ls);
-FcPrivate FcBool
-FcPatternObjectAddRange (FcPattern *p, FcObject object, const FcRange *r);
-
FcPrivate FcResult
FcPatternObjectGetInteger (const FcPattern *p, FcObject object, int n, int *i);
@@ -1047,15 +1023,9 @@ FcPatternObjectGetBool (const FcPattern *p, FcObject object, int n, FcBool *b);
FcPrivate FcResult
FcPatternObjectGetLangSet (const FcPattern *p, FcObject object, int n, FcLangSet **ls);
-FcPrivate FcResult
-FcPatternObjectGetRange (const FcPattern *p, FcObject object, int id, FcRange **r);
-
FcPrivate FcBool
FcPatternAppend (FcPattern *p, FcPattern *s);
-FcPrivate int
-FcPatternPosition (const FcPattern *p, const char *object);
-
FcPrivate FcChar32
FcStringHash (const FcChar8 *s);
@@ -1080,26 +1050,6 @@ extern FcPrivate const FcMatrix FcIdentityMatrix;
FcPrivate void
FcMatrixFree (FcMatrix *mat);
-/* fcrange.c */
-
-FcPrivate FcRange *
-FcRangePromote (double v, FcValuePromotionBuffer *vbuf);
-
-FcPrivate FcBool
-FcRangeIsInRange (const FcRange *a, const FcRange *b);
-
-FcPrivate FcBool
-FcRangeCompare (FcOp op, const FcRange *a, const FcRange *b);
-
-FcPrivate FcChar32
-FcRangeHash (const FcRange *r);
-
-FcPrivate FcBool
-FcRangeSerializeAlloc (FcSerialize *serialize, const FcRange *r);
-
-FcPrivate FcRange *
-FcRangeSerialize (FcSerialize *serialize, const FcRange *r);
-
/* fcstat.c */
FcPrivate int
@@ -1115,9 +1065,6 @@ FcPrivate FcBool
FcIsFsMtimeBroken (const FcChar8 *dir);
/* fcstr.c */
-FcPrivate FcStrSet *
-FcStrSetCreateEx (unsigned int control);
-
FcPrivate FcBool
FcStrSetAddLangs (FcStrSet *strs, const char *languages);
@@ -1151,6 +1098,12 @@ FcStrCmpIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
FcPrivate int
FcStrCmpIgnoreCaseAndDelims (const FcChar8 *s1, const FcChar8 *s2, const FcChar8 *delims);
+FcPrivate FcBool
+FcStrRegexCmp (const FcChar8 *s, const FcChar8 *regex);
+
+FcPrivate FcBool
+FcStrRegexCmpIgnoreCase (const FcChar8 *s, const FcChar8 *regex);
+
FcPrivate const FcChar8 *
FcStrContainsIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
@@ -1191,9 +1144,6 @@ FcStrSerialize (FcSerialize *serialize, const FcChar8 *str);
/* fcobjs.c */
-FcPrivate void
-FcObjectFini (void);
-
FcPrivate FcObject
FcObjectLookupIdByName (const char *str);
diff --git a/chromium/third_party/fontconfig/src/src/fclang.c b/chromium/third_party/fontconfig/src/src/fclang.c
index b1fd1bcae67..9f685f6fdff 100644
--- a/chromium/third_party/fontconfig/src/src/fclang.c
+++ b/chromium/third_party/fontconfig/src/src/fclang.c
@@ -720,22 +720,19 @@ FcLangSetPromote (const FcChar8 *lang, FcValuePromotionBuffer *vbuf)
memset (buf->ls.map, '\0', sizeof (buf->ls.map));
buf->ls.map_size = NUM_LANG_SET_MAP;
buf->ls.extra = 0;
- if (lang)
+ id = FcLangSetIndex (lang);
+ if (id > 0)
{
- id = FcLangSetIndex (lang);
- if (id > 0)
- {
- FcLangSetBitSet (&buf->ls, id);
- }
- else
- {
- buf->ls.extra = &buf->strs;
- buf->strs.num = 1;
- buf->strs.size = 1;
- buf->strs.strs = &buf->str;
- FcRefInit (&buf->strs.ref, 1);
- buf->str = (FcChar8 *) lang;
- }
+ FcLangSetBitSet (&buf->ls, id);
+ }
+ else
+ {
+ buf->ls.extra = &buf->strs;
+ buf->strs.num = 1;
+ buf->strs.size = 1;
+ buf->strs.strs = &buf->str;
+ FcRefInit (&buf->strs.ref, 1);
+ buf->str = (FcChar8 *) lang;
}
return &buf->ls;
}
diff --git a/chromium/third_party/fontconfig/src/src/fclist.c b/chromium/third_party/fontconfig/src/src/fclist.c
index d7e8fc09106..a365098a4d7 100644
--- a/chromium/third_party/fontconfig/src/src/fclist.c
+++ b/chromium/third_party/fontconfig/src/src/fclist.c
@@ -270,11 +270,9 @@ FcListValueHash (FcValue *value)
case FcTypeCharSet:
return FcCharSetCount (v.u.c);
case FcTypeFTFace:
- return (intptr_t) v.u.f;
+ return (long) v.u.f;
case FcTypeLangSet:
return FcLangSetHash (v.u.l);
- case FcTypeRange:
- return FcRangeHash (v.u.r);
}
return 0;
}
diff --git a/chromium/third_party/fontconfig/src/src/fcmatch.c b/chromium/third_party/fontconfig/src/src/fcmatch.c
index 40efbd3f67b..627aa1a1696 100644
--- a/chromium/third_party/fontconfig/src/src/fcmatch.c
+++ b/chromium/third_party/fontconfig/src/src/fcmatch.c
@@ -189,49 +189,6 @@ FcCompareSize (FcValue *value1, FcValue *value2)
}
static double
-FcCompareSizeRange (FcValue *v1, FcValue *v2)
-{
- FcValue value1 = FcValueCanonicalize (v1);
- FcValue value2 = FcValueCanonicalize (v2);
- FcRange *r1 = NULL, *r2 = NULL;
- double ret = -1.0;
-
- switch ((int) value1.type) {
- case FcTypeDouble:
- r1 = FcRangeCreateDouble (value1.u.d, value1.u.d);
- break;
- case FcTypeRange:
- r1 = FcRangeCopy (value1.u.r);
- break;
- default:
- goto bail;
- }
- switch ((int) value2.type) {
- case FcTypeDouble:
- r2 = FcRangeCreateDouble (value2.u.d, value2.u.d);
- break;
- case FcTypeRange:
- r2 = FcRangeCopy (value2.u.r);
- break;
- default:
- goto bail;
- }
-
- if (FcRangeIsInRange (r1, r2))
- ret = 0.0;
- else
- ret = FC_MIN (fabs (r1->end - r2->begin), fabs (r1->begin - r2->end));
-
-bail:
- if (r1)
- FcRangeDestroy (r1);
- if (r2)
- FcRangeDestroy (r2);
-
- return ret;
-}
-
-static double
FcCompareFilename (FcValue *v1, FcValue *v2)
{
const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2);
@@ -245,8 +202,16 @@ FcCompareFilename (FcValue *v1, FcValue *v2)
return 3.0;
}
+static double
+FcCompareHash (FcValue *v1, FcValue *v2)
+{
+ const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2);
-/* Define priorities to -1 for objects that don't have a compare function. */
+ /* Do not match an empty string */
+ if (!s1 || !s2 || !s1[0] || !s2[0])
+ return 1.0;
+ return FcCompareString (v1, v2);
+}
#define PRI_NULL(n) \
PRI_ ## n ## _STRONG = -1, \
@@ -261,7 +226,7 @@ FcCompareFilename (FcValue *v1, FcValue *v2)
#define PRI_FcCompareCharSet(n) PRI1(n)
#define PRI_FcCompareLang(n) PRI1(n)
#define PRI_FcComparePostScript(n) PRI1(n)
-#define PRI_FcCompareSizeRange(n) PRI1(n)
+#define PRI_FcCompareHash(n) PRI1(n)
#define FC_OBJECT(NAME, Type, Cmp) PRI_##Cmp(NAME)
@@ -271,9 +236,6 @@ typedef enum _FcMatcherPriorityDummy {
#undef FC_OBJECT
-
-/* Canonical match priority order. */
-
#undef PRI1
#define PRI1(n) \
PRI_ ## n, \
@@ -281,10 +243,10 @@ typedef enum _FcMatcherPriorityDummy {
PRI_ ## n ## _WEAK = PRI_ ## n
typedef enum _FcMatcherPriority {
+ PRI1(HASH),
PRI1(FILE),
PRI1(FONTFORMAT),
PRI1(SCALABLE),
- PRI1(COLOR),
PRI1(FOUNDRY),
PRI1(CHARSET),
PRI_FAMILY_STRONG,
@@ -292,9 +254,7 @@ typedef enum _FcMatcherPriority {
PRI1(LANG),
PRI_FAMILY_WEAK,
PRI_POSTSCRIPT_NAME_WEAK,
- PRI1(SYMBOL),
PRI1(SPACING),
- PRI1(SIZE),
PRI1(PIXEL_SIZE),
PRI1(STYLE),
PRI1(SLANT),
@@ -377,7 +337,7 @@ FcCompareValueList (FcObject object,
best = 1e99;
bestStrong = 1e99;
bestWeak = 1e99;
- j = 0;
+ j = 1;
for (v1 = v1orig; v1; v1 = FcValueListNext(v1))
{
for (v2 = v2orig, k = 0; v2; v2 = FcValueListNext(v2), k++)
@@ -485,7 +445,7 @@ FcFontRenderPrepare (FcConfig *config,
{
FcPattern *new;
int i;
- FcPatternElt *fe, *pe;
+ FcPatternElt *fe, *pe, *fel, *pel;
FcValue v;
FcResult result;
@@ -510,25 +470,36 @@ FcFontRenderPrepare (FcConfig *config,
fe->object == FC_STYLE_OBJECT ||
fe->object == FC_FULLNAME_OBJECT)
{
- FcPatternElt *fel, *pel;
-
FC_ASSERT_STATIC ((FC_FAMILY_OBJECT + 1) == FC_FAMILYLANG_OBJECT);
FC_ASSERT_STATIC ((FC_STYLE_OBJECT + 1) == FC_STYLELANG_OBJECT);
FC_ASSERT_STATIC ((FC_FULLNAME_OBJECT + 1) == FC_FULLNAMELANG_OBJECT);
fel = FcPatternObjectFindElt (font, fe->object + 1);
pel = FcPatternObjectFindElt (pat, fe->object + 1);
+ }
+ else
+ {
+ fel = NULL;
+ pel = NULL;
+ }
+ pe = FcPatternObjectFindElt (pat, fe->object);
+ if (pe)
+ {
+ const FcMatcher *match = FcObjectToMatcher (pe->object, FcFalse);
+ if (!FcCompareValueList (pe->object, match,
+ FcPatternEltValues(pe),
+ FcPatternEltValues(fe), &v, NULL, NULL, &result))
+ {
+ FcPatternDestroy (new);
+ return NULL;
+ }
if (fel && pel)
{
- /* The font has name languages, and pattern asks for specific language(s).
- * Match on language and and prefer that result.
- * Note: Currently the code only give priority to first matching language.
- */
int n = 1, j;
FcValueListPtr l1, l2, ln = NULL, ll = NULL;
- const FcMatcher *match = FcObjectToMatcher (pel->object, FcTrue);
+ match = FcObjectToMatcher (pel->object, FcTrue);
if (!FcCompareValueList (pel->object, match,
FcPatternEltValues (pel),
FcPatternEltValues (fel), NULL, NULL, &n, &result))
@@ -571,10 +542,9 @@ FcFontRenderPrepare (FcConfig *config,
}
else if (fel)
{
- /* Pattern doesn't ask for specific language. Copy all for name and
- * lang. */
FcValueListPtr l1, l2;
+ copy_lang:
l1 = FcValueListDuplicate (FcPatternEltValues (fe));
l2 = FcValueListDuplicate (FcPatternEltValues (fel));
FcPatternObjectListAdd (new, fe->object, l1, FcFalse);
@@ -582,23 +552,12 @@ FcFontRenderPrepare (FcConfig *config,
continue;
}
- }
-
- pe = FcPatternObjectFindElt (pat, fe->object);
- if (pe)
- {
- const FcMatcher *match = FcObjectToMatcher (pe->object, FcFalse);
- if (!FcCompareValueList (pe->object, match,
- FcPatternEltValues(pe),
- FcPatternEltValues(fe), &v, NULL, NULL, &result))
- {
- FcPatternDestroy (new);
- return NULL;
- }
FcPatternObjectAdd (new, fe->object, v, FcFalse);
}
else
{
+ if (fel)
+ goto copy_lang;
FcPatternObjectListAdd (new, fe->object,
FcValueListDuplicate (FcPatternEltValues (fe)),
FcTrue);
@@ -689,47 +648,6 @@ FcFontSetMatchInternal (FcFontSet **sets,
printf ("\n");
FcPatternPrint (best);
}
- if (FcDebug () & FC_DBG_MATCH2)
- {
- char *env = getenv ("FC_DBG_MATCH_FILTER");
- FcObjectSet *os = NULL;
-
- if (env)
- {
- char *ss, *s;
- char *p;
- FcBool f = FcTrue;
-
- ss = s = strdup (env);
- os = FcObjectSetCreate ();
- while (f)
- {
- size_t len;
- char *x;
-
- if (!(p = strchr (s, ',')))
- {
- f = FcFalse;
- len = strlen (s) + 1;
- }
- else
- {
- len = (p - s) + 1;
- }
- x = malloc (sizeof (char) * len);
- strncpy (x, s, len - 1);
- x[len - 1] = 0;
- if (FcObjectFromName (x) > 0)
- FcObjectSetAdd (os, x);
- s = p + 1;
- free (x);
- }
- free (ss);
- }
- FcPatternPrint2 (p, best, os);
- if (os)
- FcObjectSetDestroy (os);
- }
/* assuming that 'result' is initialized with FcResultNoMatch
* outside this function */
if (best)
@@ -825,7 +743,6 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
{
FcBool ret = FcFalse;
FcCharSet *cs;
- int i;
cs = 0;
if (trim || csp)
@@ -835,7 +752,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
goto bail;
}
- for (i = 0; i < nnode; i++)
+ while (nnode--)
{
FcSortNode *node = *n++;
FcBool adds_chars = FcFalse;
@@ -859,7 +776,7 @@ FcSortWalk (FcSortNode **n, int nnode, FcFontSet *fs, FcCharSet **csp, FcBool tr
* If this font isn't a subset of the previous fonts,
* add it to the list
*/
- if (!i || !trim || adds_chars)
+ if (!trim || adds_chars)
{
FcPatternReference (node->pattern);
if (FcDebug () & FC_DBG_MATCHV)
diff --git a/chromium/third_party/fontconfig/src/src/fcname.c b/chromium/third_party/fontconfig/src/src/fcname.c
index 8be36c70c1c..712b2fad36c 100644
--- a/chromium/third_party/fontconfig/src/src/fcname.c
+++ b/chromium/third_party/fontconfig/src/src/fcname.c
@@ -87,12 +87,6 @@ FcObjectValidType (FcObject object, FcType type)
if (type == FcTypeLangSet || type == FcTypeString)
return FcTrue;
break;
- case FcTypeRange:
- if (type == FcTypeRange ||
- type == FcTypeDouble ||
- type == FcTypeInteger)
- return FcTrue;
- break;
default:
if (type == t->type)
return FcTrue;
@@ -138,8 +132,6 @@ static const FcConstant _FcBaseConstants[] = {
{ (FcChar8 *) "thin", "weight", FC_WEIGHT_THIN, },
{ (FcChar8 *) "extralight", "weight", FC_WEIGHT_EXTRALIGHT, },
{ (FcChar8 *) "ultralight", "weight", FC_WEIGHT_EXTRALIGHT, },
- { (FcChar8 *) "demilight", "weight", FC_WEIGHT_DEMILIGHT, },
- { (FcChar8 *) "semilight", "weight", FC_WEIGHT_DEMILIGHT, },
{ (FcChar8 *) "light", "weight", FC_WEIGHT_LIGHT, },
{ (FcChar8 *) "book", "weight", FC_WEIGHT_BOOK, },
{ (FcChar8 *) "regular", "weight", FC_WEIGHT_REGULAR, },
@@ -281,8 +273,6 @@ FcNameConvert (FcType type, FcChar8 *string)
{
FcValue v;
FcMatrix m;
- double b, e;
- char *p;
v.type = type;
switch ((int) v.type) {
@@ -317,20 +307,6 @@ FcNameConvert (FcType type, FcChar8 *string)
if (!v.u.l)
v.type = FcTypeVoid;
break;
- case FcTypeRange:
- if (sscanf ((char *) string, "[%lg %lg)", &b, &e) != 2)
- {
- v.u.d = strtod ((char *) string, &p);
- if (p != NULL && p[0] != 0)
- {
- v.type = FcTypeVoid;
- break;
- }
- v.type = FcTypeDouble;
- }
- else
- v.u.r = FcRangeCreateDouble (b, e);
- break;
default:
break;
}
@@ -444,8 +420,6 @@ FcNameParse (const FcChar8 *name)
if ((c = FcNameGetConstant (save)))
{
t = FcNameGetObjectType ((char *) c->object);
- if (t == NULL)
- goto bail2;
switch ((int) t->type) {
case FcTypeInteger:
case FcTypeDouble:
@@ -525,9 +499,6 @@ FcNameUnparseValue (FcStrBuf *buf,
return FcNameUnparseLangSet (buf, v.u.l);
case FcTypeFTFace:
return FcTrue;
- case FcTypeRange:
- sprintf ((char *) temp, "[%g %g)", v.u.r->begin, v.u.r->end);
- return FcNameUnparseString (buf, temp, 0);
}
return FcFalse;
}
@@ -560,13 +531,12 @@ FcNameUnparse (FcPattern *pat)
FcChar8 *
FcNameUnparseEscaped (FcPattern *pat, FcBool escape)
{
- FcStrBuf buf, buf2;
- FcChar8 buf_static[8192], buf2_static[256];
+ FcStrBuf buf;
+ FcChar8 buf_static[8192];
int i;
FcPatternElt *e;
FcStrBufInit (&buf, buf_static, sizeof (buf_static));
- FcStrBufInit (&buf2, buf2_static, sizeof (buf2_static));
e = FcPatternObjectFindElt (pat, FC_FAMILY_OBJECT);
if (e)
{
@@ -576,17 +546,10 @@ FcNameUnparseEscaped (FcPattern *pat, FcBool escape)
e = FcPatternObjectFindElt (pat, FC_SIZE_OBJECT);
if (e)
{
- FcChar8 *p;
-
- if (!FcNameUnparseString (&buf2, (FcChar8 *) "-", 0))
+ if (!FcNameUnparseString (&buf, (FcChar8 *) "-", 0))
goto bail0;
- if (!FcNameUnparseValueList (&buf2, FcPatternEltValues(e), escape ? (FcChar8 *) FC_ESCAPE_FIXED : 0))
+ if (!FcNameUnparseValueList (&buf, FcPatternEltValues(e), escape ? (FcChar8 *) FC_ESCAPE_FIXED : 0))
goto bail0;
- p = FcStrBufDoneStatic (&buf2);
- FcStrBufDestroy (&buf2);
- if (strlen ((const char *)p) > 1)
- if (!FcStrBufString (&buf, p))
- goto bail0;
}
for (i = 0; i < NUM_OBJECT_TYPES; i++)
{
diff --git a/chromium/third_party/fontconfig/src/src/fcobjs.c b/chromium/third_party/fontconfig/src/src/fcobjs.c
index 16ff31c4789..bad9824d461 100644
--- a/chromium/third_party/fontconfig/src/src/fcobjs.c
+++ b/chromium/third_party/fontconfig/src/src/fcobjs.c
@@ -44,28 +44,6 @@ struct FcObjectOtherTypeInfo {
FcObject id;
} *other_types;
-void
-FcObjectFini (void)
-{
- struct FcObjectOtherTypeInfo *ots, *ot;
-
-retry:
- ots = fc_atomic_ptr_get (&other_types);
- if (!ots)
- return;
- if (!fc_atomic_ptr_cmpexch (&other_types, ots, NULL))
- goto retry;
-
- while (ots)
- {
- ot = ots->next;
- if (ots->object.object)
- free (ots->object.object);
- free (ots);
- ots = ot;
- }
-}
-
static FcObjectType *
_FcObjectLookupOtherTypeByName (const char *str, FcObject *id)
{
@@ -84,19 +62,12 @@ retry:
if (!ot)
return NULL;
- ot->object.object = (char *) FcStrdup (str);
+ ot->object.object = (const char *) FcStrdup (str);
ot->object.type = FcTypeUnknown;
ot->id = fc_atomic_int_add (next_id, +1);
- if (ot->id < (FC_MAX_BASE_OBJECT + FC_EXT_OBJ_INDEX))
- {
- fprintf (stderr, "Fontconfig error: No object ID to assign\n");
- abort ();
- }
ot->next = ots;
if (!fc_atomic_ptr_cmpexch (&other_types, ots, ot)) {
- if (ot->object.object)
- free (ot->object.object);
free (ot);
goto retry;
}
diff --git a/chromium/third_party/fontconfig/src/src/fcobjs.h b/chromium/third_party/fontconfig/src/src/fcobjs.h
index 1fc4f656b8e..87c7319e39a 100644
--- a/chromium/third_party/fontconfig/src/src/fcobjs.h
+++ b/chromium/third_party/fontconfig/src/src/fcobjs.h
@@ -1,26 +1,3 @@
-/*
- * fontconfig/src/fcobjs.h
- *
- * Copyright © 2000 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
/* DON'T REORDER! The order is part of the cache signature. */
FC_OBJECT (FAMILY, FcTypeString, FcCompareFamily)
FC_OBJECT (FAMILYLANG, FcTypeString, NULL)
@@ -31,7 +8,7 @@ FC_OBJECT (FULLNAMELANG, FcTypeString, NULL)
FC_OBJECT (SLANT, FcTypeInteger, FcCompareNumber)
FC_OBJECT (WEIGHT, FcTypeInteger, FcCompareNumber)
FC_OBJECT (WIDTH, FcTypeInteger, FcCompareNumber)
-FC_OBJECT (SIZE, FcTypeRange, FcCompareSizeRange)
+FC_OBJECT (SIZE, FcTypeDouble, NULL)
FC_OBJECT (ASPECT, FcTypeDouble, NULL)
FC_OBJECT (PIXEL_SIZE, FcTypeDouble, FcCompareSize)
FC_OBJECT (SPACING, FcTypeInteger, FcCompareNumber)
@@ -44,7 +21,7 @@ FC_OBJECT (AUTOHINT, FcTypeBool, NULL)
FC_OBJECT (GLOBAL_ADVANCE, FcTypeBool, NULL) /* deprecated */
FC_OBJECT (FILE, FcTypeString, FcCompareFilename)
FC_OBJECT (INDEX, FcTypeInteger, NULL)
-FC_OBJECT (RASTERIZER, FcTypeString, FcCompareString) /* deprecated */
+FC_OBJECT (RASTERIZER, FcTypeString, FcCompareString)
FC_OBJECT (OUTLINE, FcTypeBool, FcCompareBool)
FC_OBJECT (SCALABLE, FcTypeBool, FcCompareBool)
FC_OBJECT (DPI, FcTypeDouble, NULL)
@@ -66,8 +43,6 @@ FC_OBJECT (LCD_FILTER, FcTypeInteger, NULL)
FC_OBJECT (NAMELANG, FcTypeString, NULL)
FC_OBJECT (FONT_FEATURES, FcTypeString, NULL)
FC_OBJECT (PRGNAME, FcTypeString, NULL)
-FC_OBJECT (HASH, FcTypeString, NULL) /* deprecated */
+FC_OBJECT (HASH, FcTypeString, FcCompareHash)
FC_OBJECT (POSTSCRIPT_NAME, FcTypeString, FcComparePostScript)
-FC_OBJECT (COLOR, FcTypeBool, FcCompareBool)
-FC_OBJECT (SYMBOL, FcTypeBool, FcCompareBool)
/* ^-------------- Add new objects here. */
diff --git a/chromium/third_party/fontconfig/src/src/fcobjshash.gperf.h b/chromium/third_party/fontconfig/src/src/fcobjshash.gperf.h
index 1765c949d9a..ca23c026116 100644
--- a/chromium/third_party/fontconfig/src/src/fcobjshash.gperf.h
+++ b/chromium/third_party/fontconfig/src/src/fcobjshash.gperf.h
@@ -1,26 +1,3 @@
-/*
- * fontconfig/src/fcobjshash.gperf.h
- *
- * Copyright © 2000 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
%{
CUT_OUT_BEGIN
#include <fontconfig/fontconfig.h>
diff --git a/chromium/third_party/fontconfig/src/src/fcpat.c b/chromium/third_party/fontconfig/src/src/fcpat.c
index 3ef1ed21205..0614ac2c239 100644
--- a/chromium/third_party/fontconfig/src/src/fcpat.c
+++ b/chromium/third_party/fontconfig/src/src/fcpat.c
@@ -33,7 +33,6 @@ FcPatternCreate (void)
p = (FcPattern *) malloc (sizeof (FcPattern));
if (!p)
return 0;
- memset (p, 0, sizeof (FcPattern));
p->num = 0;
p->size = 0;
p->elts_offset = FcPtrToOffset (p, NULL);
@@ -57,9 +56,6 @@ FcValueDestroy (FcValue v)
case FcTypeLangSet:
FcLangSetDestroy ((FcLangSet *) v.u.l);
break;
- case FcTypeRange:
- FcRangeDestroy ((FcRange *) v.u.r);
- break;
default:
break;
}
@@ -84,10 +80,6 @@ FcValueCanonicalize (const FcValue *v)
new.u.l = FcValueLangSet(v);
new.type = FcTypeLangSet;
break;
- case FcTypeRange:
- new.u.r = FcValueRange(v);
- new.type = FcTypeRange;
- break;
default:
new = *v;
break;
@@ -119,11 +111,6 @@ FcValueSave (FcValue v)
if (!v.u.l)
v.type = FcTypeVoid;
break;
- case FcTypeRange:
- v.u.r = FcRangeCopy (v.u.r);
- if (!v.u.r)
- v.type = FcTypeVoid;
- break;
default:
break;
}
@@ -157,9 +144,6 @@ FcValueListDestroy (FcValueListPtr l)
FcLangSetDestroy
((FcLangSet *) (l->value.u.l));
break;
- case FcTypeRange:
- FcRangeDestroy ((FcRange *) (l->value.u.r));
- break;
default:
break;
}
@@ -282,8 +266,6 @@ FcValueEqual (FcValue va, FcValue vb)
return va.u.f == vb.u.f;
case FcTypeLangSet:
return FcLangSetEqual (va.u.l, vb.u.l);
- case FcTypeRange:
- return FcRangeIsInRange (va.u.r, vb.u.r);
}
return FcFalse;
}
@@ -337,8 +319,6 @@ FcValueHash (const FcValue *v)
FcStringHash ((const FcChar8 *) ((FT_Face) v->u.f)->style_name);
case FcTypeLangSet:
return FcLangSetHash (FcValueLangSet(v));
- case FcTypeRange:
- return FcRangeHash (v->u.r);
}
return 0;
}
@@ -425,12 +405,6 @@ FcPatternObjectPosition (const FcPattern *p, FcObject object)
return -(mid + 1);
}
-int
-FcPatternPosition (const FcPattern *p, const char *object)
-{
- return FcPatternObjectPosition (p, FcObjectFromName (object));
-}
-
FcPatternElt *
FcPatternObjectFindElt (const FcPattern *p, FcObject object)
{
@@ -866,22 +840,6 @@ FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls)
return FcPatternAdd (p, object, v, FcTrue);
}
-FcBool
-FcPatternObjectAddRange (FcPattern *p, FcObject object, const FcRange *r)
-{
- FcValue v;
-
- v.type = FcTypeRange;
- v.u.r = (FcRange *)r;
- return FcPatternObjectAdd (p, object, v, FcTrue);
-}
-
-FcBool
-FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r)
-{
- return FcPatternObjectAddRange (p, FcObjectFromName (object), r);
-}
-
FcResult
FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v)
{
@@ -1066,31 +1024,6 @@ FcPatternGetLangSet(const FcPattern *p, const char *object, int id, FcLangSet **
return FcResultMatch;
}
-FcResult
-FcPatternObjectGetRange (const FcPattern *p, FcObject object, int id, FcRange **r)
-{
- FcValue v;
- FcResult res;
-
- res = FcPatternObjectGet (p, object, id, &v);
- if (res != FcResultMatch)
- return res;
- switch ((int)v.type) {
- case FcTypeRange:
- *r = (FcRange *)v.u.r;
- break;
- default:
- return FcResultTypeMismatch;
- }
- return FcResultMatch;
-}
-
-FcResult
-FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r)
-{
- return FcPatternObjectGetRange (p, FcObjectFromName (object), id, r);
-}
-
FcPattern *
FcPatternDuplicate (const FcPattern *orig)
{
@@ -1296,10 +1229,6 @@ FcValueListSerializeAlloc (FcSerialize *serialize, const FcValueList *vl)
if (!FcLangSetSerializeAlloc (serialize, vl->value.u.l))
return FcFalse;
break;
- case FcTypeRange:
- if (!FcRangeSerializeAlloc (serialize, vl->value.u.r))
- return FcFalse;
- break;
default:
break;
}
@@ -1315,7 +1244,6 @@ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl)
FcChar8 *s_serialized;
FcCharSet *c_serialized;
FcLangSet *l_serialized;
- FcRange *r_serialized;
FcValueList *head_serialized = NULL;
FcValueList *prev_serialized = NULL;
@@ -1374,14 +1302,6 @@ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl)
l_serialized,
FcLangSet);
break;
- case FcTypeRange:
- r_serialized = FcRangeSerialize (serialize, vl->value.u.r);
- if (!r_serialized)
- return NULL;
- vl_serialized->value.u.r = FcPtrToEncodedOffset (&vl_serialized->value,
- r_serialized,
- FcRange);
- break;
default:
break;
}
@@ -1390,7 +1310,6 @@ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl)
}
return head_serialized;
}
-
#define __fcpat__
#include "fcaliastail.h"
#include "fcftaliastail.h"
diff --git a/chromium/third_party/fontconfig/src/src/fcrange.c b/chromium/third_party/fontconfig/src/src/fcrange.c
deleted file mode 100644
index f70226c5521..00000000000
--- a/chromium/third_party/fontconfig/src/src/fcrange.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * fontconfig/src/fcrange.c
- *
- * Copyright © 2002 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
-
-#include "fcint.h"
-
-
-FcRange *
-FcRangeCreateDouble (double begin, double end)
-{
- FcRange *ret = malloc (sizeof (FcRange));
-
- if (ret)
- {
- ret->begin = begin;
- ret->end = end;
- }
-
- return ret;
-}
-
-FcRange *
-FcRangeCreateInteger (FcChar32 begin, FcChar32 end)
-{
- FcRange *ret = malloc (sizeof (FcRange));
-
- if (ret)
- {
- ret->begin = begin;
- ret->end = end;
- }
-
- return ret;
-}
-
-void
-FcRangeDestroy (FcRange *range)
-{
- free (range);
-}
-
-FcRange *
-FcRangeCopy (const FcRange *range)
-{
- return FcRangeCreateDouble (range->begin, range->end);
-}
-
-FcBool
-FcRangeGetDouble(const FcRange *range, double *begin, double *end)
-{
- if (!range)
- return FcFalse;
- if (begin)
- *begin = range->begin;
- if (end)
- *end = range->end;
-
- return FcTrue;
-}
-
-FcRange *
-FcRangePromote (double v, FcValuePromotionBuffer *vbuf)
-{
- typedef struct {
- FcRange r;
- } FcRangePromotionBuffer;
- FcRangePromotionBuffer *buf = (FcRangePromotionBuffer *) vbuf;
-
- FC_ASSERT_STATIC (sizeof (FcRangePromotionBuffer) <= sizeof (FcValuePromotionBuffer));
- buf->r.begin = v;
- buf->r.end = v;
-
- return &buf->r;
-}
-
-FcBool
-FcRangeIsInRange (const FcRange *a, const FcRange *b)
-{
- if (!a || !b)
- return FcFalse;
-
- return a->begin >= b->begin && a->end <= b->end;
-}
-
-FcBool
-FcRangeCompare (FcOp op, const FcRange *a, const FcRange *b)
-{
- switch ((int) op) {
- case FcOpEqual:
- case FcOpContains:
- case FcOpListing:
- return FcRangeIsInRange (a, b);
- case FcOpNotEqual:
- case FcOpNotContains:
- return !FcRangeIsInRange (a, b);
- case FcOpLess:
- return a->begin < b->begin;
- case FcOpLessEqual:
- return a->begin <= b->begin;
- case FcOpMore:
- return a->end > b->end;
- case FcOpMoreEqual:
- return a->end >= b->end;
- default:
- break;
- }
- return FcFalse;
-}
-
-FcChar32
-FcRangeHash (const FcRange *r)
-{
- int b = (int) (r->begin * 100);
- int e = (int) (r->end * 100);
-
- return b ^ (b << 1) ^ (e << 9);
-}
-
-FcBool
-FcRangeSerializeAlloc (FcSerialize *serialize, const FcRange *r)
-{
- if (!FcSerializeAlloc (serialize, r, sizeof (FcRange)))
- return FcFalse;
- return FcTrue;
-}
-
-FcRange *
-FcRangeSerialize (FcSerialize *serialize, const FcRange *r)
-{
- FcRange *r_serialize = FcSerializePtr (serialize, r);
-
- if (!r_serialize)
- return NULL;
- memcpy (r_serialize, r, sizeof (FcRange));
-
- return r_serialize;
-}
-
-#define __fcrange__
-#include "fcaliastail.h"
-#undef __fcrange__
diff --git a/chromium/third_party/fontconfig/src/src/fcstat.c b/chromium/third_party/fontconfig/src/src/fcstat.c
index 1734fa42358..ff8e88455ef 100644
--- a/chromium/third_party/fontconfig/src/src/fcstat.c
+++ b/chromium/third_party/fontconfig/src/src/fcstat.c
@@ -30,9 +30,6 @@
#ifdef HAVE_SYS_VFS_H
#include <sys/vfs.h>
#endif
-#ifdef HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
#ifdef HAVE_SYS_STATFS_H
#include <sys/statfs.h>
#endif
@@ -42,7 +39,6 @@
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif
-#include <errno.h>
#ifdef _WIN32
#ifdef __GNUC__
@@ -165,86 +161,21 @@ FcDirChecksumScandirFilter(const struct dirent *entry)
}
#endif
+#ifdef HAVE_SCANDIR
static int
FcDirChecksumScandirSorter(const struct dirent **lhs, const struct dirent **rhs)
{
return strcmp((*lhs)->d_name, (*rhs)->d_name);
}
-
-static void
-free_dirent (struct dirent **p)
+#elif HAVE_SCANDIR_VOID_P
+static int
+FcDirChecksumScandirSorter(const void *a, const void *b)
{
- struct dirent **x;
-
- for (x = p; *x != NULL; x++)
- free (*x);
+ const struct dirent *lhs = a, *rhs = b;
- free (p);
-}
-
-int
-FcScandir (const char *dirp,
- struct dirent ***namelist,
- int (*filter) (const struct dirent *),
- int (*compar) (const struct dirent **, const struct dirent **));
-
-int
-FcScandir (const char *dirp,
- struct dirent ***namelist,
- int (*filter) (const struct dirent *),
- int (*compar) (const struct dirent **, const struct dirent **))
-{
- DIR *d;
- struct dirent *dent, *p, **dlist, **dlp;
- size_t lsize = 128, n = 0;
-
- d = opendir (dirp);
- if (!d)
- return -1;
-
- dlist = (struct dirent **) malloc (sizeof (struct dirent *) * lsize);
- if (!dlist)
- {
- closedir (d);
- errno = ENOMEM;
-
- return -1;
- }
- *dlist = NULL;
- while ((dent = readdir (d)))
- {
- if (!filter || (filter) (dent))
- {
- size_t dentlen = FcPtrToOffset (dent, dent->d_name) + strlen (dent->d_name) + 1;
- dentlen = ((dentlen + ALIGNOF_VOID_P - 1) & ~(ALIGNOF_VOID_P - 1));
- p = (struct dirent *) malloc (dentlen);
- memcpy (p, dent, dentlen);
- if ((n + 1) >= lsize)
- {
- lsize += 128;
- dlp = (struct dirent **) realloc (dlist, sizeof (struct dirent *) * lsize);
- if (!dlp)
- {
- free_dirent (dlist);
- closedir (d);
- errno = ENOMEM;
-
- return -1;
- }
- dlist = dlp;
- }
- dlist[n++] = p;
- dlist[n] = NULL;
- }
- }
- closedir (d);
-
- qsort (dlist, n, sizeof (struct dirent *), (int (*) (const void *, const void *))compar);
-
- *namelist = dlist;
-
- return n;
+ return strcmp(lhs->d_name, rhs->d_name);
}
+#endif
static int
FcDirChecksum (const FcChar8 *dir, time_t *checksum)
@@ -252,12 +183,14 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
struct Adler32 ctx;
struct dirent **files;
int n;
+#ifndef HAVE_STRUCT_DIRENT_D_TYPE
int ret = 0;
size_t len = strlen ((const char *)dir);
+#endif
Adler32Init (&ctx);
- n = FcScandir ((const char *)dir, &files,
+ n = scandir ((const char *)dir, &files,
#ifdef HAVE_STRUCT_DIRENT_D_TYPE
&FcDirChecksumScandirFilter,
#else
@@ -274,9 +207,7 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
#ifdef HAVE_STRUCT_DIRENT_D_TYPE
dtype = files[n]->d_type;
- if (dtype == DT_UNKNOWN)
- {
-#endif
+#else
struct stat statb;
char f[PATH_MAX + 1];
@@ -293,18 +224,20 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
goto bail;
dtype = statb.st_mode;
-#ifdef HAVE_STRUCT_DIRENT_D_TYPE
- }
#endif
Adler32Update (&ctx, files[n]->d_name, dlen + 1);
Adler32Update (&ctx, (char *)&dtype, sizeof (int));
+#ifndef HAVE_STRUCT_DIRENT_D_TYPE
bail:
+#endif
free (files[n]);
}
free (files);
+#ifndef HAVE_STRUCT_DIRENT_D_TYPE
if (ret == -1)
return -1;
+#endif
*checksum = Adler32Finish (&ctx);
@@ -426,7 +359,3 @@ FcIsFsMtimeBroken (const FcChar8 *dir)
return FcFalse;
}
-
-#define __fcstat__
-#include "fcaliastail.h"
-#undef __fcstat__
diff --git a/chromium/third_party/fontconfig/src/src/fcstr.c b/chromium/third_party/fontconfig/src/src/fcstr.c
index b65492d84af..57071724315 100644
--- a/chromium/third_party/fontconfig/src/src/fcstr.c
+++ b/chromium/third_party/fontconfig/src/src/fcstr.c
@@ -26,6 +26,9 @@
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
+#ifdef HAVE_REGEX_H
+#include <regex.h>
+#endif
/* Objects MT-safe for readonly access. */
@@ -239,6 +242,55 @@ FcStrCmp (const FcChar8 *s1, const FcChar8 *s2)
return (int) c1 - (int) c2;
}
+#ifdef USE_REGEX
+static FcBool
+_FcStrRegexCmp (const FcChar8 *s, const FcChar8 *regex, int cflags, int eflags)
+{
+ int ret = -1;
+ regex_t reg;
+
+ if ((ret = regcomp (&reg, (const char *)regex, cflags)) != 0)
+ {
+ if (FcDebug () & FC_DBG_MATCHV)
+ {
+ char buf[512];
+
+ regerror (ret, &reg, buf, 512);
+ printf("Regexp compile error: %s\n", buf);
+ }
+ return FcFalse;
+ }
+ ret = regexec (&reg, (const char *)s, 0, NULL, eflags);
+ if (ret != 0)
+ {
+ if (FcDebug () & FC_DBG_MATCHV)
+ {
+ char buf[512];
+
+ regerror (ret, &reg, buf, 512);
+ printf("Regexp exec error: %s\n", buf);
+ }
+ }
+ regfree (&reg);
+
+ return ret == 0 ? FcTrue : FcFalse;
+}
+#else
+# define _FcStrRegexCmp(_s_, _regex_, _cflags_, _eflags_) (FcFalse)
+#endif
+
+FcBool
+FcStrRegexCmp (const FcChar8 *s, const FcChar8 *regex)
+{
+ return _FcStrRegexCmp (s, regex, REG_EXTENDED | REG_NOSUB, 0);
+}
+
+FcBool
+FcStrRegexCmpIgnoreCase (const FcChar8 *s, const FcChar8 *regex)
+{
+ return _FcStrRegexCmp (s, regex, REG_EXTENDED | REG_NOSUB | REG_ICASE, 0);
+}
+
/*
* Return a hash value for a string
*/
@@ -872,16 +924,12 @@ FcStrBuildFilename (const FcChar8 *path,
...)
{
va_list ap;
- FcStrSet *sset;
+ FcStrSet *sset = FcStrSetCreate ();
FcStrList *list;
FcChar8 *s, *ret = NULL, *p;
size_t len = 0;
- if (!path)
- return NULL;
-
- sset = FcStrSetCreateEx (FCSS_ALLOW_DUPLICATES | FCSS_GROW_BY_64);
- if (!sset)
+ if (!sset || !path)
return NULL;
if (!FcStrSetAdd (sset, path))
@@ -1130,12 +1178,6 @@ FcStrCanonFilename (const FcChar8 *s)
FcStrSet *
FcStrSetCreate (void)
{
- return FcStrSetCreateEx (FCSS_DEFAULT);
-}
-
-FcStrSet *
-FcStrSetCreateEx (unsigned int control)
-{
FcStrSet *set = malloc (sizeof (FcStrSet));
if (!set)
return 0;
@@ -1143,42 +1185,29 @@ FcStrSetCreateEx (unsigned int control)
set->num = 0;
set->size = 0;
set->strs = 0;
- set->control = control;
return set;
}
static FcBool
-_FcStrSetGrow (FcStrSet *set, int growElements)
-{
- /* accommodate an additional NULL entry at the end of the array */
- FcChar8 **strs = malloc ((set->size + growElements + 1) * sizeof (FcChar8 *));
- if (!strs)
- return FcFalse;
- if (set->num)
- memcpy (strs, set->strs, set->num * sizeof (FcChar8 *));
- if (set->strs)
- free (set->strs);
- set->size = set->size + growElements;
- set->strs = strs;
- return FcTrue;
-}
-
-static FcBool
_FcStrSetAppend (FcStrSet *set, FcChar8 *s)
{
- if (!FcStrSetHasControlBit (set, FCSS_ALLOW_DUPLICATES))
+ if (FcStrSetMember (set, s))
{
- if (FcStrSetMember (set, s))
- {
- FcStrFree (s);
- return FcTrue;
- }
+ FcStrFree (s);
+ return FcTrue;
}
if (set->num == set->size)
{
- int growElements = FcStrSetHasControlBit (set, FCSS_GROW_BY_64) ? 64 : 1;
- if (!_FcStrSetGrow(set, growElements))
- return FcFalse;
+ FcChar8 **strs = malloc ((set->size + 2) * sizeof (FcChar8 *));
+
+ if (!strs)
+ return FcFalse;
+ if (set->num)
+ memcpy (strs, set->strs, set->num * sizeof (FcChar8 *));
+ if (set->strs)
+ free (set->strs);
+ set->size = set->size + 1;
+ set->strs = strs;
}
set->strs[set->num++] = s;
set->strs[set->num] = 0;
diff --git a/chromium/third_party/fontconfig/src/src/fcweight.c b/chromium/third_party/fontconfig/src/src/fcweight.c
deleted file mode 100644
index 036a518e8c5..00000000000
--- a/chromium/third_party/fontconfig/src/src/fcweight.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * fontconfig/src/fcweight.c
- *
- * 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 the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The authors make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) 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.
- */
-
-#include "fcint.h"
-
-static const struct {
- int ot;
- int fc;
-} map[] = {
- { 0, FC_WEIGHT_THIN },
- { 100, FC_WEIGHT_THIN },
- { 200, FC_WEIGHT_EXTRALIGHT },
- { 350, FC_WEIGHT_DEMILIGHT },
- { 300, FC_WEIGHT_LIGHT },
- { 380, FC_WEIGHT_BOOK },
- { 400, FC_WEIGHT_REGULAR },
- { 500, FC_WEIGHT_MEDIUM },
- { 600, FC_WEIGHT_DEMIBOLD },
- { 700, FC_WEIGHT_BOLD },
- { 800, FC_WEIGHT_EXTRABOLD },
- { 900, FC_WEIGHT_BLACK },
- {1000, FC_WEIGHT_EXTRABLACK },
-};
-
-static int lerp(int x, int x1, int x2, int y1, int y2)
-{
- int dx = x2 - x1;
- int dy = y2 - y1;
- assert (dx > 0 && dy >= 0 && x1 <= x && x <= x2);
- return y1 + (dy*(x-x1) + dx/2) / dx;
-}
-
-int
-FcWeightFromOpenType (int ot_weight)
-{
- int i;
-
- /* Loosely based on WPF Font Selection Model's advice. */
-
- if (ot_weight < 0)
- return -1;
- else if (1 <= ot_weight && ot_weight <= 9)
- {
- /* WPF Font Selection Model says do "ot_weight *= 100",
- * but Greg Hitchcock revealed that GDI had a mapping
- * reflected below: */
- switch (ot_weight) {
- case 1: ot_weight = 80; break;
- case 2: ot_weight = 160; break;
- case 3: ot_weight = 240; break;
- case 4: ot_weight = 320; break;
- case 5: ot_weight = 400; break;
- case 6: ot_weight = 550; break;
- case 7: ot_weight = 700; break;
- case 8: ot_weight = 800; break;
- case 9: ot_weight = 900; break;
- }
- }
- ot_weight = FC_MIN (ot_weight, map[(sizeof (map) / sizeof (map[0])) - 1].ot);
-
- for (i = 1; ot_weight > map[i].ot; i++)
- ;
-
- if (ot_weight == map[i].ot)
- return map[i].fc;
-
- /* Interpolate between two items. */
- return lerp (ot_weight, map[i-1].ot, map[i].ot, map[i-1].fc, map[i].fc);
-}
-
-int
-FcWeightToOpenType (int fc_weight)
-{
- int i;
- if (fc_weight < 0 || fc_weight > FC_WEIGHT_EXTRABLACK)
- return -1;
-
- for (i = 1; fc_weight > map[i].fc; i++)
- ;
-
- if (fc_weight == map[i].fc)
- return map[i].ot;
-
- /* Interpolate between two items. */
- return lerp (fc_weight, map[i-1].fc, map[i].fc, map[i-1].ot, map[i].ot);
-}
-
-#define __fcweight__
-#include "fcaliastail.h"
-#undef __fcweight__
diff --git a/chromium/third_party/fontconfig/src/src/fcwindows.h b/chromium/third_party/fontconfig/src/src/fcwindows.h
index a0eee675ee9..02489d9dc1b 100644
--- a/chromium/third_party/fontconfig/src/src/fcwindows.h
+++ b/chromium/third_party/fontconfig/src/src/fcwindows.h
@@ -32,13 +32,8 @@
#endif
#ifdef _WIN32
- /* Request Windows Vista for building. This is required to
- * get MemoryBarrier on mingw32... */
-# if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600
-# undef _WIN32_WINNT
-# endif
# ifndef _WIN32_WINNT
-# define _WIN32_WINNT 0x0600
+# define _WIN32_WINNT 0x0500
# endif
# define WIN32_LEAN_AND_MEAN
# define WIN32_EXTRA_LEAN
diff --git a/chromium/third_party/fontconfig/src/src/fcxml.c b/chromium/third_party/fontconfig/src/src/fcxml.c
index 031a7da1f0b..8ff10b6e63f 100644
--- a/chromium/third_party/fontconfig/src/src/fcxml.c
+++ b/chromium/third_party/fontconfig/src/src/fcxml.c
@@ -54,12 +54,8 @@
#ifdef _WIN32
#include <mbstring.h>
-extern FcChar8 fontconfig_instprefix[];
#endif
-static FcChar8 *__fc_userdir = NULL;
-static FcChar8 *__fc_userconf = NULL;
-
static void
FcExprDestroy (FcExpr *e);
@@ -82,7 +78,6 @@ FcRuleDestroy (FcRule *rule)
case FcRuleEdit:
FcEditDestroy (rule->u.edit);
break;
- case FcRuleUnknown:
default:
break;
}
@@ -174,18 +169,6 @@ FcExprCreateMatrix (FcConfig *config, const FcExprMatrix *matrix)
}
static FcExpr *
-FcExprCreateRange (FcConfig *config, FcRange *range)
-{
- FcExpr *e = FcConfigAllocExpr (config);
- if (e)
- {
- e->op = FcOpRange;
- e->u.rval = FcRangeCopy (range);
- }
- return e;
-}
-
-static FcExpr *
FcExprCreateBool (FcConfig *config, FcBool b)
{
FcExpr *e = FcConfigAllocExpr (config);
@@ -275,7 +258,6 @@ FcExprDestroy (FcExpr *e)
FcExprMatrixFree (e->u.mexpr);
break;
case FcOpRange:
- FcRangeDestroy (e->u.rval);
break;
case FcOpCharSet:
FcCharSetDestroy (e->u.cval);
@@ -521,7 +503,7 @@ typedef struct _FcVStack {
int integer;
double _double;
FcExprMatrix *matrix;
- FcRange *range;
+ FcRange range;
FcBool bool_;
FcCharSet *charset;
FcLangSet *langset;
@@ -611,9 +593,6 @@ FcTypeName (FcType type)
return "FT_Face";
case FcTypeLangSet:
return "langset";
- case FcTypeRange:
- return "range";
- case FcTypeUnknown:
default:
return "unknown";
}
@@ -629,15 +608,13 @@ FcTypecheckValue (FcConfigParse *parse, FcType value, FcType type)
if (value != type)
{
if ((value == FcTypeLangSet && type == FcTypeString) ||
- (value == FcTypeString && type == FcTypeLangSet) ||
- (value == FcTypeInteger && type == FcTypeRange) ||
- (value == FcTypeDouble && type == FcTypeRange))
+ (value == FcTypeString && type == FcTypeLangSet))
return;
- if (type == FcTypeUnknown)
+ if (type == (FcType) -1)
return;
/* It's perfectly fine to use user-define elements in expressions,
* so don't warn in that case. */
- if (value == FcTypeUnknown)
+ if (value == (FcType) -1)
return;
FcConfigMessage (parse, FcSevereWarning, "saw %s, expected %s",
FcTypeName (value), FcTypeName (type));
@@ -674,9 +651,6 @@ FcTypecheckExpr (FcConfigParse *parse, FcExpr *expr, FcType type)
case FcOpLangSet:
FcTypecheckValue (parse, FcTypeLangSet, type);
break;
- case FcOpRange:
- FcTypecheckValue (parse, FcTypeRange, type);
- break;
case FcOpNil:
break;
case FcOpField:
@@ -811,7 +785,6 @@ FcRuleCreate (FcRuleType type,
case FcRuleEdit:
r->u.edit = (FcEdit *) p;
break;
- case FcRuleUnknown:
default:
free (r);
r = NULL;
@@ -892,10 +865,11 @@ FcVStackPushMatrix (FcConfigParse *parse, FcExprMatrix *matrix)
static FcBool
FcVStackPushRange (FcConfigParse *parse, FcRange *range)
{
- FcVStack *vstack = FcVStackCreateAndPush (parse);
+ FcVStack *vstack = FcVStackCreateAndPush (parse);
if (!vstack)
return FcFalse;
- vstack->u.range = range;
+ vstack->u.range.begin = range->begin;
+ vstack->u.range.end = range->end;
vstack->tag = FcVStackRange;
return FcTrue;
}
@@ -1043,10 +1017,8 @@ FcVStackPopAndDestroy (FcConfigParse *parse)
case FcVStackMatrix:
FcExprMatrixFreeShallow (vstack->u.matrix);
break;
- case FcVStackBool:
- break;
case FcVStackRange:
- FcRangeDestroy (vstack->u.range);
+ case FcVStackBool:
break;
case FcVStackCharSet:
FcCharSetDestroy (vstack->u.charset);
@@ -1260,11 +1232,7 @@ static void
FcParseBlank (FcConfigParse *parse)
{
int n = FcVStackElements (parse);
-#if 0
- FcChar32 i, begin, end;
-#endif
-
- FcConfigMessage (parse, FcSevereWarning, "blank doesn't take any effect anymore. please remove it from your fonts.conf");
+ FcChar32 i;
while (n-- > 0)
{
FcVStack *v = FcVStackFetch (parse, n);
@@ -1276,24 +1244,18 @@ FcParseBlank (FcConfigParse *parse)
}
switch ((int) v->tag) {
case FcVStackInteger:
-#if 0
if (!FcBlanksAdd (parse->config->blanks, v->u.integer))
goto bail;
break;
-#endif
case FcVStackRange:
-#if 0
- begin = (FcChar32) v->u.range->begin;
- end = (FcChar32) v->u.range->end;
- if (begin <= end)
+ if (v->u.range.begin <= v->u.range.end)
{
- for (i = begin; i <= end; i++)
+ for (i = v->u.range.begin; i <= v->u.range.end; i++)
{
if (!FcBlanksAdd (parse->config->blanks, i))
goto bail;
}
}
-#endif
break;
default:
FcConfigMessage (parse, FcSevereError, "invalid element in blank");
@@ -1352,11 +1314,7 @@ FcParseInt (FcConfigParse *parse)
static double
FcStrtod (char *s, char **end)
{
-#ifndef __BIONIC__
struct lconv *locale_data;
-#endif
- const char *decimal_point;
- int dlen;
char *dot;
double v;
@@ -1364,21 +1322,14 @@ FcStrtod (char *s, char **end)
* Have to swap the decimal point to match the current locale
* if that locale doesn't use 0x2e
*/
-#ifndef __BIONIC__
- locale_data = localeconv ();
- decimal_point = locale_data->decimal_point;
- dlen = strlen (decimal_point);
-#else
- decimal_point = ".";
- dlen = 1;
-#endif
-
if ((dot = strchr (s, 0x2e)) &&
- (decimal_point[0] != 0x2e ||
- decimal_point[1] != 0))
+ (locale_data = localeconv ()) &&
+ (locale_data->decimal_point[0] != 0x2e ||
+ locale_data->decimal_point[1] != 0))
{
char buf[128];
int slen = strlen (s);
+ int dlen = strlen (locale_data->decimal_point);
if (slen + dlen > (int) sizeof (buf))
{
@@ -1392,7 +1343,7 @@ FcStrtod (char *s, char **end)
/* mantissa */
strncpy (buf, s, dot - s);
/* decimal point */
- strcpy (buf + (dot - s), decimal_point);
+ strcpy (buf + (dot - s), locale_data->decimal_point);
/* rest of number */
strcpy (buf + (dot - s) + dlen, dot + 1);
buf_end = 0;
@@ -1512,11 +1463,9 @@ static void
FcParseRange (FcConfigParse *parse)
{
FcVStack *vstack;
- FcRange *r;
- FcChar32 n[2] = {0, 0};
+ FcRange r = {0, 0};
+ FcChar32 n;
int count = 1;
- double d[2] = {0.0L, 0.0L};
- FcBool dflag = FcFalse;
while ((vstack = FcVStackPeek (parse)))
{
@@ -1527,52 +1476,31 @@ FcParseRange (FcConfigParse *parse)
}
switch ((int) vstack->tag) {
case FcVStackInteger:
- if (dflag)
- d[count] = (double)vstack->u.integer;
- else
- n[count] = vstack->u.integer;
- break;
- case FcVStackDouble:
- if (count == 0 && !dflag)
- d[1] = (double)n[1];
- d[count] = vstack->u._double;
- dflag = FcTrue;
+ n = vstack->u.integer;
break;
default:
FcConfigMessage (parse, FcSevereError, "invalid element in range");
- if (dflag)
- d[count] = 0.0L;
- else
- n[count] = 0;
+ n = 0;
break;
}
+ if (count == 1)
+ r.end = n;
+ else
+ r.begin = n;
count--;
FcVStackPopAndDestroy (parse);
}
- if (count >= 0)
+ if (count < 0)
{
- FcConfigMessage (parse, FcSevereError, "invalid range");
- return;
- }
- if (dflag)
- {
- if (d[0] > d[1])
+ if (r.begin > r.end)
{
FcConfigMessage (parse, FcSevereError, "invalid range");
return;
}
- r = FcRangeCreateDouble (d[0], d[1]);
+ FcVStackPushRange (parse, &r);
}
else
- {
- if (n[0] > n[1])
- {
- FcConfigMessage (parse, FcSevereError, "invalid range");
- return;
- }
- r = FcRangeCreateInteger (n[0], n[1]);
- }
- FcVStackPushRange (parse, r);
+ FcConfigMessage (parse, FcSevereError, "invalid range");
}
static FcBool
@@ -1608,7 +1536,7 @@ FcParseCharSet (FcConfigParse *parse)
{
FcVStack *vstack;
FcCharSet *charset = FcCharSetCreate ();
- FcChar32 i, begin, end;
+ FcChar32 i;
int n = 0;
while ((vstack = FcVStackPeek (parse)))
@@ -1623,12 +1551,9 @@ FcParseCharSet (FcConfigParse *parse)
n++;
break;
case FcVStackRange:
- begin = (FcChar32) vstack->u.range->begin;
- end = (FcChar32) vstack->u.range->end;
-
- if (begin <= end)
+ if (vstack->u.range.begin <= vstack->u.range.end)
{
- for (i = begin; i <= end; i++)
+ for (i = vstack->u.range.begin; i <= vstack->u.range.end; i++)
{
if (!FcCharSetAddChar (charset, i))
{
@@ -1963,7 +1888,6 @@ FcPopExpr (FcConfigParse *parse)
expr = FcExprCreateMatrix (parse->config, vstack->u.matrix);
break;
case FcVStackRange:
- expr = FcExprCreateRange (parse->config, vstack->u.range);
break;
case FcVStackBool:
expr = FcExprCreateBool (parse->config, vstack->u.bool_);
@@ -2072,14 +1996,7 @@ FcParseDir (FcConfigParse *parse)
attr = FcConfigGetAttribute (parse, "prefix");
if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
- {
prefix = FcConfigXdgDataHome ();
- /* home directory might be disabled.
- * simply ignore this element.
- */
- if (!prefix)
- goto bail;
- }
data = FcStrBufDoneStatic (&parse->pstack->str);
if (!data)
{
@@ -2170,18 +2087,11 @@ static void
FcParseCacheDir (FcConfigParse *parse)
{
const FcChar8 *attr;
- FcChar8 *prefix = NULL, *p, *data = NULL;
+ FcChar8 *prefix = NULL, *p, *data;
attr = FcConfigGetAttribute (parse, "prefix");
if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
- {
prefix = FcConfigXdgCacheHome ();
- /* home directory might be disabled.
- * simply ignore this element.
- */
- if (!prefix)
- goto bail;
- }
data = FcStrBufDone (&parse->pstack->str);
if (!data)
{
@@ -2208,25 +2118,7 @@ FcParseCacheDir (FcConfigParse *parse)
data = prefix;
}
#ifdef _WIN32
- else if (data[0] == '/' && fontconfig_instprefix[0] != '\0')
- {
- size_t plen = strlen ((const char *)fontconfig_instprefix);
- size_t dlen = strlen ((const char *)data);
-
- prefix = malloc (plen + 1 + dlen + 1);
- if (!prefix)
- {
- FcConfigMessage (parse, FcSevereError, "out of memory");
- goto bail;
- }
- strcpy ((char *) prefix, (char *) fontconfig_instprefix);
- prefix[plen] = FC_DIR_SEPARATOR;
- memcpy (&prefix[plen + 1], data, dlen);
- prefix[plen + 1 + dlen] = 0;
- FcStrFree (data);
- data = prefix;
- }
- else if (strcmp ((const char *) data, "WINDOWSTEMPDIR_FONTCONFIG_CACHE") == 0)
+ if (strcmp ((const char *) data, "WINDOWSTEMPDIR_FONTCONFIG_CACHE") == 0)
{
int rc;
FcStrFree (data);
@@ -2282,35 +2174,16 @@ FcParseCacheDir (FcConfigParse *parse)
FcStrFree (data);
}
-void
-FcConfigPathFini (void)
-{
- FcChar8 *s;
-
-retry_dir:
- s = fc_atomic_ptr_get (&__fc_userdir);
- if (!fc_atomic_ptr_cmpexch (&__fc_userdir, s, NULL))
- goto retry_dir;
- free (s);
-
-retry_conf:
- s = fc_atomic_ptr_get (&__fc_userconf);
- if (!fc_atomic_ptr_cmpexch (&__fc_userconf, s, NULL))
- goto retry_conf;
- free (s);
-}
-
static void
FcParseInclude (FcConfigParse *parse)
{
FcChar8 *s;
const FcChar8 *attr;
FcBool ignore_missing = FcFalse;
-#ifndef _WIN32
FcBool deprecated = FcFalse;
-#endif
FcChar8 *prefix = NULL, *p;
- FcChar8 *userdir = NULL, *userconf = NULL;
+ static FcChar8 *userdir = NULL;
+ static FcChar8 *userconf = NULL;
s = FcStrBufDoneStatic (&parse->pstack->str);
if (!s)
@@ -2322,25 +2195,15 @@ FcParseInclude (FcConfigParse *parse)
if (attr && FcConfigLexBool (parse, (FcChar8 *) attr) == FcTrue)
ignore_missing = FcTrue;
attr = FcConfigGetAttribute (parse, "deprecated");
-#ifndef _WIN32
if (attr && FcConfigLexBool (parse, (FcChar8 *) attr) == FcTrue)
deprecated = FcTrue;
-#endif
attr = FcConfigGetAttribute (parse, "prefix");
if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
- {
prefix = FcConfigXdgConfigHome ();
- /* home directory might be disabled.
- * simply ignore this element.
- */
- if (!prefix)
- goto bail;
- }
if (prefix)
{
size_t plen = strlen ((const char *)prefix);
size_t dlen = strlen ((const char *)s);
- FcChar8 *u;
p = realloc (prefix, plen + 1 + dlen + 1);
if (!p)
@@ -2356,32 +2219,14 @@ FcParseInclude (FcConfigParse *parse)
if (FcFileIsDir (s))
{
userdir:
- userdir = fc_atomic_ptr_get (&__fc_userdir);
if (!userdir)
- {
- u = FcStrdup (s);
- if (!fc_atomic_ptr_cmpexch (&__fc_userdir, userdir, u))
- {
- free (u);
- goto userdir;
- }
- userdir = u;
- }
+ userdir = FcStrdup (s);
}
else if (FcFileIsFile (s))
{
userconf:
- userconf = fc_atomic_ptr_get (&__fc_userconf);
if (!userconf)
- {
- u = FcStrdup (s);
- if (!fc_atomic_ptr_cmpexch (&__fc_userconf, userconf, u))
- {
- free (u);
- goto userconf;
- }
- userconf = u;
- }
+ userconf = FcStrdup (s);
}
else
{
@@ -2405,7 +2250,6 @@ FcParseInclude (FcConfigParse *parse)
filename = FcConfigFilename(s);
if (deprecated == FcTrue &&
filename != NULL &&
- userdir != NULL &&
!FcFileIsLink (filename))
{
if (FcFileIsDir (filename))
@@ -2722,11 +2566,6 @@ FcParseMatch (FcConfigParse *parse)
}
FcVStackPopAndDestroy (parse);
}
- if (!rule)
- {
- FcConfigMessage (parse, FcSevereWarning, "No <test> nor <edit> elements in <match>");
- return;
- }
if (!FcConfigAddRule (parse->config, rule, kind))
FcConfigMessage (parse, FcSevereError, "out of memory");
}
@@ -2809,11 +2648,6 @@ FcPopValue (FcConfigParse *parse)
if (value.u.l)
value.type = FcTypeLangSet;
break;
- case FcVStackRange:
- value.u.r = FcRangeCopy (vstack->u.range);
- if (value.u.r)
- value.type = FcTypeRange;
- break;
default:
FcConfigMessage (parse, FcSevereWarning, "unknown pattern element %d",
vstack->tag);
@@ -3169,7 +3003,7 @@ FcConfigParseAndLoadDir (FcConfig *config,
strcat ((char *) file, "/");
base = file + strlen ((char *) file);
- files = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ files = FcStrSetCreate ();
if (!files)
{
ret = FcFalse;
@@ -3230,12 +3064,11 @@ FcConfigParseAndLoad (FcConfig *config,
{
XML_Parser p;
- FcChar8 *filename, *f;
+ FcChar8 *filename;
int fd;
int len;
FcConfigParse parse;
FcBool error = FcTrue;
- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
#ifdef ENABLE_LIBXML2
xmlSAXHandler sax;
@@ -3260,14 +3093,9 @@ FcConfigParseAndLoad (FcConfig *config,
}
#endif
- f = FcConfigFilename (name);
- if (!f)
+ filename = FcConfigFilename (name);
+ if (!filename)
goto bail0;
- if (sysroot)
- filename = FcStrBuildFilename (sysroot, f, NULL);
- else
- filename = FcStrdup (f);
- FcStrFree (f);
if (FcStrSetMember (config->configFiles, filename))
{