From: Youngbok Shin Date: Tue, 3 Apr 2018 05:24:39 +0000 (+0900) Subject: Imported Upstream version 2.13.0 X-Git-Tag: upstream/2.13.0^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f961062fee487fc411ccdd4f34f8fe52f3a5ee9;hp=df88f72dae564eab44d6a09effdb56412db95951;p=platform%2Fupstream%2Ffontconfig.git Imported Upstream version 2.13.0 --- diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..3cc8286 --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1379 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is a +way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this 'ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU 'gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU 'gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + +1.1 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU 'gettext'. Other packages have their own ways to +internationalization, predating GNU 'gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU 'gettext' functions. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +will _totally_ disable translation of messages. + + When you already have GNU 'gettext' installed on your system and run +configure without an option for your new package, 'configure' will +probably detect the previously built and installed 'libintl' library and +will decide to use it. If not, you may have to to use the +'--with-libintl-prefix' option to tell 'configure' where to look for it. + + Internationalized packages usually have many 'po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at 'configure' time by using the +'--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable 'LINGUAS' +may be set, prior to configuration, to limit the installed set. +'LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.2 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the 'LANG' environment variable to the appropriate +'LL_CC' combination. If you happen to have the 'LC_ALL' or some other +'LC_xxx' environment variables set, you should unset them before setting +'LANG', otherwise the setting of 'LANG' will not have the desired +effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is +an ISO 3166 two-letter country code. For example, let's suppose that +you speak German and live in Germany. At the shell prompt, merely +execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in +'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your +'.login' or '.profile' file, once and for all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of 'LL_CC', with 'LL' denoting the +language and 'CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are used, +such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales +supported by your system for your language by running the command +'locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' +for the purpose of message handling, but you still need to have 'LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather read +translations in German than English for when Swedish is not available, +set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from 'no' to 'nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under 'nb' and some older ones under 'no', it's recommended +for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and +older translations are used. + + In the 'LANGUAGE' environment variable, but not in the 'LANG' +environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to +denote the language's main dialect. For example, 'de' is equivalent to +'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese +as spoken in Portugal) in this context. + +1.3 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +'http://translationproject.org/', in the "Teams" area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +'-request' appended. For example, speakers of Swedish can send a +message to 'sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate _actively_ +in translations, or at solving translational difficulties, rather than +merely lurking around. If your team does not exist yet and you want to +start one, or if you are unsure about what to do or how to get started, +please write to 'coordinator@translationproject.org' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of Jun 2014. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs + +---------------------------------------------------+ + a2ps | [] [] [] | + aegis | | + anubis | | + aspell | [] [] [] | + bash | [] [] [] | + bfd | | + binutils | [] | + bison | | + bison-runtime | [] | + buzztrax | [] | + ccd2cue | | + ccide | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | | + denemo | [] [] | + dfarc | [] | + dialog | [] [] [] | + dico | | + diffutils | [] | + dink | [] | + direvent | | + doodle | [] | + dos2unix | | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] | + exif | [] | + fetchmail | [] [] | + findutils | [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | [] | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gjay | | + glunarclock | [] [] [] | + gnubiff | [] | + gnubik | [] | + gnucash | () () [] | + gnuchess | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] | + gramadoir | | + grep | [] [] [] | + grub | [] | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] | + help2man | | + help2man-texi | | + hylafax | | + idutils | | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | | + kbd | [] | + klavaro | [] [] [] [] [] | + ld | [] | + leafpad | [] [] [] [] | + libc | [] [] [] | + libexif | () | + libextractor | | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] [] | + lilypond | [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] | + man-db | [] [] | + man-db-manpages | | + midi-instruments | [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | [] | + nano | [] [] [] | + opcodes | | + parted | [] | + pies | | + pnmixer | | + popt | [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] | + pushover | [] | + pwdutils | | + pyspread | | + radius | [] | + recode | [] [] [] | + recutils | | + rpm | | + rush | | + sarg | | + sed | [] [] [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] | + sudoers | [] [] | + sysstat | [] | + tar | [] [] [] | + texinfo | [] [] | + texinfo_document | [] [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | | + trader | | + util-linux | [] | + ve | | + vice | | + vmm | | + vorbis-tools | [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] | + wget | [] | + wyslij-po | | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + af am an ar as ast az be bg bn bn_IN bs ca crh cs + 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 + + da de el en en_GB en_ZA eo es et eu fa fi fr + +--------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] [] | + aegis | [] [] [] [] | + anubis | [] [] [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] | + bfd | [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] [] [] [] | + ccd2cue | [] [] [] [] | + ccide | [] [] [] [] [] [] | + cflow | [] [] [] [] [] | + clisp | [] [] [] [] [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] [] [] [] [] | + cryptsetup | [] [] [] [] [] | + datamash | [] [] [] [] | + denemo | [] | + dfarc | [] [] [] [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] | + dico | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] [] [] [] | + direvent | [] [] [] [] | + doodle | [] [] [] [] | + dos2unix | [] [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] () [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] | + flex | [] [] [] [] [] [] | + freedink | [] [] [] [] [] [] [] [] | + fusionforge | [] [] [] | + gas | [] [] [] | + gawk | [] [] [] [] [] | + gcal | [] [] [] [] | + gcc | [] | + gdbm | [] [] [] [] [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | () [] [] () | + gnubik | [] [] [] [] [] | + gnucash | [] () () () () () () | + gnuchess | [] [] [] [] | + gnulib | [] [] [] [] [] [] [] | + gnunet | [] | + gnunet-gtk | [] | + gold | [] [] [] | + gphoto2 | [] () [] [] | + gprof | [] [] [] [] [] [] | + gramadoir | [] [] [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] () [] [] [] | + gtkam | [] () [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] | + guix | [] [] | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] [] [] | + help2man | [] [] [] [] [] [] [] | + help2man-texi | [] [] [] | + hylafax | [] [] | + idutils | [] [] [] [] [] | + iso_15924 | [] () [] [] () [] () | + iso_3166 | [] () [] [] [] [] () [] () | + iso_3166_2 | [] () () () | + iso_4217 | [] () [] [] [] () [] () | + iso_639 | [] () [] [] () [] () | + iso_639_3 | () () () | + iso_639_5 | () () () | + jwhois | [] [] [] [] [] | + kbd | [] [] [] [] [] [] | + klavaro | [] [] [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () [] [] | + libextractor | [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] () [] | + libgphoto2_port | [] () [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] [] | + liferea | [] () [] [] [] [] [] | + lilypond | [] [] [] [] [] [] | + lordsawar | [] [] | + lprng | | + lynx | [] [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] [] | + make | [] [] [] [] [] | + man-db | [] [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] [] | + parted | [] [] [] | + pies | [] | + pnmixer | [] [] | + popt | [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] [] | + psmisc | [] [] [] [] [] [] [] | + pspp | [] [] [] | + pushover | () [] [] [] | + pwdutils | [] [] [] | + pyspread | [] [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + recutils | [] [] [] [] | + rpm | [] [] [] [] [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] [] | + skribilo | [] [] [] | + solfege | [] [] [] [] [] [] [] [] | + solfege-manual | [] [] [] [] [] | + spotmachine | [] [] [] [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] [] [] | + sysstat | [] [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] [] | + texinfo_document | [] [] [] [] | + tigervnc | [] [] [] [] [] [] | + tin | [] [] [] [] | + tin-man | [] | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] [] [] [] [] [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] [] | + vice | () () () | + vmm | [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | [] | + wcd | [] [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] [] | + +--------------------------------------------------+ + da de el en en_GB en_ZA eo es et eu fa fi fr + 119 131 32 1 6 0 94 95 22 13 4 102 139 + + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + +-------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] | + binutils | [] [] [] | + bison | [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | | + ccd2cue | [] | + ccide | [] [] | + cflow | [] [] [] | + clisp | | + coreutils | [] [] | + cpio | [] [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] | + cryptsetup | [] | + datamash | | + denemo | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] | + dink | [] | + direvent | [] | + doodle | [] [] | + dos2unix | [] [] | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] [] | + flex | [] | + freedink | [] [] [] [] | + fusionforge | | + gas | [] | + gawk | [] () [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] | + gettext-tools | [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] [] () | + gnubik | [] [] [] | + gnucash | () () () () () | + gnuchess | | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] | + hello | [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | | + hylafax | [] | + idutils | [] [] | + iso_15924 | [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | [] [] [] [] | + kbd | [] [] [] | + klavaro | [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | | + mailutils | | + make | [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] | + mkisofs | [] [] | + myserver | [] | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | | + pnmixer | [] [] | + popt | [] [] [] [] [] [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | [] | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] [] [] [] [] [] | + recutils | | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] [] [] [] [] [] | + sharutils | | + shishi | | + skribilo | [] | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] [] [] | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] [] | + tigervnc | | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] | + ve | [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | [] | + wcd | | + wcd-man | | + wdiff | [] [] [] | + wget | [] [] [] [] | + wyslij-po | [] [] [] | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 + + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + +--------------------------------------------------+ + a2ps | [] [] | + aegis | [] | + anubis | [] [] [] | + aspell | [] [] | + bash | [] [] | + bfd | | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | | + ccd2cue | | + ccide | [] [] | + cflow | [] | + clisp | [] | + coreutils | [] [] | + cpio | [] | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | [] [] | + denemo | | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] | + dink | [] | + direvent | [] | + doodle | [] | + dos2unix | [] [] | + dos2unix-man | [] | + e2fsprogs | [] | + enscript | [] | + exif | [] [] [] | + fetchmail | [] | + findutils | [] [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] | + gjay | | + glunarclock | [] [] | + gnubiff | [] | + gnubik | [] [] | + gnucash | () () () () () () () [] | + gnuchess | [] [] | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] [] | + gramadoir | [] | + grep | [] [] | + grub | [] [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] [] [] | + help2man | [] | + help2man-texi | | + hylafax | [] | + idutils | [] | + iso_15924 | () [] [] | + iso_3166 | [] [] [] () [] [] [] [] [] [] | + iso_3166_2 | () [] | + iso_4217 | () [] [] [] | + iso_639 | [] [] () [] [] [] [] | + iso_639_3 | [] () [] | + iso_639_5 | () | + jwhois | [] [] | + kbd | [] | + klavaro | [] [] | + ld | | + leafpad | [] [] [] [] [] | + libc | [] [] | + libexif | [] | + libextractor | [] | + libgnutls | [] [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] | + lilypond | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] [] | + man-db | [] | + man-db-manpages | [] | + midi-instruments | [] [] [] [] [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pies | | + pnmixer | [] | + popt | [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] | + recutils | [] | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | [] | + spotmachine | [] | + sudo | [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] | + tar | [] [] [] | + texinfo | [] | + texinfo_document | [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] | + trader | [] | + util-linux | [] | + ve | [] | + vice | [] | + vmm | [] | + vorbis-tools | [] | + wastesedge | [] | + wcd | [] | + wcd-man | [] | + wdiff | [] | + wget | [] [] | + wyslij-po | [] | + xboard | [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +--------------------------------------------------+ + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 + + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] [] [] [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] | + ccd2cue | [] [] | + ccide | [] [] [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cppi | [] [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] | + denemo | | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] | + dink | | + direvent | [] [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] | + e2fsprogs | [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] [] [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | [] [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] | + gnubik | [] [] [] [] | + gnucash | () () () () () [] | + gnuchess | [] [] | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] | + grep | [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] [] | + help2man-texi | [] | + hylafax | | + idutils | [] [] [] | + iso_15924 | [] () [] [] [] [] | + iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] () [] | + iso_4217 | [] [] () [] [] [] [] [] | + iso_639 | [] [] [] () [] [] [] [] [] [] | + iso_639_3 | [] () | + iso_639_5 | () [] | + jwhois | [] [] [] [] | + kbd | [] [] | + klavaro | [] [] [] [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] | + libexif | [] () [] | + libextractor | [] | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + liferea | [] [] [] [] () [] [] | + lilypond | | + lordsawar | | + lprng | [] | + lynx | [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + midi-instruments | [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] | + nano | [] [] [] [] [] [] | + opcodes | | + parted | [] [] [] [] [] [] | + pies | [] | + pnmixer | [] | + popt | [] [] [] [] [] [] | + procps-ng | [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + recutils | [] [] | + rpm | [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] | + shishi | [] [] | + skribilo | [] | + solfege | [] [] [] | + solfege-manual | [] [] | + spotmachine | [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] [] | + ve | [] [] [] | + vice | | + vmm | | + vorbis-tools | [] [] [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +------------------------------------------------+ + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 7 3 6 114 1 12 88 32 82 3 40 45 7 101 + + sv sw ta te tg th tr uk ur vi wa wo zh_CN + +----------------------------------------------+ + a2ps | [] [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | [] [] [] | + ccd2cue | [] [] [] | + ccide | [] [] [] [] | + cflow | [] [] [] [] | + clisp | | + coreutils | [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] | + cpplib | [] [] [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] [] | + denemo | [] | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] | + dink | [] | + direvent | [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + freedink | [] [] [] | + fusionforge | | + gas | [] | + gawk | [] [] [] | + gcal | [] [] [] | + gcc | [] | + gdbm | [] [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] | + glunarclock | [] [] [] [] | + gnubiff | [] [] | + gnubik | [] [] [] [] | + gnucash | () () () () [] | + gnuchess | [] [] [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | [] | + hylafax | [] | + idutils | [] [] [] | + iso_15924 | [] () [] [] () [] | + iso_3166 | [] [] () [] [] () [] [] | + iso_3166_2 | () [] [] () [] | + iso_4217 | [] () [] [] () [] | + iso_639 | [] [] [] () [] [] () [] [] | + iso_639_3 | [] () [] [] () | + iso_639_5 | () [] () | + jwhois | [] [] [] [] | + kbd | [] [] [] [] | + klavaro | [] [] [] [] [] [] | + ld | [] [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () | + libextractor | [] [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | () [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] | + mailfromd | [] [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] | + minicom | [] [] | + mkisofs | [] [] [] | + myserver | [] | + nano | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | [] [] | + pnmixer | [] [] [] | + popt | [] [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] [] | + pushover | [] | + pwdutils | [] [] | + pyspread | [] | + radius | [] [] | + recode | [] [] [] [] | + recutils | [] [] [] | + rpm | [] [] [] [] | + rush | [] [] | + sarg | | + sed | [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] | + skribilo | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] | + spotmachine | [] [] [] | + sudo | [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | | + wcd | [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] | + wget | [] [] [] | + wyslij-po | [] [] | + xboard | [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +----------------------------------------------+ + sv sw ta te tg th tr uk ur vi wa wo zh_CN + 106 1 4 3 0 13 51 115 1 125 7 1 100 + + zh_HK zh_TW + +-------------+ + a2ps | | 30 + aegis | | 9 + anubis | | 19 + aspell | | 29 + bash | [] | 23 + bfd | | 11 + binutils | | 12 + bison | [] | 18 + bison-runtime | [] | 38 + buzztrax | | 9 + ccd2cue | | 10 + ccide | | 17 + cflow | | 16 + clisp | | 10 + coreutils | | 18 + cpio | | 20 + cppi | | 17 + cpplib | [] | 19 + cryptsetup | | 14 + datamash | | 11 + denemo | | 5 + dfarc | | 17 + dialog | [] | 42 + dico | | 6 + diffutils | | 22 + dink | | 10 + direvent | | 11 + doodle | | 12 + dos2unix | [] | 18 + dos2unix-man | | 9 + e2fsprogs | | 15 + enscript | | 21 + exif | | 27 + fetchmail | | 19 + findutils | | 29 + flex | [] | 19 + freedink | | 24 + fusionforge | | 3 + gas | | 5 + gawk | | 13 + gcal | | 8 + gcc | | 2 + gdbm | | 10 + gettext-examples | [] [] | 40 + gettext-runtime | [] [] | 35 + gettext-tools | [] | 24 + gjay | | 9 + glunarclock | [] | 27 + gnubiff | | 9 + gnubik | | 19 + gnucash | () | 6 + gnuchess | | 11 + gnulib | | 23 + gnunet | | 1 + gnunet-gtk | | 1 + gold | | 7 + gphoto2 | [] | 19 + gprof | | 21 + gramadoir | | 14 + grep | [] | 31 + grub | | 21 + gsasl | [] | 19 + gss | | 17 + gst-plugins-bad | | 21 + gst-plugins-base | | 27 + gst-plugins-good | | 32 + gst-plugins-ugly | | 34 + gstreamer | [] | 32 + gtick | | 19 + gtkam | | 24 + gtkspell | [] [] | 48 + guix | | 2 + guix-packages | | 0 + gutenprint | | 15 + hello | [] | 30 + help2man | | 18 + help2man-texi | | 5 + hylafax | | 5 + idutils | | 14 + iso_15924 | [] | 23 + iso_3166 | [] [] | 58 + iso_3166_2 | | 9 + iso_4217 | [] [] | 28 + iso_639 | [] [] | 46 + iso_639_3 | | 10 + iso_639_5 | | 2 + jwhois | [] | 20 + kbd | | 17 + klavaro | | 30 + ld | [] | 15 + leafpad | [] | 39 + libc | [] | 24 + libexif | | 10 + libextractor | | 5 + libgnutls | | 13 + libgphoto2 | | 10 + libgphoto2_port | [] | 19 + libgsasl | | 18 + libiconv | [] | 29 + libidn | | 17 + liferea | | 29 + lilypond | | 11 + lordsawar | | 3 + lprng | | 3 + lynx | | 19 + m4 | [] | 22 + mailfromd | | 4 + mailutils | | 6 + make | | 19 + man-db | | 15 + man-db-manpages | | 10 + midi-instruments | [] | 43 + minicom | [] | 17 + mkisofs | | 13 + myserver | | 9 + nano | [] | 30 + opcodes | | 12 + parted | [] | 23 + pies | | 4 + pnmixer | | 9 + popt | [] | 36 + procps-ng | | 5 + procps-ng-man | | 4 + psmisc | [] | 22 + pspp | | 13 + pushover | | 6 + pwdutils | | 8 + pyspread | | 6 + radius | | 9 + recode | | 31 + recutils | | 10 + rpm | [] | 13 + rush | | 10 + sarg | | 4 + sed | [] | 35 + sharutils | | 13 + shishi | | 7 + skribilo | | 7 + solfege | | 21 + solfege-manual | | 9 + spotmachine | | 11 + sudo | | 26 + sudoers | | 22 + sysstat | | 23 + tar | [] | 30 + texinfo | | 17 + texinfo_document | | 13 + tigervnc | | 14 + tin | [] | 7 + tin-man | | 1 + tracgoogleappsa... | [] | 22 + trader | | 12 + util-linux | | 13 + ve | | 14 + vice | | 1 + vmm | | 3 + vorbis-tools | | 13 + wastesedge | | 3 + wcd | | 8 + wcd-man | | 3 + wdiff | [] | 23 + wget | | 21 + wyslij-po | | 14 + xboard | | 10 + xdg-user-dirs | [] [] | 68 + xkeyboard-config | [] | 28 + +-------------+ + 89 teams zh_HK zh_TW + 166 domains 7 42 2809 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and distributed +as such by its maintainer. There might be an observable lag between the +mere existence a PO file and its wide availability in a distribution. + + If Jun 2014 seems to be old, you may fetch a more recent copy of this +'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix +with full percentage details can be found at +'http://translationproject.org/extra/matrix.html'. + +1.5 Using 'gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU 'gettext' in your +package. Of course you have to respect the GNU Lesser General Public +License which covers the use of the GNU 'gettext' library. This means +in particular that even non-free programs can use 'libintl' as a shared +library, whereas only free software can use 'libintl' as a static +library or use modified versions of 'libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of 'gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +'coordinator@translationproject.org' to make the '.pot' files available +to the translation teams. diff --git a/ChangeLog b/ChangeLog index 5876cf5..2c5db4f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2017-11-07 gettextize + + * m4/gettext.m4: New file, from gettext-0.19.8.1. + * m4/iconv.m4: New file, from gettext-0.19.8.1. + * m4/lib-ld.m4: New file, from gettext-0.19.8.1. + * m4/lib-link.m4: New file, from gettext-0.19.8.1. + * m4/lib-prefix.m4: New file, from gettext-0.19.8.1. + * m4/nls.m4: New file, from gettext-0.19.8.1. + * m4/po.m4: New file, from gettext-0.19.8.1. + * m4/progtest.m4: New file, from gettext-0.19.8.1. + * Makefile.am (EXTRA_DIST): Add config.rpath. + * configure.ac (AC_CONFIG_FILES): Add po/Makefile.in. + +2017-11-07 gettextize + + * m4/gettext.m4: New file, from gettext-0.19.8.1. + * m4/iconv.m4: New file, from gettext-0.19.8.1. + * m4/lib-ld.m4: New file, from gettext-0.19.8.1. + * m4/lib-link.m4: New file, from gettext-0.19.8.1. + * m4/lib-prefix.m4: New file, from gettext-0.19.8.1. + * m4/nls.m4: New file, from gettext-0.19.8.1. + * m4/po.m4: New file, from gettext-0.19.8.1. + * m4/progtest.m4: New file, from gettext-0.19.8.1. + * configure.ac (AC_CONFIG_FILES): Add po/Makefile.in. + commit 13087e38ace4f092667ab08617ced1d559f3d2e2 Author: Akira TAGOH Date: Wed Apr 6 21:05:36 2016 +0900 diff --git a/Makefile.am b/Makefile.am index 2b4a5b8..cc3024e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,21 +21,22 @@ # 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 \ - fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \ - fc-validate conf.d test +SUBDIRS=fontconfig fc-case fc-lang src \ + fc-cache fc-cat fc-conflist fc-list fc-match \ + fc-pattern fc-query fc-scan fc-validate conf.d \ + its po po-conf test if ENABLE_DOCS SUBDIRS += doc endif ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = \ - fontconfig.pc.in \ - fonts.conf.in \ +EXTRA_DIST = config.rpath \ + fontconfig.pc.in \ + fonts.conf.in \ fonts.dtd \ - fontconfig.spec.in \ - fontconfig.spec \ + fontconfig.spec.in \ + fontconfig.spec \ fontconfig-zip.in \ config-fixups.h CLEANFILES = fonts.conf diff --git a/Makefile.in b/Makefile.in index a3e69a5..0b80f26 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -117,10 +117,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -216,14 +221,14 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags CSCOPE = cscope -DIST_SUBDIRS = fontconfig fc-blanks 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 doc +DIST_SUBDIRS = fontconfig fc-case fc-lang src fc-cache fc-cat \ + fc-conflist fc-list fc-match fc-pattern fc-query fc-scan \ + fc-validate conf.d its po po-conf test doc am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/fontconfig-zip.in $(srcdir)/fontconfig.pc.in \ - $(srcdir)/fontconfig.spec.in AUTHORS COPYING ChangeLog INSTALL \ - NEWS README compile config.guess config.sub depcomp install-sh \ - ltmain.sh missing + $(srcdir)/fontconfig.spec.in ABOUT-NLS AUTHORS COPYING \ + ChangeLog INSTALL NEWS README compile config.guess \ + config.rpath config.sub depcomp install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -306,7 +311,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -318,8 +327,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -331,11 +344,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -355,15 +373,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -371,8 +387,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -419,13 +441,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -434,11 +452,11 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = fontconfig fc-blanks 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 $(am__append_1) +SUBDIRS = fontconfig fc-case fc-lang src fc-cache fc-cat fc-conflist \ + fc-list fc-match fc-pattern fc-query fc-scan fc-validate \ + conf.d its po po-conf test $(am__append_1) ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = fontconfig.pc.in fonts.conf.in fonts.dtd \ +EXTRA_DIST = config.rpath fontconfig.pc.in fonts.conf.in fonts.dtd \ fontconfig.spec.in fontconfig.spec fontconfig-zip.in \ config-fixups.h ChangeLog CLEANFILES = fonts.conf @@ -742,7 +760,7 @@ distdir: $(DISTFILES) ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 @@ -767,7 +785,7 @@ dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -785,7 +803,7 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -795,7 +813,7 @@ distcheck: dist *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff --git a/README b/README index bf840a5..c5e605d 100644 --- a/README +++ b/README @@ -1,12 +1,326 @@ Fontconfig Font configuration and customization library - Version 2.12.1 - 2016-08-05 + Version 2.13 + 2018-03-06 Check INSTALL for compilation and installation instructions. Report bugs to https://bugs.freedesktop.org in the fontconfig module. +2.13 + +Akira TAGOH (4): + Add Simplified Chinese translations + Fix a build issue on MinGW with enabling nls + Initialize an array explicitly + Bump the libtool revision + +2.12.93 (2.13 RC3) + +Akira TAGOH (12): + trivial fix + Add files to enable ITS support in gettext + Use the native ITS support in gettext + Remove POTFILES.in until new release of gettext is coming... + export GETTEXTDATADIR to refer the local .its/.loc file instead of using --its option + clean up + Do not add cflags and libs coming from pkg-config file. + Revert some removal from 7ac6af6 + Take effects on dir, cachedir, acceptfont, and rejectfont only when loading + Do not mix up font dirs into the list of config dirs + Ensure the user config dir is available in the list of config dirs on the fallback config + Add missing files to ship + +Alexander Larsson (1): + FcHashTableAddInternal: Compare against the right key + +Behdad Esfahbod (5): + Remove hack for OS/2 weights 1..9 + Support FC_WIDTH as double as well + Fix leak + Use FT_Done_MM_Var if available + Fix undefined-behavior signed shifts + +Olivier Crête (1): + Fix cross-compilation by passing CPPFLAGS to CPP + +Tom Anderson (1): + Allow overriding symbol visibility. + +2.12.92 (2.13 RC2) + +Akira TAGOH (13): + cleanup files + Update .uuid only when -r is given but not -f. + Returns false if key is already available in the table + Add missing doc of FcDirCacheCreateUUID + Replace uuid in the table properly when -r + Add a test case for uuid creation + Do not update mtime with creating .uuid + Disable uuid related code on Win32 + Try to get current instance of FcConfig as far as possible + do not check the existence of itstool on win32 + Fix the mis-ordering of ruleset evaluation in a file with include element + Fix compiler warnings + Add FcReadLink to wrap up readlink impl. + +Alexander Larsson (1): + fchash: Fix replace + +Behdad Esfahbod (7): + Don't crash + Remove a debug abort() + Minor + Set font-variations settings for standard axes in variable fonts + Let pattern FC_FONT_VARIATIONS override standard axis variations + Put back accidentally removed code + Add FcWeightTo/FromOpenTypeDouble() + +2.12.91 (2.13 RC1) + +Akira TAGOH (37): + und_zsye.orth: polish to get for NotoEmoji-Regular.ttf + Revert "Keep the same behavior to the return value of FcConfigParseAndLoad" + Fix again to keep the same behavior to the return value of FcConfigParseAndLoad + cleanup + Fix a compiler warning + Update libtool revision + Bump version to 2.12.6 + doc: trivial update + Add the ruleset description support + workaround to avoid modifying by gettextize + missing an open parenthesis + another workaround to avoid modifying by gettextize... + Validate cache more carefully + Allow autoreconf through autopoint for gettext things + Correct debugging messages to load/scan config + Add the check of PCF_CONFIG_OPTION_LONG_FAMILY_NAMES back + Use uuid-based cache filename if uuid is assigned to dirs + Add new API to find out a font from current search path + Replace the font path in FcPattern to what it is actually located. + Replace the original path to the new one + Replace the path of subdirs in caches as well + Don't call FcStat when the alias has already been added + Destroy the alias and UUID tables when all of caches is unloaded + cleanup + abstract hash table functions + update + Fix memory leak + Fix a typo + Don't call FcStat when the alias has already been added + Add a testcase for bind-mounted cachedir + cleanup + Use smaller prime for hash size + Fix the testcase for env not enabled PCF_CONFIG_OPTION_LONG_FAMILY_NAMES in freetype + thread-safe functions in fchash.c + Fix distcheck error + Fix "make check" fail again + Bump the libtool revision + +Alban Browaeys (1): + Fixes cleanup + +Alexander Kanavin (1): + src/fcxml.c: avoid double free() of filename + +Bastien Nocera (1): + conf: Prefer system emoji fonts to third-party ones + +Behdad Esfahbod (76): + Minor + Remove stray printf() + [fc-query] Fix linking order + Instead of loading glyphs (with FreeType), just check loca table + Don't even check loca for glyph outline detection + Check for non-empty outline for U+0000..U+001F + Add back code for choosing strike, and cleanup + Minor: adjust debug output + Remove unnecessary check + Remove a few unused blanks parameters + Remove check that cannot fail + Remove use of psnames for charset construction + Remove unused variable + Remove fc-glyphname + Remove blanks facility from the library + Remove blanks support from fc-scan + Mark more parameters FC_UNUSED + Move variables to narrower scope and indent + Remove unneeded check + Use multiplication instead of division + Use inline functions instead of macros for a couple of things + Simplify advance-width calculations + Inline FcFreeTypeCheckGlyph() + Call FT_Get_Advance() only as long as we need to determine font width type + Minor + Update documentation for removal of blanks + Merge branch 'faster' + Add FcFreeTypeQueryAll() + Document FcFreeTypeQueryAll() + Accept NULL in for spacing in FcFreeTypeCharSetAndSpacing() + Remove FcCompareSize() + Rename FcCompareSizeRange() to FcCompareRange() + Rewrite FcCompareRange() + In FcSubstituteDefault(), handle size range + Check instance-index before accessing array + Indent + [varfonts] Add FC_FONT_VARIATIONS + [varfonts] Add FC_VARIABLE + [varfonts] Change id argument in FcFreeTypeQuery* to unsigned int + Print ranges as closed as opposed to half-open + [varfonts] Change FC_WEIGHT and FC_WIDTH into ranges + [varfonts] Query varfonts if id >> 16 == 0x8000 + Fix instance-num handling in collections + [varfonts] Query variable font in FcFreeTypeQueryAll() + [varfonts] Fetch optical-size for named instances + In RenderPrepare(), handle ranges smartly + [fc-query] Remove --ignore-blanks / -b + [fc-match/fc-list/fc-query/fc-scan] Add --brief that is like --verbose without charset + Add separate match compare function for size + Fix range comparision operators implementation + Adjust emboldening logic + [varfonts] Map from OpenType to Fontconfig weight values + Add FcDontCare value to FcBool + Implement more config bool operations for boolean types + Fix possible div-by-zero + [varfonts] Use fvar data even if there's no variation in it + Minor + Revert "[varfonts] Use fvar data even if there's no variation in it" + [varfonts] Minor + [varfonts] Comment + [varfonts] Don't set style for variable-font pattern + [varfonts] Skip named-instance that is equivalent to base font + [varfonts] Do not set postscriptname for varfont pattern + [varfonts] Don't reopen face for each named instance + Separate charset and spacing code + [varfonts] Reuse charset for named instances + Move whitespace-trimming code to apply to all name-table strings + Fix whitespace-trimming loop and empty strings... + Whitespace + Don't convert nameds to UTF-8 unless we are going to use them + Simplify name-table platform mathcing logic + Use binary-search for finding name table entries + [varfonts] Share lang across named-instances + Merge branch 'varfonts2' + Require freetype >= 2.8.1 + Remove assert + +David Kaspar [Dee'Kej] (1): + conf.d: Drop aliases for (URW)++ fonts + +Florian Müllner (1): + build: Remove references to deleted file + +2.12.6 + +Akira TAGOH (4): + und_zsye.orth: polish to get for NotoEmoji-Regular.ttf + Revert "Keep the same behavior to the return value of FcConfigParseAndLoad" + Fix again to keep the same behavior to the return value of FcConfigParseAndLoad + Update libtool revision + +Behdad Esfahbod (2): + Minor + [fc-query] Fix linking order + +David Kaspar [Dee'Kej] (1): + conf.d: Drop aliases for (URW)++ fonts + +Florian Müllner (1): + build: Remove references to deleted file + +2.12.5 + +Akira TAGOH (17): + Add FcPatternGetWithBinding() to obtain the binding type of the value in FcPattern. + Add FcConfigParseAndLoadFromMemory() to load a configuration from memory. + Bug 101726 - Sans config pulls in Microsoft Serifed font + Fix gcc warnings with enabling libxml2 + Add und-zsye.orth to support emoji in lang + Add more code points to und-zsye.orth + Keep the same behavior to the return value of FcConfigParseAndLoad + Do not ship fcobjshash.gperf in archive + Accept 4 digit script tag in FcLangNormalize(). + Fix to work the debugging option on fc-validate + Add und_zmth.orth to support Math in lang + Polish und_zmth.orth for Libertinus Math + Polish und_zmth.orth more for Cambria Math and Minion Math + Update similar to emoji's + fc-blanks: fall back to the static data available in repo if downloaded data is corrupted + Update docs + Update libtool versioning + +Behdad Esfahbod (14): + Pass --pic to gperf + Add generic family matching for "emoji" and "math" + [fc-query] Support listing named instances + Add Twitter Color Emoji + Add EmojiOne Mozilla font + [fc-lang] Allow using ".." instead of "-" in ranges + Minor + Remove unneeded codepoints + Adjust color emoji config some more + Ignore 'und-' prefix for in FcLangCompare + Minor + Fix sign-difference compare warning + Fix warning + Fix weight mapping + +2.12.4 + +Akira TAGOH (5): + Force regenerate fcobjshash.h when updating Makefile + Fix the build failure when srcdir != builddir and have gperf 3.1 or later installed + Add a testcase for Bug#131804 + Update libtool revision + Fix distcheck error + +Florent Rougon (6): + FcCharSetHash(): use the 'numbers' values to compute the hash + fc-lang: gracefully handle the case where the last language initial is < 'z' + Fix an off-by-one error in FcLangSetIndex() + Fix erroneous test on language id in FcLangSetPromote() + FcLangSetCompare(): fix bug when two charsets come from different "buckets" + FcCharSetFreezeOrig(), FcCharSetFindFrozen(): use all buckets of freezer->orig_hash_table + +Helmut Grohne (1): + fix cross compilation + +Jan Alexander Steffens (heftig) (1): + Fix testing PCF_CONFIG_OPTION_LONG_FAMILY_NAMES (CFLAGS need to be right) + +Josselin Mouette (1): + Treat C.UTF-8 and C.utf8 locales as built in the C library. + +Masamichi Hosoda (1): + Bug 99360 - Fix cache file update on MinGW + +2.12.3 + +Akira TAGOH (1): + Fix make check fail with freetype-2.7.1 and 2.8 with PCF_CONFIG_OPTION_LONG_FAMILY_NAMES enabled. + +2.12.2 + +Akira TAGOH (8): + Don't call perror() if no changes happens in errno + Fix FcCacheOffsetsValid() + Fix the build issue with gperf 3.1 + Fix the build issue on GNU/Hurd + Update a bit for the changes in FreeType 2.7.1 + Add the description of FC_LANG envvar to the doc + Bug 101202 - fontconfig FTBFS if docbook-utils is installed + Update libtool revision + +Alan Coopersmith (1): + Correct cache version info in doc/fontconfig-user.sgml + +Khem Raj (1): + Avoid conflicts with integer width macros from TS 18661-1:2014 + +Masamichi Hosoda (2): + Fix PostScript font alias name + Update aliases for URW June 2016 + 2.12.1 Akira TAGOH (6): diff --git a/aclocal.m4 b/aclocal.m4 index c6fed20..8ac4ff4 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -408,7 +408,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -605,7 +605,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -626,7 +626,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -647,7 +647,7 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -697,7 +697,7 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,7 +736,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -765,7 +765,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -812,242 +812,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# --------------------------------------------------------------------------- -# Adds support for distributing Python modules and packages. To -# install modules, copy them to $(pythondir), using the python_PYTHON -# automake variable. To install a package with the same name as the -# automake package, install to $(pkgpythondir), or use the -# pkgpython_PYTHON automake variable. -# -# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as -# locations to install python extension modules (shared libraries). -# Another macro is required to find the appropriate flags to compile -# extension modules. -# -# If your package is configured with a different prefix to python, -# users will have to add the install directory to the PYTHONPATH -# environment variable, or create a .pth file (see the python -# documentation for details). -# -# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will -# cause an error if the version of python installed on the system -# doesn't meet the requirement. MINIMUM-VERSION should consist of -# numbers and dots only. -AC_DEFUN([AM_PATH_PYTHON], - [ - dnl Find a Python interpreter. Python versions prior to 2.0 are not - dnl supported. (2.0 was released on October 16, 2000). - m4_define_default([_AM_PYTHON_INTERPRETER_LIST], -[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl - python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) - - AC_ARG_VAR([PYTHON], [the Python interpreter]) - - m4_if([$1],[],[ - dnl No version check is needed. - # Find any Python interpreter. - if test -z "$PYTHON"; then - AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) - fi - am_display_PYTHON=python - ], [ - dnl A version check is needed. - if test -n "$PYTHON"; then - # If the user set $PYTHON, use it and don't search something else. - AC_MSG_CHECKING([whether $PYTHON version is >= $1]) - AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Python interpreter is too old])]) - am_display_PYTHON=$PYTHON - else - # Otherwise, try each interpreter until we find one that satisfies - # VERSION. - AC_CACHE_CHECK([for a Python interpreter with version >= $1], - [am_cv_pathless_PYTHON],[ - for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do - test "$am_cv_pathless_PYTHON" = none && break - AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) - done]) - # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. - if test "$am_cv_pathless_PYTHON" = none; then - PYTHON=: - else - AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) - fi - am_display_PYTHON=$am_cv_pathless_PYTHON - fi - ]) - - if test "$PYTHON" = :; then - dnl Run any user-specified action, or abort. - m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) - else - - dnl Query Python for its version number. Getting [:3] seems to be - dnl the best way to do this; it's what "site.py" does in the standard - dnl library. - - AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], - [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) - AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) - - dnl Use the values of $prefix and $exec_prefix for the corresponding - dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made - dnl distinct variables so they can be overridden if need be. However, - dnl general consensus is that you shouldn't need this ability. - - AC_SUBST([PYTHON_PREFIX], ['${prefix}']) - AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) - - dnl At times (like when building shared libraries) you may want - dnl to know which OS platform Python thinks this is. - - AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], - [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) - AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) - - # Just factor out some code duplication. - am_python_setup_sysconfig="\ -import sys -# Prefer sysconfig over distutils.sysconfig, for better compatibility -# with python 3.x. See automake bug#10227. -try: - import sysconfig -except ImportError: - can_use_sysconfig = 0 -else: - can_use_sysconfig = 1 -# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: -# -try: - from platform import python_implementation - if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': - can_use_sysconfig = 0 -except ImportError: - pass" - - dnl Set up 4 directories: - - dnl pythondir -- where to install python scripts. This is the - dnl site-packages directory, not the python standard library - dnl directory like in previous automake betas. This behavior - dnl is more consistent with lispdir.m4 for example. - dnl Query distutils for this directory. - AC_CACHE_CHECK([for $am_display_PYTHON script directory], - [am_cv_python_pythondir], - [if test "x$prefix" = xNONE - then - am_py_prefix=$ac_default_prefix - else - am_py_prefix=$prefix - fi - am_cv_python_pythondir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pythondir in - $am_py_prefix*) - am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` - am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` - ;; - *) - case $am_py_prefix in - /usr|/System*) ;; - *) - am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac - ]) - AC_SUBST([pythondir], [$am_cv_python_pythondir]) - - dnl pkgpythondir -- $PACKAGE directory under pythondir. Was - dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is - dnl more consistent with the rest of automake. - - AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) - - dnl pyexecdir -- directory for installing python extension modules - dnl (shared libraries) - dnl Query distutils for this directory. - AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], - [am_cv_python_pyexecdir], - [if test "x$exec_prefix" = xNONE - then - am_py_exec_prefix=$am_py_prefix - else - am_py_exec_prefix=$exec_prefix - fi - am_cv_python_pyexecdir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pyexecdir in - $am_py_exec_prefix*) - am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` - am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` - ;; - *) - case $am_py_exec_prefix in - /usr|/System*) ;; - *) - am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac - ]) - AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) - - dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) - - AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) - - dnl Run any user-specified action. - $2 - fi - -]) - - -# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) -# --------------------------------------------------------------------------- -# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. -# Run ACTION-IF-FALSE otherwise. -# This test uses sys.hexversion instead of the string equivalent (first -# word of sys.version), in order to cope with versions such as 2.2c1. -# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). -AC_DEFUN([AM_PYTHON_CHECK_VERSION], - [prog="import sys -# split strings by '.' and convert to numeric. Append some zeros -# because we need at least 4 digits for the hex conversion. -# map returns an iterator in Python 3.0 and a list in 2.x -minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] -minverhex = 0 -# xrange is not present in Python 3.0 and range returns an iterator -for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] -sys.exit(sys.hexversion < minverhex)" - AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1066,7 +831,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1147,7 +912,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1207,7 +972,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1235,7 +1000,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1254,7 +1019,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1389,9 +1154,18 @@ m4_include([m4/ac_check_symbol.m4]) m4_include([m4/ax_cc_for_build.m4]) m4_include([m4/ax_create_stdint_h.m4]) m4_include([m4/ax_pthread.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) +m4_include([m4/nls.m4]) m4_include([m4/pkg.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) diff --git a/compile b/compile index a85b723..2ab71e4 100755 --- a/compile +++ b/compile @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -255,7 +255,8 @@ EOF echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -342,6 +343,6 @@ exit $ret # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/conf.d/10-autohint.conf b/conf.d/10-autohint.conf index f9032ba..50ec3b4 100644 --- a/conf.d/10-autohint.conf +++ b/conf.d/10-autohint.conf @@ -1,6 +1,11 @@ + + + + + Enable autohinter diff --git a/conf.d/30-metric-aliases.conf b/conf.d/30-metric-aliases.conf index cd1e924..147fde6 100644 --- a/conf.d/30-metric-aliases.conf +++ b/conf.d/30-metric-aliases.conf @@ -1,22 +1,27 @@ + + + + + Set substitutions for similar/metric-compatible families @@ -73,14 +81,14 @@ but in an order preferring similar designs first. We do this in three steps: Nimbus Sans Narrow - Helvetica Condensed + Helvetica Narrow TeX Gyre Heros Cn - Helvetica Condensed + Helvetica Narrow @@ -120,6 +128,13 @@ but in an order preferring similar designs first. We do this in three steps: + Nimbus Mono PS + + Courier + + + + TeX Gyre Cursor Courier @@ -176,6 +191,13 @@ but in an order preferring similar designs first. We do this in three steps: + URW Bookman + + ITC Bookman + + + + TeX Gyre Bonum ITC Bookman @@ -211,6 +233,13 @@ but in an order preferring similar designs first. We do this in three steps: + Z003 + + ITC Zapf Chancery + + + + TeX Gyre Chorus ITC Zapf Chancery @@ -232,6 +261,13 @@ but in an order preferring similar designs first. We do this in three steps: + P052 + + Palatino + + + + TeX Gyre Pagella Palatino @@ -260,6 +296,13 @@ but in an order preferring similar designs first. We do this in three steps: + C059 + + New Century Schoolbook + + + + TeX Gyre Schola New Century Schoolbook @@ -273,7 +316,6 @@ but in an order preferring similar designs first. We do this in three steps: - Arimo @@ -405,7 +447,7 @@ but in an order preferring similar designs first. We do this in three steps: - Helvetica Condensed + Helvetica Narrow Arial Narrow @@ -425,7 +467,6 @@ but in an order preferring similar designs first. We do this in three steps: - Arial @@ -437,7 +478,7 @@ but in an order preferring similar designs first. We do this in three steps: Arial Narrow - Helvetica Condensed + Helvetica Narrow @@ -455,8 +496,6 @@ but in an order preferring similar designs first. We do this in three steps: - - @@ -464,16 +503,13 @@ but in an order preferring similar designs first. We do this in three steps: Helvetica TeX Gyre Heros - Nimbus Sans - Nimbus Sans L - Helvetica Condensed + Helvetica Narrow TeX Gyre Heros Cn - Nimbus Sans Narrow @@ -481,8 +517,6 @@ but in an order preferring similar designs first. We do this in three steps: Times TeX Gyre Termes - Nimbus Roman - Nimbus Roman No9 L @@ -490,8 +524,6 @@ but in an order preferring similar designs first. We do this in three steps: Courier TeX Gyre Cursor - Nimbus Mono - Nimbus Mono L @@ -499,8 +531,6 @@ but in an order preferring similar designs first. We do this in three steps: ITC Avant Garde Gothic TeX Gyre Adventor - URW Gothic - URW Gothic L @@ -509,8 +539,6 @@ but in an order preferring similar designs first. We do this in three steps: Bookman Old Style TeX Gyre Bonum - Bookman URW - URW Bookman L @@ -518,8 +546,6 @@ but in an order preferring similar designs first. We do this in three steps: ITC Zapf Chancery TeX Gyre Chorus - Chancery URW - URW Chancery L @@ -528,8 +554,6 @@ but in an order preferring similar designs first. We do this in three steps: Palatino Linotype TeX Gyre Pagella - Palladio URW - URW Palladio L @@ -538,8 +562,6 @@ but in an order preferring similar designs first. We do this in three steps: Century Schoolbook TeX Gyre Schola - Century SchoolBook URW - Century Schoolbook L diff --git a/conf.d/30-urw-aliases.conf b/conf.d/30-urw-aliases.conf deleted file mode 100644 index e0d45da..0000000 --- a/conf.d/30-urw-aliases.conf +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Zapf Dingbats - Dingbats - - - ITC Zapf Dingbats - Dingbats - - - - Symbol - - - Standard Symbols L - - - diff --git a/conf.d/40-nonlatin.conf b/conf.d/40-nonlatin.conf index c900fd4..0af8832 100644 --- a/conf.d/40-nonlatin.conf +++ b/conf.d/40-nonlatin.conf @@ -1,6 +1,11 @@ + + + + + Set substitutions for non-Latin fonts + + + + + + Noto Color Emoji + emoji + + + Apple Color Emoji + emoji + + + Segoe UI Emoji + emoji + + + Twitter Color Emoji + emoji + + + EmojiOne Mozilla + emoji + + + + Emoji Two + emoji + + + Emoji One + emoji + + + + Noto Emoji + emoji + + + Android Emoji + emoji + + + + + + emoji + + + und-zsye + + + + + + und-zsye + + + emoji + + + + + emoji + + + + + + + + + XITS Math + math + + + STIX Two Math + math + + + Cambria Math + math + + + Latin Modern Math + math + + + Minion Math + math + + + Lucida Math + math + + + Asana Math + math + + + + + + math + + + und-zmth + + + + + + und-zmth + + + math + + + + + math + + + + + diff --git a/conf.d/45-latin.conf b/conf.d/45-latin.conf index 5228945..a9240b9 100644 --- a/conf.d/45-latin.conf +++ b/conf.d/45-latin.conf @@ -1,6 +1,11 @@ + + + + + Set substitutions for Latin fonts diff --git a/conf.d/50-user.conf b/conf.d/50-user.conf index 07c9182..681ed6d 100644 --- a/conf.d/50-user.conf +++ b/conf.d/50-user.conf @@ -1,6 +1,11 @@ + + + + + Load per-user customization files local.conf diff --git a/conf.d/60-generic.conf b/conf.d/60-generic.conf new file mode 100644 index 0000000..be7b52b --- /dev/null +++ b/conf.d/60-generic.conf @@ -0,0 +1,67 @@ + + + + + + + + Set preferable fonts for emoji/math fonts + + + + + + + + und-zsye + + + true + + + false + + + true + + + + + + emoji + + + Noto Color Emoji + Apple Color Emoji + Segoe UI Emoji + Twitter Color Emoji + EmojiOne Mozilla + + Emoji Two + Emoji One + + Noto Emoji + Android Emoji + + + + + + + math + + XITS Math + STIX Two Math + Cambria Math + Latin Modern Math + Minion Math + Lucida Math + Asana Math + + + + diff --git a/conf.d/60-latin.conf b/conf.d/60-latin.conf index 35600ea..5be5d6a 100644 --- a/conf.d/60-latin.conf +++ b/conf.d/60-latin.conf @@ -1,6 +1,11 @@ + + + + + Set preferable fonts for Latin serif @@ -43,6 +48,7 @@ Luxi Mono Nimbus Mono L Nimbus Mono + Nimbus Mono PS Courier diff --git a/conf.d/65-fonts-persian.conf b/conf.d/65-fonts-persian.conf index ea00661..5591486 100644 --- a/conf.d/65-fonts-persian.conf +++ b/conf.d/65-fonts-persian.conf @@ -31,6 +31,10 @@ 2008 Behdad Esfahbod: Cleanup. Add fantasy and cursive. --> + + + + diff --git a/conf.d/65-khmer.conf b/conf.d/65-khmer.conf index f9d06f2..8985c0d 100644 --- a/conf.d/65-khmer.conf +++ b/conf.d/65-khmer.conf @@ -1,6 +1,10 @@ + + + + serif diff --git a/conf.d/65-nonlatin.conf b/conf.d/65-nonlatin.conf index 9306f74..dcbb677 100644 --- a/conf.d/65-nonlatin.conf +++ b/conf.d/65-nonlatin.conf @@ -1,6 +1,11 @@ + + + + + Set preferable fonts for non-Latin serif @@ -96,9 +101,8 @@ Hapax Berbère MS Gothic UmePlus P Gothic - - SimSun - PMingLiu + Microsoft YaHei + Microsoft JhengHei WenQuanYi Zen Hei WenQuanYi Bitmap Song AR PL ShanHeiSun Uni diff --git a/conf.d/69-unifont.conf b/conf.d/69-unifont.conf index 177dec5..a3586f2 100644 --- a/conf.d/69-unifont.conf +++ b/conf.d/69-unifont.conf @@ -1,6 +1,10 @@ + + + + serif diff --git a/conf.d/70-no-bitmaps.conf b/conf.d/70-no-bitmaps.conf index 6b506e8..efb1bc0 100644 --- a/conf.d/70-no-bitmaps.conf +++ b/conf.d/70-no-bitmaps.conf @@ -1,6 +1,11 @@ + + + + + Reject bitmap fonts diff --git a/conf.d/70-yes-bitmaps.conf b/conf.d/70-yes-bitmaps.conf index c153aeb..0c70a53 100644 --- a/conf.d/70-yes-bitmaps.conf +++ b/conf.d/70-yes-bitmaps.conf @@ -1,6 +1,11 @@ + + + + + Accept bitmap fonts diff --git a/conf.d/80-delicious.conf b/conf.d/80-delicious.conf index 845647b..8cd01f9 100644 --- a/conf.d/80-delicious.conf +++ b/conf.d/80-delicious.conf @@ -1,6 +1,10 @@ + + + + diff --git a/conf.d/90-synthetic.conf b/conf.d/90-synthetic.conf index b8d1e85..e344e4a 100644 --- a/conf.d/90-synthetic.conf +++ b/conf.d/90-synthetic.conf @@ -1,6 +1,10 @@ + + + + @@ -40,11 +44,11 @@ - medium + regular - - medium + + bold + + + FcDirCacheCreateUUID + 3 + Fontconfig &version; + + + FcDirCacheCreateUUID + Create .uuid file at a directory + + + + +#include <fontconfig/fontconfig.h> + + + FcBool FcDirCacheCreateUUID + FcChar8 *dir + FcBoolforce + FcConfigconfig + + + + Description + +This is to create .uuid file containing an UUID at a font directory of +dir. +The UUID will be used to identify the font directory and is used to determine +the cache filename if available. + + + Since + version 2.12.92 + + diff --git a/doc/fcconfig.fncs b/doc/fcconfig.fncs index a2ce5c8..de7a5d7 100644 --- a/doc/fcconfig.fncs +++ b/doc/fcconfig.fncs @@ -181,11 +181,8 @@ If config is NULL, the current configuration is used. @TYPE1@ FcConfig * @ARG1@ config @PURPOSE@ Get config blanks @DESC@ -Returns the FcBlanks object associated with the given configuration, if no -blanks were present in the configuration, this function will return 0. -The returned FcBlanks object if not NULL, is valid as long as the owning -FcConfig is alive. -If config is NULL, the current configuration is used. +FcBlanks is deprecated. +This function always returns NULL. @@ @RET@ int @@ -375,6 +372,22 @@ Returns FcFalse if some error occurred while loading the file, either a parse error, semantic error or allocation failure. Otherwise returns FcTrue. @@ +@RET@ FcBool +@FUNC@ FcConfigParseAndLoadFromMemory +@TYPE1@ FcConfig * @ARG1@ config +@TYPE2@ const FcChar8 * @ARG2@ buffer +@TYPE3@ FcBool% @ARG3@ complain +@PURPOSE@ load a configuration from memory +@DESC@ +Walks the configuration in 'memory' and constructs the internal representation +in 'config'. Any includes files referenced from within 'memory' will be loaded +and dparsed. If 'complain' is FcFalse, no warning will be displayed if +'file' does not exist. Error and warning messages will be output to stderr. +Returns FcFalse if fsome error occurred while loading the file, either a +parse error, semantic error or allocation failure. Otherwise returns FcTrue. +@SINCE@ 2.12.5 +@@ + @RET@ const FcChar8 * @FUNC@ FcConfigGetSysRoot @TYPE1@ const FcConfig * @ARG1@ config @@ -397,3 +410,38 @@ this function calls FcConfigSetCurrent() internally. @SINCE@ 2.10.92 @@ +@RET@ void +@FUNC@ FcConfigFileInfoIterInit +@TYPE1@ FcConfig * @ARG1@ config +@TYPE2@ FcConfigFileInfoIter * @ARG2@ iter +@PURPOSE@ Initialize the iterator +@DESC@ +Initialize 'iter' with the first iterator in the config file information list. +@SINCE@ 2.12.91 +@@ + +@RET@ FcBool +@FUNC@ FcConfigFileInfoIterNext +@TYPE1@ FcConfig * @ARG1@ config +@TYPE2@ FcConfigFileInfoIter * @ARG2@ iter +@PURPOSE@ Set the iterator to point to the next list +@DESC@ +Set 'iter' to point to the next node in the config file information list. +If there is no next node, FcFalse is returned. +@SINCE@ 2.12.91 +@@ + +@RET@ FcBool +@FUNC@ FcConfigFileInfoIterGet +@TYPE1@ FcConfig * @ARG1@ config +@TYPE2@ FcConfigFileInfoIter * @ARG2@ iter +@TYPE3@ FcChar8 ** @ARG3@ name +@TYPE4@ FcChar8 ** @ARG4@ description +@TYPE5@ FcBool * @ARG5@ enabled +@PURPOSE@ Obtain the configuration file information +@DESC@ +Obtain the filename, the description and the flag whether it is enabled or not +for 'iter' where points to current configuration file information. +If the iterator is invalid, FcFalse is returned. +@SINCE@ 2.12.91 +@@ diff --git a/doc/fcconfig.sgml b/doc/fcconfig.sgml index d1f771e..d295203 100644 --- a/doc/fcconfig.sgml +++ b/doc/fcconfig.sgml @@ -829,11 +829,8 @@ If config is NULL, the current configuration is used. Description -Returns the FcBlanks object associated with the given configuration, if no -blanks were present in the configuration, this function will return 0. -The returned FcBlanks object if not NULL, is valid as long as the owning -FcConfig is alive. -If config is NULL, the current configuration is used. +FcBlanks is deprecated. +This function always returns NULL. @@ -1593,6 +1590,66 @@ parse error, semantic error or allocation failure. Otherwise returns FcTrue. TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> + + + FcConfigParseAndLoadFromMemory + 3 + Fontconfig &version; + + + FcConfigParseAndLoadFromMemory + load a configuration from memory + + + + +#include <fontconfig/fontconfig.h> + + + FcBool FcConfigParseAndLoadFromMemory + FcConfig *config + const FcChar8 *buffer + FcBool complain + + + + Description + +Walks the configuration in 'memory' and constructs the internal representation +in 'config'. Any includes files referenced from within 'memory' will be loaded +and dparsed. If 'complain' is FcFalse, no warning will be displayed if +'file' does not exist. Error and warning messages will be output to stderr. +Returns FcFalse if fsome error occurred while loading the file, either a +parse error, semantic error or allocation failure. Otherwise returns FcTrue. + + + Since + version 2.12.5 + + + FcConfigGetSysRoot @@ -1680,3 +1737,171 @@ this function calls FcConfigSetCurrent() internally. version 2.10.92 + + + + FcConfigFileInfoIterInit + 3 + Fontconfig &version; + + + FcConfigFileInfoIterInit + Initialize the iterator + + + + +#include <fontconfig/fontconfig.h> + + + void FcConfigFileInfoIterInit + FcConfig *config + FcConfigFileInfoIter *iter + + + + Description + +Initialize 'iter' with the first iterator in the config file information list. + + + Since + version 2.12.91 + + + + + + FcConfigFileInfoIterNext + 3 + Fontconfig &version; + + + FcConfigFileInfoIterNext + Set the iterator to point to the next list + + + + +#include <fontconfig/fontconfig.h> + + + FcBool FcConfigFileInfoIterNext + FcConfig *config + FcConfigFileInfoIter *iter + + + + Description + +Set 'iter' to point to the next node in the config file information list. +If there is no next node, FcFalse is returned. + + + Since + version 2.12.91 + + + + + + FcConfigFileInfoIterGet + 3 + Fontconfig &version; + + + FcConfigFileInfoIterGet + Obtain the configuration file information + + + + +#include <fontconfig/fontconfig.h> + + + FcBool FcConfigFileInfoIterGet + FcConfig *config + FcConfigFileInfoIter *iter + FcChar8 **name + FcChar8 **description + FcBool *enabled + + + + Description + +Obtain the filename, the description and the flag whether it is enabled or not +for 'iter' where points to current configuration file information. +If the iterator is invalid, FcFalse is returned. + + + Since + version 2.12.91 + + diff --git a/doc/fcfreetype.fncs b/doc/fcfreetype.fncs index e4cca46..af63e83 100644 --- a/doc/fcfreetype.fncs +++ b/doc/fcfreetype.fncs @@ -47,10 +47,9 @@ higher level functions. @TYPE2@ FcBlanks * @ARG2@ blanks @PURPOSE@ compute Unicode coverage @DESC@ -Scans a FreeType face and returns the set of encoded Unicode chars. This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +Scans a FreeType face and returns the set of encoded Unicode chars. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. @@ @SYNOPSIS@ @@ -64,10 +63,8 @@ not in 'blanks' are not placed in the returned FcCharSet. @PURPOSE@ compute Unicode coverage and spacing type @DESC@ Scans a FreeType face and returns the set of encoded Unicode chars. -This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. spacing receives the computed spacing type of the font, one of FC_MONO for a font where all glyphs have the same width, FC_DUAL, where the font has glyphs in precisely two widths, one twice as @@ -86,8 +83,38 @@ widths. @TYPE4@ int * @ARG4@ count @PURPOSE@ compute pattern from font file (and index) @DESC@ -Constructs a pattern representing the 'id'th font in 'file'. The number -of fonts in 'file' is returned in 'count'. +Constructs a pattern representing the 'id'th face in 'file'. The number +of faces in 'file' is returned in 'count'. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. +@@ + +unsigned int +FcFreeTypeQueryAll(const FcChar8 *file, + int id, + FcBlanks *blanks, + int *count, + FcFontSet *set) +@SYNOPSIS@ +#include <fontconfig.h> +#include <fcfreetype.h> +@RET@ unsigned int +@FUNC@ FcFreeTypeQueryAll +@TYPE1@ const FcChar8 * @ARG1@ file +@TYPE2@ int% @ARG2@ id +@TYPE3@ FcBlanks * @ARG3@ blanks +@TYPE4@ int * @ARG4@ count +@TYPE5@ FcFontSet * @ARG5@ set +@PURPOSE@ compute all patterns from font file (and index) +@DESC@ +Constructs patterns found in 'file'. +If id is -1, then all patterns found in 'file' are added to 'set'. +Otherwise, this function works exactly like FcFreeTypeQuery(). +The number of faces in 'file' is returned in 'count'. +The number of patterns added to 'set' is returned. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. +@SINCE@ 2.12.91 @@ @SYNOPSIS@ @@ -103,4 +130,6 @@ of fonts in 'file' is returned in 'count'. @DESC@ Constructs a pattern representing 'face'. 'file' and 'id' are used solely as data for pattern elements (FC_FILE, FC_INDEX and sometimes FC_FAMILY). +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. @@ diff --git a/doc/fcfreetype.sgml b/doc/fcfreetype.sgml index 12eb4f4..1286a3e 100644 --- a/doc/fcfreetype.sgml +++ b/doc/fcfreetype.sgml @@ -102,10 +102,9 @@ higher level functions. Description -Scans a FreeType face and returns the set of encoded Unicode chars. This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +Scans a FreeType face and returns the set of encoded Unicode chars. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. @@ -159,10 +158,8 @@ not in 'blanks' are not placed in the returned FcCharSet. Description Scans a FreeType face and returns the set of encoded Unicode chars. -This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. spacing receives the computed spacing type of the font, one of FC_MONO for a font where all glyphs have the same width, FC_DUAL, where the font has glyphs in precisely two widths, one twice as @@ -221,10 +218,76 @@ widths. Description -Constructs a pattern representing the 'id'th font in 'file'. The number -of fonts in 'file' is returned in 'count'. +Constructs a pattern representing the 'id'th face in 'file'. The number +of faces in 'file' is returned in 'count'. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. + + + + + + + FcFreeTypeQueryAll + 3 + Fontconfig &version; + + + FcFreeTypeQueryAll + compute all patterns from font file (and index) + + + + +#include <fontconfig.h> +#include <fcfreetype.h> + + + unsigned int FcFreeTypeQueryAll + const FcChar8 *file + int id + FcBlanks *blanks + int *count + FcFontSet *set + + + + Description + +Constructs patterns found in 'file'. +If id is -1, then all patterns found in 'file' are added to 'set'. +Otherwise, this function works exactly like FcFreeTypeQuery(). +The number of faces in 'file' is returned in 'count'. +The number of patterns added to 'set' is returned. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. + Since + version 2.12.91 + + + + FcPatternGetWithBinding + 3 + Fontconfig &version; + + + FcPatternGetWithBinding + Return a value with binding from a pattern + + + + +#include <fontconfig/fontconfig.h> + + + FcResult FcPatternGetWithBinding + FcPattern *p + const char *object + int id + FcValue *v + FcValueBinding *b + + + + Description + +Returns in v the id'th value +and b binding for that associated with the property +object. +The Value returned is not a copy, but rather refers to the data stored +within the pattern directly. Applications must not free this value. + + + Since + version 2.12.5 + + + FcPatternGet diff --git a/doc/fcweight.fncs b/doc/fcweight.fncs index 2872dd6..4884b27 100644 --- a/doc/fcweight.fncs +++ b/doc/fcweight.fncs @@ -19,18 +19,41 @@ * 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 +@RET@ double +@FUNC@ FcWeightFromOpenTypeDouble +@TYPE1@ double @ARG1@ ot_weight @PURPOSE@ Convert from OpenType weight values to fontconfig ones @DESC@ -FcWeightFromOpenType returns an integer value -to use with FC_WEIGHT, from an integer in the 1..1000 range, resembling +FcWeightFromOpenTypeDouble returns an double value +to use with FC_WEIGHT, from an double 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 +zero, or greater than 1000, returns -1. This function linearly doubleerpolates between various FC_WEIGHT_* constants. As such, the returned value does not necessarily match any of the predefined constants. +@SINCE@ 2.12.92 +@@ + +@RET@ double +@FUNC@ FcWeightToOpenTypeDouble +@TYPE1@ double @ARG1@ ot_weight +@PURPOSE@ Convert from fontconfig weight values to OpenType ones +@DESC@ +FcWeightToOpenTypeDouble is the inverse of +FcWeightFromOpenType. 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.12.92 +@@ + +@RET@ int +@FUNC@ FcWeightFromOpenType +@TYPE1@ int @ARG1@ ot_weight +@PURPOSE@ Convert from OpenType weight values to fontconfig ones +@DESC@ +FcWeightFromOpenType is like +FcWeightFromOpenTypeDouble but with integer arguments. +Use the other function instead. @SINCE@ 2.11.91 @@ @@ -39,9 +62,8 @@ necessarily match any of the predefined constants. @TYPE1@ int @ARG1@ ot_weight @PURPOSE@ Convert from fontconfig weight values to OpenType ones @DESC@ -FcWeightToOpenType is the inverse of -FcWeightFromOpenType. 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. +FcWeightToOpenType is like +FcWeightToOpenTypeDouble but with integer arguments. +Use the other function instead. @SINCE@ 2.11.91 @@ diff --git a/doc/fcweight.sgml b/doc/fcweight.sgml index a8a235f..ae4bcc3 100644 --- a/doc/fcweight.sgml +++ b/doc/fcweight.sgml @@ -21,6 +21,121 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> + + + FcWeightFromOpenTypeDouble + 3 + Fontconfig &version; + + + FcWeightFromOpenTypeDouble + Convert from OpenType weight values to fontconfig ones + + + + +#include <fontconfig/fontconfig.h> + + + double FcWeightFromOpenTypeDouble + doubleot_weight + + + + Description + +FcWeightFromOpenTypeDouble returns an double value +to use with FC_WEIGHT, from an double 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 doubleerpolates +between various FC_WEIGHT_* constants. As such, the returned value does not +necessarily match any of the predefined constants. + + + Since + version 2.12.92 + + + + + + FcWeightToOpenTypeDouble + 3 + Fontconfig &version; + + + FcWeightToOpenTypeDouble + Convert from fontconfig weight values to OpenType ones + + + + +#include <fontconfig/fontconfig.h> + + + double FcWeightToOpenTypeDouble + doubleot_weight + + + + Description + +FcWeightToOpenTypeDouble is the inverse of +FcWeightFromOpenType. 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 + version 2.12.92 + + + FcWeightFromOpenType @@ -44,13 +159,9 @@ Description -FcWeightFromOpenType 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. +FcWeightFromOpenType is like +FcWeightFromOpenTypeDouble but with integer arguments. +Use the other function instead. Since @@ -103,10 +214,9 @@ necessarily match any of the predefined constants. Description -FcWeightToOpenType is the inverse of -FcWeightFromOpenType. 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. +FcWeightToOpenType is like +FcWeightToOpenTypeDouble but with integer arguments. +Use the other function instead. Since diff --git a/doc/fontconfig-devel.pdf b/doc/fontconfig-devel.pdf index 4603d10..526ae79 100644 Binary files a/doc/fontconfig-devel.pdf and b/doc/fontconfig-devel.pdf differ diff --git a/doc/fontconfig-devel.sgml b/doc/fontconfig-devel.sgml index d0ec8a5..6a6caef 100644 --- a/doc/fontconfig-devel.sgml +++ b/doc/fontconfig-devel.sgml @@ -380,6 +380,11 @@ holds a list of Unicode chars which are expected to be blank; unexpectedly blank chars are assumed to be invalid and are elided from the charset associated with the font. + + FcBlanks is deprecated and should not be used in newly written code. + It is still accepted by some functions for compatibility with + older code but will be removed in the future. + FcFileCache @@ -558,6 +563,11 @@ empty and not in this list will be assumed to be broken and not placed in the FcCharSet associated with the font. This provides a significantly more accurate CharSet for applications. + + FcBlanks is deprecated and should not be used in newly written code. + It is still accepted by some functions for compatibility with + older code but will be removed in the future. + &fcblanks; FcAtomic diff --git a/doc/fontconfig-devel.txt b/doc/fontconfig-devel.txt index 9a715c2..dc638c3 100644 --- a/doc/fontconfig-devel.txt +++ b/doc/fontconfig-devel.txt @@ -1,4 +1,4 @@ -Fontconfig Developers Reference, Version 2.12.1 +Fontconfig Developers Reference, Version 2.13.0 Copyright © 2002 Keith Packard @@ -377,6 +377,10 @@ FcBlanks holds a list of Unicode chars which are expected to be blank; unexpectedly blank chars are assumed to be invalid and are elided from the charset associated with the font. + + FcBlanks is deprecated and should not be used in newly written + code. It is still accepted by some functions for compatibility + with older code but will be removed in the future. __________________________________________________________ FcFileCache @@ -604,6 +608,9 @@ FcPattern FcPatternAdd -- Add a value to a pattern FcPatternAddWeak -- Add a value to a pattern with weak binding FcPatternAdd-Type -- Add a typed value to a pattern + FcPatternGetWithBinding -- Return a value with binding from a + pattern + FcPatternGet -- Return a value from a pattern FcPatternGet-Type -- Return a typed value from a pattern FcPatternBuild -- Create patterns from arguments @@ -853,6 +860,31 @@ Description These all append values to any existing list of values. FcPatternAddRange are available since 2.11.91. +FcPatternGetWithBinding + +Name + + FcPatternGetWithBinding -- Return a value with binding from a + pattern + +Synopsis + +#include + + FcResult FcPatternGetWithBinding(FcPattern *p, const char + *object, int id, FcValue *v, FcValueBinding *b); + +Description + + Returns in v the id'th value and b binding for that associated + with the property object. The Value returned is not a copy, but + rather refers to the data stored within the pattern directly. + Applications must not free this value. + +Since + + version 2.12.5 + FcPatternGet Name @@ -1587,6 +1619,9 @@ FreeType specific functions spacing type FcFreeTypeQuery -- compute pattern from font file (and index) + FcFreeTypeQueryAll -- compute all patterns from font file (and + index) + FcFreeTypeQueryFace -- compute pattern from FT_Face While the fontconfig library doesn't insist that FreeType be @@ -1631,10 +1666,8 @@ Synopsis Description Scans a FreeType face and returns the set of encoded Unicode - chars. This scans several encoding tables to build as complete - a list as possible. If 'blanks' is not 0, the glyphs in the - font are examined and any blank glyphs not in 'blanks' are not - placed in the returned FcCharSet. + chars. FcBlanks is deprecated, blanks is ignored and accepted + only for compatibility with older code. FcFreeTypeCharSetAndSpacing @@ -1654,14 +1687,13 @@ Synopsis Description Scans a FreeType face and returns the set of encoded Unicode - chars. This scans several encoding tables to build as complete - a list as possible. If 'blanks' is not 0, the glyphs in the - font are examined and any blank glyphs not in 'blanks' are not - placed in the returned FcCharSet. spacing receives the computed - spacing type of the font, one of FC_MONO for a font where all - glyphs have the same width, FC_DUAL, where the font has glyphs - in precisely two widths, one twice as wide as the other, or - FC_PROPORTIONAL where the font has glyphs of many widths. + chars. FcBlanks is deprecated, blanks is ignored and accepted + only for compatibility with older code. spacing receives the + computed spacing type of the font, one of FC_MONO for a font + where all glyphs have the same width, FC_DUAL, where the font + has glyphs in precisely two widths, one twice as wide as the + other, or FC_PROPORTIONAL where the font has glyphs of many + widths. FcFreeTypeQuery @@ -1679,8 +1711,38 @@ Synopsis Description - Constructs a pattern representing the 'id'th font in 'file'. - The number of fonts in 'file' is returned in 'count'. + Constructs a pattern representing the 'id'th face in 'file'. + The number of faces in 'file' is returned in 'count'. FcBlanks + is deprecated, blanks is ignored and accepted only for + compatibility with older code. + +FcFreeTypeQueryAll + +Name + + FcFreeTypeQueryAll -- compute all patterns from font file (and + index) + +Synopsis + +#include +#include + + unsigned int FcFreeTypeQueryAll(const FcChar8 *file, int id, + FcBlanks *blanks, int *count, FcFontSet *set); + +Description + + Constructs patterns found in 'file'. If id is -1, then all + patterns found in 'file' are added to 'set'. Otherwise, this + function works exactly like FcFreeTypeQuery(). The number of + faces in 'file' is returned in 'count'. The number of patterns + added to 'set' is returned. FcBlanks is deprecated, blanks is + ignored and accepted only for compatibility with older code. + +Since + + version 2.12.91 FcFreeTypeQueryFace @@ -1700,7 +1762,8 @@ Description Constructs a pattern representing 'face'. 'file' and 'id' are used solely as data for pattern elements (FC_FILE, FC_INDEX and - sometimes FC_FAMILY). + sometimes FC_FAMILY). FcBlanks is deprecated, blanks is ignored + and accepted only for compatibility with older code. __________________________________________________________ FcValue @@ -2825,8 +2888,17 @@ FcConfig FcFontList -- List fonts FcConfigFilename -- Find a config file FcConfigParseAndLoad -- load a configuration file + FcConfigParseAndLoadFromMemory -- load a configuration from + memory + FcConfigGetSysRoot -- Obtain the system root directory FcConfigSetSysRoot -- Set the system root directory + FcConfigFileInfoIterInit -- Initialize the iterator + FcConfigFileInfoIterNext -- Set the iterator to point to the + next list + + FcConfigFileInfoIterGet -- Obtain the configuration file + information An FcConfig object holds the internal representation of a configuration. There is a default configuration which @@ -3130,11 +3202,7 @@ Synopsis Description - Returns the FcBlanks object associated with the given - configuration, if no blanks were present in the configuration, - this function will return 0. The returned FcBlanks object if - not NULL, is valid as long as the owning FcConfig is alive. If - config is NULL, the current configuration is used. + FcBlanks is deprecated. This function always returns NULL. FcConfigGetRescanInterval @@ -3427,6 +3495,35 @@ Description parse error, semantic error or allocation failure. Otherwise returns FcTrue. +FcConfigParseAndLoadFromMemory + +Name + + FcConfigParseAndLoadFromMemory -- load a configuration from + memory + +Synopsis + +#include + + FcBool FcConfigParseAndLoadFromMemory(FcConfig *config, const + FcChar8 *buffer, FcBool complain); + +Description + + Walks the configuration in 'memory' and constructs the internal + representation in 'config'. Any includes files referenced from + within 'memory' will be loaded and dparsed. If 'complain' is + FcFalse, no warning will be displayed if 'file' does not exist. + Error and warning messages will be output to stderr. Returns + FcFalse if fsome error occurred while loading the file, either + a parse error, semantic error or allocation failure. Otherwise + returns FcTrue. + +Since + + version 2.12.5 + FcConfigGetSysRoot Name @@ -3471,6 +3568,78 @@ Description Since version 2.10.92 + +FcConfigFileInfoIterInit + +Name + + FcConfigFileInfoIterInit -- Initialize the iterator + +Synopsis + +#include + + void FcConfigFileInfoIterInit(FcConfig *config, + FcConfigFileInfoIter *iter); + +Description + + Initialize 'iter' with the first iterator in the config file + information list. + +Since + + version 2.12.91 + +FcConfigFileInfoIterNext + +Name + + FcConfigFileInfoIterNext -- Set the iterator to point to the + next list + +Synopsis + +#include + + FcBool FcConfigFileInfoIterNext(FcConfig *config, + FcConfigFileInfoIter *iter); + +Description + + Set 'iter' to point to the next node in the config file + information list. If there is no next node, FcFalse is + returned. + +Since + + version 2.12.91 + +FcConfigFileInfoIterGet + +Name + + FcConfigFileInfoIterGet -- Obtain the configuration file + information + +Synopsis + +#include + + FcBool FcConfigFileInfoIterGet(FcConfig *config, + FcConfigFileInfoIter *iter, FcChar8 **name, FcChar8 + **description, FcBool *enabled); + +Description + + Obtain the filename, the description and the flag whether it is + enabled or not for 'iter' where points to current configuration + file information. If the iterator is invalid, FcFalse is + returned. + +Since + + version 2.12.91 __________________________________________________________ FcObjectType @@ -3618,6 +3787,12 @@ Description FcWeight Table of Contents + FcWeightFromOpenTypeDouble -- Convert from OpenType weight + values to fontconfig ones + + FcWeightToOpenTypeDouble -- Convert from fontconfig weight + values to OpenType ones + FcWeightFromOpenType -- Convert from OpenType weight values to fontconfig ones @@ -3626,6 +3801,58 @@ FcWeight Maps weights to and from OpenType weights. +FcWeightFromOpenTypeDouble + +Name + + FcWeightFromOpenTypeDouble -- Convert from OpenType weight + values to fontconfig ones + +Synopsis + +#include + + double FcWeightFromOpenTypeDouble(doubleot_weight); + +Description + + FcWeightFromOpenTypeDouble returns an double value to use with + FC_WEIGHT, from an double 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 doubleerpolates between various FC_WEIGHT_* constants. + As such, the returned value does not necessarily match any of + the predefined constants. + +Since + + version 2.12.92 + +FcWeightToOpenTypeDouble + +Name + + FcWeightToOpenTypeDouble -- Convert from fontconfig weight + values to OpenType ones + +Synopsis + +#include + + double FcWeightToOpenTypeDouble(doubleot_weight); + +Description + + FcWeightToOpenTypeDouble is the inverse of + FcWeightFromOpenType. 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 + + version 2.12.92 + FcWeightFromOpenType Name @@ -3641,14 +3868,8 @@ Synopsis Description - FcWeightFromOpenType 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. + FcWeightFromOpenType is like FcWeightFromOpenTypeDouble but + with integer arguments. Use the other function instead. Since @@ -3669,10 +3890,8 @@ Synopsis Description - FcWeightToOpenType is the inverse of FcWeightFromOpenType. 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. + FcWeightToOpenType is like FcWeightToOpenTypeDouble but with + integer arguments. Use the other function instead. Since @@ -3694,6 +3913,10 @@ FcBlanks font. This provides a significantly more accurate CharSet for applications. + FcBlanks is deprecated and should not be used in newly written + code. It is still accepted by some functions for compatibility + with older code but will be removed in the future. + FcBlanksCreate Name @@ -3708,7 +3931,7 @@ Synopsis Description - Creates an empty FcBlanks object. + FcBlanks is deprecated. This function always returns NULL. FcBlanksDestroy @@ -3724,7 +3947,7 @@ Synopsis Description - Destroys an FcBlanks object, freeing any associated memory. + FcBlanks is deprecated. This function does nothing. FcBlanksAdd @@ -3740,8 +3963,7 @@ Synopsis Description - Adds a single character to an FcBlanks object, returning - FcFalse if this process ran out of memory. + FcBlanks is deprecated. This function always returns FALSE. FcBlanksIsMember @@ -3757,8 +3979,7 @@ Synopsis Description - Returns whether the specified FcBlanks object contains the - indicated Unicode value. + FcBlanks is deprecated. This function always returns FALSE. __________________________________________________________ FcAtomic @@ -4168,11 +4389,9 @@ FcCache routines cache. FcCacheNumFont -- Returns the number of fonts in cache. - FcDirCacheClean -- This tries to clean up the cache directory - of cache_dir. This returns FcTrue if the operation is - successfully complete. otherwise FcFalse. - + FcDirCacheClean -- Clean up a cache directory FcCacheCreateTagFile -- Create CACHEDIR.TAG at cache directory. + FcDirCacheCreateUUID -- Create .uuid file at a directory These routines work with font directory caches, accessing their contents in limited ways. It is not expected that normal @@ -4269,9 +4488,7 @@ FcDirCacheClean Name - FcDirCacheClean -- This tries to clean up the cache directory - of cache_dir. This returns FcTrue if the operation is - successfully complete. otherwise FcFalse. + FcDirCacheClean -- Clean up a cache directory Synopsis @@ -4282,6 +4499,10 @@ Synopsis Description + This tries to clean up the cache directory of cache_dir. This + returns FcTrue if the operation is successfully complete. + otherwise FcFalse. + Since version 2.9.91 @@ -4306,6 +4527,30 @@ Description Since version 2.9.91 + +FcDirCacheCreateUUID + +Name + + FcDirCacheCreateUUID -- Create .uuid file at a directory + +Synopsis + +#include + + FcBool FcDirCacheCreateUUID(FcChar8 *dir, FcBoolforce, + FcConfigconfig); + +Description + + This is to create .uuid file containing an UUID at a font + directory of dir. The UUID will be used to identify the font + directory and is used to determine the cache filename if + available. + +Since + + version 2.12.92 __________________________________________________________ FcStrSet and FcStrList diff --git a/doc/fontconfig-devel/fcatomiccreate.html b/doc/fontconfig-devel/fcatomiccreate.html index ee1c8f8..e62a080 100644 --- a/doc/fontconfig-devel/fcatomiccreate.html +++ b/doc/fontconfig-devel/fcatomiccreate.html @@ -10,10 +10,10 @@ REL="HOME" HREF="t1.html"><<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Adds a single character to an FcBlanks object, returning FcFalse -if this process ran out of memory. +>FcBlanks is deprecated. +This function always returns FALSE.

Up<<< Previous

Name

Synopsis

Description

Creates an empty FcBlanks object. +>FcBlanks is deprecated. +This function always returns NULL.

<<< PreviousUp

Name

Synopsis

Description

Destroys an FcBlanks object, freeing any associated memory. +>FcBlanks is deprecated. +This function does nothing.

Up

Name

Synopsis

Description

Returns whether the specified FcBlanks object contains the indicated Unicode -value. +>FcBlanks is deprecated. +This function always returns FALSE.

Up

Name

Synopsis

Description

Up Next >>>

Name

Synopsis

Description

Since

 Next >>>
 FcDirCacheCreateUUID
Up
<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up +FcConfigFileInfoIterGet
<<< Previous 

FcConfigFileInfoIterGet

Name

FcConfigFileInfoIterGet -- Obtain the configuration file information

Synopsis

#include <fontconfig/fontconfig.h>
+	

FcBool FcConfigFileInfoIterGet(FcConfig *config, FcConfigFileInfoIter *iter, FcChar8 **name, FcChar8 **description, FcBool *enabled);

Description

Obtain the filename, the description and the flag whether it is enabled or not +for 'iter' where points to current configuration file information. +If the iterator is invalid, FcFalse is returned. +

Since

version 2.12.91


<<< PreviousHome 
FcConfigFileInfoIterNextUp 
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcconfigfileinfoiterinit.html b/doc/fontconfig-devel/fcconfigfileinfoiterinit.html new file mode 100644 index 0000000..92ecdee --- /dev/null +++ b/doc/fontconfig-devel/fcconfigfileinfoiterinit.html @@ -0,0 +1,219 @@ + +FcConfigFileInfoIterInit

FcConfigFileInfoIterInit

Name

FcConfigFileInfoIterInit -- Initialize the iterator

Synopsis

#include <fontconfig/fontconfig.h>
+	

void FcConfigFileInfoIterInit(FcConfig *config, FcConfigFileInfoIter *iter);

Description

Initialize 'iter' with the first iterator in the config file information list. +

Since

version 2.12.91


<<< PreviousHomeNext >>>
FcConfigSetSysRootUpFcConfigFileInfoIterNext
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcconfigfileinfoiternext.html b/doc/fontconfig-devel/fcconfigfileinfoiternext.html new file mode 100644 index 0000000..c29378f --- /dev/null +++ b/doc/fontconfig-devel/fcconfigfileinfoiternext.html @@ -0,0 +1,220 @@ + +FcConfigFileInfoIterNext

FcConfigFileInfoIterNext

Name

FcConfigFileInfoIterNext -- Set the iterator to point to the next list

Synopsis

#include <fontconfig/fontconfig.h>
+	

FcBool FcConfigFileInfoIterNext(FcConfig *config, FcConfigFileInfoIter *iter);

Description

Set 'iter' to point to the next node in the config file information list. +If there is no next node, FcFalse is returned. +

Since

version 2.12.91


<<< PreviousHomeNext >>>
FcConfigFileInfoIterInitUpFcConfigFileInfoIterGet
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcconfigfilename.html b/doc/fontconfig-devel/fcconfigfilename.html index 71c09d8..22b3d84 100644 --- a/doc/fontconfig-devel/fcconfigfilename.html +++ b/doc/fontconfig-devel/fcconfigfilename.html @@ -10,7 +10,7 @@ REL="HOME" HREF="t1.html">

Name

Synopsis

Description

Up

Name

Synopsis

Description

Returns the FcBlanks object associated with the given configuration, if no -blanks were present in the configuration, this function will return 0. -The returned FcBlanks object if not NULL, is valid as long as the owning -FcConfig is alive. -If config is NULL, the current configuration is used. +>FcBlanks is deprecated. +This function always returns NULL.

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

Since

<<< PreviousFcConfigParseAndLoadFcConfigParseAndLoadFromMemory

Name

Synopsis

Up

Description

UpNext >>>

Name

Synopsis

Description

Next >>>UpFcConfigGetSysRootFcConfigParseAndLoadFromMemory
+FcConfigParseAndLoadFromMemory

FcConfigParseAndLoadFromMemory

Name

FcConfigParseAndLoadFromMemory -- load a configuration from memory

Synopsis

#include <fontconfig/fontconfig.h>
+	

FcBool FcConfigParseAndLoadFromMemory(FcConfig *config, const FcChar8 *buffer, FcBool complain);

Description

Walks the configuration in 'memory' and constructs the internal representation +in 'config'. Any includes files referenced from within 'memory' will be loaded +and dparsed. If 'complain' is FcFalse, no warning will be displayed if +'file' does not exist. Error and warning messages will be output to stderr. +Returns FcFalse if fsome error occurred while loading the file, either a +parse error, semantic error or allocation failure. Otherwise returns FcTrue. +

Since

version 2.12.5


<<< PreviousHomeNext >>>
FcConfigParseAndLoadUpFcConfigGetSysRoot
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcconfigreference.html b/doc/fontconfig-devel/fcconfigreference.html index a7fb48c..5e9c0d5 100644 --- a/doc/fontconfig-devel/fcconfigreference.html +++ b/doc/fontconfig-devel/fcconfigreference.html @@ -10,7 +10,7 @@ REL="HOME" HREF="t1.html">

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up Next >>>

Name

Synopsis

Description

Since

 Next >>>
 FcConfigFileInfoIterInit
Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

FcDirCacheClean -- This tries to clean up the cache directory of cache_dir. -This returns FcTrue if the operation is successfully complete. otherwise FcFalse.
FcDirCacheClean -- Clean up a cache directory

Synopsis

Description

This tries to clean up the cache directory of cache_dir. +This returns FcTrue if the operation is successfully complete. otherwise FcFalse. +

Since

Up +FcDirCacheCreateUUID
<<< Previous 

FcDirCacheCreateUUID

Name

FcDirCacheCreateUUID -- Create .uuid file at a directory

Synopsis

#include <fontconfig/fontconfig.h>
+	

FcBool FcDirCacheCreateUUID(FcChar8 *dir, FcBoolforce, FcConfigconfig);

Description

This is to create .uuid file containing an UUID at a font directory of +dir. +The UUID will be used to identify the font directory and is used to determine +the cache filename if available. +

Since

version 2.12.92


<<< PreviousHome 
FcCacheCreateTagFileUp 
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcdircacheload.html b/doc/fontconfig-devel/fcdircacheload.html index b3c303e..9af0d0e 100644 --- a/doc/fontconfig-devel/fcdircacheload.html +++ b/doc/fontconfig-devel/fcdircacheload.html @@ -10,7 +10,7 @@ REL="HOME" HREF="t1.html">

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Scans a FreeType face and returns the set of encoded Unicode chars. This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +>Scans a FreeType face and returns the set of encoded Unicode chars. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code.

Up

Name

Synopsis

Description

Scans a FreeType face and returns the set of encoded Unicode chars. -This scans -several encoding tables to build as complete a list as possible. -If 'blanks' is not 0, the glyphs in the font are examined and any blank glyphs -not in 'blanks' are not placed in the returned FcCharSet. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. UpNext >>>

Name

Synopsis

Description

Constructs a pattern representing the 'id'th font in 'file'. The number -of fonts in 'file' is returned in 'count'. +>Constructs a pattern representing the 'id'th face in 'file'. The number +of faces in 'file' is returned in 'count'. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code.

Next >>>UpFcFreeTypeQueryFaceFcFreeTypeQueryAll
+FcFreeTypeQueryAll

FcFreeTypeQueryAll

Name

FcFreeTypeQueryAll -- compute all patterns from font file (and index)

Synopsis

#include <fontconfig.h>
+#include <fcfreetype.h>
+	

unsigned int FcFreeTypeQueryAll(const FcChar8 *file, int id, FcBlanks *blanks, int *count, FcFontSet *set);

Description

Constructs patterns found in 'file'. +If id is -1, then all patterns found in 'file' are added to 'set'. +Otherwise, this function works exactly like FcFreeTypeQuery(). +The number of faces in 'file' is returned in 'count'. +The number of patterns added to 'set' is returned. +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code. +

Since

version 2.12.91


<<< PreviousHomeNext >>>
FcFreeTypeQueryUpFcFreeTypeQueryFace
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcfreetypequeryface.html b/doc/fontconfig-devel/fcfreetypequeryface.html index 5101caf..7694de8 100644 --- a/doc/fontconfig-devel/fcfreetypequeryface.html +++ b/doc/fontconfig-devel/fcfreetypequeryface.html @@ -10,10 +10,10 @@ REL="HOME" HREF="t1.html"><<< Previous

Name

Synopsis

Description

Constructs a pattern representing 'face'. 'file' and 'id' are used solely as data for pattern elements (FC_FILE, FC_INDEX and sometimes FC_FAMILY). +FcBlanks is deprecated, blanks is ignored and +accepted only for compatibility with older code.

<<< PreviousFcFreeTypeQueryFcFreeTypeQueryAll

Name

Synopsis

Up

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

UpNext >>>

Name

Synopsis

Description

Next >>>UpFcPatternGetFcPatternGetWithBinding

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousFcPatternAdd-TypeFcPatternGetWithBinding
+FcPatternGetWithBinding
Up
<<< PreviousNext >>>

FcPatternGetWithBinding

Name

FcPatternGetWithBinding -- Return a value with binding from a pattern

Synopsis

#include <fontconfig/fontconfig.h>
+	

FcResult FcPatternGetWithBinding(FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b);

Description

Returns in v the id'th value +and b binding for that associated with the property +object. +The Value returned is not a copy, but rather refers to the data stored +within the pattern directly. Applications must not free this value. +

Since

version 2.12.5


<<< PreviousHomeNext >>>
FcPatternAdd-TypeUpFcPatternGet
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcpatternhash.html b/doc/fontconfig-devel/fcpatternhash.html index 54a7035..42219b8 100644 --- a/doc/fontconfig-devel/fcpatternhash.html +++ b/doc/fontconfig-devel/fcpatternhash.html @@ -10,7 +10,7 @@ REL="HOME" HREF="t1.html">

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

Since

<<< PreviousUp

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Since

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

<<< PreviousUp<<< Previous

Name

Synopsis

Description

<<< PreviousUp

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up

Name

Synopsis

Description

Up<<< Previous

Name

Synopsis

Description

FcWeightFromOpenType 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. +> is like +FcWeightFromOpenTypeDouble but with integer arguments. +Use the other function instead.

Since

<<< PreviousFUNCTIONSFcWeightToOpenTypeDouble
+FcWeightFromOpenTypeDouble
Up
<<< PreviousNext >>>

FcWeightFromOpenTypeDouble

Name

FcWeightFromOpenTypeDouble -- Convert from OpenType weight values to fontconfig ones

Synopsis

#include <fontconfig/fontconfig.h>
+	

double FcWeightFromOpenTypeDouble(doubleot_weight);

Description

FcWeightFromOpenTypeDouble returns an double value +to use with FC_WEIGHT, from an double 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 doubleerpolates +between various FC_WEIGHT_* constants. As such, the returned value does not +necessarily match any of the predefined constants. +

Since

version 2.12.92


<<< PreviousHomeNext >>>
FUNCTIONSUpFcWeightToOpenTypeDouble
\ No newline at end of file diff --git a/doc/fontconfig-devel/fcweighttoopentype.html b/doc/fontconfig-devel/fcweighttoopentype.html index acc66fb..12c3092 100644 --- a/doc/fontconfig-devel/fcweighttoopentype.html +++ b/doc/fontconfig-devel/fcweighttoopentype.html @@ -10,7 +10,7 @@ REL="HOME" HREF="t1.html">

Name

Synopsis

Description

FcWeightToOpenType is the inverse of +> is like FcWeightFromOpenType. 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. +>FcWeightToOpenTypeDouble but with integer arguments. +Use the other function instead.

Since

Up +FcWeightToOpenTypeDouble
<<< PreviousNext >>>

FcWeightToOpenTypeDouble

Name

FcWeightToOpenTypeDouble -- Convert from fontconfig weight values to OpenType ones

Synopsis

#include <fontconfig/fontconfig.h>
+	

double FcWeightToOpenTypeDouble(doubleot_weight);

Description

FcWeightToOpenTypeDouble is the inverse of +FcWeightFromOpenType. 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

version 2.12.92


<<< PreviousHomeNext >>>
FcWeightFromOpenTypeDoubleUpFcWeightFromOpenType
\ No newline at end of file diff --git a/doc/fontconfig-devel/t1.html b/doc/fontconfig-devel/t1.html index ebf95af..18705b3 100644 --- a/doc/fontconfig-devel/t1.html +++ b/doc/fontconfig-devel/t1.html @@ -2,7 +2,7 @@ Fontconfig Developers Reference, Version 2.12.1 +>Fontconfig Developers Reference, Version 2.13.0 Fontconfig Developers Reference, Version 2.12.1Fontconfig Developers Reference, Version 2.13.0
FUNCTIONS

FUNCTIONS

Initialization

FcPattern

 -- Add a typed value to a pattern
FcPatternGetWithBinding -- Return a value with binding from a pattern
FcPatternGet -- Return a value from a pattern

FcFontSet

FcObjectSet

FreeType specific functions

 -- compute pattern from font file (and index)
FcFreeTypeQueryAll -- compute all patterns from font file (and index)
FcFreeTypeQueryFace -- compute pattern from FT_Face

FcValue

FcCharSet

FcLangSet

FcMatrix

FcRange

FcConfig

 -- load a configuration file
FcConfigParseAndLoadFromMemory -- load a configuration from memory
FcConfigGetSysRoot -- Obtain the system root directory
FcConfigSetSysRoot -- Set the system root directory
FcConfigFileInfoIterInit -- Initialize the iterator
FcConfigFileInfoIterNext -- Set the iterator to point to the next list
FcConfigFileInfoIterGet -- Obtain the configuration file information

FcObjectType

FcConstant

FcWeight

FcWeightFromOpenTypeDouble -- Convert from OpenType weight values to fontconfig ones
FcWeightToOpenTypeDouble -- Convert from fontconfig weight values to OpenType ones
FcWeightFromOpenType -- Convert from OpenType weight values to fontconfig ones

FcBlanks

FcBlanks is deprecated and should not be used in newly written code. + It is still accepted by some functions for compatibility with + older code but will be removed in the future. +

FcAtomic

File and Directory routines

FcCache routines

FcDirCacheClean -- This tries to clean up the cache directory of cache_dir. -This returns FcTrue if the operation is successfully complete. otherwise FcFalse. -- Clean up a cache directory
FcCacheCreateTagFile -- Create CACHEDIR.TAG at cache directory.
FcDirCacheCreateUUID -- Create .uuid file at a directory

FcStrSet and FcStrList

String utilities

Next >>>

FcBlanks is deprecated and should not be used in newly written code. + It is still accepted by some functions for compatibility with + older code but will be removed in the future. +

FcFileCache

FcConfig

FcSetName

FcResult

FcAtomic

FcCache

Next >>><version> is the font configuration file -version number (currently 5). +> is the fontconfig cache file +version number (currently 7).

FC_LANG +is used to specify the default language as the weak binding in the query. if this isn't set, the default language will be determined from current locale. +

FONTCONFIG_USE_MMAP 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. @@ -1533,7 +1540,7 @@ is used to control the use of mmap(2) for the cache files if available. this tak >

See Also

Version

Fontconfig version 2.12.1 +>Fontconfig version 2.13.0

<hash value>-<architecture>.cache-<version>'', -where <version> is the font configuration file -version number (currently 5). +where <version> is the fontconfig cache file +version number (currently 7). <literal><include ignore_missing="no" prefix="default"></literal> This element contains the name of an additional configuration file or @@ -791,6 +791,10 @@ is used to output the detailed debugging messages. see Deb 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 Debugging Applications section for more details. +FC_LANG +is used to specify the default language as the weak binding in the query. if this isn't set, the default language will be determined from current locale. + + FONTCONFIG_USE_MMAP 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. diff --git a/doc/fontconfig-user.txt b/doc/fontconfig-user.txt index d3e294f..3e4a10b 100644 --- a/doc/fontconfig-user.txt +++ b/doc/fontconfig-user.txt @@ -307,8 +307,8 @@ Configuration File Format Specification for more details. The default directory is ``$XDG_CACHE_HOME/fontconfig'' and it contains the cache files named ``-.cache-'', where - is the font configuration file version number - (currently 5). + is the fontconfig cache file version number + (currently 7). @@ -817,6 +817,10 @@ Environment variables when FC_DEBUG has MATCH2. see Debugging Applications section for more details. + FC_LANG is used to specify the default language as the weak + binding in the query. if this isn't set, the default language + will be determined from current locale. + FONTCONFIG_USE_MMAP 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 @@ -830,4 +834,4 @@ See Also Version - Fontconfig version 2.12.1 + Fontconfig version 2.13.0 diff --git a/doc/fonts-conf.5 b/doc/fonts-conf.5 index 197b70c..f7887d2 100644 --- a/doc/fonts-conf.5 +++ b/doc/fonts-conf.5 @@ -1,5 +1,5 @@ .\" auto-generated by docbook2man-spec from docbook-utils package -.TH "FONTS-CONF" "5" "05 8月 2016" "" "" +.TH "FONTS-CONF" "5" "06 3月 2018" "" "" .SH NAME fonts.conf \- Font configuration files .SH SYNOPSIS @@ -287,8 +287,8 @@ 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 ``-\&.cache-\&'', -where is the font configuration file -version number (currently 5). +where is the fontconfig cache file +version number (currently 7). .SS "" .PP This element contains the name of an additional configuration file or @@ -744,6 +744,9 @@ is used to output the detailed debugging messages. see Debugging Applications se \fBFC_DBG_MATCH_FILTER\fR 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 Debugging Applications section for more details. .PP +\fBFC_LANG\fR +is used to specify the default language as the weak binding in the query. if this isn't set, the default language will be determined from current locale. +.PP \fBFONTCONFIG_USE_MMAP\fR 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. .SH "SEE ALSO" @@ -751,4 +754,4 @@ is used to control the use of mmap(2) for the cache files if available. this tak fc-cat(1), fc-cache(1), fc-list(1), fc-match(1), fc-query(1) .SH "VERSION" .PP -Fontconfig version 2.12.1 +Fontconfig version 2.13.0 diff --git a/fc-blanks/Makefile.am b/fc-blanks/Makefile.am deleted file mode 100644 index 2b2075f..0000000 --- a/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/fc-blanks/fc-blanks.py b/fc-blanks/fc-blanks.py deleted file mode 100755 index cc23cde..0000000 --- a/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/fc-blanks/fcblanks.h b/fc-blanks/fcblanks.h deleted file mode 100644 index 51ba34d..0000000 --- a/fc-blanks/fcblanks.h +++ /dev/null @@ -1,4223 +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. - */ - -static FcChar32 _fcBlanks[4191] = { - 0x0020 , - 0x00a0 , - 0x00ad , - 0x034f , - 0x061c , - 0x115f , - 0x1160 , - 0x1680 , - 0x17b4 , - 0x17b5 , - 0x180b , - 0x180c , - 0x180d , - 0x180e , - 0x2000 , - 0x2001 , - 0x2002 , - 0x2003 , - 0x2004 , - 0x2005 , - 0x2006 , - 0x2007 , - 0x2008 , - 0x2009 , - 0x200a , - 0x200b , - 0x200c , - 0x200d , - 0x200e , - 0x200f , - 0x202a , - 0x202b , - 0x202c , - 0x202d , - 0x202e , - 0x202f , - 0x205f , - 0x2060 , - 0x2061 , - 0x2062 , - 0x2063 , - 0x2064 , - 0x2065 , - 0x2066 , - 0x2067 , - 0x2068 , - 0x2069 , - 0x206a , - 0x206b , - 0x206c , - 0x206d , - 0x206e , - 0x206f , - 0x2800 , - 0x3000 , - 0x3164 , - 0xfe00 , - 0xfe01 , - 0xfe02 , - 0xfe03 , - 0xfe04 , - 0xfe05 , - 0xfe06 , - 0xfe07 , - 0xfe08 , - 0xfe09 , - 0xfe0a , - 0xfe0b , - 0xfe0c , - 0xfe0d , - 0xfe0e , - 0xfe0f , - 0xfeff , - 0xffa0 , - 0xfff0 , - 0xfff1 , - 0xfff2 , - 0xfff3 , - 0xfff4 , - 0xfff5 , - 0xfff6 , - 0xfff7 , - 0xfff8 , - 0x1bca0 , - 0x1bca1 , - 0x1bca2 , - 0x1bca3 , - 0x1d173 , - 0x1d174 , - 0x1d175 , - 0x1d176 , - 0x1d177 , - 0x1d178 , - 0x1d179 , - 0x1d17a , - 0xe0000 , - 0xe0001 , - 0xe0002 , - 0xe0003 , - 0xe0004 , - 0xe0005 , - 0xe0006 , - 0xe0007 , - 0xe0008 , - 0xe0009 , - 0xe000a , - 0xe000b , - 0xe000c , - 0xe000d , - 0xe000e , - 0xe000f , - 0xe0010 , - 0xe0011 , - 0xe0012 , - 0xe0013 , - 0xe0014 , - 0xe0015 , - 0xe0016 , - 0xe0017 , - 0xe0018 , - 0xe0019 , - 0xe001a , - 0xe001b , - 0xe001c , - 0xe001d , - 0xe001e , - 0xe001f , - 0xe0020 , - 0xe0021 , - 0xe0022 , - 0xe0023 , - 0xe0024 , - 0xe0025 , - 0xe0026 , - 0xe0027 , - 0xe0028 , - 0xe0029 , - 0xe002a , - 0xe002b , - 0xe002c , - 0xe002d , - 0xe002e , - 0xe002f , - 0xe0030 , - 0xe0031 , - 0xe0032 , - 0xe0033 , - 0xe0034 , - 0xe0035 , - 0xe0036 , - 0xe0037 , - 0xe0038 , - 0xe0039 , - 0xe003a , - 0xe003b , - 0xe003c , - 0xe003d , - 0xe003e , - 0xe003f , - 0xe0040 , - 0xe0041 , - 0xe0042 , - 0xe0043 , - 0xe0044 , - 0xe0045 , - 0xe0046 , - 0xe0047 , - 0xe0048 , - 0xe0049 , - 0xe004a , - 0xe004b , - 0xe004c , - 0xe004d , - 0xe004e , - 0xe004f , - 0xe0050 , - 0xe0051 , - 0xe0052 , - 0xe0053 , - 0xe0054 , - 0xe0055 , - 0xe0056 , - 0xe0057 , - 0xe0058 , - 0xe0059 , - 0xe005a , - 0xe005b , - 0xe005c , - 0xe005d , - 0xe005e , - 0xe005f , - 0xe0060 , - 0xe0061 , - 0xe0062 , - 0xe0063 , - 0xe0064 , - 0xe0065 , - 0xe0066 , - 0xe0067 , - 0xe0068 , - 0xe0069 , - 0xe006a , - 0xe006b , - 0xe006c , - 0xe006d , - 0xe006e , - 0xe006f , - 0xe0070 , - 0xe0071 , - 0xe0072 , - 0xe0073 , - 0xe0074 , - 0xe0075 , - 0xe0076 , - 0xe0077 , - 0xe0078 , - 0xe0079 , - 0xe007a , - 0xe007b , - 0xe007c , - 0xe007d , - 0xe007e , - 0xe007f , - 0xe0080 , - 0xe0081 , - 0xe0082 , - 0xe0083 , - 0xe0084 , - 0xe0085 , - 0xe0086 , - 0xe0087 , - 0xe0088 , - 0xe0089 , - 0xe008a , - 0xe008b , - 0xe008c , - 0xe008d , - 0xe008e , - 0xe008f , - 0xe0090 , - 0xe0091 , - 0xe0092 , - 0xe0093 , - 0xe0094 , - 0xe0095 , - 0xe0096 , - 0xe0097 , - 0xe0098 , - 0xe0099 , - 0xe009a , - 0xe009b , - 0xe009c , - 0xe009d , - 0xe009e , - 0xe009f , - 0xe00a0 , - 0xe00a1 , - 0xe00a2 , - 0xe00a3 , - 0xe00a4 , - 0xe00a5 , - 0xe00a6 , - 0xe00a7 , - 0xe00a8 , - 0xe00a9 , - 0xe00aa , - 0xe00ab , - 0xe00ac , - 0xe00ad , - 0xe00ae , - 0xe00af , - 0xe00b0 , - 0xe00b1 , - 0xe00b2 , - 0xe00b3 , - 0xe00b4 , - 0xe00b5 , - 0xe00b6 , - 0xe00b7 , - 0xe00b8 , - 0xe00b9 , - 0xe00ba , - 0xe00bb , - 0xe00bc , - 0xe00bd , - 0xe00be , - 0xe00bf , - 0xe00c0 , - 0xe00c1 , - 0xe00c2 , - 0xe00c3 , - 0xe00c4 , - 0xe00c5 , - 0xe00c6 , - 0xe00c7 , - 0xe00c8 , - 0xe00c9 , - 0xe00ca , - 0xe00cb , - 0xe00cc , - 0xe00cd , - 0xe00ce , - 0xe00cf , - 0xe00d0 , - 0xe00d1 , - 0xe00d2 , - 0xe00d3 , - 0xe00d4 , - 0xe00d5 , - 0xe00d6 , - 0xe00d7 , - 0xe00d8 , - 0xe00d9 , - 0xe00da , - 0xe00db , - 0xe00dc , - 0xe00dd , - 0xe00de , - 0xe00df , - 0xe00e0 , - 0xe00e1 , - 0xe00e2 , - 0xe00e3 , - 0xe00e4 , - 0xe00e5 , - 0xe00e6 , - 0xe00e7 , - 0xe00e8 , - 0xe00e9 , - 0xe00ea , - 0xe00eb , - 0xe00ec , - 0xe00ed , - 0xe00ee , - 0xe00ef , - 0xe00f0 , - 0xe00f1 , - 0xe00f2 , - 0xe00f3 , - 0xe00f4 , - 0xe00f5 , - 0xe00f6 , - 0xe00f7 , - 0xe00f8 , - 0xe00f9 , - 0xe00fa , - 0xe00fb , - 0xe00fc , - 0xe00fd , - 0xe00fe , - 0xe00ff , - 0xe0100 , - 0xe0101 , - 0xe0102 , - 0xe0103 , - 0xe0104 , - 0xe0105 , - 0xe0106 , - 0xe0107 , - 0xe0108 , - 0xe0109 , - 0xe010a , - 0xe010b , - 0xe010c , - 0xe010d , - 0xe010e , - 0xe010f , - 0xe0110 , - 0xe0111 , - 0xe0112 , - 0xe0113 , - 0xe0114 , - 0xe0115 , - 0xe0116 , - 0xe0117 , - 0xe0118 , - 0xe0119 , - 0xe011a , - 0xe011b , - 0xe011c , - 0xe011d , - 0xe011e , - 0xe011f , - 0xe0120 , - 0xe0121 , - 0xe0122 , - 0xe0123 , - 0xe0124 , - 0xe0125 , - 0xe0126 , - 0xe0127 , - 0xe0128 , - 0xe0129 , - 0xe012a , - 0xe012b , - 0xe012c , - 0xe012d , - 0xe012e , - 0xe012f , - 0xe0130 , - 0xe0131 , - 0xe0132 , - 0xe0133 , - 0xe0134 , - 0xe0135 , - 0xe0136 , - 0xe0137 , - 0xe0138 , - 0xe0139 , - 0xe013a , - 0xe013b , - 0xe013c , - 0xe013d , - 0xe013e , - 0xe013f , - 0xe0140 , - 0xe0141 , - 0xe0142 , - 0xe0143 , - 0xe0144 , - 0xe0145 , - 0xe0146 , - 0xe0147 , - 0xe0148 , - 0xe0149 , - 0xe014a , - 0xe014b , - 0xe014c , - 0xe014d , - 0xe014e , - 0xe014f , - 0xe0150 , - 0xe0151 , - 0xe0152 , - 0xe0153 , - 0xe0154 , - 0xe0155 , - 0xe0156 , - 0xe0157 , - 0xe0158 , - 0xe0159 , - 0xe015a , - 0xe015b , - 0xe015c , - 0xe015d , - 0xe015e , - 0xe015f , - 0xe0160 , - 0xe0161 , - 0xe0162 , - 0xe0163 , - 0xe0164 , - 0xe0165 , - 0xe0166 , - 0xe0167 , - 0xe0168 , - 0xe0169 , - 0xe016a , - 0xe016b , - 0xe016c , - 0xe016d , - 0xe016e , - 0xe016f , - 0xe0170 , - 0xe0171 , - 0xe0172 , - 0xe0173 , - 0xe0174 , - 0xe0175 , - 0xe0176 , - 0xe0177 , - 0xe0178 , - 0xe0179 , - 0xe017a , - 0xe017b , - 0xe017c , - 0xe017d , - 0xe017e , - 0xe017f , - 0xe0180 , - 0xe0181 , - 0xe0182 , - 0xe0183 , - 0xe0184 , - 0xe0185 , - 0xe0186 , - 0xe0187 , - 0xe0188 , - 0xe0189 , - 0xe018a , - 0xe018b , - 0xe018c , - 0xe018d , - 0xe018e , - 0xe018f , - 0xe0190 , - 0xe0191 , - 0xe0192 , - 0xe0193 , - 0xe0194 , - 0xe0195 , - 0xe0196 , - 0xe0197 , - 0xe0198 , - 0xe0199 , - 0xe019a , - 0xe019b , - 0xe019c , - 0xe019d , - 0xe019e , - 0xe019f , - 0xe01a0 , - 0xe01a1 , - 0xe01a2 , - 0xe01a3 , - 0xe01a4 , - 0xe01a5 , - 0xe01a6 , - 0xe01a7 , - 0xe01a8 , - 0xe01a9 , - 0xe01aa , - 0xe01ab , - 0xe01ac , - 0xe01ad , - 0xe01ae , - 0xe01af , - 0xe01b0 , - 0xe01b1 , - 0xe01b2 , - 0xe01b3 , - 0xe01b4 , - 0xe01b5 , - 0xe01b6 , - 0xe01b7 , - 0xe01b8 , - 0xe01b9 , - 0xe01ba , - 0xe01bb , - 0xe01bc , - 0xe01bd , - 0xe01be , - 0xe01bf , - 0xe01c0 , - 0xe01c1 , - 0xe01c2 , - 0xe01c3 , - 0xe01c4 , - 0xe01c5 , - 0xe01c6 , - 0xe01c7 , - 0xe01c8 , - 0xe01c9 , - 0xe01ca , - 0xe01cb , - 0xe01cc , - 0xe01cd , - 0xe01ce , - 0xe01cf , - 0xe01d0 , - 0xe01d1 , - 0xe01d2 , - 0xe01d3 , - 0xe01d4 , - 0xe01d5 , - 0xe01d6 , - 0xe01d7 , - 0xe01d8 , - 0xe01d9 , - 0xe01da , - 0xe01db , - 0xe01dc , - 0xe01dd , - 0xe01de , - 0xe01df , - 0xe01e0 , - 0xe01e1 , - 0xe01e2 , - 0xe01e3 , - 0xe01e4 , - 0xe01e5 , - 0xe01e6 , - 0xe01e7 , - 0xe01e8 , - 0xe01e9 , - 0xe01ea , - 0xe01eb , - 0xe01ec , - 0xe01ed , - 0xe01ee , - 0xe01ef , - 0xe01f0 , - 0xe01f1 , - 0xe01f2 , - 0xe01f3 , - 0xe01f4 , - 0xe01f5 , - 0xe01f6 , - 0xe01f7 , - 0xe01f8 , - 0xe01f9 , - 0xe01fa , - 0xe01fb , - 0xe01fc , - 0xe01fd , - 0xe01fe , - 0xe01ff , - 0xe0200 , - 0xe0201 , - 0xe0202 , - 0xe0203 , - 0xe0204 , - 0xe0205 , - 0xe0206 , - 0xe0207 , - 0xe0208 , - 0xe0209 , - 0xe020a , - 0xe020b , - 0xe020c , - 0xe020d , - 0xe020e , - 0xe020f , - 0xe0210 , - 0xe0211 , - 0xe0212 , - 0xe0213 , - 0xe0214 , - 0xe0215 , - 0xe0216 , - 0xe0217 , - 0xe0218 , - 0xe0219 , - 0xe021a , - 0xe021b , - 0xe021c , - 0xe021d , - 0xe021e , - 0xe021f , - 0xe0220 , - 0xe0221 , - 0xe0222 , - 0xe0223 , - 0xe0224 , - 0xe0225 , - 0xe0226 , - 0xe0227 , - 0xe0228 , - 0xe0229 , - 0xe022a , - 0xe022b , - 0xe022c , - 0xe022d , - 0xe022e , - 0xe022f , - 0xe0230 , - 0xe0231 , - 0xe0232 , - 0xe0233 , - 0xe0234 , - 0xe0235 , - 0xe0236 , - 0xe0237 , - 0xe0238 , - 0xe0239 , - 0xe023a , - 0xe023b , - 0xe023c , - 0xe023d , - 0xe023e , - 0xe023f , - 0xe0240 , - 0xe0241 , - 0xe0242 , - 0xe0243 , - 0xe0244 , - 0xe0245 , - 0xe0246 , - 0xe0247 , - 0xe0248 , - 0xe0249 , - 0xe024a , - 0xe024b , - 0xe024c , - 0xe024d , - 0xe024e , - 0xe024f , - 0xe0250 , - 0xe0251 , - 0xe0252 , - 0xe0253 , - 0xe0254 , - 0xe0255 , - 0xe0256 , - 0xe0257 , - 0xe0258 , - 0xe0259 , - 0xe025a , - 0xe025b , - 0xe025c , - 0xe025d , - 0xe025e , - 0xe025f , - 0xe0260 , - 0xe0261 , - 0xe0262 , - 0xe0263 , - 0xe0264 , - 0xe0265 , - 0xe0266 , - 0xe0267 , - 0xe0268 , - 0xe0269 , - 0xe026a , - 0xe026b , - 0xe026c , - 0xe026d , - 0xe026e , - 0xe026f , - 0xe0270 , - 0xe0271 , - 0xe0272 , - 0xe0273 , - 0xe0274 , - 0xe0275 , - 0xe0276 , - 0xe0277 , - 0xe0278 , - 0xe0279 , - 0xe027a , - 0xe027b , - 0xe027c , - 0xe027d , - 0xe027e , - 0xe027f , - 0xe0280 , - 0xe0281 , - 0xe0282 , - 0xe0283 , - 0xe0284 , - 0xe0285 , - 0xe0286 , - 0xe0287 , - 0xe0288 , - 0xe0289 , - 0xe028a , - 0xe028b , - 0xe028c , - 0xe028d , - 0xe028e , - 0xe028f , - 0xe0290 , - 0xe0291 , - 0xe0292 , - 0xe0293 , - 0xe0294 , - 0xe0295 , - 0xe0296 , - 0xe0297 , - 0xe0298 , - 0xe0299 , - 0xe029a , - 0xe029b , - 0xe029c , - 0xe029d , - 0xe029e , - 0xe029f , - 0xe02a0 , - 0xe02a1 , - 0xe02a2 , - 0xe02a3 , - 0xe02a4 , - 0xe02a5 , - 0xe02a6 , - 0xe02a7 , - 0xe02a8 , - 0xe02a9 , - 0xe02aa , - 0xe02ab , - 0xe02ac , - 0xe02ad , - 0xe02ae , - 0xe02af , - 0xe02b0 , - 0xe02b1 , - 0xe02b2 , - 0xe02b3 , - 0xe02b4 , - 0xe02b5 , - 0xe02b6 , - 0xe02b7 , - 0xe02b8 , - 0xe02b9 , - 0xe02ba , - 0xe02bb , - 0xe02bc , - 0xe02bd , - 0xe02be , - 0xe02bf , - 0xe02c0 , - 0xe02c1 , - 0xe02c2 , - 0xe02c3 , - 0xe02c4 , - 0xe02c5 , - 0xe02c6 , - 0xe02c7 , - 0xe02c8 , - 0xe02c9 , - 0xe02ca , - 0xe02cb , - 0xe02cc , - 0xe02cd , - 0xe02ce , - 0xe02cf , - 0xe02d0 , - 0xe02d1 , - 0xe02d2 , - 0xe02d3 , - 0xe02d4 , - 0xe02d5 , - 0xe02d6 , - 0xe02d7 , - 0xe02d8 , - 0xe02d9 , - 0xe02da , - 0xe02db , - 0xe02dc , - 0xe02dd , - 0xe02de , - 0xe02df , - 0xe02e0 , - 0xe02e1 , - 0xe02e2 , - 0xe02e3 , - 0xe02e4 , - 0xe02e5 , - 0xe02e6 , - 0xe02e7 , - 0xe02e8 , - 0xe02e9 , - 0xe02ea , - 0xe02eb , - 0xe02ec , - 0xe02ed , - 0xe02ee , - 0xe02ef , - 0xe02f0 , - 0xe02f1 , - 0xe02f2 , - 0xe02f3 , - 0xe02f4 , - 0xe02f5 , - 0xe02f6 , - 0xe02f7 , - 0xe02f8 , - 0xe02f9 , - 0xe02fa , - 0xe02fb , - 0xe02fc , - 0xe02fd , - 0xe02fe , - 0xe02ff , - 0xe0300 , - 0xe0301 , - 0xe0302 , - 0xe0303 , - 0xe0304 , - 0xe0305 , - 0xe0306 , - 0xe0307 , - 0xe0308 , - 0xe0309 , - 0xe030a , - 0xe030b , - 0xe030c , - 0xe030d , - 0xe030e , - 0xe030f , - 0xe0310 , - 0xe0311 , - 0xe0312 , - 0xe0313 , - 0xe0314 , - 0xe0315 , - 0xe0316 , - 0xe0317 , - 0xe0318 , - 0xe0319 , - 0xe031a , - 0xe031b , - 0xe031c , - 0xe031d , - 0xe031e , - 0xe031f , - 0xe0320 , - 0xe0321 , - 0xe0322 , - 0xe0323 , - 0xe0324 , - 0xe0325 , - 0xe0326 , - 0xe0327 , - 0xe0328 , - 0xe0329 , - 0xe032a , - 0xe032b , - 0xe032c , - 0xe032d , - 0xe032e , - 0xe032f , - 0xe0330 , - 0xe0331 , - 0xe0332 , - 0xe0333 , - 0xe0334 , - 0xe0335 , - 0xe0336 , - 0xe0337 , - 0xe0338 , - 0xe0339 , - 0xe033a , - 0xe033b , - 0xe033c , - 0xe033d , - 0xe033e , - 0xe033f , - 0xe0340 , - 0xe0341 , - 0xe0342 , - 0xe0343 , - 0xe0344 , - 0xe0345 , - 0xe0346 , - 0xe0347 , - 0xe0348 , - 0xe0349 , - 0xe034a , - 0xe034b , - 0xe034c , - 0xe034d , - 0xe034e , - 0xe034f , - 0xe0350 , - 0xe0351 , - 0xe0352 , - 0xe0353 , - 0xe0354 , - 0xe0355 , - 0xe0356 , - 0xe0357 , - 0xe0358 , - 0xe0359 , - 0xe035a , - 0xe035b , - 0xe035c , - 0xe035d , - 0xe035e , - 0xe035f , - 0xe0360 , - 0xe0361 , - 0xe0362 , - 0xe0363 , - 0xe0364 , - 0xe0365 , - 0xe0366 , - 0xe0367 , - 0xe0368 , - 0xe0369 , - 0xe036a , - 0xe036b , - 0xe036c , - 0xe036d , - 0xe036e , - 0xe036f , - 0xe0370 , - 0xe0371 , - 0xe0372 , - 0xe0373 , - 0xe0374 , - 0xe0375 , - 0xe0376 , - 0xe0377 , - 0xe0378 , - 0xe0379 , - 0xe037a , - 0xe037b , - 0xe037c , - 0xe037d , - 0xe037e , - 0xe037f , - 0xe0380 , - 0xe0381 , - 0xe0382 , - 0xe0383 , - 0xe0384 , - 0xe0385 , - 0xe0386 , - 0xe0387 , - 0xe0388 , - 0xe0389 , - 0xe038a , - 0xe038b , - 0xe038c , - 0xe038d , - 0xe038e , - 0xe038f , - 0xe0390 , - 0xe0391 , - 0xe0392 , - 0xe0393 , - 0xe0394 , - 0xe0395 , - 0xe0396 , - 0xe0397 , - 0xe0398 , - 0xe0399 , - 0xe039a , - 0xe039b , - 0xe039c , - 0xe039d , - 0xe039e , - 0xe039f , - 0xe03a0 , - 0xe03a1 , - 0xe03a2 , - 0xe03a3 , - 0xe03a4 , - 0xe03a5 , - 0xe03a6 , - 0xe03a7 , - 0xe03a8 , - 0xe03a9 , - 0xe03aa , - 0xe03ab , - 0xe03ac , - 0xe03ad , - 0xe03ae , - 0xe03af , - 0xe03b0 , - 0xe03b1 , - 0xe03b2 , - 0xe03b3 , - 0xe03b4 , - 0xe03b5 , - 0xe03b6 , - 0xe03b7 , - 0xe03b8 , - 0xe03b9 , - 0xe03ba , - 0xe03bb , - 0xe03bc , - 0xe03bd , - 0xe03be , - 0xe03bf , - 0xe03c0 , - 0xe03c1 , - 0xe03c2 , - 0xe03c3 , - 0xe03c4 , - 0xe03c5 , - 0xe03c6 , - 0xe03c7 , - 0xe03c8 , - 0xe03c9 , - 0xe03ca , - 0xe03cb , - 0xe03cc , - 0xe03cd , - 0xe03ce , - 0xe03cf , - 0xe03d0 , - 0xe03d1 , - 0xe03d2 , - 0xe03d3 , - 0xe03d4 , - 0xe03d5 , - 0xe03d6 , - 0xe03d7 , - 0xe03d8 , - 0xe03d9 , - 0xe03da , - 0xe03db , - 0xe03dc , - 0xe03dd , - 0xe03de , - 0xe03df , - 0xe03e0 , - 0xe03e1 , - 0xe03e2 , - 0xe03e3 , - 0xe03e4 , - 0xe03e5 , - 0xe03e6 , - 0xe03e7 , - 0xe03e8 , - 0xe03e9 , - 0xe03ea , - 0xe03eb , - 0xe03ec , - 0xe03ed , - 0xe03ee , - 0xe03ef , - 0xe03f0 , - 0xe03f1 , - 0xe03f2 , - 0xe03f3 , - 0xe03f4 , - 0xe03f5 , - 0xe03f6 , - 0xe03f7 , - 0xe03f8 , - 0xe03f9 , - 0xe03fa , - 0xe03fb , - 0xe03fc , - 0xe03fd , - 0xe03fe , - 0xe03ff , - 0xe0400 , - 0xe0401 , - 0xe0402 , - 0xe0403 , - 0xe0404 , - 0xe0405 , - 0xe0406 , - 0xe0407 , - 0xe0408 , - 0xe0409 , - 0xe040a , - 0xe040b , - 0xe040c , - 0xe040d , - 0xe040e , - 0xe040f , - 0xe0410 , - 0xe0411 , - 0xe0412 , - 0xe0413 , - 0xe0414 , - 0xe0415 , - 0xe0416 , - 0xe0417 , - 0xe0418 , - 0xe0419 , - 0xe041a , - 0xe041b , - 0xe041c , - 0xe041d , - 0xe041e , - 0xe041f , - 0xe0420 , - 0xe0421 , - 0xe0422 , - 0xe0423 , - 0xe0424 , - 0xe0425 , - 0xe0426 , - 0xe0427 , - 0xe0428 , - 0xe0429 , - 0xe042a , - 0xe042b , - 0xe042c , - 0xe042d , - 0xe042e , - 0xe042f , - 0xe0430 , - 0xe0431 , - 0xe0432 , - 0xe0433 , - 0xe0434 , - 0xe0435 , - 0xe0436 , - 0xe0437 , - 0xe0438 , - 0xe0439 , - 0xe043a , - 0xe043b , - 0xe043c , - 0xe043d , - 0xe043e , - 0xe043f , - 0xe0440 , - 0xe0441 , - 0xe0442 , - 0xe0443 , - 0xe0444 , - 0xe0445 , - 0xe0446 , - 0xe0447 , - 0xe0448 , - 0xe0449 , - 0xe044a , - 0xe044b , - 0xe044c , - 0xe044d , - 0xe044e , - 0xe044f , - 0xe0450 , - 0xe0451 , - 0xe0452 , - 0xe0453 , - 0xe0454 , - 0xe0455 , - 0xe0456 , - 0xe0457 , - 0xe0458 , - 0xe0459 , - 0xe045a , - 0xe045b , - 0xe045c , - 0xe045d , - 0xe045e , - 0xe045f , - 0xe0460 , - 0xe0461 , - 0xe0462 , - 0xe0463 , - 0xe0464 , - 0xe0465 , - 0xe0466 , - 0xe0467 , - 0xe0468 , - 0xe0469 , - 0xe046a , - 0xe046b , - 0xe046c , - 0xe046d , - 0xe046e , - 0xe046f , - 0xe0470 , - 0xe0471 , - 0xe0472 , - 0xe0473 , - 0xe0474 , - 0xe0475 , - 0xe0476 , - 0xe0477 , - 0xe0478 , - 0xe0479 , - 0xe047a , - 0xe047b , - 0xe047c , - 0xe047d , - 0xe047e , - 0xe047f , - 0xe0480 , - 0xe0481 , - 0xe0482 , - 0xe0483 , - 0xe0484 , - 0xe0485 , - 0xe0486 , - 0xe0487 , - 0xe0488 , - 0xe0489 , - 0xe048a , - 0xe048b , - 0xe048c , - 0xe048d , - 0xe048e , - 0xe048f , - 0xe0490 , - 0xe0491 , - 0xe0492 , - 0xe0493 , - 0xe0494 , - 0xe0495 , - 0xe0496 , - 0xe0497 , - 0xe0498 , - 0xe0499 , - 0xe049a , - 0xe049b , - 0xe049c , - 0xe049d , - 0xe049e , - 0xe049f , - 0xe04a0 , - 0xe04a1 , - 0xe04a2 , - 0xe04a3 , - 0xe04a4 , - 0xe04a5 , - 0xe04a6 , - 0xe04a7 , - 0xe04a8 , - 0xe04a9 , - 0xe04aa , - 0xe04ab , - 0xe04ac , - 0xe04ad , - 0xe04ae , - 0xe04af , - 0xe04b0 , - 0xe04b1 , - 0xe04b2 , - 0xe04b3 , - 0xe04b4 , - 0xe04b5 , - 0xe04b6 , - 0xe04b7 , - 0xe04b8 , - 0xe04b9 , - 0xe04ba , - 0xe04bb , - 0xe04bc , - 0xe04bd , - 0xe04be , - 0xe04bf , - 0xe04c0 , - 0xe04c1 , - 0xe04c2 , - 0xe04c3 , - 0xe04c4 , - 0xe04c5 , - 0xe04c6 , - 0xe04c7 , - 0xe04c8 , - 0xe04c9 , - 0xe04ca , - 0xe04cb , - 0xe04cc , - 0xe04cd , - 0xe04ce , - 0xe04cf , - 0xe04d0 , - 0xe04d1 , - 0xe04d2 , - 0xe04d3 , - 0xe04d4 , - 0xe04d5 , - 0xe04d6 , - 0xe04d7 , - 0xe04d8 , - 0xe04d9 , - 0xe04da , - 0xe04db , - 0xe04dc , - 0xe04dd , - 0xe04de , - 0xe04df , - 0xe04e0 , - 0xe04e1 , - 0xe04e2 , - 0xe04e3 , - 0xe04e4 , - 0xe04e5 , - 0xe04e6 , - 0xe04e7 , - 0xe04e8 , - 0xe04e9 , - 0xe04ea , - 0xe04eb , - 0xe04ec , - 0xe04ed , - 0xe04ee , - 0xe04ef , - 0xe04f0 , - 0xe04f1 , - 0xe04f2 , - 0xe04f3 , - 0xe04f4 , - 0xe04f5 , - 0xe04f6 , - 0xe04f7 , - 0xe04f8 , - 0xe04f9 , - 0xe04fa , - 0xe04fb , - 0xe04fc , - 0xe04fd , - 0xe04fe , - 0xe04ff , - 0xe0500 , - 0xe0501 , - 0xe0502 , - 0xe0503 , - 0xe0504 , - 0xe0505 , - 0xe0506 , - 0xe0507 , - 0xe0508 , - 0xe0509 , - 0xe050a , - 0xe050b , - 0xe050c , - 0xe050d , - 0xe050e , - 0xe050f , - 0xe0510 , - 0xe0511 , - 0xe0512 , - 0xe0513 , - 0xe0514 , - 0xe0515 , - 0xe0516 , - 0xe0517 , - 0xe0518 , - 0xe0519 , - 0xe051a , - 0xe051b , - 0xe051c , - 0xe051d , - 0xe051e , - 0xe051f , - 0xe0520 , - 0xe0521 , - 0xe0522 , - 0xe0523 , - 0xe0524 , - 0xe0525 , - 0xe0526 , - 0xe0527 , - 0xe0528 , - 0xe0529 , - 0xe052a , - 0xe052b , - 0xe052c , - 0xe052d , - 0xe052e , - 0xe052f , - 0xe0530 , - 0xe0531 , - 0xe0532 , - 0xe0533 , - 0xe0534 , - 0xe0535 , - 0xe0536 , - 0xe0537 , - 0xe0538 , - 0xe0539 , - 0xe053a , - 0xe053b , - 0xe053c , - 0xe053d , - 0xe053e , - 0xe053f , - 0xe0540 , - 0xe0541 , - 0xe0542 , - 0xe0543 , - 0xe0544 , - 0xe0545 , - 0xe0546 , - 0xe0547 , - 0xe0548 , - 0xe0549 , - 0xe054a , - 0xe054b , - 0xe054c , - 0xe054d , - 0xe054e , - 0xe054f , - 0xe0550 , - 0xe0551 , - 0xe0552 , - 0xe0553 , - 0xe0554 , - 0xe0555 , - 0xe0556 , - 0xe0557 , - 0xe0558 , - 0xe0559 , - 0xe055a , - 0xe055b , - 0xe055c , - 0xe055d , - 0xe055e , - 0xe055f , - 0xe0560 , - 0xe0561 , - 0xe0562 , - 0xe0563 , - 0xe0564 , - 0xe0565 , - 0xe0566 , - 0xe0567 , - 0xe0568 , - 0xe0569 , - 0xe056a , - 0xe056b , - 0xe056c , - 0xe056d , - 0xe056e , - 0xe056f , - 0xe0570 , - 0xe0571 , - 0xe0572 , - 0xe0573 , - 0xe0574 , - 0xe0575 , - 0xe0576 , - 0xe0577 , - 0xe0578 , - 0xe0579 , - 0xe057a , - 0xe057b , - 0xe057c , - 0xe057d , - 0xe057e , - 0xe057f , - 0xe0580 , - 0xe0581 , - 0xe0582 , - 0xe0583 , - 0xe0584 , - 0xe0585 , - 0xe0586 , - 0xe0587 , - 0xe0588 , - 0xe0589 , - 0xe058a , - 0xe058b , - 0xe058c , - 0xe058d , - 0xe058e , - 0xe058f , - 0xe0590 , - 0xe0591 , - 0xe0592 , - 0xe0593 , - 0xe0594 , - 0xe0595 , - 0xe0596 , - 0xe0597 , - 0xe0598 , - 0xe0599 , - 0xe059a , - 0xe059b , - 0xe059c , - 0xe059d , - 0xe059e , - 0xe059f , - 0xe05a0 , - 0xe05a1 , - 0xe05a2 , - 0xe05a3 , - 0xe05a4 , - 0xe05a5 , - 0xe05a6 , - 0xe05a7 , - 0xe05a8 , - 0xe05a9 , - 0xe05aa , - 0xe05ab , - 0xe05ac , - 0xe05ad , - 0xe05ae , - 0xe05af , - 0xe05b0 , - 0xe05b1 , - 0xe05b2 , - 0xe05b3 , - 0xe05b4 , - 0xe05b5 , - 0xe05b6 , - 0xe05b7 , - 0xe05b8 , - 0xe05b9 , - 0xe05ba , - 0xe05bb , - 0xe05bc , - 0xe05bd , - 0xe05be , - 0xe05bf , - 0xe05c0 , - 0xe05c1 , - 0xe05c2 , - 0xe05c3 , - 0xe05c4 , - 0xe05c5 , - 0xe05c6 , - 0xe05c7 , - 0xe05c8 , - 0xe05c9 , - 0xe05ca , - 0xe05cb , - 0xe05cc , - 0xe05cd , - 0xe05ce , - 0xe05cf , - 0xe05d0 , - 0xe05d1 , - 0xe05d2 , - 0xe05d3 , - 0xe05d4 , - 0xe05d5 , - 0xe05d6 , - 0xe05d7 , - 0xe05d8 , - 0xe05d9 , - 0xe05da , - 0xe05db , - 0xe05dc , - 0xe05dd , - 0xe05de , - 0xe05df , - 0xe05e0 , - 0xe05e1 , - 0xe05e2 , - 0xe05e3 , - 0xe05e4 , - 0xe05e5 , - 0xe05e6 , - 0xe05e7 , - 0xe05e8 , - 0xe05e9 , - 0xe05ea , - 0xe05eb , - 0xe05ec , - 0xe05ed , - 0xe05ee , - 0xe05ef , - 0xe05f0 , - 0xe05f1 , - 0xe05f2 , - 0xe05f3 , - 0xe05f4 , - 0xe05f5 , - 0xe05f6 , - 0xe05f7 , - 0xe05f8 , - 0xe05f9 , - 0xe05fa , - 0xe05fb , - 0xe05fc , - 0xe05fd , - 0xe05fe , - 0xe05ff , - 0xe0600 , - 0xe0601 , - 0xe0602 , - 0xe0603 , - 0xe0604 , - 0xe0605 , - 0xe0606 , - 0xe0607 , - 0xe0608 , - 0xe0609 , - 0xe060a , - 0xe060b , - 0xe060c , - 0xe060d , - 0xe060e , - 0xe060f , - 0xe0610 , - 0xe0611 , - 0xe0612 , - 0xe0613 , - 0xe0614 , - 0xe0615 , - 0xe0616 , - 0xe0617 , - 0xe0618 , - 0xe0619 , - 0xe061a , - 0xe061b , - 0xe061c , - 0xe061d , - 0xe061e , - 0xe061f , - 0xe0620 , - 0xe0621 , - 0xe0622 , - 0xe0623 , - 0xe0624 , - 0xe0625 , - 0xe0626 , - 0xe0627 , - 0xe0628 , - 0xe0629 , - 0xe062a , - 0xe062b , - 0xe062c , - 0xe062d , - 0xe062e , - 0xe062f , - 0xe0630 , - 0xe0631 , - 0xe0632 , - 0xe0633 , - 0xe0634 , - 0xe0635 , - 0xe0636 , - 0xe0637 , - 0xe0638 , - 0xe0639 , - 0xe063a , - 0xe063b , - 0xe063c , - 0xe063d , - 0xe063e , - 0xe063f , - 0xe0640 , - 0xe0641 , - 0xe0642 , - 0xe0643 , - 0xe0644 , - 0xe0645 , - 0xe0646 , - 0xe0647 , - 0xe0648 , - 0xe0649 , - 0xe064a , - 0xe064b , - 0xe064c , - 0xe064d , - 0xe064e , - 0xe064f , - 0xe0650 , - 0xe0651 , - 0xe0652 , - 0xe0653 , - 0xe0654 , - 0xe0655 , - 0xe0656 , - 0xe0657 , - 0xe0658 , - 0xe0659 , - 0xe065a , - 0xe065b , - 0xe065c , - 0xe065d , - 0xe065e , - 0xe065f , - 0xe0660 , - 0xe0661 , - 0xe0662 , - 0xe0663 , - 0xe0664 , - 0xe0665 , - 0xe0666 , - 0xe0667 , - 0xe0668 , - 0xe0669 , - 0xe066a , - 0xe066b , - 0xe066c , - 0xe066d , - 0xe066e , - 0xe066f , - 0xe0670 , - 0xe0671 , - 0xe0672 , - 0xe0673 , - 0xe0674 , - 0xe0675 , - 0xe0676 , - 0xe0677 , - 0xe0678 , - 0xe0679 , - 0xe067a , - 0xe067b , - 0xe067c , - 0xe067d , - 0xe067e , - 0xe067f , - 0xe0680 , - 0xe0681 , - 0xe0682 , - 0xe0683 , - 0xe0684 , - 0xe0685 , - 0xe0686 , - 0xe0687 , - 0xe0688 , - 0xe0689 , - 0xe068a , - 0xe068b , - 0xe068c , - 0xe068d , - 0xe068e , - 0xe068f , - 0xe0690 , - 0xe0691 , - 0xe0692 , - 0xe0693 , - 0xe0694 , - 0xe0695 , - 0xe0696 , - 0xe0697 , - 0xe0698 , - 0xe0699 , - 0xe069a , - 0xe069b , - 0xe069c , - 0xe069d , - 0xe069e , - 0xe069f , - 0xe06a0 , - 0xe06a1 , - 0xe06a2 , - 0xe06a3 , - 0xe06a4 , - 0xe06a5 , - 0xe06a6 , - 0xe06a7 , - 0xe06a8 , - 0xe06a9 , - 0xe06aa , - 0xe06ab , - 0xe06ac , - 0xe06ad , - 0xe06ae , - 0xe06af , - 0xe06b0 , - 0xe06b1 , - 0xe06b2 , - 0xe06b3 , - 0xe06b4 , - 0xe06b5 , - 0xe06b6 , - 0xe06b7 , - 0xe06b8 , - 0xe06b9 , - 0xe06ba , - 0xe06bb , - 0xe06bc , - 0xe06bd , - 0xe06be , - 0xe06bf , - 0xe06c0 , - 0xe06c1 , - 0xe06c2 , - 0xe06c3 , - 0xe06c4 , - 0xe06c5 , - 0xe06c6 , - 0xe06c7 , - 0xe06c8 , - 0xe06c9 , - 0xe06ca , - 0xe06cb , - 0xe06cc , - 0xe06cd , - 0xe06ce , - 0xe06cf , - 0xe06d0 , - 0xe06d1 , - 0xe06d2 , - 0xe06d3 , - 0xe06d4 , - 0xe06d5 , - 0xe06d6 , - 0xe06d7 , - 0xe06d8 , - 0xe06d9 , - 0xe06da , - 0xe06db , - 0xe06dc , - 0xe06dd , - 0xe06de , - 0xe06df , - 0xe06e0 , - 0xe06e1 , - 0xe06e2 , - 0xe06e3 , - 0xe06e4 , - 0xe06e5 , - 0xe06e6 , - 0xe06e7 , - 0xe06e8 , - 0xe06e9 , - 0xe06ea , - 0xe06eb , - 0xe06ec , - 0xe06ed , - 0xe06ee , - 0xe06ef , - 0xe06f0 , - 0xe06f1 , - 0xe06f2 , - 0xe06f3 , - 0xe06f4 , - 0xe06f5 , - 0xe06f6 , - 0xe06f7 , - 0xe06f8 , - 0xe06f9 , - 0xe06fa , - 0xe06fb , - 0xe06fc , - 0xe06fd , - 0xe06fe , - 0xe06ff , - 0xe0700 , - 0xe0701 , - 0xe0702 , - 0xe0703 , - 0xe0704 , - 0xe0705 , - 0xe0706 , - 0xe0707 , - 0xe0708 , - 0xe0709 , - 0xe070a , - 0xe070b , - 0xe070c , - 0xe070d , - 0xe070e , - 0xe070f , - 0xe0710 , - 0xe0711 , - 0xe0712 , - 0xe0713 , - 0xe0714 , - 0xe0715 , - 0xe0716 , - 0xe0717 , - 0xe0718 , - 0xe0719 , - 0xe071a , - 0xe071b , - 0xe071c , - 0xe071d , - 0xe071e , - 0xe071f , - 0xe0720 , - 0xe0721 , - 0xe0722 , - 0xe0723 , - 0xe0724 , - 0xe0725 , - 0xe0726 , - 0xe0727 , - 0xe0728 , - 0xe0729 , - 0xe072a , - 0xe072b , - 0xe072c , - 0xe072d , - 0xe072e , - 0xe072f , - 0xe0730 , - 0xe0731 , - 0xe0732 , - 0xe0733 , - 0xe0734 , - 0xe0735 , - 0xe0736 , - 0xe0737 , - 0xe0738 , - 0xe0739 , - 0xe073a , - 0xe073b , - 0xe073c , - 0xe073d , - 0xe073e , - 0xe073f , - 0xe0740 , - 0xe0741 , - 0xe0742 , - 0xe0743 , - 0xe0744 , - 0xe0745 , - 0xe0746 , - 0xe0747 , - 0xe0748 , - 0xe0749 , - 0xe074a , - 0xe074b , - 0xe074c , - 0xe074d , - 0xe074e , - 0xe074f , - 0xe0750 , - 0xe0751 , - 0xe0752 , - 0xe0753 , - 0xe0754 , - 0xe0755 , - 0xe0756 , - 0xe0757 , - 0xe0758 , - 0xe0759 , - 0xe075a , - 0xe075b , - 0xe075c , - 0xe075d , - 0xe075e , - 0xe075f , - 0xe0760 , - 0xe0761 , - 0xe0762 , - 0xe0763 , - 0xe0764 , - 0xe0765 , - 0xe0766 , - 0xe0767 , - 0xe0768 , - 0xe0769 , - 0xe076a , - 0xe076b , - 0xe076c , - 0xe076d , - 0xe076e , - 0xe076f , - 0xe0770 , - 0xe0771 , - 0xe0772 , - 0xe0773 , - 0xe0774 , - 0xe0775 , - 0xe0776 , - 0xe0777 , - 0xe0778 , - 0xe0779 , - 0xe077a , - 0xe077b , - 0xe077c , - 0xe077d , - 0xe077e , - 0xe077f , - 0xe0780 , - 0xe0781 , - 0xe0782 , - 0xe0783 , - 0xe0784 , - 0xe0785 , - 0xe0786 , - 0xe0787 , - 0xe0788 , - 0xe0789 , - 0xe078a , - 0xe078b , - 0xe078c , - 0xe078d , - 0xe078e , - 0xe078f , - 0xe0790 , - 0xe0791 , - 0xe0792 , - 0xe0793 , - 0xe0794 , - 0xe0795 , - 0xe0796 , - 0xe0797 , - 0xe0798 , - 0xe0799 , - 0xe079a , - 0xe079b , - 0xe079c , - 0xe079d , - 0xe079e , - 0xe079f , - 0xe07a0 , - 0xe07a1 , - 0xe07a2 , - 0xe07a3 , - 0xe07a4 , - 0xe07a5 , - 0xe07a6 , - 0xe07a7 , - 0xe07a8 , - 0xe07a9 , - 0xe07aa , - 0xe07ab , - 0xe07ac , - 0xe07ad , - 0xe07ae , - 0xe07af , - 0xe07b0 , - 0xe07b1 , - 0xe07b2 , - 0xe07b3 , - 0xe07b4 , - 0xe07b5 , - 0xe07b6 , - 0xe07b7 , - 0xe07b8 , - 0xe07b9 , - 0xe07ba , - 0xe07bb , - 0xe07bc , - 0xe07bd , - 0xe07be , - 0xe07bf , - 0xe07c0 , - 0xe07c1 , - 0xe07c2 , - 0xe07c3 , - 0xe07c4 , - 0xe07c5 , - 0xe07c6 , - 0xe07c7 , - 0xe07c8 , - 0xe07c9 , - 0xe07ca , - 0xe07cb , - 0xe07cc , - 0xe07cd , - 0xe07ce , - 0xe07cf , - 0xe07d0 , - 0xe07d1 , - 0xe07d2 , - 0xe07d3 , - 0xe07d4 , - 0xe07d5 , - 0xe07d6 , - 0xe07d7 , - 0xe07d8 , - 0xe07d9 , - 0xe07da , - 0xe07db , - 0xe07dc , - 0xe07dd , - 0xe07de , - 0xe07df , - 0xe07e0 , - 0xe07e1 , - 0xe07e2 , - 0xe07e3 , - 0xe07e4 , - 0xe07e5 , - 0xe07e6 , - 0xe07e7 , - 0xe07e8 , - 0xe07e9 , - 0xe07ea , - 0xe07eb , - 0xe07ec , - 0xe07ed , - 0xe07ee , - 0xe07ef , - 0xe07f0 , - 0xe07f1 , - 0xe07f2 , - 0xe07f3 , - 0xe07f4 , - 0xe07f5 , - 0xe07f6 , - 0xe07f7 , - 0xe07f8 , - 0xe07f9 , - 0xe07fa , - 0xe07fb , - 0xe07fc , - 0xe07fd , - 0xe07fe , - 0xe07ff , - 0xe0800 , - 0xe0801 , - 0xe0802 , - 0xe0803 , - 0xe0804 , - 0xe0805 , - 0xe0806 , - 0xe0807 , - 0xe0808 , - 0xe0809 , - 0xe080a , - 0xe080b , - 0xe080c , - 0xe080d , - 0xe080e , - 0xe080f , - 0xe0810 , - 0xe0811 , - 0xe0812 , - 0xe0813 , - 0xe0814 , - 0xe0815 , - 0xe0816 , - 0xe0817 , - 0xe0818 , - 0xe0819 , - 0xe081a , - 0xe081b , - 0xe081c , - 0xe081d , - 0xe081e , - 0xe081f , - 0xe0820 , - 0xe0821 , - 0xe0822 , - 0xe0823 , - 0xe0824 , - 0xe0825 , - 0xe0826 , - 0xe0827 , - 0xe0828 , - 0xe0829 , - 0xe082a , - 0xe082b , - 0xe082c , - 0xe082d , - 0xe082e , - 0xe082f , - 0xe0830 , - 0xe0831 , - 0xe0832 , - 0xe0833 , - 0xe0834 , - 0xe0835 , - 0xe0836 , - 0xe0837 , - 0xe0838 , - 0xe0839 , - 0xe083a , - 0xe083b , - 0xe083c , - 0xe083d , - 0xe083e , - 0xe083f , - 0xe0840 , - 0xe0841 , - 0xe0842 , - 0xe0843 , - 0xe0844 , - 0xe0845 , - 0xe0846 , - 0xe0847 , - 0xe0848 , - 0xe0849 , - 0xe084a , - 0xe084b , - 0xe084c , - 0xe084d , - 0xe084e , - 0xe084f , - 0xe0850 , - 0xe0851 , - 0xe0852 , - 0xe0853 , - 0xe0854 , - 0xe0855 , - 0xe0856 , - 0xe0857 , - 0xe0858 , - 0xe0859 , - 0xe085a , - 0xe085b , - 0xe085c , - 0xe085d , - 0xe085e , - 0xe085f , - 0xe0860 , - 0xe0861 , - 0xe0862 , - 0xe0863 , - 0xe0864 , - 0xe0865 , - 0xe0866 , - 0xe0867 , - 0xe0868 , - 0xe0869 , - 0xe086a , - 0xe086b , - 0xe086c , - 0xe086d , - 0xe086e , - 0xe086f , - 0xe0870 , - 0xe0871 , - 0xe0872 , - 0xe0873 , - 0xe0874 , - 0xe0875 , - 0xe0876 , - 0xe0877 , - 0xe0878 , - 0xe0879 , - 0xe087a , - 0xe087b , - 0xe087c , - 0xe087d , - 0xe087e , - 0xe087f , - 0xe0880 , - 0xe0881 , - 0xe0882 , - 0xe0883 , - 0xe0884 , - 0xe0885 , - 0xe0886 , - 0xe0887 , - 0xe0888 , - 0xe0889 , - 0xe088a , - 0xe088b , - 0xe088c , - 0xe088d , - 0xe088e , - 0xe088f , - 0xe0890 , - 0xe0891 , - 0xe0892 , - 0xe0893 , - 0xe0894 , - 0xe0895 , - 0xe0896 , - 0xe0897 , - 0xe0898 , - 0xe0899 , - 0xe089a , - 0xe089b , - 0xe089c , - 0xe089d , - 0xe089e , - 0xe089f , - 0xe08a0 , - 0xe08a1 , - 0xe08a2 , - 0xe08a3 , - 0xe08a4 , - 0xe08a5 , - 0xe08a6 , - 0xe08a7 , - 0xe08a8 , - 0xe08a9 , - 0xe08aa , - 0xe08ab , - 0xe08ac , - 0xe08ad , - 0xe08ae , - 0xe08af , - 0xe08b0 , - 0xe08b1 , - 0xe08b2 , - 0xe08b3 , - 0xe08b4 , - 0xe08b5 , - 0xe08b6 , - 0xe08b7 , - 0xe08b8 , - 0xe08b9 , - 0xe08ba , - 0xe08bb , - 0xe08bc , - 0xe08bd , - 0xe08be , - 0xe08bf , - 0xe08c0 , - 0xe08c1 , - 0xe08c2 , - 0xe08c3 , - 0xe08c4 , - 0xe08c5 , - 0xe08c6 , - 0xe08c7 , - 0xe08c8 , - 0xe08c9 , - 0xe08ca , - 0xe08cb , - 0xe08cc , - 0xe08cd , - 0xe08ce , - 0xe08cf , - 0xe08d0 , - 0xe08d1 , - 0xe08d2 , - 0xe08d3 , - 0xe08d4 , - 0xe08d5 , - 0xe08d6 , - 0xe08d7 , - 0xe08d8 , - 0xe08d9 , - 0xe08da , - 0xe08db , - 0xe08dc , - 0xe08dd , - 0xe08de , - 0xe08df , - 0xe08e0 , - 0xe08e1 , - 0xe08e2 , - 0xe08e3 , - 0xe08e4 , - 0xe08e5 , - 0xe08e6 , - 0xe08e7 , - 0xe08e8 , - 0xe08e9 , - 0xe08ea , - 0xe08eb , - 0xe08ec , - 0xe08ed , - 0xe08ee , - 0xe08ef , - 0xe08f0 , - 0xe08f1 , - 0xe08f2 , - 0xe08f3 , - 0xe08f4 , - 0xe08f5 , - 0xe08f6 , - 0xe08f7 , - 0xe08f8 , - 0xe08f9 , - 0xe08fa , - 0xe08fb , - 0xe08fc , - 0xe08fd , - 0xe08fe , - 0xe08ff , - 0xe0900 , - 0xe0901 , - 0xe0902 , - 0xe0903 , - 0xe0904 , - 0xe0905 , - 0xe0906 , - 0xe0907 , - 0xe0908 , - 0xe0909 , - 0xe090a , - 0xe090b , - 0xe090c , - 0xe090d , - 0xe090e , - 0xe090f , - 0xe0910 , - 0xe0911 , - 0xe0912 , - 0xe0913 , - 0xe0914 , - 0xe0915 , - 0xe0916 , - 0xe0917 , - 0xe0918 , - 0xe0919 , - 0xe091a , - 0xe091b , - 0xe091c , - 0xe091d , - 0xe091e , - 0xe091f , - 0xe0920 , - 0xe0921 , - 0xe0922 , - 0xe0923 , - 0xe0924 , - 0xe0925 , - 0xe0926 , - 0xe0927 , - 0xe0928 , - 0xe0929 , - 0xe092a , - 0xe092b , - 0xe092c , - 0xe092d , - 0xe092e , - 0xe092f , - 0xe0930 , - 0xe0931 , - 0xe0932 , - 0xe0933 , - 0xe0934 , - 0xe0935 , - 0xe0936 , - 0xe0937 , - 0xe0938 , - 0xe0939 , - 0xe093a , - 0xe093b , - 0xe093c , - 0xe093d , - 0xe093e , - 0xe093f , - 0xe0940 , - 0xe0941 , - 0xe0942 , - 0xe0943 , - 0xe0944 , - 0xe0945 , - 0xe0946 , - 0xe0947 , - 0xe0948 , - 0xe0949 , - 0xe094a , - 0xe094b , - 0xe094c , - 0xe094d , - 0xe094e , - 0xe094f , - 0xe0950 , - 0xe0951 , - 0xe0952 , - 0xe0953 , - 0xe0954 , - 0xe0955 , - 0xe0956 , - 0xe0957 , - 0xe0958 , - 0xe0959 , - 0xe095a , - 0xe095b , - 0xe095c , - 0xe095d , - 0xe095e , - 0xe095f , - 0xe0960 , - 0xe0961 , - 0xe0962 , - 0xe0963 , - 0xe0964 , - 0xe0965 , - 0xe0966 , - 0xe0967 , - 0xe0968 , - 0xe0969 , - 0xe096a , - 0xe096b , - 0xe096c , - 0xe096d , - 0xe096e , - 0xe096f , - 0xe0970 , - 0xe0971 , - 0xe0972 , - 0xe0973 , - 0xe0974 , - 0xe0975 , - 0xe0976 , - 0xe0977 , - 0xe0978 , - 0xe0979 , - 0xe097a , - 0xe097b , - 0xe097c , - 0xe097d , - 0xe097e , - 0xe097f , - 0xe0980 , - 0xe0981 , - 0xe0982 , - 0xe0983 , - 0xe0984 , - 0xe0985 , - 0xe0986 , - 0xe0987 , - 0xe0988 , - 0xe0989 , - 0xe098a , - 0xe098b , - 0xe098c , - 0xe098d , - 0xe098e , - 0xe098f , - 0xe0990 , - 0xe0991 , - 0xe0992 , - 0xe0993 , - 0xe0994 , - 0xe0995 , - 0xe0996 , - 0xe0997 , - 0xe0998 , - 0xe0999 , - 0xe099a , - 0xe099b , - 0xe099c , - 0xe099d , - 0xe099e , - 0xe099f , - 0xe09a0 , - 0xe09a1 , - 0xe09a2 , - 0xe09a3 , - 0xe09a4 , - 0xe09a5 , - 0xe09a6 , - 0xe09a7 , - 0xe09a8 , - 0xe09a9 , - 0xe09aa , - 0xe09ab , - 0xe09ac , - 0xe09ad , - 0xe09ae , - 0xe09af , - 0xe09b0 , - 0xe09b1 , - 0xe09b2 , - 0xe09b3 , - 0xe09b4 , - 0xe09b5 , - 0xe09b6 , - 0xe09b7 , - 0xe09b8 , - 0xe09b9 , - 0xe09ba , - 0xe09bb , - 0xe09bc , - 0xe09bd , - 0xe09be , - 0xe09bf , - 0xe09c0 , - 0xe09c1 , - 0xe09c2 , - 0xe09c3 , - 0xe09c4 , - 0xe09c5 , - 0xe09c6 , - 0xe09c7 , - 0xe09c8 , - 0xe09c9 , - 0xe09ca , - 0xe09cb , - 0xe09cc , - 0xe09cd , - 0xe09ce , - 0xe09cf , - 0xe09d0 , - 0xe09d1 , - 0xe09d2 , - 0xe09d3 , - 0xe09d4 , - 0xe09d5 , - 0xe09d6 , - 0xe09d7 , - 0xe09d8 , - 0xe09d9 , - 0xe09da , - 0xe09db , - 0xe09dc , - 0xe09dd , - 0xe09de , - 0xe09df , - 0xe09e0 , - 0xe09e1 , - 0xe09e2 , - 0xe09e3 , - 0xe09e4 , - 0xe09e5 , - 0xe09e6 , - 0xe09e7 , - 0xe09e8 , - 0xe09e9 , - 0xe09ea , - 0xe09eb , - 0xe09ec , - 0xe09ed , - 0xe09ee , - 0xe09ef , - 0xe09f0 , - 0xe09f1 , - 0xe09f2 , - 0xe09f3 , - 0xe09f4 , - 0xe09f5 , - 0xe09f6 , - 0xe09f7 , - 0xe09f8 , - 0xe09f9 , - 0xe09fa , - 0xe09fb , - 0xe09fc , - 0xe09fd , - 0xe09fe , - 0xe09ff , - 0xe0a00 , - 0xe0a01 , - 0xe0a02 , - 0xe0a03 , - 0xe0a04 , - 0xe0a05 , - 0xe0a06 , - 0xe0a07 , - 0xe0a08 , - 0xe0a09 , - 0xe0a0a , - 0xe0a0b , - 0xe0a0c , - 0xe0a0d , - 0xe0a0e , - 0xe0a0f , - 0xe0a10 , - 0xe0a11 , - 0xe0a12 , - 0xe0a13 , - 0xe0a14 , - 0xe0a15 , - 0xe0a16 , - 0xe0a17 , - 0xe0a18 , - 0xe0a19 , - 0xe0a1a , - 0xe0a1b , - 0xe0a1c , - 0xe0a1d , - 0xe0a1e , - 0xe0a1f , - 0xe0a20 , - 0xe0a21 , - 0xe0a22 , - 0xe0a23 , - 0xe0a24 , - 0xe0a25 , - 0xe0a26 , - 0xe0a27 , - 0xe0a28 , - 0xe0a29 , - 0xe0a2a , - 0xe0a2b , - 0xe0a2c , - 0xe0a2d , - 0xe0a2e , - 0xe0a2f , - 0xe0a30 , - 0xe0a31 , - 0xe0a32 , - 0xe0a33 , - 0xe0a34 , - 0xe0a35 , - 0xe0a36 , - 0xe0a37 , - 0xe0a38 , - 0xe0a39 , - 0xe0a3a , - 0xe0a3b , - 0xe0a3c , - 0xe0a3d , - 0xe0a3e , - 0xe0a3f , - 0xe0a40 , - 0xe0a41 , - 0xe0a42 , - 0xe0a43 , - 0xe0a44 , - 0xe0a45 , - 0xe0a46 , - 0xe0a47 , - 0xe0a48 , - 0xe0a49 , - 0xe0a4a , - 0xe0a4b , - 0xe0a4c , - 0xe0a4d , - 0xe0a4e , - 0xe0a4f , - 0xe0a50 , - 0xe0a51 , - 0xe0a52 , - 0xe0a53 , - 0xe0a54 , - 0xe0a55 , - 0xe0a56 , - 0xe0a57 , - 0xe0a58 , - 0xe0a59 , - 0xe0a5a , - 0xe0a5b , - 0xe0a5c , - 0xe0a5d , - 0xe0a5e , - 0xe0a5f , - 0xe0a60 , - 0xe0a61 , - 0xe0a62 , - 0xe0a63 , - 0xe0a64 , - 0xe0a65 , - 0xe0a66 , - 0xe0a67 , - 0xe0a68 , - 0xe0a69 , - 0xe0a6a , - 0xe0a6b , - 0xe0a6c , - 0xe0a6d , - 0xe0a6e , - 0xe0a6f , - 0xe0a70 , - 0xe0a71 , - 0xe0a72 , - 0xe0a73 , - 0xe0a74 , - 0xe0a75 , - 0xe0a76 , - 0xe0a77 , - 0xe0a78 , - 0xe0a79 , - 0xe0a7a , - 0xe0a7b , - 0xe0a7c , - 0xe0a7d , - 0xe0a7e , - 0xe0a7f , - 0xe0a80 , - 0xe0a81 , - 0xe0a82 , - 0xe0a83 , - 0xe0a84 , - 0xe0a85 , - 0xe0a86 , - 0xe0a87 , - 0xe0a88 , - 0xe0a89 , - 0xe0a8a , - 0xe0a8b , - 0xe0a8c , - 0xe0a8d , - 0xe0a8e , - 0xe0a8f , - 0xe0a90 , - 0xe0a91 , - 0xe0a92 , - 0xe0a93 , - 0xe0a94 , - 0xe0a95 , - 0xe0a96 , - 0xe0a97 , - 0xe0a98 , - 0xe0a99 , - 0xe0a9a , - 0xe0a9b , - 0xe0a9c , - 0xe0a9d , - 0xe0a9e , - 0xe0a9f , - 0xe0aa0 , - 0xe0aa1 , - 0xe0aa2 , - 0xe0aa3 , - 0xe0aa4 , - 0xe0aa5 , - 0xe0aa6 , - 0xe0aa7 , - 0xe0aa8 , - 0xe0aa9 , - 0xe0aaa , - 0xe0aab , - 0xe0aac , - 0xe0aad , - 0xe0aae , - 0xe0aaf , - 0xe0ab0 , - 0xe0ab1 , - 0xe0ab2 , - 0xe0ab3 , - 0xe0ab4 , - 0xe0ab5 , - 0xe0ab6 , - 0xe0ab7 , - 0xe0ab8 , - 0xe0ab9 , - 0xe0aba , - 0xe0abb , - 0xe0abc , - 0xe0abd , - 0xe0abe , - 0xe0abf , - 0xe0ac0 , - 0xe0ac1 , - 0xe0ac2 , - 0xe0ac3 , - 0xe0ac4 , - 0xe0ac5 , - 0xe0ac6 , - 0xe0ac7 , - 0xe0ac8 , - 0xe0ac9 , - 0xe0aca , - 0xe0acb , - 0xe0acc , - 0xe0acd , - 0xe0ace , - 0xe0acf , - 0xe0ad0 , - 0xe0ad1 , - 0xe0ad2 , - 0xe0ad3 , - 0xe0ad4 , - 0xe0ad5 , - 0xe0ad6 , - 0xe0ad7 , - 0xe0ad8 , - 0xe0ad9 , - 0xe0ada , - 0xe0adb , - 0xe0adc , - 0xe0add , - 0xe0ade , - 0xe0adf , - 0xe0ae0 , - 0xe0ae1 , - 0xe0ae2 , - 0xe0ae3 , - 0xe0ae4 , - 0xe0ae5 , - 0xe0ae6 , - 0xe0ae7 , - 0xe0ae8 , - 0xe0ae9 , - 0xe0aea , - 0xe0aeb , - 0xe0aec , - 0xe0aed , - 0xe0aee , - 0xe0aef , - 0xe0af0 , - 0xe0af1 , - 0xe0af2 , - 0xe0af3 , - 0xe0af4 , - 0xe0af5 , - 0xe0af6 , - 0xe0af7 , - 0xe0af8 , - 0xe0af9 , - 0xe0afa , - 0xe0afb , - 0xe0afc , - 0xe0afd , - 0xe0afe , - 0xe0aff , - 0xe0b00 , - 0xe0b01 , - 0xe0b02 , - 0xe0b03 , - 0xe0b04 , - 0xe0b05 , - 0xe0b06 , - 0xe0b07 , - 0xe0b08 , - 0xe0b09 , - 0xe0b0a , - 0xe0b0b , - 0xe0b0c , - 0xe0b0d , - 0xe0b0e , - 0xe0b0f , - 0xe0b10 , - 0xe0b11 , - 0xe0b12 , - 0xe0b13 , - 0xe0b14 , - 0xe0b15 , - 0xe0b16 , - 0xe0b17 , - 0xe0b18 , - 0xe0b19 , - 0xe0b1a , - 0xe0b1b , - 0xe0b1c , - 0xe0b1d , - 0xe0b1e , - 0xe0b1f , - 0xe0b20 , - 0xe0b21 , - 0xe0b22 , - 0xe0b23 , - 0xe0b24 , - 0xe0b25 , - 0xe0b26 , - 0xe0b27 , - 0xe0b28 , - 0xe0b29 , - 0xe0b2a , - 0xe0b2b , - 0xe0b2c , - 0xe0b2d , - 0xe0b2e , - 0xe0b2f , - 0xe0b30 , - 0xe0b31 , - 0xe0b32 , - 0xe0b33 , - 0xe0b34 , - 0xe0b35 , - 0xe0b36 , - 0xe0b37 , - 0xe0b38 , - 0xe0b39 , - 0xe0b3a , - 0xe0b3b , - 0xe0b3c , - 0xe0b3d , - 0xe0b3e , - 0xe0b3f , - 0xe0b40 , - 0xe0b41 , - 0xe0b42 , - 0xe0b43 , - 0xe0b44 , - 0xe0b45 , - 0xe0b46 , - 0xe0b47 , - 0xe0b48 , - 0xe0b49 , - 0xe0b4a , - 0xe0b4b , - 0xe0b4c , - 0xe0b4d , - 0xe0b4e , - 0xe0b4f , - 0xe0b50 , - 0xe0b51 , - 0xe0b52 , - 0xe0b53 , - 0xe0b54 , - 0xe0b55 , - 0xe0b56 , - 0xe0b57 , - 0xe0b58 , - 0xe0b59 , - 0xe0b5a , - 0xe0b5b , - 0xe0b5c , - 0xe0b5d , - 0xe0b5e , - 0xe0b5f , - 0xe0b60 , - 0xe0b61 , - 0xe0b62 , - 0xe0b63 , - 0xe0b64 , - 0xe0b65 , - 0xe0b66 , - 0xe0b67 , - 0xe0b68 , - 0xe0b69 , - 0xe0b6a , - 0xe0b6b , - 0xe0b6c , - 0xe0b6d , - 0xe0b6e , - 0xe0b6f , - 0xe0b70 , - 0xe0b71 , - 0xe0b72 , - 0xe0b73 , - 0xe0b74 , - 0xe0b75 , - 0xe0b76 , - 0xe0b77 , - 0xe0b78 , - 0xe0b79 , - 0xe0b7a , - 0xe0b7b , - 0xe0b7c , - 0xe0b7d , - 0xe0b7e , - 0xe0b7f , - 0xe0b80 , - 0xe0b81 , - 0xe0b82 , - 0xe0b83 , - 0xe0b84 , - 0xe0b85 , - 0xe0b86 , - 0xe0b87 , - 0xe0b88 , - 0xe0b89 , - 0xe0b8a , - 0xe0b8b , - 0xe0b8c , - 0xe0b8d , - 0xe0b8e , - 0xe0b8f , - 0xe0b90 , - 0xe0b91 , - 0xe0b92 , - 0xe0b93 , - 0xe0b94 , - 0xe0b95 , - 0xe0b96 , - 0xe0b97 , - 0xe0b98 , - 0xe0b99 , - 0xe0b9a , - 0xe0b9b , - 0xe0b9c , - 0xe0b9d , - 0xe0b9e , - 0xe0b9f , - 0xe0ba0 , - 0xe0ba1 , - 0xe0ba2 , - 0xe0ba3 , - 0xe0ba4 , - 0xe0ba5 , - 0xe0ba6 , - 0xe0ba7 , - 0xe0ba8 , - 0xe0ba9 , - 0xe0baa , - 0xe0bab , - 0xe0bac , - 0xe0bad , - 0xe0bae , - 0xe0baf , - 0xe0bb0 , - 0xe0bb1 , - 0xe0bb2 , - 0xe0bb3 , - 0xe0bb4 , - 0xe0bb5 , - 0xe0bb6 , - 0xe0bb7 , - 0xe0bb8 , - 0xe0bb9 , - 0xe0bba , - 0xe0bbb , - 0xe0bbc , - 0xe0bbd , - 0xe0bbe , - 0xe0bbf , - 0xe0bc0 , - 0xe0bc1 , - 0xe0bc2 , - 0xe0bc3 , - 0xe0bc4 , - 0xe0bc5 , - 0xe0bc6 , - 0xe0bc7 , - 0xe0bc8 , - 0xe0bc9 , - 0xe0bca , - 0xe0bcb , - 0xe0bcc , - 0xe0bcd , - 0xe0bce , - 0xe0bcf , - 0xe0bd0 , - 0xe0bd1 , - 0xe0bd2 , - 0xe0bd3 , - 0xe0bd4 , - 0xe0bd5 , - 0xe0bd6 , - 0xe0bd7 , - 0xe0bd8 , - 0xe0bd9 , - 0xe0bda , - 0xe0bdb , - 0xe0bdc , - 0xe0bdd , - 0xe0bde , - 0xe0bdf , - 0xe0be0 , - 0xe0be1 , - 0xe0be2 , - 0xe0be3 , - 0xe0be4 , - 0xe0be5 , - 0xe0be6 , - 0xe0be7 , - 0xe0be8 , - 0xe0be9 , - 0xe0bea , - 0xe0beb , - 0xe0bec , - 0xe0bed , - 0xe0bee , - 0xe0bef , - 0xe0bf0 , - 0xe0bf1 , - 0xe0bf2 , - 0xe0bf3 , - 0xe0bf4 , - 0xe0bf5 , - 0xe0bf6 , - 0xe0bf7 , - 0xe0bf8 , - 0xe0bf9 , - 0xe0bfa , - 0xe0bfb , - 0xe0bfc , - 0xe0bfd , - 0xe0bfe , - 0xe0bff , - 0xe0c00 , - 0xe0c01 , - 0xe0c02 , - 0xe0c03 , - 0xe0c04 , - 0xe0c05 , - 0xe0c06 , - 0xe0c07 , - 0xe0c08 , - 0xe0c09 , - 0xe0c0a , - 0xe0c0b , - 0xe0c0c , - 0xe0c0d , - 0xe0c0e , - 0xe0c0f , - 0xe0c10 , - 0xe0c11 , - 0xe0c12 , - 0xe0c13 , - 0xe0c14 , - 0xe0c15 , - 0xe0c16 , - 0xe0c17 , - 0xe0c18 , - 0xe0c19 , - 0xe0c1a , - 0xe0c1b , - 0xe0c1c , - 0xe0c1d , - 0xe0c1e , - 0xe0c1f , - 0xe0c20 , - 0xe0c21 , - 0xe0c22 , - 0xe0c23 , - 0xe0c24 , - 0xe0c25 , - 0xe0c26 , - 0xe0c27 , - 0xe0c28 , - 0xe0c29 , - 0xe0c2a , - 0xe0c2b , - 0xe0c2c , - 0xe0c2d , - 0xe0c2e , - 0xe0c2f , - 0xe0c30 , - 0xe0c31 , - 0xe0c32 , - 0xe0c33 , - 0xe0c34 , - 0xe0c35 , - 0xe0c36 , - 0xe0c37 , - 0xe0c38 , - 0xe0c39 , - 0xe0c3a , - 0xe0c3b , - 0xe0c3c , - 0xe0c3d , - 0xe0c3e , - 0xe0c3f , - 0xe0c40 , - 0xe0c41 , - 0xe0c42 , - 0xe0c43 , - 0xe0c44 , - 0xe0c45 , - 0xe0c46 , - 0xe0c47 , - 0xe0c48 , - 0xe0c49 , - 0xe0c4a , - 0xe0c4b , - 0xe0c4c , - 0xe0c4d , - 0xe0c4e , - 0xe0c4f , - 0xe0c50 , - 0xe0c51 , - 0xe0c52 , - 0xe0c53 , - 0xe0c54 , - 0xe0c55 , - 0xe0c56 , - 0xe0c57 , - 0xe0c58 , - 0xe0c59 , - 0xe0c5a , - 0xe0c5b , - 0xe0c5c , - 0xe0c5d , - 0xe0c5e , - 0xe0c5f , - 0xe0c60 , - 0xe0c61 , - 0xe0c62 , - 0xe0c63 , - 0xe0c64 , - 0xe0c65 , - 0xe0c66 , - 0xe0c67 , - 0xe0c68 , - 0xe0c69 , - 0xe0c6a , - 0xe0c6b , - 0xe0c6c , - 0xe0c6d , - 0xe0c6e , - 0xe0c6f , - 0xe0c70 , - 0xe0c71 , - 0xe0c72 , - 0xe0c73 , - 0xe0c74 , - 0xe0c75 , - 0xe0c76 , - 0xe0c77 , - 0xe0c78 , - 0xe0c79 , - 0xe0c7a , - 0xe0c7b , - 0xe0c7c , - 0xe0c7d , - 0xe0c7e , - 0xe0c7f , - 0xe0c80 , - 0xe0c81 , - 0xe0c82 , - 0xe0c83 , - 0xe0c84 , - 0xe0c85 , - 0xe0c86 , - 0xe0c87 , - 0xe0c88 , - 0xe0c89 , - 0xe0c8a , - 0xe0c8b , - 0xe0c8c , - 0xe0c8d , - 0xe0c8e , - 0xe0c8f , - 0xe0c90 , - 0xe0c91 , - 0xe0c92 , - 0xe0c93 , - 0xe0c94 , - 0xe0c95 , - 0xe0c96 , - 0xe0c97 , - 0xe0c98 , - 0xe0c99 , - 0xe0c9a , - 0xe0c9b , - 0xe0c9c , - 0xe0c9d , - 0xe0c9e , - 0xe0c9f , - 0xe0ca0 , - 0xe0ca1 , - 0xe0ca2 , - 0xe0ca3 , - 0xe0ca4 , - 0xe0ca5 , - 0xe0ca6 , - 0xe0ca7 , - 0xe0ca8 , - 0xe0ca9 , - 0xe0caa , - 0xe0cab , - 0xe0cac , - 0xe0cad , - 0xe0cae , - 0xe0caf , - 0xe0cb0 , - 0xe0cb1 , - 0xe0cb2 , - 0xe0cb3 , - 0xe0cb4 , - 0xe0cb5 , - 0xe0cb6 , - 0xe0cb7 , - 0xe0cb8 , - 0xe0cb9 , - 0xe0cba , - 0xe0cbb , - 0xe0cbc , - 0xe0cbd , - 0xe0cbe , - 0xe0cbf , - 0xe0cc0 , - 0xe0cc1 , - 0xe0cc2 , - 0xe0cc3 , - 0xe0cc4 , - 0xe0cc5 , - 0xe0cc6 , - 0xe0cc7 , - 0xe0cc8 , - 0xe0cc9 , - 0xe0cca , - 0xe0ccb , - 0xe0ccc , - 0xe0ccd , - 0xe0cce , - 0xe0ccf , - 0xe0cd0 , - 0xe0cd1 , - 0xe0cd2 , - 0xe0cd3 , - 0xe0cd4 , - 0xe0cd5 , - 0xe0cd6 , - 0xe0cd7 , - 0xe0cd8 , - 0xe0cd9 , - 0xe0cda , - 0xe0cdb , - 0xe0cdc , - 0xe0cdd , - 0xe0cde , - 0xe0cdf , - 0xe0ce0 , - 0xe0ce1 , - 0xe0ce2 , - 0xe0ce3 , - 0xe0ce4 , - 0xe0ce5 , - 0xe0ce6 , - 0xe0ce7 , - 0xe0ce8 , - 0xe0ce9 , - 0xe0cea , - 0xe0ceb , - 0xe0cec , - 0xe0ced , - 0xe0cee , - 0xe0cef , - 0xe0cf0 , - 0xe0cf1 , - 0xe0cf2 , - 0xe0cf3 , - 0xe0cf4 , - 0xe0cf5 , - 0xe0cf6 , - 0xe0cf7 , - 0xe0cf8 , - 0xe0cf9 , - 0xe0cfa , - 0xe0cfb , - 0xe0cfc , - 0xe0cfd , - 0xe0cfe , - 0xe0cff , - 0xe0d00 , - 0xe0d01 , - 0xe0d02 , - 0xe0d03 , - 0xe0d04 , - 0xe0d05 , - 0xe0d06 , - 0xe0d07 , - 0xe0d08 , - 0xe0d09 , - 0xe0d0a , - 0xe0d0b , - 0xe0d0c , - 0xe0d0d , - 0xe0d0e , - 0xe0d0f , - 0xe0d10 , - 0xe0d11 , - 0xe0d12 , - 0xe0d13 , - 0xe0d14 , - 0xe0d15 , - 0xe0d16 , - 0xe0d17 , - 0xe0d18 , - 0xe0d19 , - 0xe0d1a , - 0xe0d1b , - 0xe0d1c , - 0xe0d1d , - 0xe0d1e , - 0xe0d1f , - 0xe0d20 , - 0xe0d21 , - 0xe0d22 , - 0xe0d23 , - 0xe0d24 , - 0xe0d25 , - 0xe0d26 , - 0xe0d27 , - 0xe0d28 , - 0xe0d29 , - 0xe0d2a , - 0xe0d2b , - 0xe0d2c , - 0xe0d2d , - 0xe0d2e , - 0xe0d2f , - 0xe0d30 , - 0xe0d31 , - 0xe0d32 , - 0xe0d33 , - 0xe0d34 , - 0xe0d35 , - 0xe0d36 , - 0xe0d37 , - 0xe0d38 , - 0xe0d39 , - 0xe0d3a , - 0xe0d3b , - 0xe0d3c , - 0xe0d3d , - 0xe0d3e , - 0xe0d3f , - 0xe0d40 , - 0xe0d41 , - 0xe0d42 , - 0xe0d43 , - 0xe0d44 , - 0xe0d45 , - 0xe0d46 , - 0xe0d47 , - 0xe0d48 , - 0xe0d49 , - 0xe0d4a , - 0xe0d4b , - 0xe0d4c , - 0xe0d4d , - 0xe0d4e , - 0xe0d4f , - 0xe0d50 , - 0xe0d51 , - 0xe0d52 , - 0xe0d53 , - 0xe0d54 , - 0xe0d55 , - 0xe0d56 , - 0xe0d57 , - 0xe0d58 , - 0xe0d59 , - 0xe0d5a , - 0xe0d5b , - 0xe0d5c , - 0xe0d5d , - 0xe0d5e , - 0xe0d5f , - 0xe0d60 , - 0xe0d61 , - 0xe0d62 , - 0xe0d63 , - 0xe0d64 , - 0xe0d65 , - 0xe0d66 , - 0xe0d67 , - 0xe0d68 , - 0xe0d69 , - 0xe0d6a , - 0xe0d6b , - 0xe0d6c , - 0xe0d6d , - 0xe0d6e , - 0xe0d6f , - 0xe0d70 , - 0xe0d71 , - 0xe0d72 , - 0xe0d73 , - 0xe0d74 , - 0xe0d75 , - 0xe0d76 , - 0xe0d77 , - 0xe0d78 , - 0xe0d79 , - 0xe0d7a , - 0xe0d7b , - 0xe0d7c , - 0xe0d7d , - 0xe0d7e , - 0xe0d7f , - 0xe0d80 , - 0xe0d81 , - 0xe0d82 , - 0xe0d83 , - 0xe0d84 , - 0xe0d85 , - 0xe0d86 , - 0xe0d87 , - 0xe0d88 , - 0xe0d89 , - 0xe0d8a , - 0xe0d8b , - 0xe0d8c , - 0xe0d8d , - 0xe0d8e , - 0xe0d8f , - 0xe0d90 , - 0xe0d91 , - 0xe0d92 , - 0xe0d93 , - 0xe0d94 , - 0xe0d95 , - 0xe0d96 , - 0xe0d97 , - 0xe0d98 , - 0xe0d99 , - 0xe0d9a , - 0xe0d9b , - 0xe0d9c , - 0xe0d9d , - 0xe0d9e , - 0xe0d9f , - 0xe0da0 , - 0xe0da1 , - 0xe0da2 , - 0xe0da3 , - 0xe0da4 , - 0xe0da5 , - 0xe0da6 , - 0xe0da7 , - 0xe0da8 , - 0xe0da9 , - 0xe0daa , - 0xe0dab , - 0xe0dac , - 0xe0dad , - 0xe0dae , - 0xe0daf , - 0xe0db0 , - 0xe0db1 , - 0xe0db2 , - 0xe0db3 , - 0xe0db4 , - 0xe0db5 , - 0xe0db6 , - 0xe0db7 , - 0xe0db8 , - 0xe0db9 , - 0xe0dba , - 0xe0dbb , - 0xe0dbc , - 0xe0dbd , - 0xe0dbe , - 0xe0dbf , - 0xe0dc0 , - 0xe0dc1 , - 0xe0dc2 , - 0xe0dc3 , - 0xe0dc4 , - 0xe0dc5 , - 0xe0dc6 , - 0xe0dc7 , - 0xe0dc8 , - 0xe0dc9 , - 0xe0dca , - 0xe0dcb , - 0xe0dcc , - 0xe0dcd , - 0xe0dce , - 0xe0dcf , - 0xe0dd0 , - 0xe0dd1 , - 0xe0dd2 , - 0xe0dd3 , - 0xe0dd4 , - 0xe0dd5 , - 0xe0dd6 , - 0xe0dd7 , - 0xe0dd8 , - 0xe0dd9 , - 0xe0dda , - 0xe0ddb , - 0xe0ddc , - 0xe0ddd , - 0xe0dde , - 0xe0ddf , - 0xe0de0 , - 0xe0de1 , - 0xe0de2 , - 0xe0de3 , - 0xe0de4 , - 0xe0de5 , - 0xe0de6 , - 0xe0de7 , - 0xe0de8 , - 0xe0de9 , - 0xe0dea , - 0xe0deb , - 0xe0dec , - 0xe0ded , - 0xe0dee , - 0xe0def , - 0xe0df0 , - 0xe0df1 , - 0xe0df2 , - 0xe0df3 , - 0xe0df4 , - 0xe0df5 , - 0xe0df6 , - 0xe0df7 , - 0xe0df8 , - 0xe0df9 , - 0xe0dfa , - 0xe0dfb , - 0xe0dfc , - 0xe0dfd , - 0xe0dfe , - 0xe0dff , - 0xe0e00 , - 0xe0e01 , - 0xe0e02 , - 0xe0e03 , - 0xe0e04 , - 0xe0e05 , - 0xe0e06 , - 0xe0e07 , - 0xe0e08 , - 0xe0e09 , - 0xe0e0a , - 0xe0e0b , - 0xe0e0c , - 0xe0e0d , - 0xe0e0e , - 0xe0e0f , - 0xe0e10 , - 0xe0e11 , - 0xe0e12 , - 0xe0e13 , - 0xe0e14 , - 0xe0e15 , - 0xe0e16 , - 0xe0e17 , - 0xe0e18 , - 0xe0e19 , - 0xe0e1a , - 0xe0e1b , - 0xe0e1c , - 0xe0e1d , - 0xe0e1e , - 0xe0e1f , - 0xe0e20 , - 0xe0e21 , - 0xe0e22 , - 0xe0e23 , - 0xe0e24 , - 0xe0e25 , - 0xe0e26 , - 0xe0e27 , - 0xe0e28 , - 0xe0e29 , - 0xe0e2a , - 0xe0e2b , - 0xe0e2c , - 0xe0e2d , - 0xe0e2e , - 0xe0e2f , - 0xe0e30 , - 0xe0e31 , - 0xe0e32 , - 0xe0e33 , - 0xe0e34 , - 0xe0e35 , - 0xe0e36 , - 0xe0e37 , - 0xe0e38 , - 0xe0e39 , - 0xe0e3a , - 0xe0e3b , - 0xe0e3c , - 0xe0e3d , - 0xe0e3e , - 0xe0e3f , - 0xe0e40 , - 0xe0e41 , - 0xe0e42 , - 0xe0e43 , - 0xe0e44 , - 0xe0e45 , - 0xe0e46 , - 0xe0e47 , - 0xe0e48 , - 0xe0e49 , - 0xe0e4a , - 0xe0e4b , - 0xe0e4c , - 0xe0e4d , - 0xe0e4e , - 0xe0e4f , - 0xe0e50 , - 0xe0e51 , - 0xe0e52 , - 0xe0e53 , - 0xe0e54 , - 0xe0e55 , - 0xe0e56 , - 0xe0e57 , - 0xe0e58 , - 0xe0e59 , - 0xe0e5a , - 0xe0e5b , - 0xe0e5c , - 0xe0e5d , - 0xe0e5e , - 0xe0e5f , - 0xe0e60 , - 0xe0e61 , - 0xe0e62 , - 0xe0e63 , - 0xe0e64 , - 0xe0e65 , - 0xe0e66 , - 0xe0e67 , - 0xe0e68 , - 0xe0e69 , - 0xe0e6a , - 0xe0e6b , - 0xe0e6c , - 0xe0e6d , - 0xe0e6e , - 0xe0e6f , - 0xe0e70 , - 0xe0e71 , - 0xe0e72 , - 0xe0e73 , - 0xe0e74 , - 0xe0e75 , - 0xe0e76 , - 0xe0e77 , - 0xe0e78 , - 0xe0e79 , - 0xe0e7a , - 0xe0e7b , - 0xe0e7c , - 0xe0e7d , - 0xe0e7e , - 0xe0e7f , - 0xe0e80 , - 0xe0e81 , - 0xe0e82 , - 0xe0e83 , - 0xe0e84 , - 0xe0e85 , - 0xe0e86 , - 0xe0e87 , - 0xe0e88 , - 0xe0e89 , - 0xe0e8a , - 0xe0e8b , - 0xe0e8c , - 0xe0e8d , - 0xe0e8e , - 0xe0e8f , - 0xe0e90 , - 0xe0e91 , - 0xe0e92 , - 0xe0e93 , - 0xe0e94 , - 0xe0e95 , - 0xe0e96 , - 0xe0e97 , - 0xe0e98 , - 0xe0e99 , - 0xe0e9a , - 0xe0e9b , - 0xe0e9c , - 0xe0e9d , - 0xe0e9e , - 0xe0e9f , - 0xe0ea0 , - 0xe0ea1 , - 0xe0ea2 , - 0xe0ea3 , - 0xe0ea4 , - 0xe0ea5 , - 0xe0ea6 , - 0xe0ea7 , - 0xe0ea8 , - 0xe0ea9 , - 0xe0eaa , - 0xe0eab , - 0xe0eac , - 0xe0ead , - 0xe0eae , - 0xe0eaf , - 0xe0eb0 , - 0xe0eb1 , - 0xe0eb2 , - 0xe0eb3 , - 0xe0eb4 , - 0xe0eb5 , - 0xe0eb6 , - 0xe0eb7 , - 0xe0eb8 , - 0xe0eb9 , - 0xe0eba , - 0xe0ebb , - 0xe0ebc , - 0xe0ebd , - 0xe0ebe , - 0xe0ebf , - 0xe0ec0 , - 0xe0ec1 , - 0xe0ec2 , - 0xe0ec3 , - 0xe0ec4 , - 0xe0ec5 , - 0xe0ec6 , - 0xe0ec7 , - 0xe0ec8 , - 0xe0ec9 , - 0xe0eca , - 0xe0ecb , - 0xe0ecc , - 0xe0ecd , - 0xe0ece , - 0xe0ecf , - 0xe0ed0 , - 0xe0ed1 , - 0xe0ed2 , - 0xe0ed3 , - 0xe0ed4 , - 0xe0ed5 , - 0xe0ed6 , - 0xe0ed7 , - 0xe0ed8 , - 0xe0ed9 , - 0xe0eda , - 0xe0edb , - 0xe0edc , - 0xe0edd , - 0xe0ede , - 0xe0edf , - 0xe0ee0 , - 0xe0ee1 , - 0xe0ee2 , - 0xe0ee3 , - 0xe0ee4 , - 0xe0ee5 , - 0xe0ee6 , - 0xe0ee7 , - 0xe0ee8 , - 0xe0ee9 , - 0xe0eea , - 0xe0eeb , - 0xe0eec , - 0xe0eed , - 0xe0eee , - 0xe0eef , - 0xe0ef0 , - 0xe0ef1 , - 0xe0ef2 , - 0xe0ef3 , - 0xe0ef4 , - 0xe0ef5 , - 0xe0ef6 , - 0xe0ef7 , - 0xe0ef8 , - 0xe0ef9 , - 0xe0efa , - 0xe0efb , - 0xe0efc , - 0xe0efd , - 0xe0efe , - 0xe0eff , - 0xe0f00 , - 0xe0f01 , - 0xe0f02 , - 0xe0f03 , - 0xe0f04 , - 0xe0f05 , - 0xe0f06 , - 0xe0f07 , - 0xe0f08 , - 0xe0f09 , - 0xe0f0a , - 0xe0f0b , - 0xe0f0c , - 0xe0f0d , - 0xe0f0e , - 0xe0f0f , - 0xe0f10 , - 0xe0f11 , - 0xe0f12 , - 0xe0f13 , - 0xe0f14 , - 0xe0f15 , - 0xe0f16 , - 0xe0f17 , - 0xe0f18 , - 0xe0f19 , - 0xe0f1a , - 0xe0f1b , - 0xe0f1c , - 0xe0f1d , - 0xe0f1e , - 0xe0f1f , - 0xe0f20 , - 0xe0f21 , - 0xe0f22 , - 0xe0f23 , - 0xe0f24 , - 0xe0f25 , - 0xe0f26 , - 0xe0f27 , - 0xe0f28 , - 0xe0f29 , - 0xe0f2a , - 0xe0f2b , - 0xe0f2c , - 0xe0f2d , - 0xe0f2e , - 0xe0f2f , - 0xe0f30 , - 0xe0f31 , - 0xe0f32 , - 0xe0f33 , - 0xe0f34 , - 0xe0f35 , - 0xe0f36 , - 0xe0f37 , - 0xe0f38 , - 0xe0f39 , - 0xe0f3a , - 0xe0f3b , - 0xe0f3c , - 0xe0f3d , - 0xe0f3e , - 0xe0f3f , - 0xe0f40 , - 0xe0f41 , - 0xe0f42 , - 0xe0f43 , - 0xe0f44 , - 0xe0f45 , - 0xe0f46 , - 0xe0f47 , - 0xe0f48 , - 0xe0f49 , - 0xe0f4a , - 0xe0f4b , - 0xe0f4c , - 0xe0f4d , - 0xe0f4e , - 0xe0f4f , - 0xe0f50 , - 0xe0f51 , - 0xe0f52 , - 0xe0f53 , - 0xe0f54 , - 0xe0f55 , - 0xe0f56 , - 0xe0f57 , - 0xe0f58 , - 0xe0f59 , - 0xe0f5a , - 0xe0f5b , - 0xe0f5c , - 0xe0f5d , - 0xe0f5e , - 0xe0f5f , - 0xe0f60 , - 0xe0f61 , - 0xe0f62 , - 0xe0f63 , - 0xe0f64 , - 0xe0f65 , - 0xe0f66 , - 0xe0f67 , - 0xe0f68 , - 0xe0f69 , - 0xe0f6a , - 0xe0f6b , - 0xe0f6c , - 0xe0f6d , - 0xe0f6e , - 0xe0f6f , - 0xe0f70 , - 0xe0f71 , - 0xe0f72 , - 0xe0f73 , - 0xe0f74 , - 0xe0f75 , - 0xe0f76 , - 0xe0f77 , - 0xe0f78 , - 0xe0f79 , - 0xe0f7a , - 0xe0f7b , - 0xe0f7c , - 0xe0f7d , - 0xe0f7e , - 0xe0f7f , - 0xe0f80 , - 0xe0f81 , - 0xe0f82 , - 0xe0f83 , - 0xe0f84 , - 0xe0f85 , - 0xe0f86 , - 0xe0f87 , - 0xe0f88 , - 0xe0f89 , - 0xe0f8a , - 0xe0f8b , - 0xe0f8c , - 0xe0f8d , - 0xe0f8e , - 0xe0f8f , - 0xe0f90 , - 0xe0f91 , - 0xe0f92 , - 0xe0f93 , - 0xe0f94 , - 0xe0f95 , - 0xe0f96 , - 0xe0f97 , - 0xe0f98 , - 0xe0f99 , - 0xe0f9a , - 0xe0f9b , - 0xe0f9c , - 0xe0f9d , - 0xe0f9e , - 0xe0f9f , - 0xe0fa0 , - 0xe0fa1 , - 0xe0fa2 , - 0xe0fa3 , - 0xe0fa4 , - 0xe0fa5 , - 0xe0fa6 , - 0xe0fa7 , - 0xe0fa8 , - 0xe0fa9 , - 0xe0faa , - 0xe0fab , - 0xe0fac , - 0xe0fad , - 0xe0fae , - 0xe0faf , - 0xe0fb0 , - 0xe0fb1 , - 0xe0fb2 , - 0xe0fb3 , - 0xe0fb4 , - 0xe0fb5 , - 0xe0fb6 , - 0xe0fb7 , - 0xe0fb8 , - 0xe0fb9 , - 0xe0fba , - 0xe0fbb , - 0xe0fbc , - 0xe0fbd , - 0xe0fbe , - 0xe0fbf , - 0xe0fc0 , - 0xe0fc1 , - 0xe0fc2 , - 0xe0fc3 , - 0xe0fc4 , - 0xe0fc5 , - 0xe0fc6 , - 0xe0fc7 , - 0xe0fc8 , - 0xe0fc9 , - 0xe0fca , - 0xe0fcb , - 0xe0fcc , - 0xe0fcd , - 0xe0fce , - 0xe0fcf , - 0xe0fd0 , - 0xe0fd1 , - 0xe0fd2 , - 0xe0fd3 , - 0xe0fd4 , - 0xe0fd5 , - 0xe0fd6 , - 0xe0fd7 , - 0xe0fd8 , - 0xe0fd9 , - 0xe0fda , - 0xe0fdb , - 0xe0fdc , - 0xe0fdd , - 0xe0fde , - 0xe0fdf , - 0xe0fe0 , - 0xe0fe1 , - 0xe0fe2 , - 0xe0fe3 , - 0xe0fe4 , - 0xe0fe5 , - 0xe0fe6 , - 0xe0fe7 , - 0xe0fe8 , - 0xe0fe9 , - 0xe0fea , - 0xe0feb , - 0xe0fec , - 0xe0fed , - 0xe0fee , - 0xe0fef , - 0xe0ff0 , - 0xe0ff1 , - 0xe0ff2 , - 0xe0ff3 , - 0xe0ff4 , - 0xe0ff5 , - 0xe0ff6 , - 0xe0ff7 , - 0xe0ff8 , - 0xe0ff9 , - 0xe0ffa , - 0xe0ffb , - 0xe0ffc , - 0xe0ffd , - 0xe0ffe , - 0xe0fff }; - -static FcBlanks fcBlanks = { - 4191, - -1, - _fcBlanks -}; - diff --git a/fc-blanks/fcblanks.tmpl.h b/fc-blanks/fcblanks.tmpl.h deleted file mode 100644 index 2bcaa21..0000000 --- a/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/fc-cache/Makefile.in b/fc-cache/Makefile.in index 7865c0d..8f3b88a 100644 --- a/fc-cache/Makefile.in +++ b/fc-cache/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index 0336073..dc93c19 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -49,6 +49,14 @@ #undef STRICT #endif +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef O_BINARY #define O_BINARY 0 #endif @@ -87,34 +95,34 @@ 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 [-EfrsvVh] [-y SYSROOT] [--error-on-no-fonts] [--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 [-EfrsvVh] [-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, _("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"); - fprintf (file, " -y, --sysroot=SYSROOT prepend SYSROOT to all paths for scanning\n"); - fprintf (file, " -v, --verbose display status information while busy\n"); - fprintf (file, " -V, --version display font config version and exit\n"); - fprintf (file, " -h, --help display this help and exit\n"); + 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")); + fprintf (file, _(" -y, --sysroot=SYSROOT prepend SYSROOT to all paths for scanning\n")); + fprintf (file, _(" -v, --verbose display status information while busy\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, " -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"); - fprintf (file, " -y SYSROOT (sysroot) prepend SYSROOT to all paths for scanning\n"); - fprintf (file, " -v (verbose) display status information while busy\n"); - fprintf (file, " -V (version) display font config version and exit\n"); - fprintf (file, " -h (help) display this help and exit\n"); + 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")); + fprintf (file, _(" -y SYSROOT (sysroot) prepend SYSROOT to all paths for scanning\n")); + fprintf (file, _(" -v (verbose) display status information while busy\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); } @@ -151,7 +159,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, if (FcStrSetMember (processed_dirs, dir)) { if (verbose) - printf ("skipping, looped directory detected\n"); + printf (_("skipping, looped directory detected\n")); continue; } @@ -161,7 +169,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, case ENOENT: case ENOTDIR: if (verbose) - printf ("skipping, no such directory\n"); + printf (_("skipping, no such directory\n")); break; default: fprintf (stderr, "\"%s\": ", dir); @@ -174,13 +182,16 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, if (!S_ISDIR (statb.st_mode)) { - fprintf (stderr, "\"%s\": not a directory, skipping\n", dir); + fprintf (stderr, _("\"%s\": not a directory, skipping\n"), dir); continue; } was_processed = FcTrue; if (really_force) + { FcDirCacheUnlink (dir, config); + FcDirCacheCreateUUID ((FcChar8 *) dir, FcTrue, config); + } cache = NULL; was_valid = FcFalse; @@ -196,7 +207,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, cache = FcDirCacheRead (dir, FcTrue, config); if (!cache) { - fprintf (stderr, "%s: error scanning\n", dir); + fprintf (stderr, _("\"%s\": scanning error\n"), dir); ret++; continue; } @@ -205,18 +216,18 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, if (was_valid) { if (verbose) - printf ("skipping, existing cache is valid: %d fonts, %d dirs\n", + printf (_("skipping, existing cache is valid: %d fonts, %d dirs\n"), FcCacheNumFont (cache), FcCacheNumSubdir (cache)); } else { if (verbose) - printf ("caching, new cache contents: %d fonts, %d dirs\n", + printf (_("caching, new cache contents: %d fonts, %d dirs\n"), FcCacheNumFont (cache), FcCacheNumSubdir (cache)); if (!FcDirCacheValid (dir)) { - fprintf (stderr, "%s: failed to write cache\n", dir); + fprintf (stderr, _("%s: failed to write cache\n"), dir); (void) FcDirCacheUnlink (dir, config); ret++; } @@ -225,7 +236,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, subdirs = FcStrSetCreate (); if (!subdirs) { - fprintf (stderr, "%s: Can't create subdir set\n", dir); + fprintf (stderr, _("%s: Can't create subdir set\n"), dir); ret++; FcDirCacheUnload (cache); continue; @@ -239,7 +250,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcStrSetDestroy (subdirs); if (!sublist) { - fprintf (stderr, "%s: Can't create subdir list\n", dir); + fprintf (stderr, _("%s: Can't create subdir list\n"), dir); ret++; continue; } @@ -314,7 +325,7 @@ main (int argc, char **argv) sysroot = FcStrCopy ((const FcChar8 *)optarg); break; case 'V': - fprintf (stderr, "fontconfig version %d.%d.%d\n", + fprintf (stderr, "fontconfig version %d.%d.%d\n", FC_MAJOR, FC_MINOR, FC_REVISION); exit (0); case 'v': @@ -345,7 +356,7 @@ main (int argc, char **argv) } if (!config) { - fprintf (stderr, "%s: Can't init font config library\n", argv[0]); + fprintf (stderr, _("%s: Can't initialize font config library\n"), argv[0]); return 1; } FcConfigSetCurrent (config); @@ -355,7 +366,7 @@ main (int argc, char **argv) dirs = FcStrSetCreate (); if (!dirs) { - fprintf (stderr, "%s: Can't create list of directories\n", + fprintf (stderr, _("%s: Can't create list of directories\n"), argv[0]); return 1; } @@ -363,7 +374,7 @@ main (int argc, char **argv) { if (!FcStrSetAddFilename (dirs, (FcChar8 *) argv[i])) { - fprintf (stderr, "%s: Can't add directory\n", argv[0]); + fprintf (stderr, _("%s: Can't add directory\n"), argv[0]); return 1; } i++; @@ -372,10 +383,10 @@ main (int argc, char **argv) FcStrSetDestroy (dirs); } else - list = FcConfigGetConfigDirs (config); + list = FcConfigGetFontDirs (config); if ((processed_dirs = FcStrSetCreate()) == NULL) { - fprintf(stderr, "Cannot malloc\n"); + fprintf(stderr, _("Out of Memory\n")); return 1; } @@ -407,6 +418,6 @@ main (int argc, char **argv) if (changed) sleep (2); if (verbose) - printf ("%s: %s\n", argv[0], ret ? "failed" : "succeeded"); + printf ("%s: %s\n", argv[0], ret ? _("failed") : _("succeeded")); return ret; } diff --git a/fc-case/Makefile.in b/fc-case/Makefile.in index c2a1984..da345dd 100644 --- a/fc-case/Makefile.in +++ b/fc-case/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -143,10 +143,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ @@ -236,7 +241,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -248,8 +257,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -261,11 +274,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -285,15 +303,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -301,8 +317,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -349,13 +371,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-cat/Makefile.in b/fc-cat/Makefile.in index 0d505e8..35c0502 100644 --- a/fc-cat/Makefile.in +++ b/fc-cat/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c index f0131b6..dfe30d7 100644 --- a/fc-cat/fc-cat.c +++ b/fc-cat/fc-cat.c @@ -41,6 +41,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -148,27 +156,27 @@ usage (char *program, int error) { FILE *file = error ? stderr : stdout; #if HAVE_GETOPT_LONG - fprintf (file, "usage: %s [-rv] [--recurse] [--verbose] [*-%s" FC_CACHE_SUFFIX "|directory]...\n", + fprintf (file, _("usage: %s [-rv] [--recurse] [--verbose] [*-%s" FC_CACHE_SUFFIX "|directory]...\n"), program, FC_ARCHITECTURE); fprintf (file, " %s [-Vh] [--version] [--help]\n", program); #else - fprintf (file, "usage: %s [-rvVh] [*-%s" FC_CACHE_SUFFIX "|directory]...\n", + fprintf (file, _("usage: %s [-rvVh] [*-%s" FC_CACHE_SUFFIX "|directory]...\n"), program, FC_ARCHITECTURE); #endif - fprintf (file, "Reads font information cache from:\n"); - fprintf (file, " 1) specified fontconfig cache file\n"); - fprintf (file, " 2) related to a particular font directory\n"); + fprintf (file, _("Reads font information cache from:\n")); + fprintf (file, _(" 1) specified fontconfig cache file\n")); + fprintf (file, _(" 2) related to a particular font directory\n")); fprintf (file, "\n"); #if HAVE_GETOPT_LONG - fprintf (file, " -r, --recurse recurse into subdirectories\n"); - fprintf (file, " -v, --verbose be verbose\n"); - fprintf (file, " -V, --version display font config version and exit\n"); - fprintf (file, " -h, --help display this help and exit\n"); + fprintf (file, _(" -r, --recurse recurse into subdirectories\n")); + fprintf (file, _(" -v, --verbose be verbose\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, " -r (recurse) recurse into subdirectories\n"); - fprintf (file, " -v (verbose) be verbose\n"); - fprintf (file, " -V (version) display font config version and exit\n"); - fprintf (file, " -h (help) display this help and exit\n"); + fprintf (file, _(" -r (recurse) recurse into subdirectories\n")); + fprintf (file, _(" -v (verbose) be verbose\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); } @@ -294,7 +302,7 @@ main (int argc, char **argv) config = FcInitLoadConfig (); if (!config) { - fprintf (stderr, "%s: Can't init font config library\n", argv[0]); + fprintf (stderr, _("%s: Can't initialize font config library\n"), argv[0]); return 1; } FcConfigSetCurrent (config); @@ -303,7 +311,7 @@ main (int argc, char **argv) args = FcStrSetCreate (); if (!args) { - fprintf (stderr, "%s: malloc failure\n", argv[0]); + fprintf (stderr, _("%s: malloc failure\n"), argv[0]); return 1; } if (i < argc) @@ -312,7 +320,7 @@ main (int argc, char **argv) { if (!FcStrSetAddFilename (args, (const FcChar8 *) argv[i])) { - fprintf (stderr, "%s: malloc failure\n", argv[0]); + fprintf (stderr, _("%s: malloc failure\n"), argv[0]); return 1; } } @@ -324,7 +332,7 @@ main (int argc, char **argv) while ((arg = FcStrListNext (arglist))) if (!FcStrSetAdd (args, arg)) { - fprintf (stderr, "%s: malloc failure\n", argv[0]); + fprintf (stderr, _("%s: malloc failure\n"), argv[0]); return 1; } FcStrListDone (arglist); @@ -332,7 +340,7 @@ main (int argc, char **argv) arglist = FcStrListCreate (args); if (!arglist) { - fprintf (stderr, "%s: malloc failure\n", argv[0]); + fprintf (stderr, _("%s: malloc failure\n"), argv[0]); return 1; } FcStrSetDestroy (args); @@ -342,14 +350,19 @@ main (int argc, char **argv) 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) { - perror ((char *) arg); + if (errno != 0) + perror ((char *) arg); + else + fprintf (stderr, "%s: Unable to load the cache: %s\n", argv[0], arg); ret++; continue; } @@ -367,7 +380,7 @@ main (int argc, char **argv) { if (!first) printf ("\n"); - printf ("Directory: %s\nCache: %s\n--------\n", + printf (_("Directory: %s\nCache: %s\n--------\n"), FcCacheDir(cache), cache_file ? cache_file : arg); first = FcFalse; } diff --git a/fc-conflist/Makefile.am b/fc-conflist/Makefile.am new file mode 100644 index 0000000..6938ca7 --- /dev/null +++ b/fc-conflist/Makefile.am @@ -0,0 +1,60 @@ +# +# fontconfig/fc-conflist/Makefile.am +# +# 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. + +bin_PROGRAMS=fc-conflist + +DOC2MAN = docbook2man + +FC_VALIDATE_SRC=${top_srcdir}/fc-conflist + +SGML = ${FC_VALIDATE_SRC}/fc-conflist.sgml + +AM_CPPFLAGS=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) + +BUILT_MANS=fc-conflist.1 + +if ENABLE_DOCS +man_MANS=${BUILT_MANS} +endif + +EXTRA_DIST=fc-conflist.sgml $(BUILT_MANS) + +CLEANFILES = + +fc_conflist_LDADD = ${top_builddir}/src/libfontconfig.la $(FREETYPE_LIBS) + +if USEDOCBOOK + +${man_MANS}: ${SGML} + $(AM_V_GEN) $(RM) $@; \ + $(DOC2MAN) ${SGML}; \ + $(RM) manpage.* + +all-local: $(man_MANS) + +CLEANFILES += $(man_MANS) +else +all-local: +endif + +-include $(top_srcdir)/git.mk diff --git a/fc-glyphname/Makefile.in b/fc-conflist/Makefile.in similarity index 53% rename from fc-glyphname/Makefile.in rename to fc-conflist/Makefile.in index 0df1c18..2087171 100644 --- a/fc-glyphname/Makefile.in +++ b/fc-conflist/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,55 +14,28 @@ @SET_MAKE@ -# -*- encoding: utf-8 -*- # -# Copyright © 2003 Keith Packard -# Copyright © 2013 Google, Inc. +# fontconfig/fc-conflist/Makefile.am # -# 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. +# Copyright © 2003 Keith Packard # -# 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. +# 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. # -# Google Author(s): Behdad Esfahbod - -# -*- encoding: utf-8 -*- -# -# Copyright © 2003 Keith Packard -# Copyright © 2013 Google, Inc. -# -# 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. -# -# Google Author(s): Behdad Esfahbod +# 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. VPATH = @srcdir@ am__is_gnu_make = { \ @@ -138,23 +111,40 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = fc-glyphname +bin_PROGRAMS = fc-conflist$(EXEEXT) +@USEDOCBOOK_TRUE@am__append_1 = $(man_MANS) +subdir = fc-conflist ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ - $(am__DIST_COMMON) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" +PROGRAMS = $(bin_PROGRAMS) +fc_conflist_SOURCES = fc-conflist.c +fc_conflist_OBJECTS = fc-conflist.$(OBJEXT) +am__DEPENDENCIES_1 = +fc_conflist_DEPENDENCIES = ${top_builddir}/src/libfontconfig.la \ + $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -167,14 +157,65 @@ AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = -SOURCES = -DIST_SOURCES = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = fc-conflist.c +DIST_SOURCES = fc-conflist.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -HEADERS = $(noinst_HEADERS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is @@ -194,7 +235,7 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Tools.mk +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -236,7 +277,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -248,8 +293,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -261,11 +310,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -285,15 +339,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -301,8 +353,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -349,13 +407,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -364,37 +418,20 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -TAG = glyphname -DEPS = $(srcdir)/zapfdingbats.txt -ARGS = $(srcdir)/zapfdingbats.txt -DIST = $(srcdir)/zapfdingbats.txt -DIR = fc-$(TAG) -OUT = fc$(TAG) -TMPL = $(OUT).tmpl.h -TARG = $(OUT).h -TSRC = $(DIR).c -TOOL = ./$(DIR)$(EXEEXT_FOR_BUILD) -EXTRA_DIST = $(TARG) $(TMPL) $(TSRC) $(DIST) -AM_CPPFLAGS = \ - -I$(builddir) \ - -I$(srcdir) \ - -I$(top_builddir)/src \ - -I$(top_srcdir)/src \ - -I$(top_builddir) \ - -I$(top_srcdir) \ - -DHAVE_CONFIG_H \ - $(WARN_CFLAGS) - -noinst_HEADERS = $(TARG) -ALIAS_FILES = fcalias.h fcaliastail.h -BUILT_SOURCES = $(ALIAS_FILES) -CLEANFILES = $(ALIAS_FILES) $(TOOL) -MAINTAINERCLEANFILES = $(TARG) -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am +DOC2MAN = docbook2man +FC_VALIDATE_SRC = ${top_srcdir}/fc-conflist +SGML = ${FC_VALIDATE_SRC}/fc-conflist.sgml +AM_CPPFLAGS = -I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) +BUILT_MANS = fc-conflist.1 +@ENABLE_DOCS_TRUE@man_MANS = ${BUILT_MANS} +EXTRA_DIST = fc-conflist.sgml $(BUILT_MANS) +CLEANFILES = $(am__append_1) +fc_conflist_LDADD = ${top_builddir}/src/libfontconfig.la $(FREETYPE_LIBS) +all: all-am .SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/Tools.mk $(am__configure_deps) +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -403,9 +440,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/Tools.mk $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fc-glyphname/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fc-conflist/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu fc-glyphname/Makefile + $(AUTOMAKE) --gnu fc-conflist/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -414,7 +451,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/Tools.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -424,12 +460,137 @@ $(top_srcdir)/configure: $(am__configure_deps) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +fc-conflist$(EXEEXT): $(fc_conflist_OBJECTS) $(fc_conflist_DEPENDENCIES) $(EXTRA_fc_conflist_DEPENDENCIES) + @rm -f fc-conflist$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fc_conflist_OBJECTS) $(fc_conflist_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fc-conflist.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique @@ -514,12 +675,13 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(HEADERS) +check: check-am +all-am: Makefile $(PROGRAMS) $(MANS) all-local installdirs: -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -550,15 +712,15 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am -clean-am: clean-generic clean-libtool mostlyclean-am +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am + -rm -rf ./$(DEPDIR) -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags dvi: dvi-am @@ -572,13 +734,13 @@ info: info-am info-am: -install-data-am: +install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: -install-exec-am: +install-exec-am: install-binPROGRAMS install-html: install-html-am @@ -588,7 +750,7 @@ install-info: install-info-am install-info-am: -install-man: +install-man: install-man1 install-pdf: install-pdf-am @@ -601,12 +763,14 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am -mostlyclean-am: mostlyclean-generic mostlyclean-libtool +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf: pdf-am @@ -616,37 +780,37 @@ ps: ps-am ps-am: -uninstall-am: +uninstall-am: uninstall-binPROGRAMS uninstall-man -.MAKE: all check install install-am install-strip +uninstall-man: uninstall-man1 -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am + install-info install-info-am install-man install-man1 \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-man uninstall-man1 .PRECIOUS: Makefile -$(TOOL): $(TSRC) $(ALIAS_FILES) - $(AM_V_GEN) $(CC_FOR_BUILD) -o $(TOOL) $< $(AM_CPPFLAGS) - -$(TARG): $(TMPL) $(TSRC) $(DEPS) - $(AM_V_GEN) $(MAKE) $(TOOL) && \ - $(RM) $(TARG) && \ - $(TOOL) $(ARGS) < $< > $(TARG).tmp && \ - mv $(TARG).tmp $(TARG) || ( $(RM) $(TARG).tmp && false ) +@USEDOCBOOK_TRUE@${man_MANS}: ${SGML} +@USEDOCBOOK_TRUE@ $(AM_V_GEN) $(RM) $@; \ +@USEDOCBOOK_TRUE@ $(DOC2MAN) ${SGML}; \ +@USEDOCBOOK_TRUE@ $(RM) manpage.* -$(ALIAS_FILES): - $(AM_V_GEN) touch $@ +@USEDOCBOOK_TRUE@all-local: $(man_MANS) +@USEDOCBOOK_FALSE@all-local: -include $(top_srcdir)/git.mk diff --git a/fc-conflist/fc-conflist.1 b/fc-conflist/fc-conflist.1 new file mode 100644 index 0000000..4657b4a --- /dev/null +++ b/fc-conflist/fc-conflist.1 @@ -0,0 +1,31 @@ +.\" auto-generated by docbook2man-spec from docbook-utils package +.TH "FC-CONFLIST" "1" "Apr 1, 2014" "" "" +.SH NAME +fc-conflist \- Show the ruleset files information on the system +.SH SYNOPSIS +.sp +\fBfc-conflist\fR [ \fB-Vh\fR ] + + [ \fB--version\fR ] [ \fB--help\fR ] +.SH "DESCRIPTION" +.PP +\fBfc-conflist\fR shows the ruleset files' information +being installed on the system. +.SH "OPTIONS" +.PP +This program follows the usual GNU command line syntax, +with long options starting with two dashes (`-'). A summary of +options is included below. +.TP +\fB-V\fR +Show version of the program and exit. +.TP +\fB-h\fR +Show summary of options. +.SH "RETURN CODES" +.PP +\fBfc-conflist\fR returns error code 0 for successful parsing, +or 1 if any errors occured or if at least one font face could not be opened. +.SH "AUTHOR" +.PP +This manual page was updated by Akira TAGOH \&. diff --git a/fc-conflist/fc-conflist.c b/fc-conflist/fc-conflist.c new file mode 100644 index 0000000..d02273b --- /dev/null +++ b/fc-conflist/fc-conflist.c @@ -0,0 +1,142 @@ +/* + * fontconfig/fc-conflist/fc-conflist.c + * + * Copyright © 2003 Keith Packard + * Copyright © 2014 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. + */ + +#ifdef HAVE_CONFIG_H +#include +#else +#ifdef linux +#define HAVE_GETOPT_LONG 1 +#endif +#define HAVE_GETOPT 1 +#endif + +#include +#include +#include +#include +#include + +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + +#ifndef HAVE_GETOPT +#define HAVE_GETOPT 0 +#endif +#ifndef HAVE_GETOPT_LONG +#define HAVE_GETOPT_LONG 0 +#endif + +#if HAVE_GETOPT_LONG +#undef _GNU_SOURCE +#define _GNU_SOURCE +#include +static const struct option longopts[] = { + {"version", 0, 0, 'V'}, + {"help", 0, 0, 'h'}, + {NULL,0,0,0}, +}; +#else +#if HAVE_GETOPT +extern char *optarg; +extern int optind, opterr, optopt; +#endif +#endif + +static void +usage (char *program, int error) +{ + FILE *file = error ? stderr : stdout; +#if HAVE_GETOPT_LONG + fprintf (file, _("usage: %s [-Vh] [--version] [--help]\n"), + program); +#else + fprintf (file, _("usage: %s [-Vh]\n"), + program); +#endif + fprintf (file, _("Show the ruleset files information on the system\n")); + fprintf (file, "\n"); +#if HAVE_GETOPT_LONG + fprintf (file, _(" -V, --version display font config version and exit\n")); + fprintf (file, _(" -h, --help display this help and exit\n")); +#else + fprintf (file, _(" -V (version) display font config version and exit\n")); + fprintf (file, _(" -h (help) display this help and exit\n")); +#endif + exit (error); +} + +int +main (int argc, char **argv) +{ + FcConfig *config; + FcConfigFileInfoIter iter; + +#if HAVE_GETOPT_LONG || HAVE_GETOPT + int c; + +#if HAVE_GETOPT_LONG + while ((c = getopt_long (argc, argv, "Vh", longopts, NULL)) != -1) +#else + while ((c = getopt (argc, argv, "Vh")) != -1) +#endif + { + switch (c) { + case 'V': + fprintf (stderr, "fontconfig version %d.%d.%d\n", + FC_MAJOR, FC_MINOR, FC_REVISION); + exit (0); + case 'h': + usage (argv[0], 0); + default: + usage (argv[0], 1); + } + } +#endif + + config = FcConfigGetCurrent (); + FcConfigFileInfoIterInit (config, &iter); + do + { + FcChar8 *name, *desc; + FcBool enabled; + + if (FcConfigFileInfoIterGet (config, &iter, &name, &desc, &enabled)) + { + printf ("%c %s: %s\n", enabled ? '+' : '-', name, desc); + FcStrFree (name); + FcStrFree (desc); + } + } while (FcConfigFileInfoIterNext (config, &iter)); + + FcFini (); + + return 0; +} diff --git a/fc-conflist/fc-conflist.sgml b/fc-conflist/fc-conflist.sgml new file mode 100644 index 0000000..a82dd1c --- /dev/null +++ b/fc-conflist/fc-conflist.sgml @@ -0,0 +1,135 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + Akira"> + TAGOH"> + + Apr 1, 2014"> + + 1"> + akira@tagoh.org"> + + fc-conflist"> + + + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2014 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + Show the ruleset files information on the system + + + + &dhpackage; + + + + + + + + + + DESCRIPTION + + &dhpackage; shows the ruleset files' information + being installed on the system. + + + + OPTIONS + + This program follows the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. + + + + + + + + Show version of the program and exit. + + + + + + + + Show summary of options. + + + + + + + RETURN CODES + fc-conflist returns error code 0 for successful parsing, + or 1 if any errors occured or if at least one font face could not be opened. + + + + AUTHOR + + This manual page was updated by &dhusername; &dhemail;. + + +
+ + diff --git a/fc-glyphname/Makefile.am b/fc-glyphname/Makefile.am deleted file mode 100644 index 1272567..0000000 --- a/fc-glyphname/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Copyright © 2003 Keith Packard -# Copyright © 2013 Google, Inc. -# -# 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. -# -# Google Author(s): Behdad Esfahbod - -TAG = glyphname -DEPS = $(srcdir)/zapfdingbats.txt -ARGS = $(srcdir)/zapfdingbats.txt -DIST = $(srcdir)/zapfdingbats.txt - -include $(top_srcdir)/Tools.mk - --include $(top_srcdir)/git.mk diff --git a/fc-glyphname/fc-glyphname.c b/fc-glyphname/fc-glyphname.c deleted file mode 100644 index 078490a..0000000 --- a/fc-glyphname/fc-glyphname.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - * fontconfig/fc-glyphname/fc-glyphname.c - * - * 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. - */ - -#include "fcint.h" - -static int -rawindex (const FcGlyphName *gn); - -static void -scan (FILE *f, char *filename); - -static int -isprime (int i); - -static void -find_hash (void); - -static FcChar32 -FcHashGlyphName (const FcChar8 *name); - -static void -insert (FcGlyphName *gn, FcGlyphName **table, FcChar32 h); - -static void -dump (FcGlyphName * const *table, const char *name); - -static FcGlyphName * -FcAllocGlyphName (FcChar32 ucs, FcChar8 *name) -{ - FcGlyphName *gn; - - gn = malloc (sizeof (FcGlyphName) + strlen ((char *) name)); - if (!gn) - return 0; - gn->ucs = ucs; - strcpy ((char *) gn->name, (char *) name); - return gn; -} - -static void -fatal (const char *file, int lineno, const char *msg) -{ - if (lineno) - fprintf (stderr, "%s:%d: %s\n", file, lineno, msg); - else - fprintf (stderr, "%s: %s\n", file, msg); - - exit (1); -} - -#define MAX_GLYPHFILE 256 -#define MAX_GLYPHNAME 10240 -#define MAX_NAMELEN 1024 - -static FcGlyphName *raw[MAX_GLYPHNAME]; -static int nraw; -static int max_name_len; -static FcGlyphName *name_to_ucs[MAX_GLYPHNAME*2]; -static FcGlyphName *ucs_to_name[MAX_GLYPHNAME*2]; -static unsigned int hash, rehash; - -static int -rawindex (const FcGlyphName *gn) -{ - int i; - - for (i = 0; i < nraw; i++) - if (raw[i] == gn) - return i; - return -1; -} - -static void -scan (FILE *f, char *filename) -{ - char buf[MAX_NAMELEN]; - char name[MAX_NAMELEN]; - unsigned long ucs; - FcGlyphName *gn; - int lineno = 0; - int len; - - while (fgets (buf, sizeof (buf), f)) - { - lineno++; - if (sscanf (buf, "%[^;];%lx\n", name, &ucs) != 2) - continue; - gn = FcAllocGlyphName ((FcChar32) ucs, (FcChar8 *) name); - if (!gn) - fatal (filename, lineno, "out of memory"); - len = strlen (name); - if (len > max_name_len) - max_name_len = len; - raw[nraw++] = gn; - } -} - -static int compare_string (const void *a, const void *b) -{ - const char *const *as = a, *const *bs = b; - return strcmp (*as, *bs); -} - -static int compare_glyphname (const void *a, const void *b) -{ - const FcGlyphName *const *ag = a, *const *bg = b; - - return strcmp ((char *) (*ag)->name, (char *) (*bg)->name); -} - -static int -isqrt (int a) -{ - int l, h, m; - - l = 2; - h = a/2; - while ((h-l) > 1) - { - m = (h+l) >> 1; - if (m * m < a) - l = m; - else - h = m; - } - return h; -} - -static int -isprime (int i) -{ - int l, t; - - if (i < 2) - return FcFalse; - if ((i & 1) == 0) - { - if (i == 2) - return FcTrue; - return FcFalse; - } - l = isqrt (i) + 1; - for (t = 3; t <= l; t += 2) - if (i % t == 0) - return 0; - return 1; -} - -/* - * Find a prime pair that leaves at least 25% of the hash table empty - */ - -static void -find_hash (void) -{ - int h; - - h = nraw + nraw / 4; - if ((h & 1) == 0) - h++; - while (!isprime(h-2) || !isprime(h)) - h += 2; - hash = h; - rehash = h-2; -} - -static FcChar32 -FcHashGlyphName (const FcChar8 *name) -{ - FcChar32 h = 0; - FcChar8 c; - - while ((c = *name++)) - { - h = ((h << 1) | (h >> 31)) ^ c; - } - return h; -} - -static void -insert (FcGlyphName *gn, FcGlyphName **table, FcChar32 h) -{ - unsigned int i, r = 0; - - i = (int) (h % hash); - while (table[i]) - { - if (!r) r = (h % rehash + 1); - i += r; - if (i >= hash) - i -= hash; - } - table[i] = gn; -} - -static void -dump (FcGlyphName * const *table, const char *name) -{ - unsigned int i; - - printf ("static const FcGlyphId %s[%d] = {\n", name, hash); - - for (i = 0; i < hash; i++) - if (table[i]) - printf (" %d,\n", rawindex(table[i])); - else - printf (" -1,\n"); - - printf ("};\n"); -} - -int -main (int argc FC_UNUSED, char **argv) -{ - char *files[MAX_GLYPHFILE + 1]; - char line[1024]; - FILE *f; - int i; - const char *type; - - i = 0; - while (argv[i+1]) - { - if (i == MAX_GLYPHFILE) - fatal (*argv, 0, "Too many glyphname files"); - files[i] = argv[i+1]; - i++; - } - files[i] = 0; - qsort (files, i, sizeof (char *), compare_string); - for (i = 0; files[i]; i++) - { - f = fopen (files[i], "r"); - if (!f) - fatal (files[i], 0, strerror (errno)); - scan (f, files[i]); - fclose (f); - } - qsort (raw, nraw, sizeof (FcGlyphName *), compare_glyphname); - - find_hash (); - - for (i = 0; i < nraw; i++) - { - insert (raw[i], name_to_ucs, FcHashGlyphName (raw[i]->name)); - insert (raw[i], ucs_to_name, raw[i]->ucs); - } - - /* - * Scan the input until the marker is found - */ - - while (fgets (line, sizeof (line), stdin)) - { - if (!strncmp (line, "@@@", 3)) - break; - fputs (line, stdout); - } - - printf ("/* %d glyphnames in %d entries, %d%% occupancy */\n\n", - nraw, hash, nraw * 100 / hash); - - printf ("#define FC_GLYPHNAME_HASH %u\n", hash); - printf ("#define FC_GLYPHNAME_REHASH %u\n", rehash); - printf ("#define FC_GLYPHNAME_MAXLEN %d\n\n", max_name_len); - if (nraw < 128) - type = "int8_t"; - else if (nraw < 32768) - type = "int16_t"; - else - type = "int32_t"; - - printf ("typedef %s FcGlyphId;\n\n", type); - - /* - * Dump out entries - */ - - printf ("static const struct { const FcChar32 ucs; const FcChar8 name[%d]; } _fc_glyph_names[%d] = {\n", - max_name_len + 1, nraw); - - for (i = 0; i < nraw; i++) - printf (" { 0x%lx, \"%s\" },\n", - (unsigned long) raw[i]->ucs, raw[i]->name); - - printf ("};\n"); - - /* - * Dump out name_to_ucs table - */ - - dump (name_to_ucs, "_fc_name_to_ucs"); - - /* - * Dump out ucs_to_name table - */ - dump (ucs_to_name, "_fc_ucs_to_name"); - - while (fgets (line, sizeof (line), stdin)) - fputs (line, stdout); - - fflush (stdout); - exit (ferror (stdout)); -} diff --git a/fc-glyphname/fcglyphname.h b/fc-glyphname/fcglyphname.h deleted file mode 100644 index f9e5343..0000000 --- a/fc-glyphname/fcglyphname.h +++ /dev/null @@ -1,781 +0,0 @@ -/* - * fontconfig/fc-glyphname/fcglyphname.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. - */ - -/* 201 glyphnames in 271 entries, 74% occupancy */ - -#define FC_GLYPHNAME_HASH 271 -#define FC_GLYPHNAME_REHASH 269 -#define FC_GLYPHNAME_MAXLEN 4 - -typedef int16_t FcGlyphId; - -static const struct { const FcChar32 ucs; const FcChar8 name[5]; } _fc_glyph_names[201] = { - { 0x2701, "a1" }, - { 0x2721, "a10" }, - { 0x275e, "a100" }, - { 0x2761, "a101" }, - { 0x2762, "a102" }, - { 0x2763, "a103" }, - { 0x2764, "a104" }, - { 0x2710, "a105" }, - { 0x2765, "a106" }, - { 0x2766, "a107" }, - { 0x2767, "a108" }, - { 0x2660, "a109" }, - { 0x261b, "a11" }, - { 0x2665, "a110" }, - { 0x2666, "a111" }, - { 0x2663, "a112" }, - { 0x2709, "a117" }, - { 0x2708, "a118" }, - { 0x2707, "a119" }, - { 0x261e, "a12" }, - { 0x2460, "a120" }, - { 0x2461, "a121" }, - { 0x2462, "a122" }, - { 0x2463, "a123" }, - { 0x2464, "a124" }, - { 0x2465, "a125" }, - { 0x2466, "a126" }, - { 0x2467, "a127" }, - { 0x2468, "a128" }, - { 0x2469, "a129" }, - { 0x270c, "a13" }, - { 0x2776, "a130" }, - { 0x2777, "a131" }, - { 0x2778, "a132" }, - { 0x2779, "a133" }, - { 0x277a, "a134" }, - { 0x277b, "a135" }, - { 0x277c, "a136" }, - { 0x277d, "a137" }, - { 0x277e, "a138" }, - { 0x277f, "a139" }, - { 0x270d, "a14" }, - { 0x2780, "a140" }, - { 0x2781, "a141" }, - { 0x2782, "a142" }, - { 0x2783, "a143" }, - { 0x2784, "a144" }, - { 0x2785, "a145" }, - { 0x2786, "a146" }, - { 0x2787, "a147" }, - { 0x2788, "a148" }, - { 0x2789, "a149" }, - { 0x270e, "a15" }, - { 0x278a, "a150" }, - { 0x278b, "a151" }, - { 0x278c, "a152" }, - { 0x278d, "a153" }, - { 0x278e, "a154" }, - { 0x278f, "a155" }, - { 0x2790, "a156" }, - { 0x2791, "a157" }, - { 0x2792, "a158" }, - { 0x2793, "a159" }, - { 0x270f, "a16" }, - { 0x2794, "a160" }, - { 0x2192, "a161" }, - { 0x27a3, "a162" }, - { 0x2194, "a163" }, - { 0x2195, "a164" }, - { 0x2799, "a165" }, - { 0x279b, "a166" }, - { 0x279c, "a167" }, - { 0x279d, "a168" }, - { 0x279e, "a169" }, - { 0x2711, "a17" }, - { 0x279f, "a170" }, - { 0x27a0, "a171" }, - { 0x27a1, "a172" }, - { 0x27a2, "a173" }, - { 0x27a4, "a174" }, - { 0x27a5, "a175" }, - { 0x27a6, "a176" }, - { 0x27a7, "a177" }, - { 0x27a8, "a178" }, - { 0x27a9, "a179" }, - { 0x2712, "a18" }, - { 0x27ab, "a180" }, - { 0x27ad, "a181" }, - { 0x27af, "a182" }, - { 0x27b2, "a183" }, - { 0x27b3, "a184" }, - { 0x27b5, "a185" }, - { 0x27b8, "a186" }, - { 0x27ba, "a187" }, - { 0x27bb, "a188" }, - { 0x27bc, "a189" }, - { 0x2713, "a19" }, - { 0x27bd, "a190" }, - { 0x27be, "a191" }, - { 0x279a, "a192" }, - { 0x27aa, "a193" }, - { 0x27b6, "a194" }, - { 0x27b9, "a195" }, - { 0x2798, "a196" }, - { 0x27b4, "a197" }, - { 0x27b7, "a198" }, - { 0x27ac, "a199" }, - { 0x2702, "a2" }, - { 0x2714, "a20" }, - { 0x27ae, "a200" }, - { 0x27b1, "a201" }, - { 0x2703, "a202" }, - { 0x2750, "a203" }, - { 0x2752, "a204" }, - { 0x276e, "a205" }, - { 0x2770, "a206" }, - { 0x2715, "a21" }, - { 0x2716, "a22" }, - { 0x2717, "a23" }, - { 0x2718, "a24" }, - { 0x2719, "a25" }, - { 0x271a, "a26" }, - { 0x271b, "a27" }, - { 0x271c, "a28" }, - { 0x2722, "a29" }, - { 0x2704, "a3" }, - { 0x2723, "a30" }, - { 0x2724, "a31" }, - { 0x2725, "a32" }, - { 0x2726, "a33" }, - { 0x2727, "a34" }, - { 0x2605, "a35" }, - { 0x2729, "a36" }, - { 0x272a, "a37" }, - { 0x272b, "a38" }, - { 0x272c, "a39" }, - { 0x260e, "a4" }, - { 0x272d, "a40" }, - { 0x272e, "a41" }, - { 0x272f, "a42" }, - { 0x2730, "a43" }, - { 0x2731, "a44" }, - { 0x2732, "a45" }, - { 0x2733, "a46" }, - { 0x2734, "a47" }, - { 0x2735, "a48" }, - { 0x2736, "a49" }, - { 0x2706, "a5" }, - { 0x2737, "a50" }, - { 0x2738, "a51" }, - { 0x2739, "a52" }, - { 0x273a, "a53" }, - { 0x273b, "a54" }, - { 0x273c, "a55" }, - { 0x273d, "a56" }, - { 0x273e, "a57" }, - { 0x273f, "a58" }, - { 0x2740, "a59" }, - { 0x271d, "a6" }, - { 0x2741, "a60" }, - { 0x2742, "a61" }, - { 0x2743, "a62" }, - { 0x2744, "a63" }, - { 0x2745, "a64" }, - { 0x2746, "a65" }, - { 0x2747, "a66" }, - { 0x2748, "a67" }, - { 0x2749, "a68" }, - { 0x274a, "a69" }, - { 0x271e, "a7" }, - { 0x274b, "a70" }, - { 0x25cf, "a71" }, - { 0x274d, "a72" }, - { 0x25a0, "a73" }, - { 0x274f, "a74" }, - { 0x2751, "a75" }, - { 0x25b2, "a76" }, - { 0x25bc, "a77" }, - { 0x25c6, "a78" }, - { 0x2756, "a79" }, - { 0x271f, "a8" }, - { 0x25d7, "a81" }, - { 0x2758, "a82" }, - { 0x2759, "a83" }, - { 0x275a, "a84" }, - { 0x276f, "a85" }, - { 0x2771, "a86" }, - { 0x2772, "a87" }, - { 0x2773, "a88" }, - { 0x2768, "a89" }, - { 0x2720, "a9" }, - { 0x2769, "a90" }, - { 0x276c, "a91" }, - { 0x276d, "a92" }, - { 0x276a, "a93" }, - { 0x276b, "a94" }, - { 0x2774, "a95" }, - { 0x2775, "a96" }, - { 0x275b, "a97" }, - { 0x275c, "a98" }, - { 0x275d, "a99" }, -}; -static const FcGlyphId _fc_name_to_ucs[271] = { - 123, - 81, - 198, - 154, - 142, - 186, - 82, - -1, - 143, - 172, - 181, - 79, - 153, - 191, - -1, - -1, - 80, - 195, - 179, - 170, - 151, - 129, - 101, - 194, - 85, - 102, - 73, - 171, - 99, - -1, - -1, - 100, - 196, - -1, - 189, - 163, - 110, - 199, - -1, - -1, - 59, - 50, - -1, - 60, - 75, - -1, - 51, - -1, - -1, - 58, - -1, - 61, - 55, - -1, - 192, - 56, - 62, - -1, - 53, - 166, - 113, - 54, - -1, - 157, - 33, - 188, - 177, - 21, - -1, - -1, - 31, - -1, - -1, - 32, - -1, - -1, - 24, - 160, - -1, - 38, - -1, - -1, - 26, - -1, - 161, - 27, - 197, - 94, - 95, - 105, - 106, - 90, - 91, - 92, - 93, - 86, - 87, - 88, - 89, - 28, - 29, - 39, - 40, - 10, - 11, - 17, - 18, - 6, - 7, - 8, - 9, - 2, - 3, - 4, - 5, - -1, - -1, - 114, - 108, - 146, - 74, - -1, - 117, - 115, - 118, - 156, - 119, - -1, - 120, - -1, - 121, - 131, - 122, - -1, - 109, - -1, - 124, - 141, - 134, - 174, - 144, - -1, - 137, - 155, - 138, - -1, - 64, - -1, - 140, - 152, - 65, - -1, - 111, - -1, - 57, - 162, - -1, - -1, - 67, - -1, - -1, - 150, - 68, - -1, - 167, - -1, - 69, - 164, - -1, - 116, - 70, - -1, - -1, - 148, - 71, - -1, - -1, - 184, - 72, - 149, - 176, - 193, - 34, - 182, - 145, - -1, - 83, - 187, - -1, - 103, - 84, - 104, - 200, - 63, - 37, - 41, - 52, - 19, - 30, - 1, - 12, - 97, - 35, - 98, - 135, - 46, - 36, - 47, - 96, - 48, - 159, - 49, - -1, - 42, - 112, - 43, - 173, - 44, - 168, - 45, - -1, - 20, - 183, - 16, - 147, - 22, - 178, - 23, - -1, - 15, - -1, - 25, - 190, - 13, - 139, - 14, - -1, - -1, - -1, - 128, - 107, - 125, - -1, - 0, - 158, - 169, - 136, - 126, - -1, - -1, - 180, - 127, - 77, - -1, - -1, - 132, - -1, - 78, - -1, - 133, - -1, - 165, - 66, - 130, - -1, - -1, - -1, - 76, - -1, - 185, - 175, -}; -static const FcGlyphId _fc_ucs_to_name[271] = { - 56, - 135, - 19, - 138, - 58, - 140, - 59, - 142, - 60, - 144, - 61, - 146, - 62, - 149, - 64, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 159, - 160, - 161, - 162, - 163, - 131, - 165, - 166, - 167, - 168, - 170, - -1, - 172, - -1, - 174, - 112, - 175, - 113, - -1, - 173, - -1, - 179, - -1, - 182, - 183, - 158, - 198, - 199, - 200, - 2, - -1, - -1, - 3, - 4, - 5, - 6, - 8, - 9, - 10, - 189, - 164, - 194, - 195, - 192, - 193, - 114, - 11, - 115, - 186, - 15, - 188, - 13, - 14, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 53, - 54, - 55, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - -1, - 103, - 69, - 99, - 70, - 71, - 72, - 73, - 75, - 76, - 77, - 78, - 66, - 79, - 80, - 81, - 82, - 83, - 84, - 100, - 86, - 106, - 87, - 109, - 88, - -1, - 110, - 89, - 90, - 104, - 91, - 101, - 105, - 92, - 102, - 93, - 94, - 95, - 97, - 98, - 196, - -1, - 134, - -1, - -1, - -1, - -1, - -1, - 137, - -1, - -1, - -1, - -1, - -1, - 139, - -1, - -1, - 176, - -1, - -1, - 141, - 184, - -1, - -1, - -1, - -1, - 143, - 177, - 57, - -1, - -1, - -1, - 145, - -1, - -1, - -1, - -1, - 178, - 148, - -1, - -1, - -1, - -1, - -1, - 150, - 65, - 171, - 67, - 68, - -1, - -1, - 191, - -1, - -1, - 181, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 185, - -1, - -1, - -1, - -1, - -1, - 187, - -1, - -1, - -1, - 133, - -1, - 197, - -1, - -1, - -1, - -1, - -1, - 0, - 107, - 111, - 125, - -1, - 147, - 18, - 17, - 16, - -1, - -1, - 30, - 41, - 52, - 63, - 7, - 74, - 85, - 96, - 108, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 136, - 169, - 180, - 190, - 1, - 124, - 126, - 127, - 128, - 129, - 130, - -1, - 132, - 12, -}; diff --git a/fc-glyphname/fcglyphname.tmpl.h b/fc-glyphname/fcglyphname.tmpl.h deleted file mode 100644 index d4f8a95..0000000 --- a/fc-glyphname/fcglyphname.tmpl.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * fontconfig/fc-glyphname/fcglyphname.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/fc-glyphname/zapfdingbats.txt b/fc-glyphname/zapfdingbats.txt deleted file mode 100644 index bcad2e2..0000000 --- a/fc-glyphname/zapfdingbats.txt +++ /dev/null @@ -1,212 +0,0 @@ -# Name: ITC Zapf Dingbats Glyph List -# Table version: 2.0 -# Date: September 20, 2002 -# -# See http://partners.adobe.com/asn/developer/typeforum/unicodegn.html -# -# Format: Semicolon-delimited fields: -# (1) glyph name -# (2) Unicode scalar value -# -a100;275E -a101;2761 -a102;2762 -a103;2763 -a104;2764 -a105;2710 -a106;2765 -a107;2766 -a108;2767 -a109;2660 -a10;2721 -a110;2665 -a111;2666 -a112;2663 -a117;2709 -a118;2708 -a119;2707 -a11;261B -a120;2460 -a121;2461 -a122;2462 -a123;2463 -a124;2464 -a125;2465 -a126;2466 -a127;2467 -a128;2468 -a129;2469 -a12;261E -a130;2776 -a131;2777 -a132;2778 -a133;2779 -a134;277A -a135;277B -a136;277C -a137;277D -a138;277E -a139;277F -a13;270C -a140;2780 -a141;2781 -a142;2782 -a143;2783 -a144;2784 -a145;2785 -a146;2786 -a147;2787 -a148;2788 -a149;2789 -a14;270D -a150;278A -a151;278B -a152;278C -a153;278D -a154;278E -a155;278F -a156;2790 -a157;2791 -a158;2792 -a159;2793 -a15;270E -a160;2794 -a161;2192 -a162;27A3 -a163;2194 -a164;2195 -a165;2799 -a166;279B -a167;279C -a168;279D -a169;279E -a16;270F -a170;279F -a171;27A0 -a172;27A1 -a173;27A2 -a174;27A4 -a175;27A5 -a176;27A6 -a177;27A7 -a178;27A8 -a179;27A9 -a17;2711 -a180;27AB -a181;27AD -a182;27AF -a183;27B2 -a184;27B3 -a185;27B5 -a186;27B8 -a187;27BA -a188;27BB -a189;27BC -a18;2712 -a190;27BD -a191;27BE -a192;279A -a193;27AA -a194;27B6 -a195;27B9 -a196;2798 -a197;27B4 -a198;27B7 -a199;27AC -a19;2713 -a1;2701 -a200;27AE -a201;27B1 -a202;2703 -a203;2750 -a204;2752 -a205;276E -a206;2770 -a20;2714 -a21;2715 -a22;2716 -a23;2717 -a24;2718 -a25;2719 -a26;271A -a27;271B -a28;271C -a29;2722 -a2;2702 -a30;2723 -a31;2724 -a32;2725 -a33;2726 -a34;2727 -a35;2605 -a36;2729 -a37;272A -a38;272B -a39;272C -a3;2704 -a40;272D -a41;272E -a42;272F -a43;2730 -a44;2731 -a45;2732 -a46;2733 -a47;2734 -a48;2735 -a49;2736 -a4;260E -a50;2737 -a51;2738 -a52;2739 -a53;273A -a54;273B -a55;273C -a56;273D -a57;273E -a58;273F -a59;2740 -a5;2706 -a60;2741 -a61;2742 -a62;2743 -a63;2744 -a64;2745 -a65;2746 -a66;2747 -a67;2748 -a68;2749 -a69;274A -a6;271D -a70;274B -a71;25CF -a72;274D -a73;25A0 -a74;274F -a75;2751 -a76;25B2 -a77;25BC -a78;25C6 -a79;2756 -a7;271E -a81;25D7 -a82;2758 -a83;2759 -a84;275A -a85;276F -a86;2771 -a87;2772 -a88;2773 -a89;2768 -a8;271F -a90;2769 -a91;276C -a92;276D -a93;276A -a94;276B -a95;2774 -a96;2775 -a97;275B -a98;275C -a99;275D -a9;2720 -#-- end diff --git a/fc-lang/Makefile.am b/fc-lang/Makefile.am index 6f76ee0..5fdccea 100644 --- a/fc-lang/Makefile.am +++ b/fc-lang/Makefile.am @@ -280,7 +280,9 @@ ORTH = \ brx.orth \ sat.orth \ doi.orth \ - mni.orth + mni.orth \ + und_zsye.orth \ + und_zmth.orth # ^-------------- Add new orth files here -include $(top_srcdir)/git.mk diff --git a/fc-lang/Makefile.in b/fc-lang/Makefile.in index e70f94a..5b3895b 100644 --- a/fc-lang/Makefile.in +++ b/fc-lang/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -143,10 +143,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ @@ -236,7 +241,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -248,8 +257,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -261,11 +274,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -285,15 +303,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -301,8 +317,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -349,13 +371,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -641,7 +659,9 @@ ORTH = \ brx.orth \ sat.orth \ doi.orth \ - mni.orth + mni.orth \ + und_zsye.orth \ + und_zmth.orth all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am diff --git a/fc-lang/fc-lang.c b/fc-lang/fc-lang.c index 38fc697..4a650e0 100644 --- a/fc-lang/fc-lang.c +++ b/fc-lang/fc-lang.c @@ -174,6 +174,11 @@ scan (FILE *f, char *file, FcCharSetFreezer *freezer) if (sscanf (line, "%x-%x", &start, &end) != 2) fatal (file, lineno, "parse error"); } + else if (strstr (line, "..")) + { + if (sscanf (line, "%x..%x", &start, &end) != 2) + fatal (file, lineno, "parse error"); + } else { if (sscanf (line, "%x", &start) != 1) @@ -561,6 +566,9 @@ main (int argc FC_UNUSED, char **argv) while (setRangeChar <= c && c <= 'z') setRangeStart[setRangeChar++ - 'a'] = i; } + while (setRangeChar <= 'z') /* no language code starts with these letters */ + setRangeStart[setRangeChar++ - 'a'] = i; + for (setRangeChar = 'a'; setRangeChar < 'z'; setRangeChar++) setRangeEnd[setRangeChar - 'a'] = setRangeStart[setRangeChar+1-'a'] - 1; setRangeEnd[setRangeChar - 'a'] = i - 1; diff --git a/fc-lang/fclang.h b/fc-lang/fclang.h index 9a49913..7b080ab 100644 --- a/fc-lang/fclang.h +++ b/fc-lang/fclang.h @@ -22,11 +22,11 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* total size: 1087 unique leaves: 702 */ +/* total size: 1111 unique leaves: 725 */ -#define LEAF0 (244 * sizeof (FcLangCharSet)) -#define OFF0 (LEAF0 + 702 * sizeof (FcCharLeaf)) -#define NUM0 (OFF0 + 755 * sizeof (uintptr_t)) +#define LEAF0 (246 * sizeof (FcLangCharSet)) +#define OFF0 (LEAF0 + 725 * sizeof (FcCharLeaf)) +#define NUM0 (OFF0 + 779 * sizeof (uintptr_t)) #define SET(n) (n * sizeof (FcLangCharSet) + offsetof (FcLangCharSet, charset)) #define OFF(s,o) (OFF0 + o * sizeof (uintptr_t) - SET(s)) #define NUM(s,n) (NUM0 + n * sizeof (FcChar16) - SET(s)) @@ -36,12 +36,12 @@ #define fcLangCharSetIndicesInv (fcLangData.langIndicesInv) static const struct { - FcLangCharSet langCharSets[244]; - FcCharLeaf leaves[702]; - uintptr_t leaf_offsets[755]; - FcChar16 numbers[755]; - FcChar8 langIndices[244]; - FcChar8 langIndicesInv[244]; + FcLangCharSet langCharSets[246]; + FcCharLeaf leaves[725]; + uintptr_t leaf_offsets[779]; + FcChar16 numbers[779]; + FcChar8 langIndices[246]; + FcChar8 langIndicesInv[246]; } fcLangData = { { { "aa", { FC_REF_CONSTANT, 1, OFF(0,0), NUM(0,0) } }, /* 0 */ @@ -267,27 +267,29 @@ static const struct { { "tyv", { FC_REF_CONSTANT, 1, OFF(220,284), NUM(220,284) } }, /* 220 */ { "ug", { FC_REF_CONSTANT, 1, OFF(221,398), NUM(221,398) } }, /* 221 */ { "uk", { FC_REF_CONSTANT, 1, OFF(222,399), NUM(222,399) } }, /* 222 */ - { "ur", { FC_REF_CONSTANT, 1, OFF(223,287), NUM(223,287) } }, /* 223 */ - { "uz", { FC_REF_CONSTANT, 1, OFF(224,87), NUM(224,87) } }, /* 224 */ - { "ve", { FC_REF_CONSTANT, 2, OFF(225,400), NUM(225,400) } }, /* 225 */ - { "vi", { FC_REF_CONSTANT, 4, OFF(226,402), NUM(226,402) } }, /* 226 */ - { "vo", { FC_REF_CONSTANT, 1, OFF(227,406), NUM(227,406) } }, /* 227 */ - { "vot", { FC_REF_CONSTANT, 2, OFF(228,407), NUM(228,407) } }, /* 228 */ - { "wa", { FC_REF_CONSTANT, 1, OFF(229,409), NUM(229,409) } }, /* 229 */ - { "wal", { FC_REF_CONSTANT, 2, OFF(230,367), NUM(230,367) } }, /* 230 */ - { "wen", { FC_REF_CONSTANT, 2, OFF(231,410), NUM(231,410) } }, /* 231 */ - { "wo", { FC_REF_CONSTANT, 2, OFF(232,412), NUM(232,412) } }, /* 232 */ - { "xh", { FC_REF_CONSTANT, 1, OFF(233,87), NUM(233,87) } }, /* 233 */ - { "yap", { FC_REF_CONSTANT, 1, OFF(234,414), NUM(234,414) } }, /* 234 */ - { "yi", { FC_REF_CONSTANT, 1, OFF(235,108), NUM(235,108) } }, /* 235 */ - { "yo", { FC_REF_CONSTANT, 4, OFF(236,415), NUM(236,415) } }, /* 236 */ - { "za", { FC_REF_CONSTANT, 1, OFF(237,87), NUM(237,87) } }, /* 237 */ - { "zh-cn", { FC_REF_CONSTANT, 82, OFF(238,419), NUM(238,419) } }, /* 238 */ - { "zh-hk", { FC_REF_CONSTANT, 171, OFF(239,501), NUM(239,501) } }, /* 239 */ - { "zh-mo", { FC_REF_CONSTANT, 171, OFF(240,501), NUM(240,501) } }, /* 240 */ - { "zh-sg", { FC_REF_CONSTANT, 82, OFF(241,419), NUM(241,419) } }, /* 241 */ - { "zh-tw", { FC_REF_CONSTANT, 83, OFF(242,672), NUM(242,672) } }, /* 242 */ - { "zu", { FC_REF_CONSTANT, 1, OFF(243,87), NUM(243,87) } }, /* 243 */ + { "und-zmth", { FC_REF_CONSTANT, 12, OFF(223,400), NUM(223,400) } }, /* 223 */ + { "und-zsye", { FC_REF_CONSTANT, 12, OFF(224,412), NUM(224,412) } }, /* 224 */ + { "ur", { FC_REF_CONSTANT, 1, OFF(225,287), NUM(225,287) } }, /* 225 */ + { "uz", { FC_REF_CONSTANT, 1, OFF(226,87), NUM(226,87) } }, /* 226 */ + { "ve", { FC_REF_CONSTANT, 2, OFF(227,424), NUM(227,424) } }, /* 227 */ + { "vi", { FC_REF_CONSTANT, 4, OFF(228,426), NUM(228,426) } }, /* 228 */ + { "vo", { FC_REF_CONSTANT, 1, OFF(229,430), NUM(229,430) } }, /* 229 */ + { "vot", { FC_REF_CONSTANT, 2, OFF(230,431), NUM(230,431) } }, /* 230 */ + { "wa", { FC_REF_CONSTANT, 1, OFF(231,433), NUM(231,433) } }, /* 231 */ + { "wal", { FC_REF_CONSTANT, 2, OFF(232,367), NUM(232,367) } }, /* 232 */ + { "wen", { FC_REF_CONSTANT, 2, OFF(233,434), NUM(233,434) } }, /* 233 */ + { "wo", { FC_REF_CONSTANT, 2, OFF(234,436), NUM(234,436) } }, /* 234 */ + { "xh", { FC_REF_CONSTANT, 1, OFF(235,87), NUM(235,87) } }, /* 235 */ + { "yap", { FC_REF_CONSTANT, 1, OFF(236,438), NUM(236,438) } }, /* 236 */ + { "yi", { FC_REF_CONSTANT, 1, OFF(237,108), NUM(237,108) } }, /* 237 */ + { "yo", { FC_REF_CONSTANT, 4, OFF(238,439), NUM(238,439) } }, /* 238 */ + { "za", { FC_REF_CONSTANT, 1, OFF(239,87), NUM(239,87) } }, /* 239 */ + { "zh-cn", { FC_REF_CONSTANT, 82, OFF(240,443), NUM(240,443) } }, /* 240 */ + { "zh-hk", { FC_REF_CONSTANT, 171, OFF(241,525), NUM(241,525) } }, /* 241 */ + { "zh-mo", { FC_REF_CONSTANT, 171, OFF(242,525), NUM(242,525) } }, /* 242 */ + { "zh-sg", { FC_REF_CONSTANT, 82, OFF(243,443), NUM(243,443) } }, /* 243 */ + { "zh-tw", { FC_REF_CONSTANT, 83, OFF(244,696), NUM(244,696) } }, /* 244 */ + { "zu", { FC_REF_CONSTANT, 1, OFF(245,87), NUM(245,87) } }, /* 245 */ }, { { { /* 0 */ @@ -1707,1394 +1709,1486 @@ static const struct { 0x00030000, 0x00000000, 0x00000000, 0x00000000, } }, { { /* 354 */ + 0x00000000, 0xffffff7b, 0x7fffffff, 0x7ffffffe, + 0x00000000, 0x80e310fe, 0x00800000, 0x00800000, + } }, + { { /* 355 */ + 0x00000000, 0x00020000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 356 */ + 0x00001500, 0x01000000, 0x00000000, 0x00000000, + 0xfffe0000, 0xfffe03db, 0x006003fb, 0x00030000, + } }, + { { /* 357 */ + 0x00400000, 0x00000047, 0x00800010, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, + } }, + { { /* 358 */ + 0x3f2fc004, 0x00000010, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 359 */ + 0xe3ffbfff, 0xfff007ff, 0x00000001, 0x00000000, + 0xfffff000, 0x0000003f, 0x0000e10f, 0x00000000, + } }, + { { /* 360 */ + 0x00000f00, 0x0000000c, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 361 */ + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000000, 0x00000000, + } }, + { { /* 362 */ + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x000003c0, + } }, + { { /* 363 */ + 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, + 0xdfffffff, 0x00001e64, 0x00000000, 0x00000000, + } }, + { { /* 364 */ + 0x00000000, 0x78000000, 0x0001fc5f, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 365 */ + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000030, 0x00000000, 0x00000000, + } }, + { { /* 366 */ + 0x0c000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00091e00, + } }, + { { /* 367 */ + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x60000000, + } }, + { { /* 368 */ + 0x00300000, 0x00000000, 0x000fff00, 0x80000000, + 0x00080000, 0x60000c02, 0x00104030, 0x242c0400, + } }, + { { /* 369 */ + 0x00000c20, 0x00000100, 0x00b85000, 0x00000000, + 0x00e00000, 0x80010000, 0x00000000, 0x00000000, + } }, + { { /* 370 */ + 0x18000000, 0x00000000, 0x00210000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 371 */ + 0x00000010, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00008000, 0x00000000, + } }, + { { /* 372 */ + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x07fe4000, 0x00000000, 0x00000000, 0xffffffc0, + } }, + { { /* 373 */ + 0x04000002, 0x077c8000, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 374 */ + 0xffffffff, 0xffbf0001, 0xffffffff, 0x1fffffff, + 0x000fffff, 0xffffffff, 0x000007df, 0x0001ffff, + } }, + { { /* 375 */ + 0x00000000, 0x00000000, 0xfffffffd, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x1effffff, + } }, + { { /* 376 */ + 0xffffffff, 0x3fffffff, 0xffff0000, 0x000000ff, + 0x00000000, 0x00000000, 0x00000000, 0xf8000000, + } }, + { { /* 377 */ + 0x755dfffe, 0xffef2f3f, 0x0000ffe1, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + } }, + { { /* 378 */ 0x000c0000, 0x30000000, 0x00000c30, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 355 */ + { { /* 379 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x263c370f, 0x263c370f, } }, - { { /* 356 */ + { { /* 380 */ 0x0003000c, 0x00000300, 0x00000000, 0x00000300, 0x00000000, 0x00018003, 0x00000000, 0x00000000, } }, - { { /* 357 */ + { { /* 381 */ 0x0800024f, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 358 */ + { { /* 382 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0xffffffff, 0x03ffffff, } }, - { { /* 359 */ + { { /* 383 */ 0x00000000, 0x00000000, 0x077dfffe, 0x077dfffe, 0x00000000, 0x00000000, 0x10400010, 0x10400010, } }, - { { /* 360 */ + { { /* 384 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x10400010, 0x10400010, } }, - { { /* 361 */ + { { /* 385 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x081047a4, 0x081047a4, } }, - { { /* 362 */ + { { /* 386 */ 0x0c0030c0, 0x00000000, 0x0f30001e, 0x66000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 363 */ + { { /* 387 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x000a0a09, 0x000a0a09, } }, - { { /* 364 */ + { { /* 388 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x00400810, 0x00400810, } }, - { { /* 365 */ + { { /* 389 */ 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe, 0x00000000, 0x00000000, 0x0e3c770f, 0x0e3c770f, } }, - { { /* 366 */ + { { /* 390 */ 0x0c000000, 0x00000300, 0x00000018, 0x00000300, 0x00000000, 0x00000000, 0x001fe000, 0x03000000, } }, - { { /* 367 */ + { { /* 391 */ 0x0000100f, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 368 */ + { { /* 392 */ 0x00000000, 0xc0000000, 0x00000000, 0x0000000c, 0x00000000, 0x33000000, 0x00003000, 0x00000000, } }, - { { /* 369 */ + { { /* 393 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000280, 0x00000000, } }, - { { /* 370 */ + { { /* 394 */ 0x7f7b7f8b, 0xef553db4, 0xf35dfba8, 0x400b0243, 0x8d3efb40, 0x8c2c7bf7, 0xe3fa6eff, 0xa8ed1d3a, } }, - { { /* 371 */ + { { /* 395 */ 0xcf83e602, 0x35558cf5, 0xffabe048, 0xd85992b9, 0x2892ab18, 0x8020d7e9, 0xf583c438, 0x450ae74a, } }, - { { /* 372 */ + { { /* 396 */ 0x9714b000, 0x54007762, 0x1420d188, 0xc8c01020, 0x00002121, 0x0c0413a8, 0x04408000, 0x082870c0, } }, - { { /* 373 */ + { { /* 397 */ 0x000408c0, 0x80000002, 0x14722b7b, 0x3bfb7924, 0x1ae43327, 0x38ef9835, 0x28029ad1, 0xbf69a813, } }, - { { /* 374 */ + { { /* 398 */ 0x2fc665cf, 0xafc96b11, 0x5053340f, 0xa00486a2, 0xe8090106, 0xc00e3f0f, 0x81450a88, 0xc6010010, } }, - { { /* 375 */ + { { /* 399 */ 0x26e1a161, 0xce00444b, 0xd4eec7aa, 0x85bbcadf, 0xa5203a74, 0x8840436c, 0x8bd23f06, 0x3befff79, } }, - { { /* 376 */ + { { /* 400 */ 0xe8eff75a, 0x5b36fbcb, 0x1bfd0d49, 0x39ee0154, 0x2e75d855, 0xa91abfd8, 0xf6bff3d7, 0xb40c67e0, } }, - { { /* 377 */ + { { /* 401 */ 0x081382c2, 0xd08bd49d, 0x1061065a, 0x59e074f2, 0xb3128f9f, 0x6aaa0080, 0xb05e3230, 0x60ac9d7a, } }, - { { /* 378 */ + { { /* 402 */ 0xc900d303, 0x8a563098, 0x13907000, 0x18421f14, 0x0008c060, 0x10808008, 0xec900400, 0xe6332817, } }, - { { /* 379 */ + { { /* 403 */ 0x90000758, 0x4e09f708, 0xfc83f485, 0x18c8af53, 0x080c187c, 0x01146adf, 0xa734c80c, 0x2710a011, } }, - { { /* 380 */ + { { /* 404 */ 0x422228c5, 0x00210413, 0x41123010, 0x40001820, 0xc60c022b, 0x10000300, 0x00220022, 0x02495810, } }, - { { /* 381 */ + { { /* 405 */ 0x9670a094, 0x1792eeb0, 0x05f2cb96, 0x23580025, 0x42cc25de, 0x4a04cf38, 0x359f0c40, 0x8a001128, } }, - { { /* 382 */ + { { /* 406 */ 0x910a13fa, 0x10560229, 0x04200641, 0x84f00484, 0x0c040000, 0x412c0400, 0x11541206, 0x00020a4b, } }, - { { /* 383 */ + { { /* 407 */ 0x00c00200, 0x00940000, 0xbfbb0001, 0x242b167c, 0x7fa89bbb, 0xe3790c7f, 0xe00d10f4, 0x9f014132, } }, - { { /* 384 */ + { { /* 408 */ 0x35728652, 0xff1210b4, 0x4223cf27, 0x8602c06b, 0x1fd33106, 0xa1aa3a0c, 0x02040812, 0x08012572, } }, - { { /* 385 */ + { { /* 409 */ 0x485040cc, 0x601062d0, 0x29001c80, 0x00109a00, 0x22000004, 0x00800000, 0x68002020, 0x609ecbe6, } }, - { { /* 386 */ + { { /* 410 */ 0x3f73916e, 0x398260c0, 0x48301034, 0xbd5c0006, 0xd6fb8cd1, 0x43e820e1, 0x084e0600, 0xc4d00500, } }, - { { /* 387 */ + { { /* 411 */ 0x89aa8d1f, 0x1602a6e1, 0x21ed0001, 0x1a8b3656, 0x13a51fb7, 0x30a06502, 0x23c7b278, 0xe9226c93, } }, - { { /* 388 */ + { { /* 412 */ 0x3a74e47f, 0x98208fe3, 0x2625280e, 0xbf49bf9c, 0xac543218, 0x1916b949, 0xb5220c60, 0x0659fbc1, } }, - { { /* 389 */ + { { /* 413 */ 0x8420e343, 0x800008d9, 0x20225500, 0x00a10184, 0x20104800, 0x40801380, 0x00160d04, 0x80200040, } }, - { { /* 390 */ + { { /* 414 */ 0x8de7fd40, 0xe0985436, 0x091e7b8b, 0xd249fec8, 0x8dee0611, 0xba221937, 0x9fdd77f4, 0xf0daf3ec, } }, - { { /* 391 */ + { { /* 415 */ 0xec424386, 0x26048d3f, 0xc021fa6c, 0x0cc2628e, 0x0145d785, 0x559977ad, 0x4045e250, 0xa154260b, } }, - { { /* 392 */ + { { /* 416 */ 0x58199827, 0xa4103443, 0x411405f2, 0x07002280, 0x426600b4, 0x15a17210, 0x41856025, 0x00000054, } }, - { { /* 393 */ + { { /* 417 */ 0x01040201, 0xcb70c820, 0x6a629320, 0x0095184c, 0x9a8b1880, 0x3201aab2, 0x00c4d87a, 0x04c3f3e5, } }, - { { /* 394 */ + { { /* 418 */ 0xa238d44d, 0x5072a1a1, 0x84fc980a, 0x44d1c152, 0x20c21094, 0x42104180, 0x3a000000, 0xd29d0240, } }, - { { /* 395 */ + { { /* 419 */ 0xa8b12f01, 0x2432bd40, 0xd04bd34d, 0xd0ada723, 0x75a10a92, 0x01e9adac, 0x771f801a, 0xa01b9225, } }, - { { /* 396 */ + { { /* 420 */ 0x20cadfa1, 0x738c0602, 0x003b577f, 0x00d00bff, 0x0088806a, 0x0029a1c4, 0x05242a05, 0x16234009, } }, - { { /* 397 */ + { { /* 421 */ 0x80056822, 0xa2112011, 0x64900004, 0x13824849, 0x193023d5, 0x08922980, 0x88115402, 0xa0042001, } }, - { { /* 398 */ + { { /* 422 */ 0x81800400, 0x60228502, 0x0b010090, 0x12020022, 0x00834011, 0x00001a01, 0x00000000, 0x00000000, } }, - { { /* 399 */ + { { /* 423 */ 0x00000000, 0x4684009f, 0x020012c8, 0x1a0004fc, 0x0c4c2ede, 0x80b80402, 0x0afca826, 0x22288c02, } }, - { { /* 400 */ + { { /* 424 */ 0x8f7ba0e0, 0x2135c7d6, 0xf8b106c7, 0x62550713, 0x8a19936e, 0xfb0e6efa, 0x48f91630, 0x7debcd2f, } }, - { { /* 401 */ + { { /* 425 */ 0x4e845892, 0x7a2e4ca0, 0x561eedea, 0x1190c649, 0xe83a5324, 0x8124cfdb, 0x634218f1, 0x1a8a5853, } }, - { { /* 402 */ + { { /* 426 */ 0x24d37420, 0x0514aa3b, 0x89586018, 0xc0004800, 0x91018268, 0x2cd684a4, 0xc4ba8886, 0x02100377, } }, - { { /* 403 */ + { { /* 427 */ 0x00388244, 0x404aae11, 0x510028c0, 0x15146044, 0x10007310, 0x02480082, 0x40060205, 0x0000c003, } }, - { { /* 404 */ + { { /* 428 */ 0x0c020000, 0x02200008, 0x40009000, 0xd161b800, 0x32744621, 0x3b8af800, 0x8b00050f, 0x2280bbd0, } }, - { { /* 405 */ + { { /* 429 */ 0x07690600, 0x00438040, 0x50005420, 0x250c41d0, 0x83108410, 0x02281101, 0x00304008, 0x020040a1, } }, - { { /* 406 */ + { { /* 430 */ 0x20000040, 0xabe31500, 0xaa443180, 0xc624c2c6, 0x8004ac13, 0x03d1b000, 0x4285611e, 0x1d9ff303, } }, - { { /* 407 */ + { { /* 431 */ 0x78e8440a, 0xc3925e26, 0x00852000, 0x4000b001, 0x88424a90, 0x0c8dca04, 0x4203a705, 0x000422a1, } }, - { { /* 408 */ + { { /* 432 */ 0x0c018668, 0x10795564, 0xdea00002, 0x40c12000, 0x5001488b, 0x04000380, 0x50040000, 0x80d0c05d, } }, - { { /* 409 */ + { { /* 433 */ 0x970aa010, 0x4dafbb20, 0x1e10d921, 0x83140460, 0xa6d68848, 0x733fd83b, 0x497427bc, 0x92130ddc, } }, - { { /* 410 */ + { { /* 434 */ 0x8ba1142b, 0xd1392e75, 0x50503009, 0x69008808, 0x024a49d4, 0x80164010, 0x89d7e564, 0x5316c020, } }, - { { /* 411 */ + { { /* 435 */ 0x86002b92, 0x15e0a345, 0x0c03008b, 0xe200196e, 0x80067031, 0xa82916a5, 0x18802000, 0xe1487aac, } }, - { { /* 412 */ + { { /* 436 */ 0xb5d63207, 0x5f9132e8, 0x20e550a1, 0x10807c00, 0x9d8a7280, 0x421f00aa, 0x02310e22, 0x04941100, } }, - { { /* 413 */ + { { /* 437 */ 0x40080022, 0x5c100010, 0xfcc80343, 0x0580a1a5, 0x04008433, 0x6e080080, 0x81262a4b, 0x2901aad8, } }, - { { /* 414 */ + { { /* 438 */ 0x4490684d, 0xba880009, 0x00820040, 0x87d10000, 0xb1e6215b, 0x80083161, 0xc2400800, 0xa600a069, } }, - { { /* 415 */ + { { /* 439 */ 0x4a328d58, 0x550a5d71, 0x2d579aa0, 0x4aa64005, 0x30b12021, 0x01123fc6, 0x260a10c2, 0x50824462, } }, - { { /* 416 */ + { { /* 440 */ 0x80409880, 0x810004c0, 0x00002003, 0x38180000, 0xf1a60200, 0x720e4434, 0x92e035a2, 0x09008101, } }, - { { /* 417 */ + { { /* 441 */ 0x00000400, 0x00008885, 0x00000000, 0x00804000, 0x00000000, 0x00004040, 0x00000000, 0x00000000, } }, - { { /* 418 */ + { { /* 442 */ 0x00000000, 0x08000000, 0x00000082, 0x00000000, 0x88000004, 0xe7efbfff, 0xffbfffff, 0xfdffefef, } }, - { { /* 419 */ + { { /* 443 */ 0xbffefbff, 0x057fffff, 0x85b30034, 0x42164706, 0xe4105402, 0xb3058092, 0x81305422, 0x180b4263, } }, - { { /* 420 */ + { { /* 444 */ 0x13f5387b, 0xa9ea07e5, 0x05143c4c, 0x80020600, 0xbd481ad9, 0xf496ee37, 0x7ec0705f, 0x355fbfb2, } }, - { { /* 421 */ + { { /* 445 */ 0x455fe644, 0x41469000, 0x063b1d40, 0xfe1362a1, 0x39028505, 0x0c080548, 0x0000144f, 0x58183488, } }, - { { /* 422 */ + { { /* 446 */ 0xd8153077, 0x4bfbbd0e, 0x85008a90, 0xe61dc100, 0xb386ed14, 0x639bff72, 0xd9befd92, 0x0a92887b, } }, - { { /* 423 */ + { { /* 447 */ 0x1cb2d3fe, 0x177ab980, 0xdc1782c9, 0x3980fffb, 0x590c4260, 0x37df0f01, 0xb15094a3, 0x23070623, } }, - { { /* 424 */ + { { /* 448 */ 0x3102f85a, 0x310201f0, 0x1e820040, 0x056a3a0a, 0x12805b84, 0xa7148002, 0xa04b2612, 0x90011069, } }, - { { /* 425 */ + { { /* 449 */ 0x848a1000, 0x3f801802, 0x42400708, 0x4e140110, 0x180080b0, 0x0281c510, 0x10298202, 0x88000210, } }, - { { /* 426 */ + { { /* 450 */ 0x00420020, 0x11000280, 0x4413e000, 0xfe025804, 0x30283c07, 0x04739798, 0xcb13ced1, 0x431f6210, } }, - { { /* 427 */ + { { /* 451 */ 0x55ac278d, 0xc892422e, 0x02885380, 0x78514039, 0x8088292c, 0x2428b900, 0x080e0c41, 0x42004421, } }, - { { /* 428 */ + { { /* 452 */ 0x08680408, 0x12040006, 0x02903031, 0xe0855b3e, 0x10442936, 0x10822814, 0x83344266, 0x531b013c, } }, - { { /* 429 */ + { { /* 453 */ 0x0e0d0404, 0x00510c22, 0xc0000012, 0x88000040, 0x0000004a, 0x00000000, 0x5447dff6, 0x00088868, } }, - { { /* 430 */ + { { /* 454 */ 0x00000081, 0x40000000, 0x00000100, 0x02000000, 0x00080600, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 431 */ + { { /* 455 */ 0x00000080, 0x00000040, 0x00000000, 0x00001040, 0x00000000, 0xf7fdefff, 0xfffeff7f, 0xfffffbff, } }, - { { /* 432 */ + { { /* 456 */ 0xbffffdff, 0x00ffffff, 0x042012c2, 0x07080c06, 0x01101624, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 433 */ + { { /* 457 */ 0xe0000000, 0xfffffffe, 0x7f79ffff, 0x00f928df, 0x80120c32, 0xd53a0008, 0xecc2d858, 0x2fa89d18, } }, - { { /* 434 */ + { { /* 458 */ 0xe0109620, 0x2622d60c, 0x02060f97, 0x9055b240, 0x501180a2, 0x04049800, 0x00004000, 0x00000000, } }, - { { /* 435 */ + { { /* 459 */ 0x00000000, 0x00000000, 0x00000000, 0xfffffbc0, 0xdffbeffe, 0x62430b08, 0xfb3b41b6, 0x23896f74, } }, - { { /* 436 */ + { { /* 460 */ 0xecd7ae7f, 0x5960e047, 0x098fa096, 0xa030612c, 0x2aaa090d, 0x4f7bd44e, 0x388bc4b2, 0x6110a9c6, } }, - { { /* 437 */ + { { /* 461 */ 0x42000014, 0x0202800c, 0x6485fe48, 0xe3f7d63e, 0x0c073aa0, 0x0430e40c, 0x1002f680, 0x00000000, } }, - { { /* 438 */ + { { /* 462 */ 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00004000, 0x00004000, 0x00000100, 0x00000000, } }, - { { /* 439 */ + { { /* 463 */ 0x00000000, 0x40000000, 0x00000000, 0x00000400, 0x00008000, 0x00000000, 0x00400400, 0x00000000, } }, - { { /* 440 */ + { { /* 464 */ 0x00000000, 0x40000000, 0x00000000, 0x00000800, 0xfebdffe0, 0xffffffff, 0xfbe77f7f, 0xf7ffffbf, } }, - { { /* 441 */ + { { /* 465 */ 0xefffffff, 0xdff7ff7e, 0xfbdff6f7, 0x804fbffe, 0x00000000, 0x00000000, 0x00000000, 0x7fffef00, } }, - { { /* 442 */ + { { /* 466 */ 0xb6f7ff7f, 0xb87e4406, 0x88313bf5, 0x00f41796, 0x1391a960, 0x72490080, 0x0024f2f3, 0x42c88701, } }, - { { /* 443 */ + { { /* 467 */ 0x5048e3d3, 0x43052400, 0x4a4c0000, 0x10580227, 0x01162820, 0x0014a809, 0x00000000, 0x00683ec0, } }, - { { /* 444 */ + { { /* 468 */ 0x00000000, 0x00000000, 0x00000000, 0xffe00000, 0xfddbb7ff, 0x000000f7, 0xc72e4000, 0x00000180, } }, - { { /* 445 */ + { { /* 469 */ 0x00012000, 0x00004000, 0x00300000, 0xb4f7ffa8, 0x03ffadf3, 0x00000120, 0x00000000, 0x00000000, } }, - { { /* 446 */ + { { /* 470 */ 0x00000000, 0x00000000, 0x00000000, 0xfffbf000, 0xfdcf9df7, 0x15c301bf, 0x810a1827, 0x0a00a842, } }, - { { /* 447 */ + { { /* 471 */ 0x80088108, 0x18048008, 0x0012a3be, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 448 */ + { { /* 472 */ 0x00000000, 0x00000000, 0x00000000, 0x90000000, 0xdc3769e6, 0x3dff6bff, 0xf3f9fcf8, 0x00000004, } }, - { { /* 449 */ + { { /* 473 */ 0x80000000, 0xe7eebf6f, 0x5da2dffe, 0xc00b3fd8, 0xa00c0984, 0x69100040, 0xb912e210, 0x5a0086a5, } }, - { { /* 450 */ + { { /* 474 */ 0x02896800, 0x6a809005, 0x00030010, 0x80000000, 0x8e001ff9, 0x00000001, 0x00000000, 0x00000000, } }, - { { /* 451 */ + { { /* 475 */ 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 452 */ + { { /* 476 */ 0x00000000, 0x00000000, 0x00001000, 0x64080010, 0x00480000, 0x10000020, 0x80000102, 0x08000010, } }, - { { /* 453 */ + { { /* 477 */ 0x00000040, 0x40000000, 0x00020000, 0x01852002, 0x00800010, 0x80002022, 0x084444a2, 0x480e0000, } }, - { { /* 454 */ + { { /* 478 */ 0x04000200, 0x02202008, 0x80004380, 0x04000000, 0x00000002, 0x12231420, 0x2058003a, 0x00200060, } }, - { { /* 455 */ + { { /* 479 */ 0x10002508, 0x040d0028, 0x00000009, 0x00008004, 0x00800000, 0x42000001, 0x00000000, 0x09040000, } }, - { { /* 456 */ + { { /* 480 */ 0x02008000, 0x01402001, 0x00000000, 0x00000008, 0x00000000, 0x00000001, 0x00021008, 0x04000000, } }, - { { /* 457 */ + { { /* 481 */ 0x00100100, 0x80040080, 0x00002000, 0x00000008, 0x08040601, 0x01000012, 0x10000000, 0x49001024, } }, - { { /* 458 */ + { { /* 482 */ 0x0180004a, 0x00100600, 0x50840800, 0x000000c0, 0x00800000, 0x20000800, 0x40000000, 0x08050000, } }, - { { /* 459 */ + { { /* 483 */ 0x02004000, 0x02000804, 0x01000004, 0x18060001, 0x02400001, 0x40000002, 0x20800014, 0x000c1000, } }, - { { /* 460 */ + { { /* 484 */ 0x00222000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x10422800, 0x00000800, } }, - { { /* 461 */ + { { /* 485 */ 0x20080000, 0x00040000, 0x80025040, 0x20208604, 0x00028020, 0x80102020, 0x080820c0, 0x10880800, } }, - { { /* 462 */ + { { /* 486 */ 0x00000000, 0x00000000, 0x00200109, 0x00100000, 0x00000000, 0x81022700, 0x40c21404, 0x84010882, } }, - { { /* 463 */ + { { /* 487 */ 0x00004010, 0x00000000, 0x03000000, 0x00000008, 0x00080000, 0x00000000, 0x10800001, 0x06002020, } }, - { { /* 464 */ + { { /* 488 */ 0x00000010, 0x02000000, 0x00880020, 0x00008424, 0x00000000, 0x88000000, 0x81000100, 0x04000000, } }, - { { /* 465 */ + { { /* 489 */ 0x00004218, 0x00040000, 0x00000000, 0x80005080, 0x00010000, 0x00040000, 0x08008000, 0x02008000, } }, - { { /* 466 */ + { { /* 490 */ 0x00020000, 0x00000000, 0x00000001, 0x04000401, 0x00100000, 0x12200004, 0x00000000, 0x18100000, } }, - { { /* 467 */ + { { /* 491 */ 0x00000000, 0x00000800, 0x00000000, 0x00004000, 0x00800000, 0x04000000, 0x82000002, 0x00042000, } }, - { { /* 468 */ + { { /* 492 */ 0x00080006, 0x00000000, 0x00000000, 0x04000000, 0x80008000, 0x00810001, 0xa0000000, 0x00100410, } }, - { { /* 469 */ + { { /* 493 */ 0x00400218, 0x88084080, 0x00260008, 0x00800404, 0x00000020, 0x00000000, 0x00000000, 0x00000200, } }, - { { /* 470 */ + { { /* 494 */ 0x00a08048, 0x00000000, 0x08000000, 0x04000000, 0x00000000, 0x00000000, 0x00018000, 0x00200000, } }, - { { /* 471 */ + { { /* 495 */ 0x01000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00200000, 0x00102000, } }, - { { /* 472 */ + { { /* 496 */ 0x00000801, 0x00000000, 0x00000000, 0x00020000, 0x08000000, 0x00002000, 0x20010000, 0x04002000, } }, - { { /* 473 */ + { { /* 497 */ 0x40000040, 0x50202400, 0x000a0020, 0x00040420, 0x00000200, 0x00000080, 0x80000000, 0x00000020, } }, - { { /* 474 */ + { { /* 498 */ 0x20008000, 0x00200010, 0x00000000, 0x00000000, 0x00400000, 0x01100000, 0x00020000, 0x80000010, } }, - { { /* 475 */ + { { /* 499 */ 0x02000000, 0x00801000, 0x00000000, 0x48058000, 0x20c94000, 0x60000000, 0x00000001, 0x00000000, } }, - { { /* 476 */ + { { /* 500 */ 0x00004090, 0x48000000, 0x08000000, 0x28802000, 0x00000002, 0x00014000, 0x00002000, 0x00002002, } }, - { { /* 477 */ + { { /* 501 */ 0x00010200, 0x00100000, 0x00000000, 0x00800000, 0x10020000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 478 */ + { { /* 502 */ 0x00000010, 0x00000402, 0x0c000000, 0x01000400, 0x01000021, 0x00000000, 0x00004000, 0x00004000, } }, - { { /* 479 */ + { { /* 503 */ 0x00000000, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000020, } }, - { { /* 480 */ + { { /* 504 */ 0x00000100, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00000000, } }, - { { /* 481 */ + { { /* 505 */ 0x00006000, 0x00000000, 0x00000000, 0x00000400, 0x04000040, 0x003c0180, 0x00000200, 0x00102000, } }, - { { /* 482 */ + { { /* 506 */ 0x00000800, 0x101000c0, 0x00800000, 0x00000000, 0x00008000, 0x02200000, 0x00020020, 0x00000000, } }, - { { /* 483 */ + { { /* 507 */ 0x00000000, 0x01000000, 0x00000000, 0x20100000, 0x00080000, 0x00000141, 0x02001002, 0x40400001, } }, - { { /* 484 */ + { { /* 508 */ 0x00580000, 0x00000002, 0x00003000, 0x00002400, 0x00988000, 0x00040010, 0x00002800, 0x00000008, } }, - { { /* 485 */ + { { /* 509 */ 0x40080004, 0x00000020, 0x20080000, 0x02060a00, 0x00010040, 0x14010200, 0x40800000, 0x08031000, } }, - { { /* 486 */ + { { /* 510 */ 0x40020020, 0x0000202c, 0x2014a008, 0x00000000, 0x80040200, 0x82020012, 0x00400000, 0x20000000, } }, - { { /* 487 */ + { { /* 511 */ 0x00000000, 0x00000000, 0x00000004, 0x04000000, 0x00000000, 0x00000000, 0x40800100, 0x00000000, } }, - { { /* 488 */ + { { /* 512 */ 0x00000008, 0x04000040, 0x00000001, 0x000c0200, 0x00000000, 0x08000400, 0x00000000, 0x080c0001, } }, - { { /* 489 */ + { { /* 513 */ 0x00000400, 0x00000000, 0x00000000, 0x00200000, 0x80000000, 0x00001000, 0x00000200, 0x01000800, } }, - { { /* 490 */ + { { /* 514 */ 0x00000000, 0x00000800, 0x00000000, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x04040000, } }, - { { /* 491 */ + { { /* 515 */ 0x00000000, 0x00000000, 0x00000040, 0x00002000, 0xa0000000, 0x00000000, 0x08000008, 0x00080000, } }, - { { /* 492 */ + { { /* 516 */ 0x00000020, 0x00000000, 0x40000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008000, } }, - { { /* 493 */ + { { /* 517 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000800, 0x00000000, 0x00000000, 0x00200000, } }, - { { /* 494 */ + { { /* 518 */ 0x00000000, 0x00000000, 0x00000000, 0x04000000, 0x00000008, 0x00000000, 0x00010000, 0x1b000000, } }, - { { /* 495 */ + { { /* 519 */ 0x00007000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000080, 0x80000000, 0x00000000, } }, - { { /* 496 */ + { { /* 520 */ 0x00000000, 0x00020000, 0x00000000, 0x00200000, 0x40000000, 0x00000010, 0x00800000, 0x00000008, } }, - { { /* 497 */ + { { /* 521 */ 0x00000000, 0x00000000, 0x02000000, 0x20000010, 0x00000080, 0x00000000, 0x00010000, 0x00000000, } }, - { { /* 498 */ + { { /* 522 */ 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x20000000, 0x00000040, 0x00200028, 0x00000000, } }, - { { /* 499 */ + { { /* 523 */ 0x00000000, 0x00020000, 0x00000000, 0x02000000, 0x00000000, 0x02000000, 0x40020000, 0x51000040, } }, - { { /* 500 */ + { { /* 524 */ 0x00000080, 0x04040000, 0x00000000, 0x10000000, 0x00022000, 0x00100000, 0x20000000, 0x00000082, } }, - { { /* 501 */ + { { /* 525 */ 0x40000000, 0x00010000, 0x00002000, 0x00000000, 0x00000240, 0x00000000, 0x00000000, 0x00000008, } }, - { { /* 502 */ + { { /* 526 */ 0x00000000, 0x00010000, 0x00000810, 0x00080880, 0x00004000, 0x00000000, 0x00000000, 0x00020000, } }, - { { /* 503 */ + { { /* 527 */ 0x00000000, 0x00400020, 0x00000000, 0x00000082, 0x00000000, 0x00020001, 0x00000000, 0x00000000, } }, - { { /* 504 */ + { { /* 528 */ 0x40000018, 0x00000004, 0x00000000, 0x00000000, 0x01000000, 0x00400000, 0x00000000, 0x00000000, } }, - { { /* 505 */ + { { /* 529 */ 0x00000001, 0x00400000, 0x00000000, 0x00080002, 0x00000400, 0x00040000, 0x00000000, 0x00000000, } }, - { { /* 506 */ + { { /* 530 */ 0x00000800, 0x00000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, } }, - { { /* 507 */ + { { /* 531 */ 0x00000000, 0x00200000, 0x00000000, 0x04108000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, } }, - { { /* 508 */ + { { /* 532 */ 0x00000000, 0x02800000, 0x04000000, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000400, } }, - { { /* 509 */ + { { /* 533 */ 0x00000000, 0x00000000, 0x10000000, 0x00040000, 0x00400000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 510 */ + { { /* 534 */ 0x00200000, 0x00000200, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x2a000000, 0x00000000, } }, - { { /* 511 */ + { { /* 535 */ 0x00400000, 0x00000000, 0x00400000, 0x00000000, 0x00000002, 0x40000000, 0x00000000, 0x00400000, } }, - { { /* 512 */ + { { /* 536 */ 0x40000000, 0x00001000, 0x00000000, 0x00000000, 0x00000202, 0x02000000, 0x80000000, 0x00020000, } }, - { { /* 513 */ + { { /* 537 */ 0x00000020, 0x00000800, 0x00020421, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00400000, } }, - { { /* 514 */ + { { /* 538 */ 0x00200000, 0x00000000, 0x00000001, 0x00000000, 0x00000084, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 515 */ + { { /* 539 */ 0x00000000, 0x00004400, 0x00000002, 0x00100000, 0x00000000, 0x00000000, 0x00008200, 0x00000000, } }, - { { /* 516 */ + { { /* 540 */ 0x00000000, 0x12000000, 0x00000100, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 517 */ + { { /* 541 */ 0x00000020, 0x08100000, 0x000a0400, 0x00000081, 0x00006000, 0x00120000, 0x00000000, 0x00000000, } }, - { { /* 518 */ + { { /* 542 */ 0x00000004, 0x08000000, 0x00004000, 0x044000c0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 519 */ + { { /* 543 */ 0x40001000, 0x00000000, 0x01000001, 0x05000000, 0x00080000, 0x02000000, 0x00000800, 0x00000000, } }, - { { /* 520 */ + { { /* 544 */ 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00002002, 0x01020000, 0x00800000, 0x00000000, } }, - { { /* 521 */ + { { /* 545 */ 0x00000040, 0x00004000, 0x01000000, 0x00000004, 0x00020000, 0x00000000, 0x00000010, 0x00000000, } }, - { { /* 522 */ + { { /* 546 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00010000, 0x30000300, 0x00000400, } }, - { { /* 523 */ + { { /* 547 */ 0x00000800, 0x02000000, 0x00000000, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 524 */ + { { /* 548 */ 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000040c0, 0x00002200, 0x12002000, } }, - { { /* 525 */ + { { /* 549 */ 0x00000000, 0x00000020, 0x20000000, 0x00000000, 0x00000200, 0x00080800, 0x1000a000, 0x00000000, } }, - { { /* 526 */ + { { /* 550 */ 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 527 */ + { { /* 551 */ 0x00000000, 0x00000000, 0x00004280, 0x01000000, 0x00800000, 0x00000008, 0x00000000, 0x00000000, } }, - { { /* 528 */ + { { /* 552 */ 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x20400000, 0x00000040, 0x00000000, } }, - { { /* 529 */ + { { /* 553 */ 0x00800080, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00400020, 0x00000000, 0x00008000, } }, - { { /* 530 */ + { { /* 554 */ 0x01000000, 0x00000040, 0x00000000, 0x00400000, 0x00000000, 0x00000440, 0x00000000, 0x00800000, } }, - { { /* 531 */ + { { /* 555 */ 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00000000, } }, - { { /* 532 */ + { { /* 556 */ 0x01000000, 0x00000001, 0x00000000, 0x00020000, 0x00000000, 0x20002000, 0x00000000, 0x00000004, } }, - { { /* 533 */ + { { /* 557 */ 0x00000008, 0x00100000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 534 */ + { { /* 558 */ 0x00000004, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008000, } }, - { { /* 535 */ + { { /* 559 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000000, 0x00004000, 0x00000000, } }, - { { /* 536 */ + { { /* 560 */ 0x00000010, 0x00002000, 0x40000040, 0x00000000, 0x10000000, 0x00000000, 0x00008080, 0x00000000, } }, - { { /* 537 */ + { { /* 561 */ 0x00000000, 0x00000000, 0x00000080, 0x00000000, 0x00100080, 0x000000a0, 0x00000000, 0x00000000, } }, - { { /* 538 */ + { { /* 562 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 539 */ + { { /* 563 */ 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x0001000a, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 540 */ + { { /* 564 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08002000, 0x00000000, } }, - { { /* 541 */ + { { /* 565 */ 0x00000808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 542 */ + { { /* 566 */ 0x00004000, 0x00002400, 0x00008000, 0x40000000, 0x00000001, 0x00002000, 0x04000000, 0x00040004, } }, - { { /* 543 */ + { { /* 567 */ 0x00000000, 0x00002000, 0x00000000, 0x00000000, 0x00000000, 0x1c200000, 0x00000000, 0x02000000, } }, - { { /* 544 */ + { { /* 568 */ 0x00000000, 0x00080000, 0x00400000, 0x00000002, 0x00000000, 0x00000100, 0x00000000, 0x00000000, } }, - { { /* 545 */ + { { /* 569 */ 0x00000000, 0x00000000, 0x00000000, 0x00400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 546 */ + { { /* 570 */ 0x00004100, 0x00000400, 0x20200010, 0x00004004, 0x00000000, 0x42000000, 0x00000000, 0x00000000, } }, - { { /* 547 */ + { { /* 571 */ 0x00000080, 0x00000000, 0x00000121, 0x00000200, 0x000000b0, 0x80002000, 0x00000000, 0x00010000, } }, - { { /* 548 */ + { { /* 572 */ 0x00000010, 0x000000c0, 0x08100000, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 549 */ + { { /* 573 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x00000404, 0x00000000, 0x00000000, } }, - { { /* 550 */ + { { /* 574 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400000, 0x00000008, 0x00000000, 0x00000000, } }, - { { /* 551 */ + { { /* 575 */ 0x00000000, 0x00000002, 0x00020000, 0x00002000, 0x00000000, 0x00000000, 0x00000000, 0x00204000, } }, - { { /* 552 */ + { { /* 576 */ 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00800000, 0x00000100, 0x00000001, } }, - { { /* 553 */ + { { /* 577 */ 0x10000000, 0x01000000, 0x00002400, 0x00000004, 0x00000000, 0x00000000, 0x00000020, 0x00000002, } }, - { { /* 554 */ + { { /* 578 */ 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 555 */ + { { /* 579 */ 0x00000000, 0x00002400, 0x00000000, 0x00000000, 0x00004802, 0x00000000, 0x00000000, 0x80022000, } }, - { { /* 556 */ + { { /* 580 */ 0x00001004, 0x04208000, 0x20000020, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 557 */ + { { /* 581 */ 0x00000000, 0x00100000, 0x40010000, 0x00000000, 0x00080000, 0x00000000, 0x00100211, 0x00000000, } }, - { { /* 558 */ + { { /* 582 */ 0x00001400, 0x00000000, 0x00000000, 0x00000000, 0x00610000, 0x80008c00, 0x00000000, 0x00000000, } }, - { { /* 559 */ + { { /* 583 */ 0x00000100, 0x00000040, 0x00000000, 0x00000004, 0x00004000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 560 */ + { { /* 584 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000000, } }, - { { /* 561 */ + { { /* 585 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000210, 0x00000000, 0x00000000, } }, - { { /* 562 */ + { { /* 586 */ 0x00000000, 0x00000020, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 563 */ + { { /* 587 */ 0x00004000, 0x00000000, 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 564 */ + { { /* 588 */ 0x00000000, 0x00000000, 0x00080002, 0x01000020, 0x00400000, 0x00200000, 0x00008000, 0x00000000, } }, - { { /* 565 */ + { { /* 589 */ 0x00000000, 0x00020000, 0x00000000, 0xc0020000, 0x10000000, 0x00000080, 0x00000000, 0x00000000, } }, - { { /* 566 */ + { { /* 590 */ 0x00000210, 0x00000000, 0x00001000, 0x04480000, 0x20000000, 0x00000004, 0x00800000, 0x02000000, } }, - { { /* 567 */ + { { /* 591 */ 0x00000000, 0x08006000, 0x00001000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000400, } }, - { { /* 568 */ + { { /* 592 */ 0x00100000, 0x00000000, 0x10000000, 0x08608000, 0x00000000, 0x00000000, 0x00080002, 0x00000000, } }, - { { /* 569 */ + { { /* 593 */ 0x00000000, 0x20000000, 0x00008020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 570 */ + { { /* 594 */ 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 571 */ + { { /* 595 */ 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 572 */ + { { /* 596 */ 0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 573 */ + { { /* 597 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, } }, - { { /* 574 */ + { { /* 598 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x00000000, } }, - { { /* 575 */ + { { /* 599 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, } }, - { { /* 576 */ + { { /* 600 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000, } }, - { { /* 577 */ + { { /* 601 */ 0x00000000, 0x00000000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000000, } }, - { { /* 578 */ + { { /* 602 */ 0x00000000, 0x00000000, 0x00220000, 0x00000004, 0x00000000, 0x00040000, 0x00000004, 0x00000000, } }, - { { /* 579 */ + { { /* 603 */ 0x00000000, 0x00000000, 0x00001000, 0x00000080, 0x00002000, 0x00000000, 0x00000000, 0x00004000, } }, - { { /* 580 */ + { { /* 604 */ 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 581 */ - 0x00000000, 0x00020000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - } }, - { { /* 582 */ + { { /* 605 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 583 */ + { { /* 606 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04000000, 0x00000000, 0x00000000, } }, - { { /* 584 */ + { { /* 607 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 585 */ + { { /* 608 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 586 */ + { { /* 609 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00000000, } }, - { { /* 587 */ + { { /* 610 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0x00000000, 0x00000400, } }, - { { /* 588 */ + { { /* 611 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x00000000, 0x00000000, } }, - { { /* 589 */ + { { /* 612 */ 0x00000000, 0x00000800, 0x00000100, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 590 */ + { { /* 613 */ 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 591 */ + { { /* 614 */ 0x00000000, 0x00000000, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 592 */ + { { /* 615 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04000000, 0x00000000, } }, - { { /* 593 */ + { { /* 616 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001000, 0x00000000, } }, - { { /* 594 */ + { { /* 617 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 595 */ + { { /* 618 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04040000, } }, - { { /* 596 */ + { { /* 619 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 597 */ + { { /* 620 */ 0x00000000, 0x00000000, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 598 */ + { { /* 621 */ 0x00000000, 0x00200000, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 599 */ + { { /* 622 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 600 */ + { { /* 623 */ 0x00000000, 0x00000000, 0x00000000, 0x04000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, } }, - { { /* 601 */ + { { /* 624 */ 0x00000000, 0x40000000, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 602 */ + { { /* 625 */ 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 603 */ + { { /* 626 */ 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, } }, - { { /* 604 */ + { { /* 627 */ 0x00000000, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 605 */ + { { /* 628 */ 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, } }, - { { /* 606 */ + { { /* 629 */ 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 607 */ + { { /* 630 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000001, 0x00000000, } }, - { { /* 608 */ + { { /* 631 */ 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 609 */ + { { /* 632 */ 0x00000000, 0x00000000, 0x00004040, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 610 */ + { { /* 633 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00042400, 0x00000000, } }, - { { /* 611 */ + { { /* 634 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 612 */ + { { /* 635 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000080, } }, - { { /* 613 */ + { { /* 636 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, } }, - { { /* 614 */ + { { /* 637 */ 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 615 */ + { { /* 638 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00000000, } }, - { { /* 616 */ + { { /* 639 */ 0x00000000, 0x00000000, 0x00002000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 617 */ + { { /* 640 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 618 */ + { { /* 641 */ 0x00000000, 0x00040000, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 619 */ + { { /* 642 */ 0xc373ff8b, 0x1b0f6840, 0xf34ce9ac, 0xc0080200, 0xca3e795c, 0x06487976, 0xf7f02fdf, 0xa8ff033a, } }, - { { /* 620 */ + { { /* 643 */ 0x233fef37, 0xfd59b004, 0xfffff3ca, 0xfff9de9f, 0x7df7abff, 0x8eecc000, 0xffdbeebf, 0x45fad003, } }, - { { /* 621 */ + { { /* 644 */ 0xdffefae1, 0x10abbfef, 0xfcaaffeb, 0x24fdef3f, 0x7f7678ad, 0xedfff00c, 0x2cfacff6, 0xeb6bf7f9, } }, - { { /* 622 */ + { { /* 645 */ 0x95bf1ffd, 0xbfbf6677, 0xfeb43bfb, 0x11e27bae, 0x41bea681, 0x72c31435, 0x71917d70, 0x276b0003, } }, - { { /* 623 */ + { { /* 646 */ 0x70cf57cb, 0x0def4732, 0xfc747eda, 0xbdb4fe06, 0x8bca3f9f, 0x58007e49, 0xebec228f, 0xddbb8a5c, } }, - { { /* 624 */ + { { /* 647 */ 0xb6e7ef60, 0xf293a40f, 0x549e37bb, 0x9bafd04b, 0xf7d4c414, 0x0a1430b0, 0x88d02f08, 0x192fff7e, } }, - { { /* 625 */ + { { /* 648 */ 0xfb07ffda, 0x7beb7ff1, 0x0010c5ef, 0xfdff99ff, 0x056779d7, 0xfdcbffe7, 0x4040c3ff, 0xbd8e6ff7, } }, - { { /* 626 */ + { { /* 649 */ 0x0497dffa, 0x5bfff4c0, 0xd0e7ed7b, 0xf8e0047e, 0xb73eff9f, 0x882e7dfe, 0xbe7ffffd, 0xf6c483fe, } }, - { { /* 627 */ + { { /* 650 */ 0xb8fdf357, 0xef7dd680, 0x47885767, 0xc3dfff7d, 0x37a9f0ff, 0x70fc7de0, 0xec9a3f6f, 0x86814cb3, } }, - { { /* 628 */ + { { /* 651 */ 0xdd5c3f9e, 0x4819f70d, 0x0007fea3, 0x38ffaf56, 0xefb8980d, 0xb760403d, 0x9035d8ce, 0x3fff72bf, } }, - { { /* 629 */ + { { /* 652 */ 0x7a117ff7, 0xabfff7bb, 0x6fbeff00, 0xfe72a93c, 0xf11bcfef, 0xf40adb6b, 0xef7ec3e6, 0xf6109b9c, } }, - { { /* 630 */ + { { /* 653 */ 0x16f4f048, 0x5182feb5, 0x15bbc7b1, 0xfbdf6e87, 0x63cde43f, 0x7e7ec1ff, 0x7d5ffdeb, 0xfcfe777b, } }, - { { /* 631 */ + { { /* 654 */ 0xdbea960b, 0x53e86229, 0xfdef37df, 0xbd8136f5, 0xfcbddc18, 0xffffd2e4, 0xffe03fd7, 0xabf87f6f, } }, - { { /* 632 */ + { { /* 655 */ 0x6ed99bae, 0xf115f5fb, 0xbdfb79a9, 0xadaf5a3c, 0x1facdbba, 0x837971fc, 0xc35f7cf7, 0x0567dfff, } }, - { { /* 633 */ + { { /* 656 */ 0x8467ff9a, 0xdf8b1534, 0x3373f9f3, 0x5e1af7bd, 0xa03fbf40, 0x01ebffff, 0xcfdddfc0, 0xabd37500, } }, - { { /* 634 */ + { { /* 657 */ 0xeed6f8c3, 0xb7ff43fd, 0x42275eaf, 0xf6869bac, 0xf6bc27d7, 0x35b7f787, 0xe176aacd, 0xe29f49e7, } }, - { { /* 635 */ + { { /* 658 */ 0xaff2545c, 0x61d82b3f, 0xbbb8fc3b, 0x7b7dffcf, 0x1ce0bf95, 0x43ff7dfd, 0xfffe5ff6, 0xc4ced3ef, } }, - { { /* 636 */ + { { /* 659 */ 0xadbc8db6, 0x11eb63dc, 0x23d0df59, 0xf3dbbeb4, 0xdbc71fe7, 0xfae4ff63, 0x63f7b22b, 0xadbaed3b, } }, - { { /* 637 */ + { { /* 660 */ 0x7efffe01, 0x02bcfff7, 0xef3932ff, 0x8005fffc, 0xbcf577fb, 0xfff7010d, 0xbf3afffb, 0xdfff0057, } }, - { { /* 638 */ + { { /* 661 */ 0xbd7def7b, 0xc8d4db88, 0xed7cfff3, 0x56ff5dee, 0xac5f7e0d, 0xd57fff96, 0xc1403fee, 0xffe76ff9, } }, - { { /* 639 */ + { { /* 662 */ 0x8e77779b, 0xe45d6ebf, 0x5f1f6fcf, 0xfedfe07f, 0x01fed7db, 0xfb7bff00, 0x1fdfffd4, 0xfffff800, } }, - { { /* 640 */ + { { /* 663 */ 0x007bfb8f, 0x7f5cbf00, 0x07f3ffff, 0x3de7eba0, 0xfbd7f7bf, 0x6003ffbf, 0xbfedfffd, 0x027fefbb, } }, - { { /* 641 */ + { { /* 664 */ 0xddfdfe40, 0xe2f9fdff, 0xfb1f680b, 0xaffdfbe3, 0xf7ed9fa4, 0xf80f7a7d, 0x0fd5eebe, 0xfd9fbb5d, } }, - { { /* 642 */ + { { /* 665 */ 0x3bf9f2db, 0xebccfe7f, 0x73fa876a, 0x9ffc95fc, 0xfaf7109f, 0xbbcdddb7, 0xeccdf87e, 0x3c3ff366, } }, - { { /* 643 */ + { { /* 666 */ 0xb03ffffd, 0x067ee9f7, 0xfe0696ae, 0x5fd7d576, 0xa3f33fd1, 0x6fb7cf07, 0x7f449fd1, 0xd3dd7b59, } }, - { { /* 644 */ + { { /* 667 */ 0xa9bdaf3b, 0xff3a7dcf, 0xf6ebfbe0, 0xffffb401, 0xb7bf7afa, 0x0ffdc000, 0xff1fff7f, 0x95fffefc, } }, - { { /* 645 */ + { { /* 668 */ 0xb5dc0000, 0x3f3eef63, 0x001bfb7f, 0xfbf6e800, 0xb8df9eef, 0x003fff9f, 0xf5ff7bd0, 0x3fffdfdb, } }, - { { /* 646 */ + { { /* 669 */ 0x00bffdf0, 0xbbbd8420, 0xffdedf37, 0x0ff3ff6d, 0x5efb604c, 0xfafbfffb, 0x0219fe5e, 0xf9de79f4, } }, - { { /* 647 */ + { { /* 670 */ 0xebfaa7f7, 0xff3401eb, 0xef73ebd3, 0xc040afd7, 0xdcff72bb, 0x2fd8f17f, 0xfe0bb8ec, 0x1f0bdda3, } }, - { { /* 648 */ + { { /* 671 */ 0x47cf8f1d, 0xffdeb12b, 0xda737fee, 0xcbc424ff, 0xcbf2f75d, 0xb4edecfd, 0x4dddbff9, 0xfb8d99dd, } }, - { { /* 649 */ + { { /* 672 */ 0xaf7bbb7f, 0xc959ddfb, 0xfab5fc4f, 0x6d5fafe3, 0x3f7dffff, 0xffdb7800, 0x7effb6ff, 0x022ffbaf, } }, - { { /* 650 */ + { { /* 673 */ 0xefc7ff9b, 0xffffffa5, 0xc7000007, 0xfff1f7ff, 0x01bf7ffd, 0xfdbcdc00, 0xffffbff5, 0x3effff7f, } }, - { { /* 651 */ + { { /* 674 */ 0xbe000029, 0xff7ff9ff, 0xfd7e6efb, 0x039ecbff, 0xfbdde300, 0xf6dfccff, 0x117fffff, 0xfbf6f800, } }, - { { /* 652 */ + { { /* 675 */ 0xd73ce7ef, 0xdfeffeef, 0xedbfc00b, 0xfdcdfedf, 0x40fd7bf5, 0xb75fffff, 0xf930ffdf, 0xdc97fbdf, } }, - { { /* 653 */ + { { /* 676 */ 0xbff2fef3, 0xdfbf8fdf, 0xede6177f, 0x35530f7f, 0x877e447c, 0x45bbfa12, 0x779eede0, 0xbfd98017, } }, - { { /* 654 */ + { { /* 677 */ 0xde897e55, 0x0447c16f, 0xf75d7ade, 0x290557ff, 0xfe9586f7, 0xf32f97b3, 0x9f75cfff, 0xfb1771f7, } }, - { { /* 655 */ + { { /* 678 */ 0xee1934ee, 0xef6137cc, 0xef4c9fd6, 0xfbddd68f, 0x6def7b73, 0xa431d7fe, 0x97d75e7f, 0xffd80f5b, } }, - { { /* 656 */ + { { /* 679 */ 0x7bce9d83, 0xdcff22ec, 0xef87763d, 0xfdeddfe7, 0xa0fc4fff, 0xdbfc3b77, 0x7fdc3ded, 0xf5706fa9, } }, - { { /* 657 */ + { { /* 680 */ 0x2c403ffb, 0x847fff7f, 0xdeb7ec57, 0xf22fe69c, 0xd5b50feb, 0xede7afeb, 0xfff08c2f, 0xe8f0537f, } }, - { { /* 658 */ + { { /* 681 */ 0xb5ffb99d, 0xe78fff66, 0xbe10d981, 0xe3c19c7c, 0x27339cd1, 0xff6d0cbc, 0xefb7fcb7, 0xffffa0df, } }, - { { /* 659 */ + { { /* 682 */ 0xfe7bbf0b, 0x353fa3ff, 0x97cd13cc, 0xfb277637, 0x7e6ccfd6, 0xed31ec50, 0xfc1c677c, 0x5fbff6fa, } }, - { { /* 660 */ + { { /* 683 */ 0xae2f0fba, 0x7ffea3ad, 0xde74fcf0, 0xf200ffef, 0xfea2fbbf, 0xbcff3daf, 0x5fb9f694, 0x3f8ff3ad, } }, - { { /* 661 */ + { { /* 684 */ 0xa01ff26c, 0x01bfffef, 0x70057728, 0xda03ff35, 0xc7fad2f9, 0x5c1d3fbf, 0xec33ff3a, 0xfe9cb7af, } }, - { { /* 662 */ + { { /* 685 */ 0x7a9f5236, 0xe722bffa, 0xfcff9ff7, 0xb61d2fbb, 0x1dfded06, 0xefdf7dd7, 0xf166eb23, 0x0dc07ed9, } }, - { { /* 663 */ + { { /* 686 */ 0xdfbf3d3d, 0xba83c945, 0x9dd07dd1, 0xcf737b87, 0xc3f59ff3, 0xc5fedf0d, 0x83020cb3, 0xaec0e879, } }, - { { /* 664 */ + { { /* 687 */ 0x6f0fc773, 0x093ffd7d, 0x0157fff1, 0x01ff62fb, 0x3bf3fdb4, 0x43b2b013, 0xff305ed3, 0xeb9f0fff, } }, - { { /* 665 */ + { { /* 688 */ 0xf203feef, 0xfb893fef, 0x9e9937a9, 0xa72cdef9, 0xc1f63733, 0xfe3e812e, 0xf2f75d20, 0x69d7d585, } }, - { { /* 666 */ + { { /* 689 */ 0xffffffff, 0xff6fdb07, 0xd97fc4ff, 0xbe0fefce, 0xf05ef17b, 0xffb7f6cf, 0xef845ef7, 0x0edfd7cb, } }, - { { /* 667 */ + { { /* 690 */ 0xfcffff08, 0xffffee3f, 0xd7ff13ff, 0x7ffdaf0f, 0x1ffabdc7, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 668 */ + { { /* 691 */ 0x00000000, 0xe7400000, 0xf933bd38, 0xfeed7feb, 0x7c767fe8, 0xffefb3f7, 0xd8b7feaf, 0xfbbfff6f, } }, - { { /* 669 */ + { { /* 692 */ 0xdbf7f8fb, 0xe2f91752, 0x754785c8, 0xe3ef9090, 0x3f6d9ef4, 0x0536ee2e, 0x7ff3f7bc, 0x7f3fa07b, } }, - { { /* 670 */ + { { /* 693 */ 0xeb600567, 0x6601babe, 0x583ffcd8, 0x87dfcaf7, 0xffa0bfcd, 0xfebf5bcd, 0xefa7b6fd, 0xdf9c77ef, } }, - { { /* 671 */ + { { /* 694 */ 0xf8773fb7, 0xb7fc9d27, 0xdfefcab5, 0xf1b6fb5a, 0xef1fec39, 0x7ffbfbbf, 0xdafe000d, 0x4e7fbdfb, } }, - { { /* 672 */ + { { /* 695 */ 0x5ac033ff, 0x9ffebff5, 0x005fffbf, 0xfdf80000, 0x6ffdffca, 0xa001cffd, 0xfbf2dfff, 0xff7fdfbf, } }, - { { /* 673 */ + { { /* 696 */ 0x080ffeda, 0xbfffba08, 0xeed77afd, 0x67f9fbeb, 0xff93e044, 0x9f57df97, 0x08dffef7, 0xfedfdf80, } }, - { { /* 674 */ + { { /* 697 */ 0xf7feffc5, 0x6803fffb, 0x6bfa67fb, 0x5fe27fff, 0xff73ffff, 0xe7fb87df, 0xf7a7ebfd, 0xefc7bf7e, } }, - { { /* 675 */ + { { /* 698 */ 0xdf821ef3, 0xdf7e76ff, 0xda7d79c9, 0x1e9befbe, 0x77fb7ce0, 0xfffb87be, 0xffdb1bff, 0x4fe03f5c, } }, - { { /* 676 */ + { { /* 699 */ 0x5f0e7fff, 0xddbf77ff, 0xfffff04f, 0x0ff8ffff, 0xfddfa3be, 0xfffdfc1c, 0xfb9e1f7d, 0xdedcbdff, } }, - { { /* 677 */ + { { /* 700 */ 0xbafb3f6f, 0xfbefdf7f, 0x2eec7d1b, 0xf2f7af8e, 0xcfee7b0f, 0x77c61d96, 0xfff57e07, 0x7fdfd982, } }, - { { /* 678 */ + { { /* 701 */ 0xc7ff5ee6, 0x79effeee, 0xffcf9a56, 0xde5efe5f, 0xf9e8896e, 0xe6c4f45e, 0xbe7c0001, 0xdddf3b7f, } }, - { { /* 679 */ + { { /* 702 */ 0xe9efd59d, 0xde5334ac, 0x4bf7f573, 0x9eff7b4f, 0x476eb8fe, 0xff450dfb, 0xfbfeabfd, 0xddffe9d7, } }, - { { /* 680 */ + { { /* 703 */ 0x7fffedf7, 0x7eebddfd, 0xb7ffcfe7, 0xef91bde9, 0xd77c5d75, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 681 */ + { { /* 704 */ 0x00000000, 0xfa800000, 0xb4f1ffee, 0x2fefbf76, 0x77bfb677, 0xfffd9fbf, 0xf6ae95bf, 0x7f3b75ff, } }, - { { /* 682 */ + { { /* 705 */ 0x0af9a7f5, 0x00000000, 0x00000000, 0x2bddfbd0, 0x9a7ff633, 0xd6fcfdab, 0xbfebf9e6, 0xf41fdfdf, } }, - { { /* 683 */ + { { /* 706 */ 0xffffa6fd, 0xf37b4aff, 0xfef97fb7, 0x1d5cb6ff, 0xe5ff7ff6, 0x24041f7b, 0xf99ebe05, 0xdff2dbe3, } }, - { { /* 684 */ + { { /* 707 */ 0xfdff6fef, 0xcbfcd679, 0xefffebfd, 0x0000001f, 0x98000000, 0x8017e148, 0x00fe6a74, 0xfdf16d7f, } }, - { { /* 685 */ + { { /* 708 */ 0xfef3b87f, 0xf176e01f, 0x7b3fee96, 0xfffdeb8d, 0xcbb3adff, 0xe17f84ef, 0xbff04daa, 0xfe3fbf3f, } }, - { { /* 686 */ + { { /* 709 */ 0xffd7ebff, 0xcf7fffdf, 0x85edfffb, 0x07bcd73f, 0xfe0faeff, 0x76bffdaf, 0x37bbfaef, 0xa3ba7fdc, } }, - { { /* 687 */ + { { /* 710 */ 0x56f7b6ff, 0xe7df60f8, 0x4cdfff61, 0xff45b0fb, 0x3ffa7ded, 0x18fc1fff, 0xe3afffff, 0xdf83c7d3, } }, - { { /* 688 */ + { { /* 711 */ 0xef7dfb57, 0x1378efff, 0x5ff7fec0, 0x5ee334bb, 0xeff6f70d, 0x00bfd7fe, 0xf7f7f59d, 0xffe051de, } }, - { { /* 689 */ + { { /* 712 */ 0x037ffec9, 0xbfef5f01, 0x60a79ff1, 0xf1ffef1d, 0x0000000f, 0x00000000, 0x00000000, 0x00000000, } }, - { { /* 690 */ + { { /* 713 */ 0x00000000, 0x00000000, 0x00000000, 0x3c800000, 0xd91ffb4d, 0xfee37b3a, 0xdc7f3fe9, 0x0000003f, } }, - { { /* 691 */ + { { /* 714 */ 0x50000000, 0xbe07f51f, 0xf91bfc1d, 0x71ffbc1e, 0x5bbe6ff9, 0x9b1b5796, 0xfffc7fff, 0xafe7872e, } }, - { { /* 692 */ + { { /* 715 */ 0xf34febf5, 0xe725dffd, 0x5d440bdc, 0xfddd5747, 0x7790ed3f, 0x8ac87d7f, 0xf3f9fafa, 0xef4b202a, } }, - { { /* 693 */ + { { /* 716 */ 0x79cff5ff, 0x0ba5abd3, 0xfb8ff77a, 0x001f8ebd, 0x00000000, 0xfd4ef300, 0x88001a57, 0x7654aeac, } }, - { { /* 694 */ + { { /* 717 */ 0xcdff17ad, 0xf42fffb2, 0xdbff5baa, 0x00000002, 0x73c00000, 0x2e3ff9ea, 0xbbfffa8e, 0xffd376bc, } }, - { { /* 695 */ + { { /* 718 */ 0x7e72eefe, 0xe7f77ebd, 0xcefdf77f, 0x00000ff5, 0x00000000, 0xdb9ba900, 0x917fa4c7, 0x7ecef8ca, } }, - { { /* 696 */ + { { /* 719 */ 0xc7e77d7a, 0xdcaecbbd, 0x8f76fd7e, 0x7cf391d3, 0x4c2f01e5, 0xa360ed77, 0x5ef807db, 0x21811df7, } }, - { { /* 697 */ + { { /* 720 */ 0x309c6be0, 0xfade3b3a, 0xc3f57f53, 0x07ba61cd, 0x00000000, 0x00000000, 0x00000000, 0xbefe26e0, } }, - { { /* 698 */ + { { /* 721 */ 0xebb503f9, 0xe9cbe36d, 0xbfde9c2f, 0xabbf9f83, 0xffd51ff7, 0xdffeb7df, 0xffeffdae, 0xeffdfb7e, } }, - { { /* 699 */ + { { /* 722 */ 0x6ebfaaff, 0x00000000, 0x00000000, 0xb6200000, 0xbe9e7fcd, 0x58f162b3, 0xfd7bf10d, 0xbefde9f1, } }, - { { /* 700 */ + { { /* 723 */ 0x5f6dc6c3, 0x69ffff3d, 0xfbf4ffcf, 0x4ff7dcfb, 0x11372000, 0x00000015, 0x00000000, 0x00000000, } }, - { { /* 701 */ + { { /* 724 */ 0x00003000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } }, @@ -3475,112 +3569,120 @@ static const struct { LEAF(398,352), /* uk */ LEAF(399,353), + /* und_zmth */ + LEAF(400,354), LEAF(400,355), LEAF(400,356), LEAF(400,357), + LEAF(400,358), LEAF(400,359), LEAF(400,360), LEAF(400,361), + LEAF(400,362), LEAF(400,363), LEAF(400,364), LEAF(400,365), + /* und_zsye */ + LEAF(412,366), LEAF(412,367), LEAF(412,368), LEAF(412,369), + LEAF(412,370), LEAF(412,371), LEAF(412,372), LEAF(412,373), + LEAF(412,374), LEAF(412,375), LEAF(412,376), LEAF(412,377), /* ve */ - LEAF(400, 23), LEAF(400,354), + LEAF(424, 23), LEAF(424,378), /* vi */ - LEAF(402,355), LEAF(402,356), LEAF(402,357), LEAF(402,358), + LEAF(426,379), LEAF(426,380), LEAF(426,381), LEAF(426,382), /* vo */ - LEAF(406,359), + LEAF(430,383), /* vot */ - LEAF(407,360), LEAF(407, 74), + LEAF(431,384), LEAF(431, 74), /* wa */ - LEAF(409,361), + LEAF(433,385), /* wen */ - LEAF(410, 99), LEAF(410,362), + LEAF(434, 99), LEAF(434,386), /* wo */ - LEAF(412,363), LEAF(412,269), + LEAF(436,387), LEAF(436,269), /* yap */ - LEAF(414,364), + LEAF(438,388), /* yo */ - LEAF(415,365), LEAF(415,366), LEAF(415,367), LEAF(415,368), + LEAF(439,389), LEAF(439,390), LEAF(439,391), LEAF(439,392), /* zh_cn */ - LEAF(419,369), LEAF(419,370), LEAF(419,371), LEAF(419,372), - LEAF(419,373), LEAF(419,374), LEAF(419,375), LEAF(419,376), - LEAF(419,377), LEAF(419,378), LEAF(419,379), LEAF(419,380), - LEAF(419,381), LEAF(419,382), LEAF(419,383), LEAF(419,384), - LEAF(419,385), LEAF(419,386), LEAF(419,387), LEAF(419,388), - LEAF(419,389), LEAF(419,390), LEAF(419,391), LEAF(419,392), - LEAF(419,393), LEAF(419,394), LEAF(419,395), LEAF(419,396), - LEAF(419,397), LEAF(419,398), LEAF(419,399), LEAF(419,400), - LEAF(419,401), LEAF(419,402), LEAF(419,403), LEAF(419,404), - LEAF(419,405), LEAF(419,406), LEAF(419,407), LEAF(419,408), - LEAF(419,409), LEAF(419,410), LEAF(419,411), LEAF(419,412), - LEAF(419,413), LEAF(419,414), LEAF(419,415), LEAF(419,416), - LEAF(419,417), LEAF(419,418), LEAF(419,419), LEAF(419,420), - LEAF(419,421), LEAF(419,422), LEAF(419,423), LEAF(419,424), - LEAF(419,425), LEAF(419,426), LEAF(419,427), LEAF(419,428), - LEAF(419,429), LEAF(419,430), LEAF(419,431), LEAF(419,432), - LEAF(419,433), LEAF(419,434), LEAF(419,435), LEAF(419,436), - LEAF(419,437), LEAF(419,438), LEAF(419,439), LEAF(419,440), - LEAF(419,441), LEAF(419,442), LEAF(419,443), LEAF(419,444), - LEAF(419,445), LEAF(419,446), LEAF(419,447), LEAF(419,448), - LEAF(419,449), LEAF(419,450), + LEAF(443,393), LEAF(443,394), LEAF(443,395), LEAF(443,396), + LEAF(443,397), LEAF(443,398), LEAF(443,399), LEAF(443,400), + LEAF(443,401), LEAF(443,402), LEAF(443,403), LEAF(443,404), + LEAF(443,405), LEAF(443,406), LEAF(443,407), LEAF(443,408), + LEAF(443,409), LEAF(443,410), LEAF(443,411), LEAF(443,412), + LEAF(443,413), LEAF(443,414), LEAF(443,415), LEAF(443,416), + LEAF(443,417), LEAF(443,418), LEAF(443,419), LEAF(443,420), + LEAF(443,421), LEAF(443,422), LEAF(443,423), LEAF(443,424), + LEAF(443,425), LEAF(443,426), LEAF(443,427), LEAF(443,428), + LEAF(443,429), LEAF(443,430), LEAF(443,431), LEAF(443,432), + LEAF(443,433), LEAF(443,434), LEAF(443,435), LEAF(443,436), + LEAF(443,437), LEAF(443,438), LEAF(443,439), LEAF(443,440), + LEAF(443,441), LEAF(443,442), LEAF(443,443), LEAF(443,444), + LEAF(443,445), LEAF(443,446), LEAF(443,447), LEAF(443,448), + LEAF(443,449), LEAF(443,450), LEAF(443,451), LEAF(443,452), + LEAF(443,453), LEAF(443,454), LEAF(443,455), LEAF(443,456), + LEAF(443,457), LEAF(443,458), LEAF(443,459), LEAF(443,460), + LEAF(443,461), LEAF(443,462), LEAF(443,463), LEAF(443,464), + LEAF(443,465), LEAF(443,466), LEAF(443,467), LEAF(443,468), + LEAF(443,469), LEAF(443,470), LEAF(443,471), LEAF(443,472), + LEAF(443,473), LEAF(443,474), /* zh_hk */ - LEAF(501,451), LEAF(501,452), LEAF(501,453), LEAF(501,454), - LEAF(501,455), LEAF(501,456), LEAF(501,457), LEAF(501,458), - LEAF(501,459), LEAF(501,460), LEAF(501,461), LEAF(501,462), - LEAF(501,463), LEAF(501,464), LEAF(501,465), LEAF(501,466), - LEAF(501,467), LEAF(501,468), LEAF(501,469), LEAF(501,470), - LEAF(501,471), LEAF(501,472), LEAF(501,473), LEAF(501,474), - LEAF(501,475), LEAF(501,476), LEAF(501,477), LEAF(501,478), - LEAF(501,479), LEAF(501,480), LEAF(501,481), LEAF(501,482), - LEAF(501,483), LEAF(501,484), LEAF(501,485), LEAF(501,486), - LEAF(501,487), LEAF(501,488), LEAF(501,489), LEAF(501,490), - LEAF(501,491), LEAF(501,492), LEAF(501,493), LEAF(501,494), - LEAF(501,495), LEAF(501,496), LEAF(501,497), LEAF(501,498), - LEAF(501,499), LEAF(501,500), LEAF(501,501), LEAF(501,502), - LEAF(501,503), LEAF(501,504), LEAF(501,505), LEAF(501,506), - LEAF(501,507), LEAF(501,508), LEAF(501,509), LEAF(501,510), - LEAF(501,511), LEAF(501,512), LEAF(501,513), LEAF(501,514), - LEAF(501,515), LEAF(501,516), LEAF(501,517), LEAF(501,518), - LEAF(501,519), LEAF(501,520), LEAF(501,521), LEAF(501,522), - LEAF(501,523), LEAF(501,524), LEAF(501,525), LEAF(501,526), - LEAF(501,527), LEAF(501,528), LEAF(501,529), LEAF(501,530), - LEAF(501,531), LEAF(501,532), LEAF(501,533), LEAF(501,534), - LEAF(501,535), LEAF(501,536), LEAF(501,537), LEAF(501,538), - LEAF(501,539), LEAF(501,540), LEAF(501,541), LEAF(501,542), - LEAF(501,543), LEAF(501,544), LEAF(501,545), LEAF(501,546), - LEAF(501,547), LEAF(501,548), LEAF(501,549), LEAF(501,550), - LEAF(501,551), LEAF(501,552), LEAF(501,553), LEAF(501,554), - LEAF(501,555), LEAF(501,556), LEAF(501,557), LEAF(501,558), - LEAF(501,559), LEAF(501,560), LEAF(501,561), LEAF(501,562), - LEAF(501,563), LEAF(501,564), LEAF(501,565), LEAF(501,566), - LEAF(501,567), LEAF(501,568), LEAF(501,569), LEAF(501,570), - LEAF(501,571), LEAF(501,572), LEAF(501,573), LEAF(501,574), - LEAF(501,575), LEAF(501,576), LEAF(501,577), LEAF(501,578), - LEAF(501,579), LEAF(501,580), LEAF(501,581), LEAF(501,582), - LEAF(501,583), LEAF(501,318), LEAF(501,584), LEAF(501,585), - LEAF(501,586), LEAF(501,587), LEAF(501,588), LEAF(501,589), - LEAF(501,590), LEAF(501, 3), LEAF(501,591), LEAF(501,592), - LEAF(501,593), LEAF(501,594), LEAF(501,595), LEAF(501,596), - LEAF(501,580), LEAF(501,597), LEAF(501,598), LEAF(501,599), - LEAF(501,600), LEAF(501,601), LEAF(501,602), LEAF(501,603), - LEAF(501,604), LEAF(501,605), LEAF(501,606), LEAF(501,607), - LEAF(501,608), LEAF(501,609), LEAF(501,610), LEAF(501,611), - LEAF(501,612), LEAF(501,613), LEAF(501,614), LEAF(501,615), - LEAF(501,616), LEAF(501,617), LEAF(501,618), + LEAF(525,475), LEAF(525,476), LEAF(525,477), LEAF(525,478), + LEAF(525,479), LEAF(525,480), LEAF(525,481), LEAF(525,482), + LEAF(525,483), LEAF(525,484), LEAF(525,485), LEAF(525,486), + LEAF(525,487), LEAF(525,488), LEAF(525,489), LEAF(525,490), + LEAF(525,491), LEAF(525,492), LEAF(525,493), LEAF(525,494), + LEAF(525,495), LEAF(525,496), LEAF(525,497), LEAF(525,498), + LEAF(525,499), LEAF(525,500), LEAF(525,501), LEAF(525,502), + LEAF(525,503), LEAF(525,504), LEAF(525,505), LEAF(525,506), + LEAF(525,507), LEAF(525,508), LEAF(525,509), LEAF(525,510), + LEAF(525,511), LEAF(525,512), LEAF(525,513), LEAF(525,514), + LEAF(525,515), LEAF(525,516), LEAF(525,517), LEAF(525,518), + LEAF(525,519), LEAF(525,520), LEAF(525,521), LEAF(525,522), + LEAF(525,523), LEAF(525,524), LEAF(525,525), LEAF(525,526), + LEAF(525,527), LEAF(525,528), LEAF(525,529), LEAF(525,530), + LEAF(525,531), LEAF(525,532), LEAF(525,533), LEAF(525,534), + LEAF(525,535), LEAF(525,536), LEAF(525,537), LEAF(525,538), + LEAF(525,539), LEAF(525,540), LEAF(525,541), LEAF(525,542), + LEAF(525,543), LEAF(525,544), LEAF(525,545), LEAF(525,546), + LEAF(525,547), LEAF(525,548), LEAF(525,549), LEAF(525,550), + LEAF(525,551), LEAF(525,552), LEAF(525,553), LEAF(525,554), + LEAF(525,555), LEAF(525,556), LEAF(525,557), LEAF(525,558), + LEAF(525,559), LEAF(525,560), LEAF(525,561), LEAF(525,562), + LEAF(525,563), LEAF(525,564), LEAF(525,565), LEAF(525,566), + LEAF(525,567), LEAF(525,568), LEAF(525,569), LEAF(525,570), + LEAF(525,571), LEAF(525,572), LEAF(525,573), LEAF(525,574), + LEAF(525,575), LEAF(525,576), LEAF(525,577), LEAF(525,578), + LEAF(525,579), LEAF(525,580), LEAF(525,581), LEAF(525,582), + LEAF(525,583), LEAF(525,584), LEAF(525,585), LEAF(525,586), + LEAF(525,587), LEAF(525,588), LEAF(525,589), LEAF(525,590), + LEAF(525,591), LEAF(525,592), LEAF(525,593), LEAF(525,594), + LEAF(525,595), LEAF(525,596), LEAF(525,597), LEAF(525,598), + LEAF(525,599), LEAF(525,600), LEAF(525,601), LEAF(525,602), + LEAF(525,603), LEAF(525,604), LEAF(525,355), LEAF(525,605), + LEAF(525,606), LEAF(525,318), LEAF(525,607), LEAF(525,608), + LEAF(525,609), LEAF(525,610), LEAF(525,611), LEAF(525,612), + LEAF(525,613), LEAF(525, 3), LEAF(525,614), LEAF(525,615), + LEAF(525,616), LEAF(525,617), LEAF(525,618), LEAF(525,619), + LEAF(525,604), LEAF(525,620), LEAF(525,621), LEAF(525,622), + LEAF(525,623), LEAF(525,624), LEAF(525,625), LEAF(525,626), + LEAF(525,627), LEAF(525,628), LEAF(525,629), LEAF(525,630), + LEAF(525,631), LEAF(525,632), LEAF(525,633), LEAF(525,634), + LEAF(525,635), LEAF(525,636), LEAF(525,637), LEAF(525,638), + LEAF(525,639), LEAF(525,640), LEAF(525,641), /* zh_tw */ - LEAF(672,619), LEAF(672,620), LEAF(672,621), LEAF(672,622), - LEAF(672,623), LEAF(672,624), LEAF(672,625), LEAF(672,626), - LEAF(672,627), LEAF(672,628), LEAF(672,629), LEAF(672,630), - LEAF(672,631), LEAF(672,632), LEAF(672,633), LEAF(672,634), - LEAF(672,635), LEAF(672,636), LEAF(672,637), LEAF(672,638), - LEAF(672,639), LEAF(672,640), LEAF(672,641), LEAF(672,642), - LEAF(672,643), LEAF(672,644), LEAF(672,645), LEAF(672,646), - LEAF(672,647), LEAF(672,648), LEAF(672,649), LEAF(672,650), - LEAF(672,651), LEAF(672,652), LEAF(672,653), LEAF(672,654), - LEAF(672,655), LEAF(672,656), LEAF(672,657), LEAF(672,658), - LEAF(672,659), LEAF(672,660), LEAF(672,661), LEAF(672,662), - LEAF(672,663), LEAF(672,664), LEAF(672,665), LEAF(672,666), - LEAF(672,667), LEAF(672,668), LEAF(672,669), LEAF(672,670), - LEAF(672,671), LEAF(672,672), LEAF(672,673), LEAF(672,674), - LEAF(672,675), LEAF(672,676), LEAF(672,677), LEAF(672,678), - LEAF(672,679), LEAF(672,680), LEAF(672,681), LEAF(672,682), - LEAF(672,683), LEAF(672,684), LEAF(672,685), LEAF(672,686), - LEAF(672,687), LEAF(672,688), LEAF(672,689), LEAF(672,690), - LEAF(672,691), LEAF(672,692), LEAF(672,693), LEAF(672,694), - LEAF(672,695), LEAF(672,696), LEAF(672,697), LEAF(672,698), - LEAF(672,699), LEAF(672,700), LEAF(672,701), + LEAF(696,642), LEAF(696,643), LEAF(696,644), LEAF(696,645), + LEAF(696,646), LEAF(696,647), LEAF(696,648), LEAF(696,649), + LEAF(696,650), LEAF(696,651), LEAF(696,652), LEAF(696,653), + LEAF(696,654), LEAF(696,655), LEAF(696,656), LEAF(696,657), + LEAF(696,658), LEAF(696,659), LEAF(696,660), LEAF(696,661), + LEAF(696,662), LEAF(696,663), LEAF(696,664), LEAF(696,665), + LEAF(696,666), LEAF(696,667), LEAF(696,668), LEAF(696,669), + LEAF(696,670), LEAF(696,671), LEAF(696,672), LEAF(696,673), + LEAF(696,674), LEAF(696,675), LEAF(696,676), LEAF(696,677), + LEAF(696,678), LEAF(696,679), LEAF(696,680), LEAF(696,681), + LEAF(696,682), LEAF(696,683), LEAF(696,684), LEAF(696,685), + LEAF(696,686), LEAF(696,687), LEAF(696,688), LEAF(696,689), + LEAF(696,690), LEAF(696,691), LEAF(696,692), LEAF(696,693), + LEAF(696,694), LEAF(696,695), LEAF(696,696), LEAF(696,697), + LEAF(696,698), LEAF(696,699), LEAF(696,700), LEAF(696,701), + LEAF(696,702), LEAF(696,703), LEAF(696,704), LEAF(696,705), + LEAF(696,706), LEAF(696,707), LEAF(696,708), LEAF(696,709), + LEAF(696,710), LEAF(696,711), LEAF(696,712), LEAF(696,713), + LEAF(696,714), LEAF(696,715), LEAF(696,716), LEAF(696,717), + LEAF(696,718), LEAF(696,719), LEAF(696,720), LEAF(696,721), + LEAF(696,722), LEAF(696,723), LEAF(696,724), }, { /* aa */ @@ -3940,6 +4042,12 @@ static const struct { 0x0006, /* uk */ 0x0004, + /* und_zmth */ + 0x0000, 0x0001, 0x0003, 0x0020, 0x0021, 0x0022, 0x0023, 0x0025, + 0x0027, 0x01d4, 0x01d5, 0x01d6, + /* und_zsye */ + 0x0023, 0x0025, 0x0026, 0x0027, 0x002b, 0x01f0, 0x01f1, 0x01f2, + 0x01f3, 0x01f4, 0x01f5, 0x01f6, /* ve */ 0x0000, 0x001e, /* vi */ @@ -4230,6 +4338,8 @@ static const struct { 168, /* tyv */ 169, /* ug */ 170, /* uk */ + 245, /* und_zmth */ + 244, /* und_zsye */ 171, /* ur */ 172, /* uz */ 173, /* ve */ @@ -4424,25 +4534,25 @@ static const struct { 220, /* tyv */ 221, /* ug */ 222, /* uk */ - 223, /* ur */ - 224, /* uz */ - 225, /* ve */ - 226, /* vi */ - 227, /* vo */ - 228, /* vot */ - 229, /* wa */ - 231, /* wen */ - 232, /* wo */ - 233, /* xh */ - 234, /* yap */ - 235, /* yi */ - 236, /* yo */ - 238, /* zh_cn */ - 239, /* zh_hk */ - 240, /* zh_mo */ - 241, /* zh_sg */ - 242, /* zh_tw */ - 243, /* zu */ + 225, /* ur */ + 226, /* uz */ + 227, /* ve */ + 228, /* vi */ + 229, /* vo */ + 230, /* vot */ + 231, /* wa */ + 233, /* wen */ + 234, /* wo */ + 235, /* xh */ + 236, /* yap */ + 237, /* yi */ + 238, /* yo */ + 240, /* zh_cn */ + 241, /* zh_hk */ + 242, /* zh_mo */ + 243, /* zh_sg */ + 244, /* zh_tw */ + 245, /* zu */ 3, /* ak */ 5, /* an */ 15, /* ber_dz */ @@ -4489,18 +4599,20 @@ static const struct { 194, /* sn */ 200, /* su */ 219, /* ty */ - 230, /* wal */ - 237, /* za */ + 232, /* wal */ + 239, /* za */ 118, /* lah */ 149, /* nqo */ 26, /* brx */ 176, /* sat */ 44, /* doi */ 135, /* mni */ + 224, /* und_zsye */ + 223, /* und_zmth */ } }; -#define NUM_LANG_CHAR_SET 244 +#define NUM_LANG_CHAR_SET 246 #define NUM_LANG_SET_MAP 8 static const FcChar32 fcLangCountrySets[][NUM_LANG_SET_MAP] = { @@ -4512,10 +4624,11 @@ static const FcChar32 fcLangCountrySets[][NUM_LANG_SET_MAP] = { { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000001, }, /* pap */ { 0x00000000, 0x00000000, 0x00000000, 0x30000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }, /* ps */ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x60000000, 0x00000000, 0x00000000, 0x00000000, }, /* ti */ + { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300000, }, /* und */ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1f000000, 0x00000000, 0x00000000, }, /* zh */ }; -#define NUM_COUNTRY_SET 9 +#define NUM_COUNTRY_SET 10 static const FcLangCharSetRange fcLangCharSetRanges[] = { @@ -4539,11 +4652,11 @@ static const FcLangCharSetRange fcLangCharSetRanges[] = { { 169, 173 }, /* r */ { 174, 203 }, /* s */ { 204, 220 }, /* t */ - { 221, 224 }, /* u */ - { 225, 228 }, /* v */ - { 229, 232 }, /* w */ - { 233, 233 }, /* x */ - { 234, 236 }, /* y */ - { 237, 243 }, /* z */ + { 221, 226 }, /* u */ + { 227, 230 }, /* v */ + { 231, 234 }, /* w */ + { 235, 235 }, /* x */ + { 236, 238 }, /* y */ + { 239, 245 }, /* z */ }; diff --git a/fc-lang/und_zmth.orth b/fc-lang/und_zmth.orth new file mode 100644 index 0000000..1d98453 --- /dev/null +++ b/fc-lang/und_zmth.orth @@ -0,0 +1,144 @@ +# +# fontconfig/fc-lang/emoji.orth +# +# Copyright © 2002 Keith Packard +# Copyright © 2017 Red Hat, Inc. +# +# 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. +# +# Math +# +# based on +# http://www.unicode.org/Public/math/revision-9/MathClass-9.txt +# +0020 # S # SPACE +0021 # P # ! EXCLAMATION MARK +0021 # N # ! EXCLAMATION MARK +0023..0026 # N # #..& NUMBER SIGN..AMPERSAND +0028 # O # ( LEFT PARENTHESIS +0029 # C # ) RIGHT PARENTHESIS +002A # N # * ASTERISK +002B # V # + PLUS SIGN +002C # P # , COMMA +002D # R # - HYPHEN-MINUS +002E # P # . FULL STOP +002F # R # / SOLIDUS +0030..0039 # N # 0..9 DIGIT ZERO..NINE +003A..003B # P # :.. # COLON..SEMICOLON +003C..003E # R # <..> LESS-THAN SIGN..GREATER-THAN SIGN +003F # P # ? QUESTION MARK +0040 # N # @ COMMERCIAL AT +0041..005A # A # A..Z LATIN CAPITAL LETTER A..Z +005B # O # [ LEFT SQUARE BRACKET +005C # N # \ REVERSE SOLIDUS +005D # C # ] RIGHT SQUARE BRACKET +005E # X # ^ CIRCUMFLEX ACCENT +0061..007A # A # a..z LATIN SMALL LETTER A..Z +007B # O # { LEFT CURLY BRACKET +007C # F # | VERTICAL LINE +007D # C # } RIGHT CURLY BRACKET +007E # X # ~ TILDE +00A1 # P # ¡ INVERTED EXCLAMATION MARK +00A2..00A7 # N # ¢..§ CENT SIGN..SECTION SIGN +00AC # N # ¬ NOT SIGN +00B0 # N # ° DEGREE SIGN +00B1 # V # ± PLUS-MINUS SIGN +00B5..00B6 # N # µ..¶ MICRO SIGN..PILCROW SIGN +00B7 # B # · MIDDLE DOT +00BF # P # ¿ INVERTED QUESTION MARK +00D7 # B # × MULTIPLICATION SIGN +00F7 # B # ÷ DIVISION SIGN +0131 # A # ı LATIN SMALL LETTER DOTLESS I +0308 # D # ̈ COMBINING DIAERESIS +030A # D # ̊ COMBINING RING ABOVE +030C # D # ̌ COMBINING CARON +0338 # D # ̸ COMBINING LONG SOLIDUS OVERLAY +0391..03A1 # A # Α..Ρ GREEK CAPITAL LETTER ALPHA..RHO +03A3..03A4 # A # Σ..Τ GREEK CAPITAL LETTER SIGMA..TAU +03A6..03A9 # A # Φ..Ω GREEK CAPITAL LETTER PHI..OMEGA +03B1..03C1 # A # α..ρ GREEK SMALL LETTER ALPHA..RHO +03C3..03C9 # A # σ..ω GREEK SMALL LETTER SIGMA..OMEGA +03D5..03D6 # A # ϕ..ϖ GREEK PHI SYMBOL..PI SYMBOL +03F0..03F1 # A # ϰ..ϱ GREEK KAPPA SYMBOL..RHO SYMBOL +2016 # F # ‖ DOUBLE VERTICAL LINE +2020 # R # † DAGGER +2020 # N # † DAGGER +2021 # R # ‡ DOUBLE DAGGER +2021 # N # ‡ DOUBLE DAGGER +2022 # B # • BULLET +2026 # N # … HORIZONTAL ELLIPSIS +2044 # X # ⁄ FRACTION SLASH +2057 # N # ⁗ QUADRUPLE PRIME +20E1 # D # ⃡ COMBINING LEFT RIGHT ARROW ABOVE +2102 # A # ℂ DOUBLE-STRUCK CAPITAL C +210E..210F # N # ℎ..ℏ PLANCK CONSTANT.. OVER TWO PI +2110..2113 # A # ℐ..ℓ SCRIPT CAPITAL I..SMALL L +2115 # A # ℕ DOUBLE-STRUCK CAPITAL N +2118..211D # A # ℘..ℝ SCRIPT CAPITAL P..DOUBLE-STRUCK CAPITAL R +2124 # A # ℤ DOUBLE-STRUCK CAPITAL Z +2200..2201 # U # ∀..∁ FOR ALL..COMPLEMENT +2202 # N # ∂ PARTIAL DIFFERENTIAL +2203..2204 # U # ∃..∄ THERE EXISTS..DOES NOT EXIST +2205 # N # ∅ EMPTY SET +2206..2207 # U # ∆..∇ INCREMENT..NABLA +2208..220D # R # ∈..∍ ELEMENT OF..SMALL CONTAINS AS MEMBER +220F..2211 # L # ∏..∑ N-ARY PRODUCT..SUMMATION +2212..2213 # V # −..∓ MINUS SIGN..MINUS-OR-PLUS SIGN +2214..2219 # B # ∔..∙ DOT PLUS..BULLET OPERATOR +221D # R # ∝ PROPORTIONAL TO +221E..2222 # N # ∞..∢ INFINITY..SPHERICAL ANGLE +2223..2226 # R # ∣..∦ DIVIDES..NOT PARALLEL TO +2227..222A # B # ∧..∪ LOGICAL AND..UNION +2234..2235 # N # ∴..∵ THEREFORE..BECAUSE +2236..2237 # R # ∶..∷ RATIO..PROPORTION +2238 # B # ∸ DOT MINUS +2239..223D # R # ∹..∽ EXCESS..REVERSED TILDE +223E # B # ∾ INVERTED LAZY S +223F # N # ∿ SINE WAVE +2240 # B # ≀ WREATH PRODUCT +228C..228E # B # ⊌..⊎ MULTISET.. UNION +228F..2292 # R # ⊏..⊒ SQUARE IMAGE OF..ORIGINAL OF OR EQUAL TO +2293..22A1 # B # ⊓..⊡ SQUARE CAP..SQUARED DOT OPERATOR +22A2..22A3 # R # ⊢..⊣ RIGHT TACK..LEFT TACK +22A4..22A5 # N # ⊤..⊥ DOWN TACK..UP TACK +22C0..22C3 # L # ⋀..⋃ N-ARY LOGICAL AND..UNION +22C8 # R # ⋈ BOWTIE +22CD # R # ⋍ REVERSED TILDE EQUALS +22CE..22CF # B # ⋎..⋏ CURLY LOGICAL OR..AND +2308 # O # ⌈ LEFT CEILING +2309 # C # ⌉ RIGHT CEILING +230A # O # ⌊ LEFT FLOOR +230B # C # ⌋ RIGHT FLOOR +2322..2323 # R # ⌢..⌣ FROWN..SMILE +25A0..25A1 # N # ■..□ BLACK SQUARE..WHITE SQUARE +27E6 # O # ⟦ MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7 # C # ⟧ MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8 # O # ⟨ MATHEMATICAL LEFT ANGLE BRACKET +27E9 # C # ⟩ MATHEMATICAL RIGHT ANGLE BRACKET +1D400..1D454 # A # 𝐀..𝑔 MATHEMATICAL BOLD CAPITAL A..ITALIC SMALL G +1D456..1D49C # A # 𝑖..𝒜 MATHEMATICAL ITALIC SMALL I..SCRIPT CAPITAL A +1D49E..1D49F # A # 𝒞..𝒟 MATHEMATICAL SCRIPT CAPITAL C..D +1D4A2 # A # 𝒢 MATHEMATICAL SCRIPT CAPITAL G +1D4A5..1D4A6 # A # 𝒥..𝒦 MATHEMATICAL SCRIPT CAPITAL J..K +1D4A9..1D4AC # A # 𝒩..𝒬 MATHEMATICAL SCRIPT CAPITAL N..Q +1D53B..1D53E # A # 𝔻..𝔾 MATHEMATICAL DOUBLE-STRUCK CAPITAL D..G +1D540..1D544 # A # 𝕀..𝕄 MATHEMATICAL DOUBLE-STRUCK CAPITAL I..M +1D546 # A # 𝕆 MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A..1D550 # A # 𝕊..𝕐 MATHEMATICAL DOUBLE-STRUCK CAPITAL S..Y +1D6A4..1D6A5 # A # 𝚤..𝚥 MATHEMATICAL ITALIC SMALL DOTLESS I..J diff --git a/fc-lang/und_zsye.orth b/fc-lang/und_zsye.orth new file mode 100644 index 0000000..00007c1 --- /dev/null +++ b/fc-lang/und_zsye.orth @@ -0,0 +1,151 @@ +# +# fontconfig/fc-lang/emoji.orth +# +# Copyright © 2002 Keith Packard +# Copyright © 2017 Red Hat, Inc. +# +# 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. +# +# Emoji +# +# http://unicode.org/Public/emoji/5.0/emoji-data.txt +# with anything after Unicode 6.0 commented out. +# +## Emoji Presentation +231A..231B # 1.1 [2] (⌚..⌛) watch..hourglass +23E9..23EC # 6.0 [4] (⏩..⏬) fast-forward button..fast down button +23F0 # 6.0 [1] (⏰) alarm clock +23F3 # 6.0 [1] (⏳) hourglass with flowing sand +25FD..25FE # 3.2 [2] (◽..◾) white medium-small square..black medium-small square +2614..2615 # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2648..2653 # 1.1 [12] (♈..♓) Aries..Pisces +267F # 4.1 [1] (♿) wheelchair symbol +2693 # 4.1 [1] (⚓) anchor +26A1 # 4.0 [1] (⚡) high voltage +26AA..26AB # 4.1 [2] (⚪..⚫) white circle..black circle +26BD..26BE # 5.2 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 # 5.2 [2] (⛄..⛅) snowman without snow..sun behind cloud +26CE # 6.0 [1] (⛎) Ophiuchus +26D4 # 5.2 [1] (⛔) no entry +26EA # 5.2 [1] (⛪) church +26F2..26F3 # 5.2 [2] (⛲..⛳) fountain..flag in hole +26F5 # 5.2 [1] (⛵) sailboat +26FA # 5.2 [1] (⛺) tent +26FD # 5.2 [1] (⛽) fuel pump +2705 # 6.0 [1] (✅) white heavy check mark +270A..270B # 6.0 [2] (✊..✋) raised fist..raised hand +2728 # 6.0 [1] (✨) sparkles +274C # 6.0 [1] (❌) cross mark +274E # 6.0 [1] (❎) cross mark button +2753..2755 # 6.0 [3] (❓..❕) question mark..white exclamation mark +2757 # 5.2 [1] (❗) exclamation mark +2795..2797 # 6.0 [3] (➕..➗) heavy plus sign..heavy division sign +27B0 # 6.0 [1] (➰) curly loop +27BF # 6.0 [1] (➿) double curly loop +2B1B..2B1C # 5.1 [2] (⬛..⬜) black large square..white large square +2B50 # 5.1 [1] (⭐) white medium star +2B55 # 5.2 [1] (⭕) heavy large circle +1F004 # 5.1 [1] (🀄) mahjong red dragon +1F0CF # 6.0 [1] (🃏) joker +1F18E # 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A # 6.0 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201 # 6.0 [1] (🈁) Japanese “here” button +1F21A # 5.2 [1] (🈚) Japanese “free of charge” button +1F22F # 5.2 [1] (🈯) Japanese “reserved” button +1F232..1F236 # 6.0 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button +1F238..1F23A # 6.0 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button +1F250..1F251 # 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F320 # 6.0 [33] (🌀..🌠) cyclone..shooting star +# 1F32D..1F32F # 8.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F335 # 6.0 [6] (🌰..🌵) chestnut..cactus +1F337..1F37C # 6.0 [70] (🌷..🍼) tulip..baby bottle +# 1F37E..1F37F # 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 # 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F3A0..1F3C4 # 6.0 [37] (🎠..🏄) carousel horse..person surfing +# 1F3C5 # 7.0 [1] (🏅) sports medal +1F3C6..1F3CA # 6.0 [5] (🏆..🏊) trophy..person swimming +# 1F3CF..1F3D3 # 8.0 [5] (🏏..🏓) cricket..ping pong +1F3E0..1F3F0 # 6.0 [17] (🏠..🏰) house..castle +# 1F3F4 # 7.0 [1] (🏴) black flag +# 1F3F8..1F3FF # 8.0 [8] (🏸..🏿) badminton..dark skin tone +# 1F400..1F43E # 6.0 [63] (🐀..🐾) rat..paw prints +1F440 # 6.0 [1] (👀) eyes +1F442..1F4F7 # 6.0[182] (👂..📷) ear..camera +# 1F4F8 # 7.0 [1] (📸) camera with flash +1F4F9..1F4FC # 6.0 [4] (📹..📼) video camera..videocassette +# 1F4FF # 8.0 [1] (📿) prayer beads +1F500..1F53D # 6.0 [62] (🔀..🔽) shuffle tracks button..down button +# 1F54B..1F54E # 8.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F567 # 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty +# 1F57A # 9.0 [1] (🕺) man dancing +# 1F595..1F596 # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +# 1F5A4 # 9.0 [1] (🖤) black heart +1F5FB..1F5FF # 6.0 [5] (🗻..🗿) mount fuji..moai +# 1F600 # 6.1 [1] (😀) grinning face +1F601..1F610 # 6.0 [16] (😁..😐) grinning face with smiling eyes..neutral face +# 1F611 # 6.1 [1] (😑) expressionless face +1F612..1F614 # 6.0 [3] (😒..😔) unamused face..pensive face +# 1F615 # 6.1 [1] (😕) confused face +1F616 # 6.0 [1] (😖) confounded face +# 1F617 # 6.1 [1] (😗) kissing face +1F618 # 6.0 [1] (😘) face blowing a kiss +# 1F619 # 6.1 [1] (😙) kissing face with smiling eyes +1F61A # 6.0 [1] (😚) kissing face with closed eyes +# 1F61B # 6.1 [1] (😛) face with stuck-out tongue +1F61C..1F61E # 6.0 [3] (😜..😞) face with stuck-out tongue & winking eye..disappointed face +# 1F61F # 6.1 [1] (😟) worried face +1F620..1F625 # 6.0 [6] (😠..😥) angry face..disappointed but relieved face +# 1F626..1F627 # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B # 6.0 [4] (😨..😫) fearful face..tired face +# 1F62C # 6.1 [1] (😬) grimacing face +1F62D # 6.0 [1] (😭) loudly crying face +# 1F62E..1F62F # 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 # 6.0 [4] (😰..😳) face with open mouth & cold sweat..flushed face +# 1F634 # 6.1 [1] (😴) sleeping face +1F635..1F640 # 6.0 [12] (😵..🙀) dizzy face..weary cat face +# 1F641..1F642 # 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face +# 1F643..1F644 # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F # 6.0 [11] (🙅..🙏) person gesturing NO..folded hands +# 1F680..1F6C5 # 6.0 [70] (🚀..🛅) rocket..left luggage +# 1F6CC # 7.0 [1] (🛌) person in bed +# 1F6D0 # 8.0 [1] (🛐) place of worship +# 1F6D1..1F6D2 # 9.0 [2] (🛑..🛒) stop sign..shopping cart +# 1F6EB..1F6EC # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival +# 1F6F4..1F6F6 # 9.0 [3] (🛴..🛶) kick scooter..canoe +# 1F6F7..1F6F8 # 10.0 [2] (🛷..🛸) sled..flying saucer +# 1F910..1F918 # 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +# 1F919..1F91E # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +# 1F91F # 10.0 [1] (🤟) love-you gesture +# 1F920..1F927 # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +# 1F928..1F92F # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +# 1F930 # 9.0 [1] (🤰) pregnant woman +# 1F931..1F932 # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +# 1F933..1F93A # 9.0 [8] (🤳..🤺) selfie..person fencing +# 1F93C..1F93E # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +# 1F940..1F945 # 9.0 [6] (🥀..🥅) wilted flower..goal net +# 1F947..1F94B # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +# 1F94C # 10.0 [1] (🥌) curling stone +# 1F950..1F95E # 9.0 [15] (🥐..🥞) croissant..pancakes +# 1F95F..1F96B # 10.0 [13] (🥟..🥫) dumpling..canned food +# 1F980..1F984 # 8.0 [5] (🦀..🦄) crab..unicorn face +# 1F985..1F991 # 9.0 [13] (🦅..🦑) eagle..squid +# 1F992..1F997 # 10.0 [6] (🦒..🦗) giraffe..cricket +# 1F9C0 # 8.0 [1] (🧀) cheese wedge +# 1F9D0..1F9E6 # 10.0 [23] (🧐..🧦) face with monocle..socks diff --git a/fc-list/Makefile.in b/fc-list/Makefile.in index b8e1582..dd86470 100644 --- a/fc-list/Makefile.in +++ b/fc-list/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-list/fc-list.c b/fc-list/fc-list.c index f6c7282..5cded50 100644 --- a/fc-list/fc-list.c +++ b/fc-list/fc-list.c @@ -36,6 +36,14 @@ #define HAVE_GETOPT 1 #endif +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -49,6 +57,7 @@ #include const struct option longopts[] = { {"verbose", 0, 0, 'v'}, + {"brief", 0, 0, 'b'}, {"format", 1, 0, 'f'}, {"quiet", 0, 0, 'q'}, {"version", 0, 0, 'V'}, @@ -67,26 +76,28 @@ usage (char *program, int error) { FILE *file = error ? stderr : stdout; #if HAVE_GETOPT_LONG - fprintf (file, "usage: %s [-vqVh] [-f FORMAT] [--verbose] [--format=FORMAT] [--quiet] [--version] [--help] [pattern] {element ...} \n", + fprintf (file, _("usage: %s [-vbqVh] [-f FORMAT] [--verbose] [--brief] [--format=FORMAT] [--quiet] [--version] [--help] [pattern] {element ...} \n"), program); #else - fprintf (file, "usage: %s [-vqVh] [-f FORMAT] [pattern] {element ...} \n", + fprintf (file, _("usage: %s [-vbqVh] [-f FORMAT] [pattern] {element ...} \n"), program); #endif - fprintf (file, "List fonts matching [pattern]\n"); + fprintf (file, _("List fonts matching [pattern]\n")); fprintf (file, "\n"); #if HAVE_GETOPT_LONG - fprintf (file, " -v, --verbose display entire font pattern verbosely\n"); - fprintf (file, " -f, --format=FORMAT use the given output format\n"); - fprintf (file, " -q, --quiet suppress all normal output, exit 1 if no fonts matched\n"); - fprintf (file, " -V, --version display font config version and exit\n"); - fprintf (file, " -h, --help display this help and exit\n"); + fprintf (file, _(" -v, --verbose display entire font pattern verbosely\n")); + fprintf (file, _(" -b, --brief display entire font pattern briefly\n")); + fprintf (file, _(" -f, --format=FORMAT use the given output format\n")); + fprintf (file, _(" -q, --quiet suppress all normal output, exit 1 if no fonts matched\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, " -v (verbose) display entire font pattern verbosely\n"); - fprintf (file, " -f FORMAT (format) use the given output format\n"); - fprintf (file, " -q, (quiet) suppress all normal output, exit 1 if no fonts matched\n"); - fprintf (file, " -V (version) display font config version and exit\n"); - fprintf (file, " -h (help) display this help and exit\n"); + fprintf (file, _(" -v (verbose) display entire font pattern verbosely\n")); + fprintf (file, _(" -b (brief) display entire font pattern briefly\n")); + fprintf (file, _(" -f FORMAT (format) use the given output format\n")); + fprintf (file, _(" -q, (quiet) suppress all normal output, exit 1 if no fonts matched\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); } @@ -95,6 +106,7 @@ int main (int argc, char **argv) { int verbose = 0; + int brief = 0; int quiet = 0; const FcChar8 *format = NULL; int nfont = 0; @@ -106,15 +118,18 @@ main (int argc, char **argv) int c; #if HAVE_GETOPT_LONG - while ((c = getopt_long (argc, argv, "vf:qVh", longopts, NULL)) != -1) + while ((c = getopt_long (argc, argv, "vbf:qVh", longopts, NULL)) != -1) #else - while ((c = getopt (argc, argv, "vf:qVh")) != -1) + while ((c = getopt (argc, argv, "vbf:qVh")) != -1) #endif { switch (c) { case 'v': verbose = 1; break; + case 'b': + brief = 1; + break; case 'f': format = (FcChar8 *) strdup (optarg); break; @@ -141,7 +156,7 @@ main (int argc, char **argv) pat = FcNameParse ((FcChar8 *) argv[i]); if (!pat) { - fputs ("Unable to parse the pattern\n", stderr); + fprintf (stderr, _("Unable to parse the pattern\n")); return 1; } while (argv[++i]) @@ -155,7 +170,7 @@ main (int argc, char **argv) pat = FcPatternCreate (); if (quiet && !os) os = FcObjectSetCreate (); - if (!verbose && !format && !os) + if (!verbose && !brief && !format && !os) os = FcObjectSetBuild (FC_FAMILY, FC_STYLE, FC_FILE, (char *) 0); if (!format) format = (const FcChar8 *) "%{=fclist}\n"; @@ -171,8 +186,13 @@ main (int argc, char **argv) for (j = 0; j < fs->nfont; j++) { - if (verbose) + if (verbose || brief) { + if (brief) + { + FcPatternDel (fs->fonts[j], FC_CHARSET); + FcPatternDel (fs->fonts[j], FC_LANG); + } FcPatternPrint (fs->fonts[j]); } else diff --git a/fc-match/Makefile.in b/fc-match/Makefile.in index d5d22f0..b611edd 100644 --- a/fc-match/Makefile.in +++ b/fc-match/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-match/fc-match.c b/fc-match/fc-match.c index f96c009..7902707 100644 --- a/fc-match/fc-match.c +++ b/fc-match/fc-match.c @@ -37,6 +37,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -52,6 +60,7 @@ static const struct option longopts[] = { {"sort", 0, 0, 's'}, {"all", 0, 0, 'a'}, {"verbose", 0, 0, 'v'}, + {"brief", 0, 0, 'b'}, {"format", 1, 0, 'f'}, {"version", 0, 0, 'V'}, {"help", 0, 0, 'h'}, @@ -69,28 +78,30 @@ usage (char *program, int error) { FILE *file = error ? stderr : stdout; #if HAVE_GETOPT_LONG - fprintf (file, "usage: %s [-savVh] [-f FORMAT] [--sort] [--all] [--verbose] [--format=FORMAT] [--version] [--help] [pattern] {element...}\n", + fprintf (file, _("usage: %s [-savbVh] [-f FORMAT] [--sort] [--all] [--verbose] [--brief] [--format=FORMAT] [--version] [--help] [pattern] {element...}\n"), program); #else - fprintf (file, "usage: %s [-savVh] [-f FORMAT] [pattern] {element...}\n", + fprintf (file, _("usage: %s [-savVh] [-f FORMAT] [pattern] {element...}\n"), program); #endif - fprintf (file, "List best font matching [pattern]\n"); + fprintf (file, _("List best font matching [pattern]\n")); fprintf (file, "\n"); #if HAVE_GETOPT_LONG - fprintf (file, " -s, --sort display sorted list of matches\n"); - fprintf (file, " -a, --all display unpruned sorted list of matches\n"); - fprintf (file, " -v, --verbose display entire font pattern verbosely\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, _(" -s, --sort display sorted list of matches\n")); + fprintf (file, _(" -a, --all display unpruned sorted list of matches\n")); + fprintf (file, _(" -v, --verbose display entire font pattern verbosely\n")); + fprintf (file, _(" -b, --brief display entire font pattern briefly\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, " -s, (sort) display sorted list of matches\n"); - fprintf (file, " -a (all) display unpruned sorted list of matches\n"); - fprintf (file, " -v (verbose) display entire font pattern verbosely\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, _(" -s, (sort) display sorted list of matches\n")); + fprintf (file, _(" -a (all) display unpruned sorted list of matches\n")); + fprintf (file, _(" -v (verbose) display entire font pattern verbosely\n")); + fprintf (file, _(" -b (brief) display entire font pattern briefly\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); } @@ -99,6 +110,7 @@ int main (int argc, char **argv) { int verbose = 0; + int brief = 0; int sort = 0, all = 0; const FcChar8 *format = NULL; int i; @@ -110,9 +122,9 @@ main (int argc, char **argv) int c; #if HAVE_GETOPT_LONG - while ((c = getopt_long (argc, argv, "asvf:Vh", longopts, NULL)) != -1) + while ((c = getopt_long (argc, argv, "asvbf:Vh", longopts, NULL)) != -1) #else - while ((c = getopt (argc, argv, "asvf:Vh")) != -1) + while ((c = getopt (argc, argv, "asvbf:Vh")) != -1) #endif { switch (c) { @@ -125,6 +137,9 @@ main (int argc, char **argv) case 'v': verbose = 1; break; + case 'b': + brief = 1; + break; case 'f': format = (FcChar8 *) strdup (optarg); break; @@ -148,7 +163,7 @@ main (int argc, char **argv) pat = FcNameParse ((FcChar8 *) argv[i]); if (!pat) { - fputs ("Unable to parse the pattern\n", stderr); + fprintf (stderr, _("Unable to parse the pattern\n")); return 1; } while (argv[++i]) @@ -177,7 +192,7 @@ main (int argc, char **argv) if (!font_patterns || font_patterns->nfont == 0) { - fputs("No fonts installed on the system\n", stderr); + fprintf (stderr, _("No fonts installed on the system\n")); return 1; } for (j = 0; j < font_patterns->nfont; j++) @@ -218,8 +233,13 @@ main (int argc, char **argv) font = FcPatternFilter (fs->fonts[j], os); - if (verbose) + if (verbose || brief) { + if (brief) + { + FcPatternDel (font, FC_CHARSET); + FcPatternDel (font, FC_LANG); + } FcPatternPrint (font); } else diff --git a/fc-pattern/Makefile.in b/fc-pattern/Makefile.in index 4e4b6d4..e053e37 100644 --- a/fc-pattern/Makefile.in +++ b/fc-pattern/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-pattern/fc-pattern.c b/fc-pattern/fc-pattern.c index d2279cb..f63761c 100644 --- a/fc-pattern/fc-pattern.c +++ b/fc-pattern/fc-pattern.c @@ -37,6 +37,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -68,26 +76,26 @@ usage (char *program, int error) { FILE *file = error ? stderr : stdout; #if HAVE_GETOPT_LONG - fprintf (file, "usage: %s [-cdVh] [-f FORMAT] [--config] [--default] [--verbose] [--format=FORMAT] [--version] [--help] [pattern] {element...}\n", + fprintf (file, _("usage: %s [-cdVh] [-f FORMAT] [--config] [--default] [--verbose] [--format=FORMAT] [--version] [--help] [pattern] {element...}\n"), program); #else - fprintf (file, "usage: %s [-cdVh] [-f FORMAT] [pattern] {element...}\n", + fprintf (file, _("usage: %s [-cdVh] [-f FORMAT] [pattern] {element...}\n"), program); #endif - fprintf (file, "List best font matching [pattern]\n"); + fprintf (file, _("List best font matching [pattern]\n")); fprintf (file, "\n"); #if HAVE_GETOPT_LONG - fprintf (file, " -c, --config perform config substitution on pattern\n"); - fprintf (file, " -d, -default perform default substitution on pattern\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, _(" -c, --config perform config substitution on pattern\n")); + fprintf (file, _(" -d, --default perform default substitution on pattern\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, " -c, (config) perform config substitution on pattern\n"); - fprintf (file, " -d, (default) perform default substitution on pattern\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, _(" -c, (config) perform config substitution on pattern\n")); + fprintf (file, _(" -d, (default) perform default substitution on pattern\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); } @@ -139,7 +147,7 @@ main (int argc, char **argv) pat = FcNameParse ((FcChar8 *) argv[i]); if (!pat) { - fputs ("Unable to parse the pattern\n", stderr); + fprintf (stderr, _("Unable to parse the pattern\n")); return 1; } while (argv[++i]) diff --git a/fc-query/Makefile.in b/fc-query/Makefile.in index 0ee25fe..ff7722c 100644 --- a/fc-query/Makefile.in +++ b/fc-query/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-query/fc-query.c b/fc-query/fc-query.c index 9bd3980..9da090d 100644 --- a/fc-query/fc-query.c +++ b/fc-query/fc-query.c @@ -40,6 +40,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -52,8 +60,8 @@ #define _GNU_SOURCE #include static const struct option longopts[] = { - {"ignore-blanks", 0, 0, 'b'}, {"index", 1, 0, 'i'}, + {"brief", 0, 0, 'b'}, {"format", 1, 0, 'f'}, {"version", 0, 0, 'V'}, {"help", 0, 0, 'h'}, @@ -71,26 +79,26 @@ 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 [-bVh] [-i index] [-f FORMAT] [--index index] [--brief] [--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 [-bVh] [-i index] [-f FORMAT] font-file...\n"), program); #endif - fprintf (file, "Query font files and print resulting pattern(s)\n"); + 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"); + fprintf (file, _(" -i, --index INDEX display the INDEX face of each font file only\n")); + fprintf (file, _(" -b, --brief display font pattern briefly\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, _(" -b (brief) display font pattern briefly\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); } @@ -98,29 +106,27 @@ usage (char *program, int error) int main (int argc, char **argv) { - int index_set = 0; - int set_index = 0; - int ignore_blanks = 0; + unsigned int id = (unsigned int) -1; + int brief = 0; + FcFontSet *fs; 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:bf:Vh", longopts, NULL)) != -1) #else - while ((c = getopt (argc, argv, "bi:f:Vh")) != -1) + while ((c = getopt (argc, argv, "i:bf:Vh")) != -1) #endif { switch (c) { - case 'b': - ignore_blanks = 1; - break; case 'i': - index_set = 1; - set_index = atoi (optarg); + id = (unsigned int) strtol (optarg, NULL, 0); /* strtol() To handle -1. */ + break; + case 'b': + brief = 1; break; case 'f': format = (FcChar8 *) strdup (optarg); @@ -143,50 +149,46 @@ main (int argc, char **argv) if (i == argc) usage (argv[0], 1); - if (!ignore_blanks) - blanks = FcConfigGetBlanks (NULL); + fs = FcFontSetCreate (); + for (; i < argc; i++) { - int index; - int count = 0; + if (!FcFreeTypeQueryAll ((FcChar8*) argv[i], id, NULL, NULL, fs)) + { + fprintf (stderr, _("Can't query face %u of font file %s\n"), id, argv[i]); + err = 1; + } + } - index = set_index; + for (i = 0; i < fs->nfont; i++) + { + FcPattern *pat = fs->fonts[i]; - do { - FcPattern *pat; + if (brief) + { + FcPatternDel (pat, FC_CHARSET); + FcPatternDel (pat, FC_LANG); + } - pat = FcFreeTypeQuery ((FcChar8 *) argv[i], index, blanks, &count); - if (pat) - { - if (format) - { - FcChar8 *s; - - s = FcPatternFormat (pat, format); - if (s) - { - printf ("%s", s); - FcStrFree (s); - } - } - else - { - FcPatternPrint (pat); - } - - FcPatternDestroy (pat); - } - else + if (format) + { + FcChar8 *s; + + s = FcPatternFormat (pat, format); + if (s) { - fprintf (stderr, "Can't query face %d of font file %s\n", - index, argv[i]); - err = 1; + printf ("%s", s); + FcStrFree (s); } - - index++; - } while (!index_set && index < count); + } + else + { + FcPatternPrint (pat); + } } + FcFontSetDestroy (fs); + FcFini (); return err; } diff --git a/fc-scan/Makefile.in b/fc-scan/Makefile.in index a0e0901..776561c 100644 --- a/fc-scan/Makefile.in +++ b/fc-scan/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -270,7 +275,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -282,8 +291,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,11 +308,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -319,15 +337,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -335,8 +351,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -383,13 +405,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-scan/fc-scan.1 b/fc-scan/fc-scan.1 index ecb5279..b1714c2 100644 --- a/fc-scan/fc-scan.1 +++ b/fc-scan/fc-scan.1 @@ -4,9 +4,9 @@ fc-scan \- scan font files or directories .SH SYNOPSIS .sp -\fBfc-scan\fR [ \fB-Vbh\fR ] +\fBfc-scan\fR [ \fB-Vh\fR ] - [ \fB [ -b ] [ --ignore-blanks ] \fR ] [ \fB [ -f \fIformat\fB ] [ --format \fIformat\fB ] \fR ] [ \fB--version\fR ] [ \fB--help\fR ] \fB\fIfile\fB\fR\fI...\fR + [ \fB [ -f \fIformat\fB ] [ --format \fIformat\fB ] \fR ] [ \fB--version\fR ] [ \fB--help\fR ] \fB\fIfile\fB\fR\fI...\fR .SH "DESCRIPTION" .PP \fBfc-scan\fR scans @@ -18,9 +18,6 @@ This program follows the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. .TP -\fB-b\fR -Ignore blanks to compute languages -.TP \fB-f\fR Format output according to the format specifier \fIformat\fR\&. diff --git a/fc-scan/fc-scan.c b/fc-scan/fc-scan.c index 4d0b1db..edb967c 100644 --- a/fc-scan/fc-scan.c +++ b/fc-scan/fc-scan.c @@ -40,6 +40,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -52,7 +60,7 @@ #define _GNU_SOURCE #include static const struct option longopts[] = { - {"ignore-blanks", 0, 0, 'b'}, + {"brief", 0, 0, 'b'}, {"format", 1, 0, 'f'}, {"version", 0, 0, 'V'}, {"help", 0, 0, 'h'}, @@ -70,24 +78,24 @@ 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 [-bVh] [-f FORMAT] [--brief] [--format FORMAT] [--version] [--help] font-file...\n"), program); #else - fprintf (file, "usage: %s [-Vbh] [-f FORMAT] font-file...\n", + fprintf (file, _("usage: %s [-bVh] [-f FORMAT] font-file...\n"), program); #endif - fprintf (file, "Scan font files and directories, and print resulting pattern(s)\n"); + 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"); + fprintf (file, _(" -b, --brief display font pattern briefly\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, _(" -b (brief) display font pattern briefly\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); } @@ -95,11 +103,10 @@ usage (char *program, int error) int main (int argc, char **argv) { + int brief = 0; FcChar8 *format = NULL; int i; - int ignore_blanks = 0; FcFontSet *fs; - FcBlanks *blanks = NULL; #if HAVE_GETOPT_LONG || HAVE_GETOPT int c; @@ -111,7 +118,7 @@ main (int argc, char **argv) { switch (c) { case 'b': - ignore_blanks = 1; + brief = 1; break; case 'f': format = (FcChar8 *) strdup (optarg); @@ -135,22 +142,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); @@ -160,9 +165,13 @@ main (int argc, char **argv) for (i = 0; i < fs->nfont; i++) { - FcPattern *pat; + FcPattern *pat = fs->fonts[i]; - pat = fs->fonts[i]; + if (brief) + { + FcPatternDel (pat, FC_CHARSET); + FcPatternDel (pat, FC_LANG); + } if (format) { diff --git a/fc-scan/fc-scan.sgml b/fc-scan/fc-scan.sgml index 65a66c4..9af403c 100644 --- a/fc-scan/fc-scan.sgml +++ b/fc-scan/fc-scan.sgml @@ -62,13 +62,9 @@ manpage.1: manpage.sgml &dhpackage; - + - - - - @@ -95,14 +91,6 @@ manpage.1: manpage.sgml - - - - - Ignore blanks to compute languages - - - diff --git a/fc-validate/Makefile.am b/fc-validate/Makefile.am index 782cead..c485aa5 100644 --- a/fc-validate/Makefile.am +++ b/fc-validate/Makefile.am @@ -1,5 +1,5 @@ # -# fontconfig/fc-query/Makefile.am +# fontconfig/fc-validate/Makefile.am # # Copyright © 2003 Keith Packard # diff --git a/fc-validate/Makefile.in b/fc-validate/Makefile.in index f3dcea8..ede2808 100644 --- a/fc-validate/Makefile.in +++ b/fc-validate/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,7 @@ @SET_MAKE@ # -# fontconfig/fc-query/Makefile.am +# fontconfig/fc-validate/Makefile.am # # Copyright © 2003 Keith Packard # @@ -118,10 +118,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -272,7 +277,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -284,8 +293,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -297,11 +310,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -321,15 +339,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -337,8 +353,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -385,13 +407,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fc-validate/fc-validate.c b/fc-validate/fc-validate.c index 6ecff36..2ceee20 100644 --- a/fc-validate/fc-validate.c +++ b/fc-validate/fc-validate.c @@ -41,6 +41,14 @@ #include #include +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif @@ -72,26 +80,26 @@ usage (char *program, int error) { FILE *file = error ? stderr : stdout; #if HAVE_GETOPT_LONG - fprintf (file, "usage: %s [-Vhv] [-i index] [-l LANG] [--index index] [--lang LANG] [--verbose] [--version] [--help] font-file...\n", + fprintf (file, _("usage: %s [-Vhv] [-i index] [-l LANG] [--index index] [--lang LANG] [--verbose] [--version] [--help] font-file...\n"), program); #else - fprintf (file, "usage: %s [-Vhv] [-i index] [-l LANG] font-file...\n", + fprintf (file, _("usage: %s [-Vhv] [-i index] [-l LANG] font-file...\n"), program); #endif - fprintf (file, "Validate font files and print result\n"); + fprintf (file, _("Validate font files and print result\n")); fprintf (file, "\n"); #if HAVE_GETOPT_LONG - fprintf (file, " -i, --index INDEX display the INDEX face of each font file only\n"); - fprintf (file, " -l, --lang=LANG set LANG instead of current locale\n"); - fprintf (file, " -v, --verbose show more detailed information\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, _(" -l, --lang=LANG set LANG instead of current locale\n")); + fprintf (file, _(" -v, --verbose show more detailed information\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, " -i INDEX (index) display the INDEX face of each font file only\n"); - fprintf (file, " -l LANG (lang) set LANG instead of current locale\n"); - fprintf (file, " -v (verbose) show more detailed information\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, _(" -l LANG (lang) set LANG instead of current locale\n")); + fprintf (file, _(" -v (verbose) show more detailed information\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); } @@ -156,7 +164,7 @@ main (int argc, char **argv) if (FT_Init_FreeType (&ftlib)) { - fprintf (stderr, "Can't initalize FreeType library\n"); + fprintf (stderr, _("Can't initalize FreeType library\n")); return 1; } @@ -174,7 +182,7 @@ main (int argc, char **argv) { if (!index_set && index > 0) break; - fprintf (stderr, "Unable to open %s\n", argv[i]); + fprintf (stderr, _("Unable to open %s\n"), argv[i]); err = 1; } else @@ -189,7 +197,7 @@ main (int argc, char **argv) { FcChar32 ucs4, pos, map[FC_CHARSET_MAP_SIZE]; - printf ("%s:%d Missing %d glyph(s) to satisfy the coverage for %s language\n", + printf (_("%s:%d Missing %d glyph(s) to satisfy the coverage for %s language\n"), argv[i], index, count, lang); if (verbose) @@ -219,7 +227,7 @@ main (int argc, char **argv) } else { - printf ("%s:%d Satisfy the coverage for %s language\n", argv[i], index, lang); + printf (_("%s:%d Satisfy the coverage for %s language\n"), argv[i], index, lang); } FcCharSetDestroy (fcs); diff --git a/fontconfig.pc.in b/fontconfig.pc.in index fa00a72..61b35fb 100644 --- a/fontconfig.pc.in +++ b/fontconfig.pc.in @@ -14,5 +14,5 @@ Version: @VERSION@ Requires: @PKGCONFIG_REQUIRES@ Requires.private: @PKGCONFIG_REQUIRES_PRIVATELY@ Libs: -L${libdir} -lfontconfig -Libs.private: @EXPAT_LIBS@ @FREETYPE_LIBS@ @ICONV_LIBS@ @LIBXML2_LIBS@ -Cflags: -I${includedir} @EXPAT_CFLAGS@ @FREETYPE_CFLAGS@ @ICONV_CFLAGS@ @LIBXML2_CFLAGS@ +Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@ +Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@ diff --git a/fontconfig.spec b/fontconfig.spec index 402515e..e622914 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,7 +4,7 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.12.1 +Version: 2.13.0 Release: 1 License: MIT Group: System Environment/Libraries diff --git a/fontconfig/Makefile.in b/fontconfig/Makefile.in index 69c36ed..d79df21 100644 --- a/fontconfig/Makefile.in +++ b/fontconfig/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -93,10 +93,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(fontconfiginclude_HEADERS) \ @@ -214,7 +219,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -226,8 +235,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -239,11 +252,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -263,15 +281,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -279,8 +295,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -327,13 +349,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff --git a/fontconfig/fcfreetype.h b/fontconfig/fcfreetype.h index 753fdf9..20b1128 100644 --- a/fontconfig/fcfreetype.h +++ b/fontconfig/fcfreetype.h @@ -51,7 +51,7 @@ FcPatternAddFTFace (FcPattern *p, const char *object, const FT_Face f); FcPublic FcPattern * FcFreeTypeQueryFace (const FT_Face face, const FcChar8 *file, - int id, + unsigned int id, FcBlanks *blanks); _FCFUNCPROTOEND diff --git a/fontconfig/fcprivate.h b/fontconfig/fcprivate.h index a6ee5c2..23021b2 100644 --- a/fontconfig/fcprivate.h +++ b/fontconfig/fcprivate.h @@ -123,5 +123,12 @@ _FcObjectSetVapBuild_bail0: \ ; \ } -#endif /* _FCPRIVATE_H_ */ +#ifndef FC_ATTRIBUTE_VISIBILITY_HIDDEN +#define FC_ATTRIBUTE_VISIBILITY_HIDDEN __attribute((visibility("hidden"))) +#endif + +#ifndef FC_ATTRIBUTE_VISIBILITY_EXPORT +#define FC_ATTRIBUTE_VISIBILITY_EXPORT __attribute((visibility("default"))) +#endif +#endif /* _FCPRIVATE_H_ */ diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h index 5c72b22..a89b22f 100644 --- a/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig.h @@ -28,6 +28,7 @@ #include #include #include +#include #if defined(__GNUC__) && (__GNUC__ >= 4) #define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0))) @@ -51,8 +52,8 @@ typedef int FcBool; */ #define FC_MAJOR 2 -#define FC_MINOR 12 -#define FC_REVISION 1 +#define FC_MINOR 13 +#define FC_REVISION 0 #define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION)) @@ -71,8 +72,9 @@ typedef int FcBool; #define _FC_STRINGIFY(s) _FC_STRINGIFY_(s) #define FC_CACHE_VERSION _FC_STRINGIFY(FC_CACHE_VERSION_NUMBER) -#define FcTrue 1 #define FcFalse 0 +#define FcTrue 1 +#define FcDontCare 2 #define FC_FAMILY "family" /* String */ #define FC_STYLE "style" /* String */ @@ -98,6 +100,7 @@ typedef int FcBool; #define FC_OUTLINE "outline" /* Bool */ #define FC_SCALABLE "scalable" /* Bool */ #define FC_COLOR "color" /* Bool */ +#define FC_VARIABLE "variable" /* Bool */ #define FC_SCALE "scale" /* double (deprecated) */ #define FC_SYMBOL "symbol" /* Bool */ #define FC_DPI "dpi" /* double */ @@ -118,6 +121,7 @@ typedef int FcBool; #define FC_DECORATIVE "decorative" /* Bool - true if style is a decorative variant */ #define FC_LCD_FILTER "lcdfilter" /* Int */ #define FC_FONT_FEATURES "fontfeatures" /* String */ +#define FC_FONT_VARIATIONS "fontvariations" /* String */ #define FC_NAMELANG "namelang" /* String RFC 3866 langs */ #define FC_PRGNAME "prgname" /* String */ #define FC_HASH "hash" /* String (deprecated) */ @@ -128,7 +132,8 @@ typedef int FcBool; #define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION /* Adjust outline rasterizer */ -#define FC_CHAR_WIDTH "charwidth" /* Int */ +#define FC_CHARWIDTH "charwidth" /* Int */ +#define FC_CHAR_WIDTH FC_CHARWIDTH #define FC_CHAR_HEIGHT "charheight"/* Int */ #define FC_MATRIX "matrix" /* FcMatrix */ @@ -235,6 +240,12 @@ typedef enum _FcResult { FcResultOutOfMemory } FcResult; +typedef enum _FcValueBinding { + FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame, + /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */ + FcValueBindingEnd = INT_MAX +} FcValueBinding; + typedef struct _FcPattern FcPattern; typedef struct _FcLangSet FcLangSet; @@ -269,7 +280,9 @@ typedef struct _FcObjectSet { } FcObjectSet; typedef enum _FcMatchKind { - FcMatchPattern, FcMatchFont, FcMatchScan + FcMatchPattern, FcMatchFont, FcMatchScan, + FcMatchKindEnd, + FcMatchKindBegin = FcMatchPattern } FcMatchKind; typedef enum _FcLangResult { @@ -284,6 +297,12 @@ typedef enum _FcSetName { FcSetApplication = 1 } FcSetName; +typedef struct _FcConfigFileInfoIter { + void *dummy1; + void *dummy2; + void *dummy3; +} FcConfigFileInfoIter; + typedef struct _FcAtomic FcAtomic; #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */ @@ -352,6 +371,11 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose); FcPublic void FcCacheCreateTagFile (const FcConfig *config); +FcPublic FcBool +FcDirCacheCreateUUID (FcChar8 *dir, + FcBool force, + FcConfig *config); + /* fccfg.c */ FcPublic FcChar8 * FcConfigHome (void); @@ -440,6 +464,21 @@ FcPublic void FcConfigSetSysRoot (FcConfig *config, const FcChar8 *sysroot); +FcPublic void +FcConfigFileInfoIterInit (FcConfig *config, + FcConfigFileInfoIter *iter); + +FcPublic FcBool +FcConfigFileInfoIterNext (FcConfig *config, + FcConfigFileInfoIter *iter); + +FcPublic FcBool +FcConfigFileInfoIterGet (FcConfig *config, + FcConfigFileInfoIter *iter, + FcChar8 **name, + FcChar8 **description, + FcBool *enabled); + /* fccharset.c */ FcPublic FcCharSet* FcCharSetCreate (void); @@ -567,7 +606,10 @@ FcDirCacheUnload (FcCache *cache); /* fcfreetype.c */ FcPublic FcPattern * -FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count); +FcFreeTypeQuery (const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count); + +FcPublic unsigned int +FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set); /* fcfs.c */ @@ -836,7 +878,10 @@ FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append FcPublic FcResult FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v); - + +FcPublic FcResult +FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b); + FcPublic FcBool FcPatternDel (FcPattern *p, const char *object); @@ -921,9 +966,15 @@ FcRangeGetDouble(const FcRange *range, double *begin, double *end); FcPublic int FcWeightFromOpenType (int ot_weight); +FcPublic double +FcWeightFromOpenTypeDouble (double ot_weight); + FcPublic int FcWeightToOpenType (int fc_weight); +FcPublic double +FcWeightToOpenTypeDouble (double fc_weight); + /* fcstr.c */ FcPublic FcChar8 * @@ -1031,6 +1082,11 @@ FcStrListDone (FcStrList *list); FcPublic FcBool FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain); +FcPublic FcBool +FcConfigParseAndLoadFromMemory (FcConfig *config, + const FcChar8 *buffer, + FcBool complain); + _FCFUNCPROTOEND #undef FC_ATTRIBUTE_SENTINEL diff --git a/fonts.conf.in b/fonts.conf.in index 7c16a70..2019923 100644 --- a/fonts.conf.in +++ b/fonts.conf.in @@ -2,6 +2,11 @@ + + + + + Default configuration file install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + + +dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) diff --git a/m4/iconv.m4 b/m4/iconv.m4 new file mode 100644 index 0000000..aa159c5 --- /dev/null +++ b/m4/iconv.m4 @@ -0,0 +1,271 @@ +# iconv.m4 serial 19 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2007-2014, 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + result |= 16; + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [m4_ifdef([gl_00GNULIB], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) + fi +]) diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 new file mode 100644 index 0000000..aca924c --- /dev/null +++ b/m4/intlmacosx.m4 @@ -0,0 +1,56 @@ +# intlmacosx.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 0000000..6209de6 --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,119 @@ +# lib-ld.m4 serial 6 +dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 0000000..6851031 --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 0000000..afdb9ca --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/m4/po.m4 b/m4/po.m4 new file mode 100644 index 0000000..c5a2f6b --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,453 @@ +# po.m4 serial 24 (gettext-0.19) +dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) diff --git a/missing b/missing index f62bbae..c6e3795 100755 --- a/missing +++ b/missing @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -210,6 +210,6 @@ exit $st # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/po-conf/ChangeLog b/po-conf/ChangeLog new file mode 100644 index 0000000..9b7898a --- /dev/null +++ b/po-conf/ChangeLog @@ -0,0 +1,12 @@ +2015-01-28 gettextize + + * Makefile.in.in: New file, from gettext-0.19.4. + * Rules-quot: New file, from gettext-0.19.4. + * boldquot.sed: New file, from gettext-0.19.4. + * en@boldquot.header: New file, from gettext-0.19.4. + * en@quot.header: New file, from gettext-0.19.4. + * insert-header.sin: New file, from gettext-0.19.4. + * quot.sed: New file, from gettext-0.19.4. + * remove-potcdate.sin: New file, from gettext-0.19.4. + * POTFILES.in: New file. + diff --git a/po-conf/LINGUAS b/po-conf/LINGUAS new file mode 100644 index 0000000..0d5d97c --- /dev/null +++ b/po-conf/LINGUAS @@ -0,0 +1,2 @@ +# Please keep this list sorted alphabetically. +zh_CN diff --git a/po-conf/Makefile.in.in b/po-conf/Makefile.in.in new file mode 100644 index 0000000..38c293d --- /dev/null +++ b/po-conf/Makefile.in.in @@ -0,0 +1,483 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# Origin: gettext-0.19.8 +GETTEXT_MACRO_VERSION = 0.19 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ + -size -10000000c -exec grep 'GNU @PACKAGE@' \ + /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ + rm -f $(DOMAIN).1po; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po-conf/Makevars b/po-conf/Makevars new file mode 100644 index 0000000..abbd220 --- /dev/null +++ b/po-conf/Makevars @@ -0,0 +1,80 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE)-conf + +# These two variables depend on the location of this directory. +subdir = po-conf +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Fontconfig Author(s) + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = no + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes + +$(DOMAIN).pot-update: export GETTEXTDATADIR = $(top_srcdir) diff --git a/po-conf/POTFILES.in b/po-conf/POTFILES.in new file mode 100644 index 0000000..f4846ac --- /dev/null +++ b/po-conf/POTFILES.in @@ -0,0 +1,34 @@ +conf.d/10-autohint.conf +conf.d/10-hinting-full.conf +conf.d/10-hinting-medium.conf +conf.d/10-hinting-none.conf +conf.d/10-hinting-slight.conf +conf.d/10-no-sub-pixel.conf +conf.d/10-scale-bitmap-fonts.conf +conf.d/10-sub-pixel-bgr.conf +conf.d/10-sub-pixel-rgb.conf +conf.d/10-sub-pixel-vbgr.conf +conf.d/10-sub-pixel-vrgb.conf +conf.d/10-unhinted.conf +conf.d/11-lcdfilter-default.conf +conf.d/11-lcdfilter-legacy.conf +conf.d/11-lcdfilter-light.conf +conf.d/20-unhint-small-vera.conf +conf.d/25-unhint-nonlatin.conf +conf.d/30-metric-aliases.conf +conf.d/40-nonlatin.conf +conf.d/45-generic.conf +conf.d/45-latin.conf +conf.d/49-sansserif.conf +conf.d/50-user.conf +conf.d/51-local.conf +conf.d/60-generic.conf +conf.d/60-latin.conf +conf.d/65-fonts-persian.conf +conf.d/65-khmer.conf +conf.d/65-nonlatin.conf +conf.d/69-unifont.conf +conf.d/70-no-bitmaps.conf +conf.d/70-yes-bitmaps.conf +conf.d/80-delicious.conf +conf.d/90-synthetic.conf diff --git a/po-conf/Rules-quot b/po-conf/Rules-quot new file mode 100644 index 0000000..baf6528 --- /dev/null +++ b/po-conf/Rules-quot @@ -0,0 +1,58 @@ +# This file, Rules-quot, can be copied and used freely without restrictions. +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ + | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ + { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ + $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ + ;; \ + *) \ + $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ + ;; \ + esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ + ; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po-conf/boldquot.sed b/po-conf/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po-conf/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“/g +s/”/”/g +s/‘/‘/g +s/’/’/g diff --git a/po-conf/en@boldquot.header b/po-conf/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po-conf/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po-conf/en@quot.header b/po-conf/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po-conf/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po-conf/fontconfig-conf.pot b/po-conf/fontconfig-conf.pot new file mode 100644 index 0000000..e9a16ea --- /dev/null +++ b/po-conf/fontconfig-conf.pot @@ -0,0 +1,136 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Fontconfig Author(s) +# This file is distributed under the same license as the fontconfig package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: fontconfig 2.13.0\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?" +"product=fontconfig\n" +"POT-Creation-Date: 2018-03-06 12:50+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf.d/10-autohint.conf:8 +msgid "Enable autohinter" +msgstr "" + +#: conf.d/10-hinting-full.conf:8 +msgid "Set hintfull to hintstyle" +msgstr "" + +#: conf.d/10-hinting-medium.conf:8 +msgid "Set hintmedium to hintstyle" +msgstr "" + +#: conf.d/10-hinting-none.conf:8 +msgid "Set hintnone to hintstyle" +msgstr "" + +#: conf.d/10-hinting-slight.conf:8 +msgid "Set hintslight to hintstyle" +msgstr "" + +#: conf.d/10-no-sub-pixel.conf:8 +msgid "Disable sub-pixel rendering" +msgstr "" + +#: conf.d/10-scale-bitmap-fonts.conf:8 +msgid "Bitmap scaling" +msgstr "" + +#: conf.d/10-sub-pixel-bgr.conf:8 +msgid "Enable sub-pixel rendering with the BGR stripes layout" +msgstr "" + +#: conf.d/10-sub-pixel-rgb.conf:8 +msgid "Enable sub-pixel rendering with the RGB stripes layout" +msgstr "" + +#: conf.d/10-sub-pixel-vbgr.conf:8 +msgid "Enable sub-pixel rendering with the vertical BGR stripes layout" +msgstr "" + +#: conf.d/10-sub-pixel-vrgb.conf:8 +msgid "Enable sub-pixel rendering with the vertical RGB stripes layout" +msgstr "" + +#: conf.d/10-unhinted.conf:8 +msgid "Disable hinting" +msgstr "" + +#: conf.d/11-lcdfilter-default.conf:8 +msgid "Use lcddefault as default for LCD filter" +msgstr "" + +#: conf.d/11-lcdfilter-legacy.conf:8 +msgid "Use lcdlegacy as default for LCD filter" +msgstr "" + +#: conf.d/11-lcdfilter-light.conf:8 +msgid "Use lcdlight as default for LCD filter" +msgstr "" + +#: conf.d/20-unhint-small-vera.conf:8 +msgid "" +"Disable hinting for Bitstream Vera fonts when the size is less than 8ppem" +msgstr "" + +#: conf.d/25-unhint-nonlatin.conf:8 +msgid "Disable hinting for CJK fonts" +msgstr "" + +#: conf.d/30-metric-aliases.conf:8 +msgid "Set substitutions for similar/metric-compatible families" +msgstr "" + +#: conf.d/40-nonlatin.conf:8 +msgid "Set substitutions for non-Latin fonts" +msgstr "" + +#: conf.d/45-generic.conf:8 +msgid "Set substitutions for emoji/math fonts" +msgstr "" + +#: conf.d/45-latin.conf:8 +msgid "Set substitutions for Latin fonts" +msgstr "" + +#: conf.d/49-sansserif.conf:8 +msgid "Add sans-serif to the family when no generic name" +msgstr "" + +#: conf.d/50-user.conf:8 +msgid "Load per-user customization files" +msgstr "" + +#: conf.d/51-local.conf:8 +msgid "Load local customization file" +msgstr "" + +#: conf.d/60-generic.conf:8 +msgid "Set preferable fonts for emoji/math fonts" +msgstr "" + +#: conf.d/60-latin.conf:8 +msgid "Set preferable fonts for Latin" +msgstr "" + +#: conf.d/65-nonlatin.conf:8 +msgid "Set preferable fonts for non-Latin" +msgstr "" + +#: conf.d/70-no-bitmaps.conf:8 +msgid "Reject bitmap fonts" +msgstr "" + +#: conf.d/70-yes-bitmaps.conf:8 +msgid "Accept bitmap fonts" +msgstr "" diff --git a/po-conf/insert-header.sin b/po-conf/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po-conf/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po-conf/quot.sed b/po-conf/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po-conf/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po-conf/remove-potcdate.sin b/po-conf/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po-conf/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po-conf/stamp-po b/po-conf/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po-conf/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/po-conf/zh_CN.gmo b/po-conf/zh_CN.gmo new file mode 100644 index 0000000..42b8077 Binary files /dev/null and b/po-conf/zh_CN.gmo differ diff --git a/po-conf/zh_CN.po b/po-conf/zh_CN.po new file mode 100644 index 0000000..4c28289 --- /dev/null +++ b/po-conf/zh_CN.po @@ -0,0 +1,140 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Fontconfig Author(s) +# This file is distributed under the same license as the fontconfig package. +# +# Dingyuan Wang , 2018. +# Mingcong Bai , 2018. +# Mingye Wang , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: fontconfig 2.12.92\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?" +"product=fontconfig\n" +"POT-Creation-Date: 2018-03-06 12:50+0900\n" +"PO-Revision-Date: 2018-02-16 01:19-0600\n" +"Last-Translator: Mingcong Bai \n" +"Language-Team: AOSC\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: conf.d/10-autohint.conf:8 +msgid "Enable autohinter" +msgstr "启用自动微调" + +#: conf.d/10-hinting-full.conf:8 +msgid "Set hintfull to hintstyle" +msgstr "设置微调风格为“完全 (hintfull)”" + +#: conf.d/10-hinting-medium.conf:8 +msgid "Set hintmedium to hintstyle" +msgstr "设置微调风格为“中等 (hintmedium)”" + +#: conf.d/10-hinting-none.conf:8 +msgid "Set hintnone to hintstyle" +msgstr "设置微调风格为“无 (hintnone)”" + +#: conf.d/10-hinting-slight.conf:8 +msgid "Set hintslight to hintstyle" +msgstr "设置微调风格为“轻微 (hintslight)”" + +#: conf.d/10-no-sub-pixel.conf:8 +msgid "Disable sub-pixel rendering" +msgstr "禁用次像素渲染" + +#: conf.d/10-scale-bitmap-fonts.conf:8 +msgid "Bitmap scaling" +msgstr "位图缩放" + +#: conf.d/10-sub-pixel-bgr.conf:8 +msgid "Enable sub-pixel rendering with the BGR stripes layout" +msgstr "启用蓝绿红 (BGR) 像素布局的次像素渲染" + +#: conf.d/10-sub-pixel-rgb.conf:8 +msgid "Enable sub-pixel rendering with the RGB stripes layout" +msgstr "启用红绿蓝 (RGB) 像素布局的次像素渲染" + +#: conf.d/10-sub-pixel-vbgr.conf:8 +msgid "Enable sub-pixel rendering with the vertical BGR stripes layout" +msgstr "启用垂直蓝绿红 (BGR) 像素布局的次像素渲染" + +#: conf.d/10-sub-pixel-vrgb.conf:8 +msgid "Enable sub-pixel rendering with the vertical RGB stripes layout" +msgstr "启用垂直红绿蓝 (RGB) 像素布局的次像素渲染" + +#: conf.d/10-unhinted.conf:8 +msgid "Disable hinting" +msgstr "禁用微调" + +#: conf.d/11-lcdfilter-default.conf:8 +msgid "Use lcddefault as default for LCD filter" +msgstr "将 lcddefault 设为默认 LCD 滤镜" + +#: conf.d/11-lcdfilter-legacy.conf:8 +msgid "Use lcdlegacy as default for LCD filter" +msgstr "将 lcdlegacy 设为默认 LCD 滤镜" + +#: conf.d/11-lcdfilter-light.conf:8 +msgid "Use lcdlight as default for LCD filter" +msgstr "将 lcdlight 设为默认 LCD 滤镜" + +#: conf.d/20-unhint-small-vera.conf:8 +msgid "" +"Disable hinting for Bitstream Vera fonts when the size is less than 8ppem" +msgstr "为大小小于 8ppem 的 Bitstream Vera 字体禁用微调" + +#: conf.d/25-unhint-nonlatin.conf:8 +msgid "Disable hinting for CJK fonts" +msgstr "为中日韩 (CJK) 字体禁用微调" + +#: conf.d/30-metric-aliases.conf:8 +msgid "Set substitutions for similar/metric-compatible families" +msgstr "为相似或规格兼容的字体家族设置替换" + +#: conf.d/40-nonlatin.conf:8 +msgid "Set substitutions for non-Latin fonts" +msgstr "为非拉丁语言字体设置替换" + +#: conf.d/45-generic.conf:8 +msgid "Set substitutions for emoji/math fonts" +msgstr "为绘文字 (Emoji) 或数学字体设置替换" + +#: conf.d/45-latin.conf:8 +msgid "Set substitutions for Latin fonts" +msgstr "为拉丁语言字体设置替换" + +#: conf.d/49-sansserif.conf:8 +msgid "Add sans-serif to the family when no generic name" +msgstr "在没有通用名称时添加 sans-serif 到字体家族" + +#: conf.d/50-user.conf:8 +msgid "Load per-user customization files" +msgstr "载入用户自定义文件" + +#: conf.d/51-local.conf:8 +msgid "Load local customization file" +msgstr "载入本地自定义文件" + +#: conf.d/60-generic.conf:8 +msgid "Set preferable fonts for emoji/math fonts" +msgstr "设置首选绘文字 (Emoji) 或数学字体" + +#: conf.d/60-latin.conf:8 +msgid "Set preferable fonts for Latin" +msgstr "设置首选拉丁语言字体" + +#: conf.d/65-nonlatin.conf:8 +msgid "Set preferable fonts for non-Latin" +msgstr "设置首选非拉丁语言字体" + +#: conf.d/70-no-bitmaps.conf:8 +msgid "Reject bitmap fonts" +msgstr "排除点阵字体" + +#: conf.d/70-yes-bitmaps.conf:8 +msgid "Accept bitmap fonts" +msgstr "接受点阵字体" diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 0000000..9b7898a --- /dev/null +++ b/po/ChangeLog @@ -0,0 +1,12 @@ +2015-01-28 gettextize + + * Makefile.in.in: New file, from gettext-0.19.4. + * Rules-quot: New file, from gettext-0.19.4. + * boldquot.sed: New file, from gettext-0.19.4. + * en@boldquot.header: New file, from gettext-0.19.4. + * en@quot.header: New file, from gettext-0.19.4. + * insert-header.sin: New file, from gettext-0.19.4. + * quot.sed: New file, from gettext-0.19.4. + * remove-potcdate.sin: New file, from gettext-0.19.4. + * POTFILES.in: New file. + diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..0d5d97c --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,2 @@ +# Please keep this list sorted alphabetically. +zh_CN diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..38c293d --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,483 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# Origin: gettext-0.19.8 +GETTEXT_MACRO_VERSION = 0.19 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ + -size -10000000c -exec grep 'GNU @PACKAGE@' \ + /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ + rm -f $(DOMAIN).1po; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..3283532 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Fontconfig Author(s) + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = no + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..3b4697e --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,11 @@ +# List of source files which contain translatable strings. +fc-cache/fc-cache.c +fc-cat/fc-cat.c +fc-conflist/fc-conflist.c +fc-list/fc-list.c +fc-match/fc-match.c +fc-pattern/fc-pattern.c +fc-query/fc-query.c +fc-scan/fc-scan.c +fc-validate/fc-validate.c +src/fccfg.c diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000..baf6528 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,58 @@ +# This file, Rules-quot, can be copied and used freely without restrictions. +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ + | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ + { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ + $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ + ;; \ + *) \ + $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ + ;; \ + esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ + ; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“/g +s/”/”/g +s/‘/‘/g +s/’/’/g diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/fontconfig.pot b/po/fontconfig.pot new file mode 100644 index 0000000..b302227 --- /dev/null +++ b/po/fontconfig.pot @@ -0,0 +1,581 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Fontconfig Author(s) +# This file is distributed under the same license as the fontconfig package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: fontconfig 2.13.0\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?" +"product=fontconfig\n" +"POT-Creation-Date: 2018-03-06 12:50+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fc-cache/fc-cache.c:98 +#, c-format +msgid "" +"usage: %s [-EfrsvVh] [-y SYSROOT] [--error-on-no-fonts] [--force|--really-" +"force] [--sysroot=SYSROOT] [--system-only] [--verbose] [--version] [--help] " +"[dirs]\n" +msgstr "" + +#: fc-cache/fc-cache.c:101 +#, c-format +msgid "usage: %s [-EfrsvVh] [-y SYSROOT] [dirs]\n" +msgstr "" + +#: fc-cache/fc-cache.c:104 +#, c-format +msgid "" +"Build font information caches in [dirs]\n" +"(all directories in font configuration by default).\n" +msgstr "" + +#: fc-cache/fc-cache.c:108 +#, c-format +msgid " -E, --error-on-no-fonts raise an error if no fonts in a directory\n" +msgstr "" + +#: fc-cache/fc-cache.c:109 +#, c-format +msgid "" +" -f, --force scan directories with apparently valid caches\n" +msgstr "" + +#: fc-cache/fc-cache.c:110 +#, c-format +msgid " -r, --really-force erase all existing caches, then rescan\n" +msgstr "" + +#: fc-cache/fc-cache.c:111 +#, c-format +msgid " -s, --system-only scan system-wide directories only\n" +msgstr "" + +#: fc-cache/fc-cache.c:112 +#, c-format +msgid " -y, --sysroot=SYSROOT prepend SYSROOT to all paths for scanning\n" +msgstr "" + +#: fc-cache/fc-cache.c:113 +#, c-format +msgid " -v, --verbose display status information while busy\n" +msgstr "" + +#: fc-cache/fc-cache.c:114 +#, c-format +msgid " -V, --version display font config version and exit\n" +msgstr "" + +#: fc-cache/fc-cache.c:115 +#, c-format +msgid " -h, --help display this help and exit\n" +msgstr "" + +#: fc-cache/fc-cache.c:117 +#, c-format +msgid " -E (error-on-no-fonts)\n" +msgstr "" + +#: fc-cache/fc-cache.c:118 +#, c-format +msgid " raise an error if no fonts in a directory\n" +msgstr "" + +#: fc-cache/fc-cache.c:119 +#, c-format +msgid " -f (force) scan directories with apparently valid caches\n" +msgstr "" + +#: fc-cache/fc-cache.c:120 +#, c-format +msgid " -r, (really force) erase all existing caches, then rescan\n" +msgstr "" + +#: fc-cache/fc-cache.c:121 +#, c-format +msgid " -s (system) scan system-wide directories only\n" +msgstr "" + +#: fc-cache/fc-cache.c:122 +#, c-format +msgid " -y SYSROOT (sysroot) prepend SYSROOT to all paths for scanning\n" +msgstr "" + +#: fc-cache/fc-cache.c:123 +#, c-format +msgid " -v (verbose) display status information while busy\n" +msgstr "" + +#: fc-cache/fc-cache.c:124 fc-cat/fc-cat.c:178 fc-list/fc-list.c:99 +#: fc-match/fc-match.c:103 fc-pattern/fc-pattern.c:97 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr "" + +#: fc-cache/fc-cache.c:125 fc-cat/fc-cat.c:179 fc-list/fc-list.c:100 +#: fc-match/fc-match.c:104 fc-pattern/fc-pattern.c:98 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr "" + +#: fc-cache/fc-cache.c:162 +#, c-format +msgid "skipping, looped directory detected\n" +msgstr "" + +#: fc-cache/fc-cache.c:172 +#, c-format +msgid "skipping, no such directory\n" +msgstr "" + +#: fc-cache/fc-cache.c:185 +#, c-format +msgid "\"%s\": not a directory, skipping\n" +msgstr "" + +#: fc-cache/fc-cache.c:210 +#, c-format +msgid "\"%s\": scanning error\n" +msgstr "" + +#: fc-cache/fc-cache.c:219 +#, c-format +msgid "skipping, existing cache is valid: %d fonts, %d dirs\n" +msgstr "" + +#: fc-cache/fc-cache.c:225 +#, c-format +msgid "caching, new cache contents: %d fonts, %d dirs\n" +msgstr "" + +#: fc-cache/fc-cache.c:230 +#, c-format +msgid "%s: failed to write cache\n" +msgstr "" + +#: fc-cache/fc-cache.c:239 +#, c-format +msgid "%s: Can't create subdir set\n" +msgstr "" + +#: fc-cache/fc-cache.c:253 +#, c-format +msgid "%s: Can't create subdir list\n" +msgstr "" + +#: fc-cache/fc-cache.c:359 fc-cat/fc-cat.c:305 +#, c-format +msgid "%s: Can't initialize font config library\n" +msgstr "" + +#: fc-cache/fc-cache.c:369 +#, c-format +msgid "%s: Can't create list of directories\n" +msgstr "" + +#: fc-cache/fc-cache.c:377 +#, c-format +msgid "%s: Can't add directory\n" +msgstr "" + +#: fc-cache/fc-cache.c:389 +#, c-format +msgid "Out of Memory\n" +msgstr "" + +#: fc-cache/fc-cache.c:421 +msgid "failed" +msgstr "" + +#: fc-cache/fc-cache.c:421 +msgid "succeeded" +msgstr "" + +#: fc-cat/fc-cat.c:159 +#, c-format +msgid "usage: %s [-rv] [--recurse] [--verbose] [*-%s" +msgstr "" + +#: fc-cat/fc-cat.c:163 +#, c-format +msgid "usage: %s [-rvVh] [*-%s" +msgstr "" + +#: fc-cat/fc-cat.c:166 +#, c-format +msgid "Reads font information cache from:\n" +msgstr "" + +#: fc-cat/fc-cat.c:167 +#, c-format +msgid " 1) specified fontconfig cache file\n" +msgstr "" + +#: fc-cat/fc-cat.c:168 +#, c-format +msgid " 2) related to a particular font directory\n" +msgstr "" + +#: fc-cat/fc-cat.c:171 +#, c-format +msgid " -r, --recurse recurse into subdirectories\n" +msgstr "" + +#: fc-cat/fc-cat.c:172 +#, c-format +msgid " -v, --verbose be verbose\n" +msgstr "" + +#: fc-cat/fc-cat.c:173 fc-conflist/fc-conflist.c:87 fc-list/fc-list.c:92 +#: fc-match/fc-match.c:95 fc-pattern/fc-pattern.c:91 fc-query/fc-query.c:94 +#: fc-scan/fc-scan.c:92 fc-validate/fc-validate.c:95 +#, c-format +msgid " -V, --version display font config version and exit\n" +msgstr "" + +#: fc-cat/fc-cat.c:174 fc-conflist/fc-conflist.c:88 fc-list/fc-list.c:93 +#: fc-match/fc-match.c:96 fc-pattern/fc-pattern.c:92 fc-query/fc-query.c:95 +#: fc-scan/fc-scan.c:93 fc-validate/fc-validate.c:96 +#, c-format +msgid " -h, --help display this help and exit\n" +msgstr "" + +#: fc-cat/fc-cat.c:176 +#, c-format +msgid " -r (recurse) recurse into subdirectories\n" +msgstr "" + +#: fc-cat/fc-cat.c:177 +#, c-format +msgid " -v (verbose) be verbose\n" +msgstr "" + +#: fc-cat/fc-cat.c:314 fc-cat/fc-cat.c:323 fc-cat/fc-cat.c:335 +#: fc-cat/fc-cat.c:343 +#, c-format +msgid "%s: malloc failure\n" +msgstr "" + +#: fc-cat/fc-cat.c:383 +#, c-format +msgid "" +"Directory: %s\n" +"Cache: %s\n" +"--------\n" +msgstr "" + +#: fc-conflist/fc-conflist.c:78 +#, c-format +msgid "usage: %s [-Vh] [--version] [--help]\n" +msgstr "" + +#: fc-conflist/fc-conflist.c:81 +#, c-format +msgid "usage: %s [-Vh]\n" +msgstr "" + +#: fc-conflist/fc-conflist.c:84 +#, c-format +msgid "Show the ruleset files information on the system\n" +msgstr "" + +#: fc-conflist/fc-conflist.c:90 fc-validate/fc-validate.c:101 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr "" + +#: fc-conflist/fc-conflist.c:91 fc-validate/fc-validate.c:102 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr "" + +#: fc-list/fc-list.c:79 +#, c-format +msgid "" +"usage: %s [-vbqVh] [-f FORMAT] [--verbose] [--brief] [--format=FORMAT] [--" +"quiet] [--version] [--help] [pattern] {element ...} \n" +msgstr "" + +#: fc-list/fc-list.c:82 +#, c-format +msgid "usage: %s [-vbqVh] [-f FORMAT] [pattern] {element ...} \n" +msgstr "" + +#: fc-list/fc-list.c:85 +#, c-format +msgid "List fonts matching [pattern]\n" +msgstr "" + +#: fc-list/fc-list.c:88 fc-match/fc-match.c:92 +#, c-format +msgid " -v, --verbose display entire font pattern verbosely\n" +msgstr "" + +#: fc-list/fc-list.c:89 fc-match/fc-match.c:93 +#, c-format +msgid " -b, --brief display entire font pattern briefly\n" +msgstr "" + +#: fc-list/fc-list.c:90 fc-match/fc-match.c:94 fc-pattern/fc-pattern.c:90 +#: fc-query/fc-query.c:93 fc-scan/fc-scan.c:91 +#, c-format +msgid " -f, --format=FORMAT use the given output format\n" +msgstr "" + +#: fc-list/fc-list.c:91 +#, c-format +msgid "" +" -q, --quiet suppress all normal output, exit 1 if no fonts " +"matched\n" +msgstr "" + +#: fc-list/fc-list.c:95 fc-match/fc-match.c:100 +#, c-format +msgid " -v (verbose) display entire font pattern verbosely\n" +msgstr "" + +#: fc-list/fc-list.c:96 fc-match/fc-match.c:101 +#, c-format +msgid " -b (brief) display entire font pattern briefly\n" +msgstr "" + +#: fc-list/fc-list.c:97 fc-match/fc-match.c:102 fc-pattern/fc-pattern.c:96 +#, c-format +msgid " -f FORMAT (format) use the given output format\n" +msgstr "" + +#: fc-list/fc-list.c:98 +#, c-format +msgid "" +" -q, (quiet) suppress all normal output, exit 1 if no fonts " +"matched\n" +msgstr "" + +#: fc-list/fc-list.c:159 fc-match/fc-match.c:166 fc-pattern/fc-pattern.c:150 +#, c-format +msgid "Unable to parse the pattern\n" +msgstr "" + +#: fc-match/fc-match.c:81 +#, c-format +msgid "" +"usage: %s [-savbVh] [-f FORMAT] [--sort] [--all] [--verbose] [--brief] [--" +"format=FORMAT] [--version] [--help] [pattern] {element...}\n" +msgstr "" + +#: fc-match/fc-match.c:84 +#, c-format +msgid "usage: %s [-savVh] [-f FORMAT] [pattern] {element...}\n" +msgstr "" + +#: fc-match/fc-match.c:87 fc-pattern/fc-pattern.c:85 +#, c-format +msgid "List best font matching [pattern]\n" +msgstr "" + +#: fc-match/fc-match.c:90 +#, c-format +msgid " -s, --sort display sorted list of matches\n" +msgstr "" + +#: fc-match/fc-match.c:91 +#, c-format +msgid " -a, --all display unpruned sorted list of matches\n" +msgstr "" + +#: fc-match/fc-match.c:98 +#, c-format +msgid " -s, (sort) display sorted list of matches\n" +msgstr "" + +#: fc-match/fc-match.c:99 +#, c-format +msgid " -a (all) display unpruned sorted list of matches\n" +msgstr "" + +#: fc-match/fc-match.c:195 +#, c-format +msgid "No fonts installed on the system\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:79 +#, c-format +msgid "" +"usage: %s [-cdVh] [-f FORMAT] [--config] [--default] [--verbose] [--" +"format=FORMAT] [--version] [--help] [pattern] {element...}\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:82 +#, c-format +msgid "usage: %s [-cdVh] [-f FORMAT] [pattern] {element...}\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:88 +#, c-format +msgid " -c, --config perform config substitution on pattern\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:89 +#, c-format +msgid " -d, --default perform default substitution on pattern\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:94 +#, c-format +msgid " -c, (config) perform config substitution on pattern\n" +msgstr "" + +#: fc-pattern/fc-pattern.c:95 +#, c-format +msgid " -d, (default) perform default substitution on pattern\n" +msgstr "" + +#: fc-query/fc-query.c:82 +#, c-format +msgid "" +"usage: %s [-bVh] [-i index] [-f FORMAT] [--index index] [--brief] [--format " +"FORMAT] [--version] [--help] font-file...\n" +msgstr "" + +#: fc-query/fc-query.c:85 +#, c-format +msgid "usage: %s [-bVh] [-i index] [-f FORMAT] font-file...\n" +msgstr "" + +#: fc-query/fc-query.c:88 +#, c-format +msgid "Query font files and print resulting pattern(s)\n" +msgstr "" + +#: fc-query/fc-query.c:91 fc-validate/fc-validate.c:92 +#, c-format +msgid " -i, --index INDEX display the INDEX face of each font file only\n" +msgstr "" + +#: fc-query/fc-query.c:92 fc-scan/fc-scan.c:90 +#, c-format +msgid " -b, --brief display font pattern briefly\n" +msgstr "" + +#: fc-query/fc-query.c:97 +#, c-format +msgid "" +" -i INDEX (index) display the INDEX face of each font file only\n" +msgstr "" + +#: fc-query/fc-query.c:98 fc-scan/fc-scan.c:95 +#, c-format +msgid " -b (brief) display font pattern briefly\n" +msgstr "" + +#: fc-query/fc-query.c:99 fc-scan/fc-scan.c:96 +#, c-format +msgid " -f FORMAT (format) use the given output format\n" +msgstr "" + +#: fc-query/fc-query.c:100 fc-scan/fc-scan.c:97 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr "" + +#: fc-query/fc-query.c:101 fc-scan/fc-scan.c:98 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr "" + +#: fc-query/fc-query.c:158 +#, c-format +msgid "Can't query face %u of font file %s\n" +msgstr "" + +#: fc-scan/fc-scan.c:81 +#, c-format +msgid "" +"usage: %s [-bVh] [-f FORMAT] [--brief] [--format FORMAT] [--version] [--" +"help] font-file...\n" +msgstr "" + +#: fc-scan/fc-scan.c:84 +#, c-format +msgid "usage: %s [-bVh] [-f FORMAT] font-file...\n" +msgstr "" + +#: fc-scan/fc-scan.c:87 +#, c-format +msgid "Scan font files and directories, and print resulting pattern(s)\n" +msgstr "" + +#: fc-validate/fc-validate.c:83 +#, c-format +msgid "" +"usage: %s [-Vhv] [-i index] [-l LANG] [--index index] [--lang LANG] [--" +"verbose] [--version] [--help] font-file...\n" +msgstr "" + +#: fc-validate/fc-validate.c:86 +#, c-format +msgid "usage: %s [-Vhv] [-i index] [-l LANG] font-file...\n" +msgstr "" + +#: fc-validate/fc-validate.c:89 +#, c-format +msgid "Validate font files and print result\n" +msgstr "" + +#: fc-validate/fc-validate.c:93 +#, c-format +msgid " -l, --lang=LANG set LANG instead of current locale\n" +msgstr "" + +#: fc-validate/fc-validate.c:94 +#, c-format +msgid " -v, --verbose show more detailed information\n" +msgstr "" + +#: fc-validate/fc-validate.c:98 +#, c-format +msgid "" +" -i INDEX (index) display the INDEX face of each font file only\n" +msgstr "" + +#: fc-validate/fc-validate.c:99 +#, c-format +msgid " -l LANG (lang) set LANG instead of current locale\n" +msgstr "" + +#: fc-validate/fc-validate.c:100 +#, c-format +msgid " -v (verbose) show more detailed information\n" +msgstr "" + +#: fc-validate/fc-validate.c:167 +#, c-format +msgid "Can't initalize FreeType library\n" +msgstr "" + +#: fc-validate/fc-validate.c:185 +#, c-format +msgid "Unable to open %s\n" +msgstr "" + +#: fc-validate/fc-validate.c:200 +#, c-format +msgid "%s:%d Missing %d glyph(s) to satisfy the coverage for %s language\n" +msgstr "" + +#: fc-validate/fc-validate.c:230 +#, c-format +msgid "%s:%d Satisfy the coverage for %s language\n" +msgstr "" + +#: src/fccfg.c:2657 +msgid "No description" +msgstr "" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/stamp-po b/po/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo new file mode 100644 index 0000000..8eb2175 Binary files /dev/null and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..4bb67c2 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,608 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Fontconfig Author(s) +# This file is distributed under the same license as the fontconfig package. +# +# Dingyuan Wang , 2018. +# Mingcong Bai , 2018. +# Mingye Wang , 2018. +# +# +msgid "" +msgstr "" +"Project-Id-Version: fontconfig 2.12.92\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?" +"product=fontconfig\n" +"POT-Creation-Date: 2018-03-06 12:50+0900\n" +"PO-Revision-Date: 2018-02-16 01:41-0600\n" +"Last-Translator: Mingcong Bai \n" +"Language-Team: AOSC\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fc-cache/fc-cache.c:98 +#, c-format +msgid "" +"usage: %s [-EfrsvVh] [-y SYSROOT] [--error-on-no-fonts] [--force|--really-" +"force] [--sysroot=SYSROOT] [--system-only] [--verbose] [--version] [--help] " +"[dirs]\n" +msgstr "" +"用法:%s [-EfrsvVh] [-y <系统根>] [--error-on-no-fonts] [--force|--really-" +"force] [--sysroot=<系统根>] [--system-only] [--verbose] [--version] [--help] " +"[目录]\n" + +#: fc-cache/fc-cache.c:101 +#, c-format +msgid "usage: %s [-EfrsvVh] [-y SYSROOT] [dirs]\n" +msgstr "用法:%s [-EfrsvVh] [-y <系统根>] [目录]\n" + +#: fc-cache/fc-cache.c:104 +#, c-format +msgid "" +"Build font information caches in [dirs]\n" +"(all directories in font configuration by default).\n" +msgstr "" +"在 [目录] 构建字体信息缓存\n" +"(默认为所有字体配置中定义的目录)。\n" + +#: fc-cache/fc-cache.c:108 +#, c-format +msgid " -E, --error-on-no-fonts raise an error if no fonts in a directory\n" +msgstr " -E, --error-on-no-fonts 在目录中无字体时报错\n" + +#: fc-cache/fc-cache.c:109 +#, c-format +msgid "" +" -f, --force scan directories with apparently valid caches\n" +msgstr " -f, --force 强制扫描已有有效缓存的目录\n" + +#: fc-cache/fc-cache.c:110 +#, c-format +msgid " -r, --really-force erase all existing caches, then rescan\n" +msgstr " -r, --really-force 清空所有缓存并重新扫描\n" + +#: fc-cache/fc-cache.c:111 +#, c-format +msgid " -s, --system-only scan system-wide directories only\n" +msgstr " -s, --system-only 仅扫描系统全局目录\n" + +#: fc-cache/fc-cache.c:112 +#, c-format +msgid " -y, --sysroot=SYSROOT prepend SYSROOT to all paths for scanning\n" +msgstr " -y, --sysroot=<系统根> 扫描时将 <系统根> 值附加到路径开头\n" + +#: fc-cache/fc-cache.c:113 +#, c-format +msgid " -v, --verbose display status information while busy\n" +msgstr " -v, --verbose 在程序工作时显示状态信息\n" + +#: fc-cache/fc-cache.c:114 +#, c-format +msgid " -V, --version display font config version and exit\n" +msgstr " -V, --version 显示 Fontconfig 版本并退出\n" + +#: fc-cache/fc-cache.c:115 +#, c-format +msgid " -h, --help display this help and exit\n" +msgstr " -h, --help 显示该帮助信息并退出\n" + +#: fc-cache/fc-cache.c:117 +#, c-format +msgid " -E (error-on-no-fonts)\n" +msgstr " -E (error-on-no-fonts)\n" + +#: fc-cache/fc-cache.c:118 +#, c-format +msgid " raise an error if no fonts in a directory\n" +msgstr " 在目录中无字体时报错\n" + +#: fc-cache/fc-cache.c:119 +#, c-format +msgid " -f (force) scan directories with apparently valid caches\n" +msgstr " -f (force) 强制扫描带有有效缓存的目录\n" + +#: fc-cache/fc-cache.c:120 +#, c-format +msgid " -r, (really force) erase all existing caches, then rescan\n" +msgstr " -r, (really-force) 清空所有缓存并重新扫描\n" + +#: fc-cache/fc-cache.c:121 +#, c-format +msgid " -s (system) scan system-wide directories only\n" +msgstr " -s (system) 仅扫描系统全局目录\n" + +#: fc-cache/fc-cache.c:122 +#, c-format +msgid " -y SYSROOT (sysroot) prepend SYSROOT to all paths for scanning\n" +msgstr " -y <系统根> (sysroot) 扫描时将 <系统根> 值附加到路径开头\n" + +#: fc-cache/fc-cache.c:123 +#, c-format +msgid " -v (verbose) display status information while busy\n" +msgstr " -v (verbose) 在程序工作时显示状态信息\n" + +#: fc-cache/fc-cache.c:124 fc-cat/fc-cat.c:178 fc-list/fc-list.c:99 +#: fc-match/fc-match.c:103 fc-pattern/fc-pattern.c:97 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr " -V (version) 显示 Fontconfig 版本并退出\n" + +#: fc-cache/fc-cache.c:125 fc-cat/fc-cat.c:179 fc-list/fc-list.c:100 +#: fc-match/fc-match.c:104 fc-pattern/fc-pattern.c:98 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr " -h (help) 显示该帮助信息并退出\n" + +#: fc-cache/fc-cache.c:162 +#, c-format +msgid "skipping, looped directory detected\n" +msgstr "跳过,探测到循环目录\n" + +#: fc-cache/fc-cache.c:172 +#, c-format +msgid "skipping, no such directory\n" +msgstr "跳过,无此目录\n" + +#: fc-cache/fc-cache.c:185 +#, c-format +msgid "\"%s\": not a directory, skipping\n" +msgstr "“%s”:不是一个目录,跳过\n" + +#: fc-cache/fc-cache.c:210 +#, c-format +msgid "\"%s\": scanning error\n" +msgstr "“%s”:扫描错误\n" + +#: fc-cache/fc-cache.c:219 +#, c-format +msgid "skipping, existing cache is valid: %d fonts, %d dirs\n" +msgstr "跳过,当前缓存有效:%d 个字体,%d 个目录\n" + +#: fc-cache/fc-cache.c:225 +#, c-format +msgid "caching, new cache contents: %d fonts, %d dirs\n" +msgstr "正在生成缓存,新增缓存内容:%d 个字体,%d 个目录\n" + +#: fc-cache/fc-cache.c:230 +#, c-format +msgid "%s: failed to write cache\n" +msgstr "%s:无法写入缓存\n" + +#: fc-cache/fc-cache.c:239 +#, c-format +msgid "%s: Can't create subdir set\n" +msgstr "%s:无法创建子目录集\n" + +#: fc-cache/fc-cache.c:253 +#, c-format +msgid "%s: Can't create subdir list\n" +msgstr "%s:无法创建子目录列表\n" + +#: fc-cache/fc-cache.c:359 fc-cat/fc-cat.c:305 +#, c-format +msgid "%s: Can't initialize font config library\n" +msgstr "%s:无法初始化 Fontconfig 库\n" + +#: fc-cache/fc-cache.c:369 +#, c-format +msgid "%s: Can't create list of directories\n" +msgstr "%s:无法创建目录列表\n" + +#: fc-cache/fc-cache.c:377 +#, c-format +msgid "%s: Can't add directory\n" +msgstr "%s:无法添加目录\n" + +#: fc-cache/fc-cache.c:389 +#, c-format +msgid "Out of Memory\n" +msgstr "内存耗尽\n" + +#: fc-cache/fc-cache.c:421 +msgid "failed" +msgstr "缓存生成失败" + +#: fc-cache/fc-cache.c:421 +msgid "succeeded" +msgstr "缓存生成成功" + +#: fc-cat/fc-cat.c:159 +#, c-format +msgid "usage: %s [-rv] [--recurse] [--verbose] [*-%s" +msgstr "用法:%s [-rv] [--recurse] [--verbose] [*-%s" + +#: fc-cat/fc-cat.c:163 +#, c-format +msgid "usage: %s [-rvVh] [*-%s" +msgstr "用法:%s [-rvVh] [*-%s" + +#: fc-cat/fc-cat.c:166 +#, c-format +msgid "Reads font information cache from:\n" +msgstr "从此处读取字体信息缓存:\n" + +#: fc-cat/fc-cat.c:167 +#, c-format +msgid " 1) specified fontconfig cache file\n" +msgstr "1. 指定的 Fontconfig 缓存文件\n" + +#: fc-cat/fc-cat.c:168 +#, c-format +msgid " 2) related to a particular font directory\n" +msgstr "2. 相对于某个字体目录\n" + +#: fc-cat/fc-cat.c:171 +#, c-format +msgid " -r, --recurse recurse into subdirectories\n" +msgstr " -r, --recurse 递归进入子目录\n" + +#: fc-cat/fc-cat.c:172 +#, c-format +msgid " -v, --verbose be verbose\n" +msgstr " -v, --verbose 输出详尽信息\n" + +#: fc-cat/fc-cat.c:173 fc-conflist/fc-conflist.c:87 fc-list/fc-list.c:92 +#: fc-match/fc-match.c:95 fc-pattern/fc-pattern.c:91 fc-query/fc-query.c:94 +#: fc-scan/fc-scan.c:92 fc-validate/fc-validate.c:95 +#, c-format +msgid " -V, --version display font config version and exit\n" +msgstr " -V, --version 显示 Fontconfig 版本并退出\n" + +#: fc-cat/fc-cat.c:174 fc-conflist/fc-conflist.c:88 fc-list/fc-list.c:93 +#: fc-match/fc-match.c:96 fc-pattern/fc-pattern.c:92 fc-query/fc-query.c:95 +#: fc-scan/fc-scan.c:93 fc-validate/fc-validate.c:96 +#, c-format +msgid " -h, --help display this help and exit\n" +msgstr " -h, --help 显示该帮助信息并退出\n" + +#: fc-cat/fc-cat.c:176 +#, c-format +msgid " -r (recurse) recurse into subdirectories\n" +msgstr " -r (recurse) 递归进入子目录\n" + +#: fc-cat/fc-cat.c:177 +#, c-format +msgid " -v (verbose) be verbose\n" +msgstr " -v (verbose) 输出详尽信息\n" + +#: fc-cat/fc-cat.c:314 fc-cat/fc-cat.c:323 fc-cat/fc-cat.c:335 +#: fc-cat/fc-cat.c:343 +#, c-format +msgid "%s: malloc failure\n" +msgstr "%s:无法分配内存 (malloc)\n" + +#: fc-cat/fc-cat.c:383 +#, c-format +msgid "" +"Directory: %s\n" +"Cache: %s\n" +"--------\n" +msgstr "" +"目录:%s\n" +"缓存:%s\n" +"--------\n" + +#: fc-conflist/fc-conflist.c:78 +#, c-format +msgid "usage: %s [-Vh] [--version] [--help]\n" +msgstr "用法:%s [-Vh] [--version] [--help]\n" + +#: fc-conflist/fc-conflist.c:81 +#, c-format +msgid "usage: %s [-Vh]\n" +msgstr "用法:%s [-Vh]\n" + +#: fc-conflist/fc-conflist.c:84 +#, c-format +msgid "Show the ruleset files information on the system\n" +msgstr "显示当前系统中的规则集文件\n" + +#: fc-conflist/fc-conflist.c:90 fc-validate/fc-validate.c:101 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr " -V (版本) 显示 Fontconfig 版本并退出\n" + +#: fc-conflist/fc-conflist.c:91 fc-validate/fc-validate.c:102 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr " -h (帮助) 显示该帮助信息并退出\n" + +#: fc-list/fc-list.c:79 +#, c-format +msgid "" +"usage: %s [-vbqVh] [-f FORMAT] [--verbose] [--brief] [--format=FORMAT] [--" +"quiet] [--version] [--help] [pattern] {element ...} \n" +msgstr "" +"用法:%s [-vbqVh] [-f <输出格式>] [--verbose] [--brief] [--format=<输出格式" +">] [--quiet] [--version] [--help] [匹配模式] {元素 …} \n" + +#: fc-list/fc-list.c:82 +#, c-format +msgid "usage: %s [-vbqVh] [-f FORMAT] [pattern] {element ...} \n" +msgstr "用法:%s [-vbqVh] [-f <输出格式>] [匹配模式] {元素 …} \n" + +#: fc-list/fc-list.c:85 +#, c-format +msgid "List fonts matching [pattern]\n" +msgstr "列出符合 [匹配模式] 的字体\n" + +#: fc-list/fc-list.c:88 fc-match/fc-match.c:92 +#, c-format +msgid " -v, --verbose display entire font pattern verbosely\n" +msgstr " -v, --verbose 详尽显示整个字体匹配模式\n" + +#: fc-list/fc-list.c:89 fc-match/fc-match.c:93 +#, c-format +msgid " -b, --brief display entire font pattern briefly\n" +msgstr " -b, --brief 简略显示整个字体匹配模式\n" + +#: fc-list/fc-list.c:90 fc-match/fc-match.c:94 fc-pattern/fc-pattern.c:90 +#: fc-query/fc-query.c:93 fc-scan/fc-scan.c:91 +#, c-format +msgid " -f, --format=FORMAT use the given output format\n" +msgstr " -f, --format=<输出格式> 使用指定的输出格式\n" + +#: fc-list/fc-list.c:91 +#, c-format +msgid "" +" -q, --quiet suppress all normal output, exit 1 if no fonts " +"matched\n" +msgstr " -q, --quiet 静默所有正常输出,无匹配字体时返回退出代码 1\n" + +#: fc-list/fc-list.c:95 fc-match/fc-match.c:100 +#, c-format +msgid " -v (verbose) display entire font pattern verbosely\n" +msgstr " -v (verbose) 详尽显示整个字体匹配模式\n" + +#: fc-list/fc-list.c:96 fc-match/fc-match.c:101 +#, c-format +msgid " -b (brief) display entire font pattern briefly\n" +msgstr " -b (brief) 简略显示整个字体匹配模式\n" + +#: fc-list/fc-list.c:97 fc-match/fc-match.c:102 fc-pattern/fc-pattern.c:96 +#, c-format +msgid " -f FORMAT (format) use the given output format\n" +msgstr " -f <输出格式> (format) 使用指定的输出格式\n" + +#: fc-list/fc-list.c:98 +#, c-format +msgid "" +" -q, (quiet) suppress all normal output, exit 1 if no fonts " +"matched\n" +msgstr " -q, (quiet) 静默所有正常输出,无匹配字体时返回退出代码 1\n" + +#: fc-list/fc-list.c:159 fc-match/fc-match.c:166 fc-pattern/fc-pattern.c:150 +#, c-format +msgid "Unable to parse the pattern\n" +msgstr "无法解析匹配模式\n" + +#: fc-match/fc-match.c:81 +#, c-format +msgid "" +"usage: %s [-savbVh] [-f FORMAT] [--sort] [--all] [--verbose] [--brief] [--" +"format=FORMAT] [--version] [--help] [pattern] {element...}\n" +msgstr "" +"用法:%s [-savbVh] [-f <输出格式>] [--sort] [--all] [--verbose] [--brief] [--" +"format=<输出格式>] [--version] [--help] [匹配模式] {元素…}\n" + +#: fc-match/fc-match.c:84 +#, c-format +msgid "usage: %s [-savVh] [-f FORMAT] [pattern] {element...}\n" +msgstr "用法:%s [-savVh] [-f <输出格式>] [匹配模式] {元素…}\n" + +#: fc-match/fc-match.c:87 fc-pattern/fc-pattern.c:85 +#, c-format +msgid "List best font matching [pattern]\n" +msgstr "列出符合 [匹配模式] 的最佳字体\n" + +#: fc-match/fc-match.c:90 +#, c-format +msgid " -s, --sort display sorted list of matches\n" +msgstr " -s, --sort 显示已排序的匹配列表\n" + +#: fc-match/fc-match.c:91 +#, c-format +msgid " -a, --all display unpruned sorted list of matches\n" +msgstr " -a, --all 显示未修剪而已排序的匹配列表\n" + +#: fc-match/fc-match.c:98 +#, c-format +msgid " -s, (sort) display sorted list of matches\n" +msgstr " -s, (sort) 显示已排序的匹配列表\n" + +#: fc-match/fc-match.c:99 +#, c-format +msgid " -a (all) display unpruned sorted list of matches\n" +msgstr " -a (all) 显示未修剪而已排序的匹配列表\n" + +#: fc-match/fc-match.c:195 +#, c-format +msgid "No fonts installed on the system\n" +msgstr "系统中未安装任何字体\n" + +#: fc-pattern/fc-pattern.c:79 +#, c-format +msgid "" +"usage: %s [-cdVh] [-f FORMAT] [--config] [--default] [--verbose] [--" +"format=FORMAT] [--version] [--help] [pattern] {element...}\n" +msgstr "" +"用法:%s [-cdVh] [-f <输出格式>] [--config] [--default] [--verbose] [--" +"format=<输出格式>] [--version] [--help] [匹配模式] {元素…}\n" + +#: fc-pattern/fc-pattern.c:82 +#, c-format +msgid "usage: %s [-cdVh] [-f FORMAT] [pattern] {element...}\n" +msgstr "用法:%s [-cdVh] [-f <输出格式>] [匹配模式] {元素…}\n" + +#: fc-pattern/fc-pattern.c:88 +#, c-format +msgid " -c, --config perform config substitution on pattern\n" +msgstr " -c, --config 根据匹配模式进行配置替换\n" + +#: fc-pattern/fc-pattern.c:89 +#, c-format +msgid " -d, --default perform default substitution on pattern\n" +msgstr " -d, --default 根据匹配模式进行默认值替换\n" + +#: fc-pattern/fc-pattern.c:94 +#, c-format +msgid " -c, (config) perform config substitution on pattern\n" +msgstr " -c, (config) 根据匹配模式进行配置替换\n" + +#: fc-pattern/fc-pattern.c:95 +#, c-format +msgid " -d, (default) perform default substitution on pattern\n" +msgstr " -d, (default) 根据匹配模式进行默认值替换\n" + +#: fc-query/fc-query.c:82 +#, c-format +msgid "" +"usage: %s [-bVh] [-i index] [-f FORMAT] [--index index] [--brief] [--format " +"FORMAT] [--version] [--help] font-file...\n" +msgstr "" +"用法:%s [-bVh] [-i index] [-f <输出格式>] [--index index] [--brief] [--" +"format <输出格式>] [--version] [--help] 字体文件…\n" + +#: fc-query/fc-query.c:85 +#, c-format +msgid "usage: %s [-bVh] [-i index] [-f FORMAT] font-file...\n" +msgstr "用法:%s [-bVh] [-i index] [-f <输出格式>] 字体文件…\n" + +#: fc-query/fc-query.c:88 +#, c-format +msgid "Query font files and print resulting pattern(s)\n" +msgstr "" +"查询字体文件并输出匹配模式\n" +"\n" + +#: fc-query/fc-query.c:91 fc-validate/fc-validate.c:92 +#, c-format +msgid " -i, --index INDEX display the INDEX face of each font file only\n" +msgstr " -i, --index <编号> 仅显示每个字体文件的 <编号> 样式\n" + +#: fc-query/fc-query.c:92 fc-scan/fc-scan.c:90 +#, c-format +msgid " -b, --brief display font pattern briefly\n" +msgstr " -b, --brief 简略显示字体匹配模式\n" + +#: fc-query/fc-query.c:97 +#, c-format +msgid "" +" -i INDEX (index) display the INDEX face of each font file only\n" +msgstr " -i <编号> (index) 仅显示每个字体文件的 <编号> 样式\n" + +#: fc-query/fc-query.c:98 fc-scan/fc-scan.c:95 +#, c-format +msgid " -b (brief) display font pattern briefly\n" +msgstr " -b (brief) 简略显示字体匹配模式\n" + +#: fc-query/fc-query.c:99 fc-scan/fc-scan.c:96 +#, c-format +msgid " -f FORMAT (format) use the given output format\n" +msgstr " -f <输出格式> (format) 使用指定的输出格式\n" + +#: fc-query/fc-query.c:100 fc-scan/fc-scan.c:97 +#, c-format +msgid " -V (version) display font config version and exit\n" +msgstr " -V (version) 显示 Fontconfig 版本并退出\n" + +#: fc-query/fc-query.c:101 fc-scan/fc-scan.c:98 +#, c-format +msgid " -h (help) display this help and exit\n" +msgstr " -h (help) 显示此帮助信息并退出\n" + +#: fc-query/fc-query.c:158 +#, c-format +msgid "Can't query face %u of font file %s\n" +msgstr "无法查询字体文件 %2$s 的样式 %1$u\n" + +#: fc-scan/fc-scan.c:81 +#, c-format +msgid "" +"usage: %s [-bVh] [-f FORMAT] [--brief] [--format FORMAT] [--version] [--" +"help] font-file...\n" +msgstr "" +"用法:%s [-bVh] [-f <输出格式>] [--brief] [--format <输出格式>] [--version] " +"[--help] 字体文件…\n" + +#: fc-scan/fc-scan.c:84 +#, c-format +msgid "usage: %s [-bVh] [-f FORMAT] font-file...\n" +msgstr "用法:%s [-bVh] [-f <输出格式>] 字体文件…\n" + +#: fc-scan/fc-scan.c:87 +#, c-format +msgid "Scan font files and directories, and print resulting pattern(s)\n" +msgstr "扫描字体文件和目录并输出匹配模式\n" + +#: fc-validate/fc-validate.c:83 +#, c-format +msgid "" +"usage: %s [-Vhv] [-i index] [-l LANG] [--index index] [--lang LANG] [--" +"verbose] [--version] [--help] font-file...\n" +msgstr "" +"用法:%s [-Vhv] [-i index] [-l LANG] [--index index] [--lang LANG] [--" +"verbose] [--version] [--help] 字体文件…\n" + +#: fc-validate/fc-validate.c:86 +#, c-format +msgid "usage: %s [-Vhv] [-i index] [-l LANG] font-file...\n" +msgstr "用法:%s [-Vhv] [-i index] [-l LANG] 字体文件…\n" + +#: fc-validate/fc-validate.c:89 +#, c-format +msgid "Validate font files and print result\n" +msgstr "验证字体文件并输出结果\n" + +#: fc-validate/fc-validate.c:93 +#, c-format +msgid " -l, --lang=LANG set LANG instead of current locale\n" +msgstr " -l, --lang=LANG 使用 LANG 值替换当前区域设置\n" + +#: fc-validate/fc-validate.c:94 +#, c-format +msgid " -v, --verbose show more detailed information\n" +msgstr " -v, --verbose 显示详尽信息\n" + +#: fc-validate/fc-validate.c:98 +#, c-format +msgid "" +" -i INDEX (index) display the INDEX face of each font file only\n" +msgstr " -i <编号> (index) 仅显示每个字体的 <编号> 字形\n" + +#: fc-validate/fc-validate.c:99 +#, c-format +msgid " -l LANG (lang) set LANG instead of current locale\n" +msgstr " -l LANG (lang) 使用 LANG 值替换当前区域设置\n" + +#: fc-validate/fc-validate.c:100 +#, c-format +msgid " -v (verbose) show more detailed information\n" +msgstr " -v (详尽) 显示详尽信息\n" + +#: fc-validate/fc-validate.c:167 +#, c-format +msgid "Can't initalize FreeType library\n" +msgstr "无法初始化 FreeType 库\n" + +#: fc-validate/fc-validate.c:185 +#, c-format +msgid "Unable to open %s\n" +msgstr "无法打开 %s\n" + +#: fc-validate/fc-validate.c:200 +#, c-format +msgid "%s:%d Missing %d glyph(s) to satisfy the coverage for %s language\n" +msgstr "%s:%d 尚需 %d 个字形以满足 %s 语言的覆盖需求\n" + +#: fc-validate/fc-validate.c:230 +#, c-format +msgid "%s:%d Satisfy the coverage for %s language\n" +msgstr "%s:%d 完全满足 %s 语言的覆盖需求\n" + +#: src/fccfg.c:2657 +msgid "No description" +msgstr "无描述" diff --git a/src/Makefile.am b/src/Makefile.am index 3757cf8..1ff065b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -77,9 +77,12 @@ AM_CPPFLAGS = \ $(ICONV_CFLAGS) \ $(LIBXML2_CFLAGS) \ $(EXPAT_CFLAGS) \ + $(UUID_CFLAGS) \ $(WARN_CFLAGS) \ -DFC_CACHEDIR='"$(FC_CACHEDIR)"' \ - -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' + -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' \ + -DFC_TEMPLATEDIR='"$(TEMPLATEDIR)"' +LDADD = $(INTLLIBS) EXTRA_DIST += makealias @@ -89,7 +92,6 @@ ALIAS_FILES = fcalias.h fcaliastail.h fcftalias.h fcftaliastail.h BUILT_SOURCES = $(ALIAS_FILES) \ ../fc-case/fccase.h \ - ../fc-glyphname/fcglyphname.h \ ../fc-lang/fclang.h \ stamp-fcstdint \ fcobjshash.h \ @@ -99,13 +101,15 @@ noinst_PROGRAMS = fcarch ../fc-case/fccase.h: cd ../fc-case && $(MAKE) $(AM_MAKEFLAGS) fccase.h -../fc-glyphname/fcglyphname.h: - cd ../fc-glyphname && $(MAKE) $(AM_MAKEFLAGS) fcglyphname.h ../fc-lang/fclang.h: cd ../fc-lang && $(MAKE) $(AM_MAKEFLAGS) fclang.h -fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h - $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \ +fcobjshash.gperf: Makefile stamp-fcobjshash.gperf + -@$(RM) stamp-fcobjshash.gperf + @$(MAKE) stamp-fcobjshash.gperf + @touch -r stamp-fcobjshash.gperf $@ +stamp-fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h + $(AM_V_GEN) $(CPP) -I$(top_srcdir) $(CPPFLAGS) $< | \ $(SED) 's/^ *//;s/ *, */,/' | \ $(GREP) '^[^#]' | \ awk ' \ @@ -113,22 +117,19 @@ fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h /CUT_OUT_END/ { no_write=0; next; }; \ { if (!no_write) print; next; }; \ ' - > $@.tmp && \ - mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) + mv -f $@.tmp fcobjshash.gperf && touch $@ || ( $(RM) $@.tmp && false ) -fcobjshash.h: fcobjshash.gperf - $(AM_V_GEN) $(GPERF) -m 100 $< > $@.tmp && \ +fcobjshash.h: Makefile fcobjshash.gperf + $(AM_V_GEN) $(GPERF) --pic -m 100 fcobjshash.gperf > $@.tmp && \ mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) EXTRA_DIST += \ - fcobjshash.gperf.h \ - fcobjshash.gperf \ - fcobjshash.h + fcobjshash.gperf.h libfontconfig_la_SOURCES = \ fcarch.h \ fcatomic.c \ fcatomic.h \ - fcblanks.c \ fccache.c \ fccfg.c \ fccharset.c \ @@ -139,6 +140,8 @@ libfontconfig_la_SOURCES = \ fcformat.c \ fcfreetype.c \ fcfs.c \ + fcptrlist.c \ + fchash.c \ fcinit.c \ fclang.c \ fclist.c \ @@ -165,7 +168,7 @@ lib_LTLIBRARIES = libfontconfig.la libfontconfig_la_LDFLAGS = \ -version-info @LIBT_VERSION_INFO@ -no-undefined $(export_symbols) -libfontconfig_la_LIBADD = $(ICONV_LIBS) $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS) +libfontconfig_la_LIBADD = $(ICONV_LIBS) $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS) $(UUID_LIBS) $(INTLLIBS) libfontconfig_la_DEPENDENCIES = $(fontconfig_def_dependency) @@ -199,7 +202,12 @@ stamp-fcstdint: $(top_builddir)/config.status @touch $@ CLEANFILES = $(ALIAS_FILES) fontconfig.def -DISTCLEANFILES = stamp-fcstdint fcstdint.h +DISTCLEANFILES = \ + stamp-fcstdint \ + fcstdint.h \ + stamp-fcobjshash.gperf \ + fcobjshash.h \ + fcobjshash.gperf fontconfig.def: $(PUBLIC_FILES) $(PUBLIC_FT_FILES) echo Generating $@ diff --git a/src/Makefile.in b/src/Makefile.in index f4626ad..d0d32ac 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -120,10 +120,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ @@ -162,12 +167,12 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = -am_libfontconfig_la_OBJECTS = fcatomic.lo fcblanks.lo fccache.lo \ - fccfg.lo fccharset.lo fccompat.lo fcdbg.lo fcdefault.lo \ - fcdir.lo fcformat.lo fcfreetype.lo fcfs.lo fcinit.lo fclang.lo \ - fclist.lo fcmatch.lo fcmatrix.lo fcname.lo fcobjs.lo fcpat.lo \ - fcrange.lo fcserialize.lo fcstat.lo fcstr.lo fcweight.lo \ - fcxml.lo ftglue.lo +am_libfontconfig_la_OBJECTS = fcatomic.lo fccache.lo fccfg.lo \ + fccharset.lo fccompat.lo fcdbg.lo fcdefault.lo fcdir.lo \ + fcformat.lo fcfreetype.lo fcfs.lo fcptrlist.lo fchash.lo \ + fcinit.lo fclang.lo fclist.lo fcmatch.lo fcmatrix.lo fcname.lo \ + fcobjs.lo fcpat.lo fcrange.lo fcserialize.lo fcstat.lo \ + fcstr.lo fcweight.lo fcxml.lo ftglue.lo libfontconfig_la_OBJECTS = $(am_libfontconfig_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -181,6 +186,7 @@ PROGRAMS = $(noinst_PROGRAMS) fcarch_SOURCES = fcarch.c fcarch_OBJECTS = fcarch.$(OBJEXT) fcarch_LDADD = $(LDADD) +fcarch_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -285,7 +291,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -297,8 +307,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -310,11 +324,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -334,15 +353,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -350,8 +367,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -398,13 +421,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -413,8 +432,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = makealias fcobjshash.gperf.h fcobjshash.gperf \ - fcobjshash.h +EXTRA_DIST = makealias fcobjshash.gperf.h @OS_WIN32_TRUE@export_symbols = -export-symbols fontconfig.def @OS_WIN32_FALSE@fontconfig_def_dependency = @OS_WIN32_TRUE@fontconfig_def_dependency = fontconfig.def @@ -428,15 +446,17 @@ AM_CPPFLAGS = \ $(ICONV_CFLAGS) \ $(LIBXML2_CFLAGS) \ $(EXPAT_CFLAGS) \ + $(UUID_CFLAGS) \ $(WARN_CFLAGS) \ -DFC_CACHEDIR='"$(FC_CACHEDIR)"' \ - -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' + -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' \ + -DFC_TEMPLATEDIR='"$(TEMPLATEDIR)"' +LDADD = $(INTLLIBS) noinst_HEADERS = fcint.h fcftint.h fcdeprecate.h fcstdint.h ALIAS_FILES = fcalias.h fcaliastail.h fcftalias.h fcftaliastail.h BUILT_SOURCES = $(ALIAS_FILES) \ ../fc-case/fccase.h \ - ../fc-glyphname/fcglyphname.h \ ../fc-lang/fclang.h \ stamp-fcstdint \ fcobjshash.h \ @@ -446,7 +466,6 @@ libfontconfig_la_SOURCES = \ fcarch.h \ fcatomic.c \ fcatomic.h \ - fcblanks.c \ fccache.c \ fccfg.c \ fccharset.c \ @@ -457,6 +476,8 @@ libfontconfig_la_SOURCES = \ fcformat.c \ fcfreetype.c \ fcfs.c \ + fcptrlist.c \ + fchash.c \ fcinit.c \ fclang.c \ fclist.c \ @@ -482,7 +503,7 @@ lib_LTLIBRARIES = libfontconfig.la libfontconfig_la_LDFLAGS = \ -version-info @LIBT_VERSION_INFO@ -no-undefined $(export_symbols) -libfontconfig_la_LIBADD = $(ICONV_LIBS) $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS) +libfontconfig_la_LIBADD = $(ICONV_LIBS) $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS) $(UUID_LIBS) $(INTLLIBS) libfontconfig_la_DEPENDENCIES = $(fontconfig_def_dependency) PUBLIC_FILES = \ $(top_srcdir)/fontconfig/fontconfig.h \ @@ -493,7 +514,13 @@ PUBLIC_FT_FILES = \ $(top_srcdir)/fontconfig/fcfreetype.h CLEANFILES = $(ALIAS_FILES) fontconfig.def -DISTCLEANFILES = stamp-fcstdint fcstdint.h +DISTCLEANFILES = \ + stamp-fcstdint \ + fcstdint.h \ + stamp-fcobjshash.gperf \ + fcobjshash.h \ + fcobjshash.gperf + all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -588,7 +615,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcarch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcatomic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcblanks.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fccache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fccfg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fccharset.Plo@am__quote@ @@ -599,6 +625,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcformat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcfreetype.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcfs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcinit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fclang.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fclist.Plo@am__quote@ @@ -607,6 +634,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcobjs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcpat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcptrlist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcrange.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcserialize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcstat.Plo@am__quote@ @@ -766,8 +794,8 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -@ENABLE_SHARED_FALSE@install-data-local: @ENABLE_SHARED_FALSE@uninstall-local: +@ENABLE_SHARED_FALSE@install-data-local: clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ @@ -887,13 +915,15 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-local ../fc-case/fccase.h: cd ../fc-case && $(MAKE) $(AM_MAKEFLAGS) fccase.h -../fc-glyphname/fcglyphname.h: - cd ../fc-glyphname && $(MAKE) $(AM_MAKEFLAGS) fcglyphname.h ../fc-lang/fclang.h: cd ../fc-lang && $(MAKE) $(AM_MAKEFLAGS) fclang.h -fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h - $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \ +fcobjshash.gperf: Makefile stamp-fcobjshash.gperf + -@$(RM) stamp-fcobjshash.gperf + @$(MAKE) stamp-fcobjshash.gperf + @touch -r stamp-fcobjshash.gperf $@ +stamp-fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h + $(AM_V_GEN) $(CPP) -I$(top_srcdir) $(CPPFLAGS) $< | \ $(SED) 's/^ *//;s/ *, */,/' | \ $(GREP) '^[^#]' | \ awk ' \ @@ -901,10 +931,10 @@ fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h /CUT_OUT_END/ { no_write=0; next; }; \ { if (!no_write) print; next; }; \ ' - > $@.tmp && \ - mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) + mv -f $@.tmp fcobjshash.gperf && touch $@ || ( $(RM) $@.tmp && false ) -fcobjshash.h: fcobjshash.gperf - $(AM_V_GEN) $(GPERF) -m 100 $< > $@.tmp && \ +fcobjshash.h: Makefile fcobjshash.gperf + $(AM_V_GEN) $(GPERF) --pic -m 100 fcobjshash.gperf > $@.tmp && \ mv -f $@.tmp $@ || ( $(RM) $@.tmp && false ) @ENABLE_SHARED_TRUE@install-data-local: install-ms-import-lib install-libtool-import-lib diff --git a/src/fcblanks.c b/src/fcblanks.c deleted file mode 100644 index 5132a51..0000000 --- a/src/fcblanks.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * fontconfig/src/fcblanks.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" - -FcBlanks * -FcBlanksCreate (void) -{ - FcBlanks *b; - - b = malloc (sizeof (FcBlanks)); - if (!b) - return 0; - b->nblank = 0; - b->sblank = 0; - b->blanks = 0; - return b; -} - -void -FcBlanksDestroy (FcBlanks *b) -{ - if (b->sblank == -1) - return; - if (b->blanks) - free (b->blanks); - free (b); -} - -FcBool -FcBlanksAdd (FcBlanks *b, FcChar32 ucs4) -{ - FcChar32 *c; - int sblank; - - for (sblank = 0; sblank < b->nblank; sblank++) - 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; - if (b->blanks) - c = (FcChar32 *) realloc (b->blanks, sblank * sizeof (FcChar32)); - else - c = (FcChar32 *) malloc (sblank * sizeof (FcChar32)); - if (!c) - return FcFalse; - b->sblank = sblank; - b->blanks = c; - } - b->blanks[b->nblank++] = ucs4; - return FcTrue; -} - -FcBool -FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4) -{ - int lower = 0, higher = b->nblank, middle; - - 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) - return FcTrue; - if (lower >= higher) - break; - if (b->blanks[middle] < ucs4) - lower = middle + 1; - else - higher = middle - 1; - } - - return FcFalse; -} -#define __fcblanks__ -#include "fcaliastail.h" -#undef __fcblanks__ diff --git a/src/fccache.c b/src/fccache.c index 02ec301..7abb750 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #if defined(HAVE_MMAP) || defined(__CYGWIN__) # include @@ -37,12 +38,146 @@ #endif #if defined(_WIN32) #include +#else +#include #endif #ifndef O_BINARY #define O_BINARY 0 #endif +FcBool +FcDirCacheCreateUUID (FcChar8 *dir, + FcBool force, + FcConfig *config) +{ + FcBool ret = FcTrue; +#ifndef _WIN32 + FcChar8 *uuidname; + + uuidname = FcStrBuildFilename (dir, ".uuid", NULL); + if (!uuidname) + return FcFalse; + + if (force || access ((const char *) uuidname, F_OK) < 0) + { + FcAtomic *atomic; + int fd; + uuid_t uuid; + char out[37]; + FcBool (* hash_add) (FcHashTable *, void*, void*); + struct stat statb; + struct timeval times[2]; + + if (FcStat (dir, &statb) != 0) + { + ret = FcFalse; + goto bail1; + } + atomic = FcAtomicCreate (uuidname); + if (!atomic) + { + ret = FcFalse; + goto bail1; + } + if (!FcAtomicLock (atomic)) + { + ret = FcFalse; + goto bail2; + } + fd = FcOpen ((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT, 0644); + if (fd == -1) + { + ret = FcFalse; + goto bail3; + } + uuid_generate_random (uuid); + if (force) + hash_add = FcHashTableReplace; + else + hash_add = FcHashTableAdd; + if (!hash_add (config->uuid_table, dir, uuid)) + { + ret = FcFalse; + goto bail3; + } + uuid_unparse (uuid, out); + if (FcDebug () & FC_DBG_CACHE) + printf ("FcDirCacheCreateUUID %s: %s\n", uuidname, out); + write (fd, out, strlen (out)); + close (fd); + FcAtomicReplaceOrig (atomic); + bail3: + FcAtomicUnlock (atomic); + bail2: + FcAtomicDestroy (atomic); + + if (ret) + { + /* revert mtime of the directory */ + times[0].tv_sec = statb.st_atime; + times[1].tv_sec = statb.st_mtime; +#ifdef HAVE_STRUCT_STAT_ST_MTIM + times[0].tv_usec = statb.st_atim.tv_nsec / 1000; + times[1].tv_usec = statb.st_mtim.tv_nsec / 1000; +#else + times[0].tv_usec = 0; + times[1].tv_usec = 0; +#endif + if (utimes ((const char *) dir, times) != 0) + { + fprintf (stderr, "Unable to revert mtime: %s\n", dir); + } + } + } + bail1: + FcStrFree (uuidname); +#endif + + return ret; +} + +#ifndef _WIN32 +static void +FcDirCacheReadUUID (FcChar8 *dir, + FcConfig *config) +{ + void *u; + uuid_t uuid; + + if (!FcHashTableFind (config->uuid_table, dir, &u)) + { + FcChar8 *uuidname = FcStrBuildFilename (dir, ".uuid", NULL); + int fd; + + if ((fd = FcOpen ((char *) uuidname, O_RDONLY)) >= 0) + { + char suuid[37]; + + memset (suuid, 0, sizeof (suuid)); + if (read (fd, suuid, 36) > 0) + { + memset (uuid, 0, sizeof (uuid)); + if (uuid_parse (suuid, uuid) == 0) + { + if (FcDebug () & FC_DBG_CACHE) + printf ("FcDirCacheReadUUID %s -> %s\n", uuidname, suuid); + FcHashTableAdd (config->uuid_table, dir, uuid); + } + } + close (fd); + } + else + { + if (FcDebug () & FC_DBG_CACHE) + printf ("FcDirCacheReadUUID Unable to read %s\n", uuidname); + } + FcStrFree (uuidname); + } + else + FcHashUuidFree (u); +} +#endif struct MD5Context { FcChar32 buf[4]; @@ -55,7 +190,7 @@ static void MD5Update(struct MD5Context *ctx, const unsigned char *buf, unsigned static void MD5Final(unsigned char digest[16], struct MD5Context *ctx); static void MD5Transform(FcChar32 buf[4], FcChar32 in[16]); -#define CACHEBASE_LEN (1 + 32 + 1 + sizeof (FC_ARCHITECTURE) + sizeof (FC_CACHE_SUFFIX)) +#define CACHEBASE_LEN (1 + 36 + 1 + sizeof (FC_ARCHITECTURE) + sizeof (FC_CACHE_SUFFIX)) static FcBool FcCacheIsMmapSafe (int fd) @@ -94,7 +229,7 @@ static const char bin2hex[] = { '0', '1', '2', '3', 'c', 'd', 'e', 'f' }; static FcChar8 * -FcDirCacheBasename (const FcChar8 * dir, FcChar8 cache_base[CACHEBASE_LEN]) +FcDirCacheBasenameMD5 (const FcChar8 *dir, FcChar8 cache_base[CACHEBASE_LEN]) { unsigned char hash[16]; FcChar8 *hex_hash; @@ -119,6 +254,28 @@ FcDirCacheBasename (const FcChar8 * dir, FcChar8 cache_base[CACHEBASE_LEN]) return cache_base; } +#ifndef _WIN32 +static FcChar8 * +FcDirCacheBasenameUUID (const FcChar8 *dir, FcChar8 cache_base[CACHEBASE_LEN], FcConfig *config) +{ + void *u; + FcChar8 *alias; + + if (!FcHashTableFind (config->alias_table, dir, (void **)&alias)) + alias = FcStrdup (dir); + if (FcHashTableFind (config->uuid_table, alias, &u)) + { + uuid_unparse (u, (char *) cache_base); + strcat ((char *) cache_base, "-" FC_ARCHITECTURE FC_CACHE_SUFFIX); + FcHashUuidFree (u); + FcStrFree (alias); + return cache_base; + } + FcStrFree (alias); + return NULL; +} +#endif + FcBool FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config) { @@ -128,7 +285,10 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config) FcChar8 *cache_dir; const FcChar8 *sysroot = FcConfigGetSysRoot (config); - FcDirCacheBasename (dir, cache_base); +#ifndef _WIN32 + if (!FcDirCacheBasenameUUID (dir, cache_base, config)) +#endif + FcDirCacheBasenameMD5 (dir, cache_base); list = FcStrListCreate (config->cacheDirs); if (!list) @@ -204,7 +364,10 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, } FcStrFree (d); - FcDirCacheBasename (dir, cache_base); +#ifndef _WIN32 + if (!FcDirCacheBasenameUUID (dir, cache_base, config)) +#endif + FcDirCacheBasenameMD5 (dir, cache_base); list = FcStrListCreate (config->cacheDirs); if (!list) @@ -640,12 +803,14 @@ FcCacheOffsetsValid (FcCache *cache) 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)) + font->num > (end - (char *) font - font->elts_offset) / sizeof (FcPatternElt) || + !FcRefIsConst (&font->ref)) return FcFalse; @@ -653,11 +818,17 @@ FcCacheOffsetsValid (FcCache *cache) if (e->values != 0 && !FcIsEncodedOffset(e->values)) return FcFalse; - for (j = font->num, l = FcPatternEltValues(e); j >= 0 && l; j--, l = FcValueListNext(l)) - if (l->next != NULL && !FcIsEncodedOffset(l->next)) - break; - if (j < 0) - 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; + } + } } } @@ -784,12 +955,20 @@ FcCache * FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file) { FcCache *cache = NULL; + const FcChar8 *d; +#ifndef _WIN32 + FcDirCacheReadUUID ((FcChar8 *) dir, config); +#endif if (!FcDirCacheProcess (config, dir, FcDirCacheMapHelper, &cache, cache_file)) return NULL; + d = FcCacheDir (cache); + if (FcStrCmp (dir, d)) + FcHashTableAdd (config->alias_table, (FcChar8 *) d, (FcChar8 *) dir); + return cache; } @@ -1041,7 +1220,10 @@ FcDirCacheWrite (FcCache *cache, FcConfig *config) if (!cache_dir) return FcFalse; - FcDirCacheBasename (dir, cache_base); +#ifndef _WIN32 + if (!FcDirCacheBasenameUUID (dir, cache_base, config)) +#endif + FcDirCacheBasenameMD5 (dir, cache_base); cache_hashed = FcStrBuildFilename (cache_dir, cache_base, NULL); if (!cache_hashed) return FcFalse; @@ -1238,7 +1420,10 @@ FcDirCacheLock (const FcChar8 *dir, const FcChar8 *sysroot = FcConfigGetSysRoot (config); int fd = -1; - FcDirCacheBasename (dir, cache_base); +#ifndef _WIN32 + if (!FcDirCacheBasenameUUID (dir, cache_base, config)) +#endif + FcDirCacheBasenameMD5 (dir, cache_base); list = FcStrListCreate (config->cacheDirs); if (!list) return -1; diff --git a/src/fccfg.c b/src/fccfg.c index 9f8ee7c..eb0b76d 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -26,8 +26,8 @@ #include "fcint.h" #include +#include #include -#include "../fc-blanks/fcblanks.h" #if defined (_WIN32) && !defined (R_OK) #define R_OK 4 @@ -39,7 +39,19 @@ static FcConfig * FcConfigEnsure (void) { FcConfig *config; -retry: + FcBool is_locale_initialized; + static void *static_is_locale_initialized; +retry_locale: + is_locale_initialized = (intptr_t) fc_atomic_ptr_get (&static_is_locale_initialized); + if (!is_locale_initialized) + { + is_locale_initialized = FcTrue; + if (!fc_atomic_ptr_cmpexch (&static_is_locale_initialized, NULL, + (void *)(intptr_t) is_locale_initialized)) + goto retry_locale; + setlocale (LC_ALL, ""); + } +retry_config: config = fc_atomic_ptr_get (&_fcConfig); if (!config) { @@ -47,7 +59,7 @@ retry: if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) { FcConfigDestroy (config); - goto retry; + goto retry_config; } } return config; @@ -73,6 +85,8 @@ FcConfigCreate (void) { FcSetName set; FcConfig *config; + FcMatchKind k; + FcBool err = FcFalse; config = malloc (sizeof (FcConfig)); if (!config) @@ -110,11 +124,15 @@ FcConfigCreate (void) if (!config->cacheDirs) goto bail8; - config->blanks = &fcBlanks; + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + { + config->subst[k] = FcPtrListCreate ((FcDestroyFunc) FcRuleSetDestroy); + if (!config->subst[k]) + err = FcTrue; + } + if (err) + goto bail9; - config->substPattern = 0; - config->substFont = 0; - config->substScan = 0; config->maxObjects = 0; for (set = FcSetSystem; set <= FcSetApplication; set++) config->fonts[set] = 0; @@ -126,10 +144,37 @@ FcConfigCreate (void) config->sysRoot = NULL; + config->rulesetList = FcPtrListCreate ((FcDestroyFunc) FcRuleSetDestroy); + if (!config->rulesetList) + goto bail9; + config->availConfigFiles = FcStrSetCreate (); + if (!config->availConfigFiles) + goto bail10; + + config->uuid_table = FcHashTableCreate ((FcHashFunc) FcStrHashIgnoreCase, + (FcCompareFunc) FcStrCmp, + FcHashStrCopy, + FcHashUuidCopy, + (FcDestroyFunc) FcStrFree, + FcHashUuidFree); + config->alias_table = FcHashTableCreate ((FcHashFunc) FcStrHashIgnoreCase, + (FcCompareFunc) FcStrCmp, + FcHashStrCopy, + FcHashStrCopy, + (FcDestroyFunc) FcStrFree, + (FcDestroyFunc) FcStrFree); + FcRefInit (&config->ref, 1); return config; +bail10: + FcPtrListDestroy (config->rulesetList); +bail9: + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + if (config->subst[k]) + FcPtrListDestroy (config->subst[k]); + FcStrSetDestroy (config->cacheDirs); bail8: FcFontSetDestroy (config->rejectPatterns); bail7: @@ -207,21 +252,6 @@ FcConfigUptoDate (FcConfig *config) return FcTrue; } -static void -FcSubstDestroy (FcSubst *s) -{ - FcSubst *n; - - while (s) - { - n = s->next; - if (s->rule) - FcRuleDestroy (s->rule); - free (s); - s = n; - } -} - FcExpr * FcConfigAllocExpr (FcConfig *config) { @@ -261,6 +291,7 @@ FcConfigDestroy (FcConfig *config) { FcSetName set; FcExprPage *page; + FcMatchKind k; if (FcRefDec (&config->ref) != 1) return; @@ -276,12 +307,10 @@ FcConfigDestroy (FcConfig *config) FcFontSetDestroy (config->acceptPatterns); FcFontSetDestroy (config->rejectPatterns); - if (config->blanks) - FcBlanksDestroy (config->blanks); - - FcSubstDestroy (config->substPattern); - FcSubstDestroy (config->substFont); - FcSubstDestroy (config->substScan); + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + FcPtrListDestroy (config->subst[k]); + FcPtrListDestroy (config->rulesetList); + FcStrSetDestroy (config->availConfigFiles); for (set = FcSetSystem; set <= FcSetApplication; set++) if (config->fonts[set]) FcFontSetDestroy (config->fonts[set]); @@ -296,6 +325,9 @@ FcConfigDestroy (FcConfig *config) if (config->sysRoot) FcStrFree (config->sysRoot); + FcHashTableDestroy (config->uuid_table); + FcHashTableDestroy (config->alias_table); + free (config); } @@ -354,9 +386,23 @@ FcConfigAddCache (FcConfig *config, FcCache *cache, { for (i = 0; i < cache->dirs_count; i++) { - FcChar8 *dir = FcOffsetToPtr (dirs, dirs[i], FcChar8); + const FcChar8 *dir = FcCacheSubdir (cache, i); + FcChar8 *alias; + FcChar8 *d = FcStrDirname (dir); + FcChar8 *s = NULL; + + if (FcHashTableFind (config->alias_table, d, (void **)&alias)) + { + FcChar8 *base = FcStrBasename (dir); + dir = s = FcStrBuildFilename (alias, base, NULL); + FcStrFree (alias); + FcStrFree (base); + } + FcStrFree (d); if (FcConfigAcceptFilename (config, dir)) FcStrSetAddFilename (dirSet, dir); + if (s) + FcStrFree (s); } } return FcTrue; @@ -474,14 +520,6 @@ FcConfigAddFontDir (FcConfig *config, return FcStrSetAddFilename (config->fontDirs, d); } -FcBool -FcConfigAddDir (FcConfig *config, - const FcChar8 *d) -{ - return (FcConfigAddConfigDir (config, d) && - FcConfigAddFontDir (config, d)); -} - FcStrList * FcConfigGetFontDirs (FcConfig *config) { @@ -569,41 +607,50 @@ FcConfigSetFonts (FcConfig *config, config->fonts[set] = fonts; } + FcBlanks * -FcConfigGetBlanks (FcConfig *config) +FcBlanksCreate (void) { - if (!config) - { - config = FcConfigGetCurrent (); - if (!config) - return 0; - } - return config->blanks; + /* Deprecated. */ + return NULL; +} + +void +FcBlanksDestroy (FcBlanks *b FC_UNUSED) +{ + /* Deprecated. */ } FcBool -FcConfigAddBlank (FcConfig *config, - FcChar32 blank) +FcBlanksAdd (FcBlanks *b FC_UNUSED, FcChar32 ucs4 FC_UNUSED) { - FcBlanks *b, *freeme = 0; + /* Deprecated. */ + return FcFalse; +} - b = config->blanks; - if (!b) - { - freeme = b = FcBlanksCreate (); - if (!b) - return FcFalse; - } - if (!FcBlanksAdd (b, blank)) - { - if (freeme) - FcBlanksDestroy (freeme); - return FcFalse; - } - config->blanks = b; - return FcTrue; +FcBool +FcBlanksIsMember (FcBlanks *b FC_UNUSED, FcChar32 ucs4 FC_UNUSED) +{ + /* Deprecated. */ + return FcFalse; } +FcBlanks * +FcConfigGetBlanks (FcConfig *config FC_UNUSED) +{ + /* Deprecated. */ + return NULL; +} + +FcBool +FcConfigAddBlank (FcConfig *config FC_UNUSED, + FcChar32 blank FC_UNUSED) +{ + /* Deprecated. */ + return FcFalse; +} + + int FcConfigGetRescanInterval (FcConfig *config) { @@ -649,61 +696,8 @@ FcConfigAddRule (FcConfig *config, FcRule *rule, FcMatchKind kind) { - FcSubst *subst, **prev; - FcRule *r; - int n = 0; - - if (!rule) - return FcFalse; - switch (kind) { - case FcMatchPattern: - prev = &config->substPattern; - break; - case FcMatchFont: - prev = &config->substFont; - break; - case FcMatchScan: - prev = &config->substScan; - break; - default: - return FcFalse; - } - subst = (FcSubst *) malloc (sizeof (FcSubst)); - if (!subst) - return FcFalse; - for (; *prev; prev = &(*prev)->next); - *prev = subst; - subst->next = NULL; - subst->rule = rule; - for (r = rule; r; r = r->next) - { - switch (r->type) - { - case FcRuleTest: - if (r->u.test && - r->u.test->kind == FcMatchDefault) - r->u.test->kind = kind; - - if (n < r->u.test->object) - n = r->u.test->object; - break; - case FcRuleEdit: - if (n < r->u.edit->object) - n = r->u.edit->object; - break; - default: - break; - } - } - n = FC_OBJ_ID (n) - FC_MAX_BASE_OBJECT; - if (config->maxObjects < n) - config->maxObjects = n; - if (FcDebug () & FC_DBG_EDIT) - { - printf ("Add Subst "); - FcSubstPrint (subst); - } - return FcTrue; + /* deprecated */ + return FcFalse; } static FcValue @@ -793,14 +787,30 @@ FcConfigCompareValue (const FcValue *left_o, case FcTypeBool: switch ((int) op) { case FcOpEqual: + ret = left.u.b == right.u.b; + break; case FcOpContains: case FcOpListing: - ret = left.u.b == right.u.b; + ret = left.u.b == right.u.b || left.u.b == FcDontCare; break; case FcOpNotEqual: - case FcOpNotContains: ret = left.u.b != right.u.b; break; + case FcOpNotContains: + ret = !(left.u.b == right.u.b || left.u.b == FcDontCare); + break; + case FcOpLess: + ret = left.u.b != right.u.b && right.u.b == FcDontCare; + break; + case FcOpLessEqual: + ret = left.u.b == right.u.b || right.u.b == FcDontCare; + break; + case FcOpMore: + ret = left.u.b != right.u.b && left.u.b == FcDontCare; + break; + case FcOpMoreEqual: + ret = left.u.b == right.u.b || left.u.b == FcDontCare; + break; default: break; } @@ -1517,8 +1527,10 @@ FcConfigSubstituteWithPat (FcConfig *config, FcMatchKind kind) { FcValue v; - FcSubst *s; + FcPtrList *s; + FcPtrListIter iter, iter2; FcRule *r; + FcRuleSet *rs; FcValueList *l, **value = NULL, *vl; FcPattern *m; FcStrSet *strs; @@ -1535,9 +1547,11 @@ FcConfigSubstituteWithPat (FcConfig *config, return FcFalse; } - switch (kind) { - case FcMatchPattern: - s = config->substPattern; + if (kind < FcMatchKindBegin || kind >= FcMatchKindEnd) + return FcFalse; + s = config->subst[kind]; + if (kind == FcMatchPattern) + { strs = FcGetDefaultLangs (); if (strs) { @@ -1597,15 +1611,6 @@ FcConfigSubstituteWithPat (FcConfig *config, if (prgname) FcPatternObjectAddString (p, FC_PRGNAME_OBJECT, prgname); } - break; - case FcMatchFont: - s = config->substFont; - break; - case FcMatchScan: - s = config->substScan; - break; - default: - return FcFalse; } nobjs = FC_MAX_BASE_OBJECT + config->maxObjects + 2; @@ -1633,186 +1638,196 @@ FcConfigSubstituteWithPat (FcConfig *config, printf ("FcConfigSubstitute "); FcPatternPrint (p); } - for (; s; s = s->next) + FcPtrListIterInit (s, &iter); + for (; FcPtrListIterIsValid (s, &iter); FcPtrListIterNext (s, &iter)) { - r = s->rule; - for (i = 0; i < nobjs; i++) + rs = (FcRuleSet *) FcPtrListIterGetValue (s, &iter); + if (FcDebug () & FC_DBG_EDIT) { - elt[i] = NULL; - value[i] = NULL; - tst[i] = NULL; + printf ("\nRule Set: %s\n", rs->name); } - for (; r; r = r->next) + FcPtrListIterInit (rs->subst[kind], &iter2); + for (; FcPtrListIterIsValid (rs->subst[kind], &iter2); FcPtrListIterNext (rs->subst[kind], &iter2)) { - switch (r->type) { - case FcRuleUnknown: - /* shouldn't be reached */ - break; - case FcRuleTest: - object = FC_OBJ_ID (r->u.test->object); - /* - * Check the tests to see if - * they all match the pattern - */ - if (FcDebug () & FC_DBG_EDIT) - { - printf ("FcConfigSubstitute test "); - FcTestPrint (r->u.test); - } - if (kind == FcMatchFont && r->u.test->kind == FcMatchPattern) - m = p_pat; - else - m = p; - if (m) - e = FcPatternObjectFindElt (m, r->u.test->object); - else - e = NULL; - /* different 'kind' won't be the target of edit */ - if (!elt[object] && kind == r->u.test->kind) - { - elt[object] = e; - tst[object] = r->u.test; - } - /* - * If there's no such field in the font, - * then FcQualAll matches while FcQualAny does not - */ - if (!e) - { - if (r->u.test->qual == FcQualAll) + r = (FcRule *) FcPtrListIterGetValue (rs->subst[kind], &iter2); + for (i = 0; i < nobjs; i++) + { + elt[i] = NULL; + value[i] = NULL; + tst[i] = NULL; + } + for (; r; r = r->next) + { + switch (r->type) { + case FcRuleUnknown: + /* shouldn't be reached */ + break; + case FcRuleTest: + object = FC_OBJ_ID (r->u.test->object); + /* + * Check the tests to see if + * they all match the pattern + */ + if (FcDebug () & FC_DBG_EDIT) { - value[object] = NULL; - continue; + printf ("FcConfigSubstitute test "); + FcTestPrint (r->u.test); } + if (kind == FcMatchFont && r->u.test->kind == FcMatchPattern) + m = p_pat; + else + m = p; + if (m) + e = FcPatternObjectFindElt (m, r->u.test->object); else + e = NULL; + /* different 'kind' won't be the target of edit */ + if (!elt[object] && kind == r->u.test->kind) + { + elt[object] = e; + tst[object] = r->u.test; + } + /* + * If there's no such field in the font, + * then FcQualAll matches while FcQualAny does not + */ + if (!e) + { + if (r->u.test->qual == FcQualAll) + { + value[object] = NULL; + continue; + } + else + { + if (FcDebug () & FC_DBG_EDIT) + printf ("No match\n"); + goto bail; + } + } + /* + * Check to see if there is a match, mark the location + * to apply match-relative edits + */ + vl = FcConfigMatchValueList (m, p_pat, kind, r->u.test, e->values); + /* different 'kind' won't be the target of edit */ + if (!value[object] && kind == r->u.test->kind) + value[object] = vl; + if (!vl || + (r->u.test->qual == FcQualFirst && vl != e->values) || + (r->u.test->qual == FcQualNotFirst && vl == e->values)) { if (FcDebug () & FC_DBG_EDIT) printf ("No match\n"); goto bail; } - } - /* - * Check to see if there is a match, mark the location - * to apply match-relative edits - */ - vl = FcConfigMatchValueList (m, p_pat, kind, r->u.test, e->values); - /* different 'kind' won't be the target of edit */ - if (!value[object] && kind == r->u.test->kind) - value[object] = vl; - if (!vl || - (r->u.test->qual == FcQualFirst && vl != e->values) || - (r->u.test->qual == FcQualNotFirst && vl == e->values)) - { + break; + case FcRuleEdit: + object = FC_OBJ_ID (r->u.edit->object); if (FcDebug () & FC_DBG_EDIT) - printf ("No match\n"); - goto bail; - } - break; - case FcRuleEdit: - object = FC_OBJ_ID (r->u.edit->object); - if (FcDebug () & FC_DBG_EDIT) - { - printf ("Substitute "); - FcEditPrint (r->u.edit); - printf ("\n\n"); - } - /* - * Evaluate the list of expressions - */ - l = FcConfigValues (p, p_pat,kind, r->u.edit->expr, r->u.edit->binding); - if (tst[object] && (tst[object]->kind == FcMatchFont || kind == FcMatchPattern)) - elt[object] = FcPatternObjectFindElt (p, tst[object]->object); - - switch (FC_OP_GET_OP (r->u.edit->op)) { - case FcOpAssign: + { + printf ("Substitute "); + FcEditPrint (r->u.edit); + printf ("\n\n"); + } /* - * If there was a test, then replace the matched - * value with the new list of values + * Evaluate the list of expressions */ - if (value[object]) - { - FcValueList *thisValue = value[object]; - FcValueList *nextValue = l; + l = FcConfigValues (p, p_pat,kind, r->u.edit->expr, r->u.edit->binding); + if (tst[object] && (tst[object]->kind == FcMatchFont || kind == FcMatchPattern)) + elt[object] = FcPatternObjectFindElt (p, tst[object]->object); + switch (FC_OP_GET_OP (r->u.edit->op)) { + case FcOpAssign: /* - * Append the new list of values after the current value + * If there was a test, then replace the matched + * value with the new list of values */ - FcConfigAdd (&elt[object]->values, thisValue, FcTrue, l, r->u.edit->object); + if (value[object]) + { + FcValueList *thisValue = value[object]; + FcValueList *nextValue = l; + + /* + * Append the new list of values after the current value + */ + FcConfigAdd (&elt[object]->values, thisValue, FcTrue, l, r->u.edit->object); + /* + * Delete the marked value + */ + if (thisValue) + FcConfigDel (&elt[object]->values, thisValue); + /* + * Adjust a pointer into the value list to ensure + * future edits occur at the same place + */ + value[object] = nextValue; + break; + } + /* fall through ... */ + case FcOpAssignReplace: /* - * Delete the marked value + * Delete all of the values and insert + * the new set */ - if (thisValue) - FcConfigDel (&elt[object]->values, thisValue); + FcConfigPatternDel (p, r->u.edit->object); + FcConfigPatternAdd (p, r->u.edit->object, l, FcTrue); /* - * Adjust a pointer into the value list to ensure - * future edits occur at the same place + * Adjust a pointer into the value list as they no + * longer point to anything valid */ - value[object] = nextValue; + value[object] = NULL; break; - } - /* fall through ... */ - case FcOpAssignReplace: - /* - * Delete all of the values and insert - * the new set - */ - FcConfigPatternDel (p, r->u.edit->object); - FcConfigPatternAdd (p, r->u.edit->object, l, FcTrue); - /* - * Adjust a pointer into the value list as they no - * longer point to anything valid - */ - value[object] = NULL; - break; - case FcOpPrepend: - if (value[object]) - { - FcConfigAdd (&elt[object]->values, value[object], FcFalse, l, r->u.edit->object); + case FcOpPrepend: + if (value[object]) + { + FcConfigAdd (&elt[object]->values, value[object], FcFalse, l, r->u.edit->object); + break; + } + /* fall through ... */ + case FcOpPrependFirst: + FcConfigPatternAdd (p, r->u.edit->object, l, FcFalse); break; - } - /* fall through ... */ - case FcOpPrependFirst: - FcConfigPatternAdd (p, r->u.edit->object, l, FcFalse); - break; - case FcOpAppend: - if (value[object]) - { - FcConfigAdd (&elt[object]->values, value[object], FcTrue, l, r->u.edit->object); + case FcOpAppend: + if (value[object]) + { + FcConfigAdd (&elt[object]->values, value[object], FcTrue, l, r->u.edit->object); + break; + } + /* fall through ... */ + case FcOpAppendLast: + FcConfigPatternAdd (p, r->u.edit->object, l, FcTrue); + break; + case FcOpDelete: + if (value[object]) + { + FcConfigDel (&elt[object]->values, value[object]); + break; + } + /* fall through ... */ + case FcOpDeleteAll: + FcConfigPatternDel (p, r->u.edit->object); + break; + default: + FcValueListDestroy (l); break; } - /* fall through ... */ - case FcOpAppendLast: - FcConfigPatternAdd (p, r->u.edit->object, l, FcTrue); - break; - case FcOpDelete: - if (value[object]) + /* + * Now go through the pattern and eliminate + * any properties without data + */ + FcConfigPatternCanon (p, r->u.edit->object); + + if (FcDebug () & FC_DBG_EDIT) { - FcConfigDel (&elt[object]->values, value[object]); - break; + printf ("FcConfigSubstitute edit"); + FcPatternPrint (p); } - /* fall through ... */ - case FcOpDeleteAll: - FcConfigPatternDel (p, r->u.edit->object); break; - default: - FcValueListDestroy (l); - break; - } - /* - * Now go through the pattern and eliminate - * any properties without data - */ - FcConfigPatternCanon (p, r->u.edit->object); - - if (FcDebug () & FC_DBG_EDIT) - { - printf ("FcConfigSubstitute edit"); - FcPatternPrint (p); } - break; } + bail:; } - bail:; } if (FcDebug () & FC_DBG_EDIT) { @@ -2185,6 +2200,36 @@ FcConfigFilename (const FcChar8 *url) return file; } +FcChar8 * +FcConfigRealFilename (FcConfig *config, + const FcChar8 *url) +{ + const FcChar8 *sysroot = FcConfigGetSysRoot (config); + FcChar8 *n = FcConfigFilename (url); + FcChar8 *nn = NULL; + + if (n) + { + FcChar8 buf[PATH_MAX]; + ssize_t len; + + if (sysroot) + nn = FcStrBuildFilename (sysroot, n, NULL); + else + nn = FcStrdup (n); + FcStrFree (n); + + if ((len = FcReadLink (nn, buf, sizeof (buf) - 1)) != -1) + { + buf[len] = 0; + FcStrFree (nn); + nn = FcStrdup (buf); + } + } + + return nn; +} + /* * Manage the application-specific fonts */ @@ -2221,7 +2266,7 @@ FcConfigAppFontAddFile (FcConfig *config, FcConfigSetFonts (config, set, FcSetApplication); } - if (!FcFileScanConfig (set, subdirs, config->blanks, file, config)) + if (!FcFileScanConfig (set, subdirs, file, config)) { FcStrSetDestroy (subdirs); return FcFalse; @@ -2425,6 +2470,199 @@ FcConfigSetSysRoot (FcConfig *config, } } +FcRuleSet * +FcRuleSetCreate (const FcChar8 *name) +{ + FcRuleSet *ret = (FcRuleSet *) malloc (sizeof (FcRuleSet)); + FcMatchKind k; + const FcChar8 *p; + + if (!name) + p = (const FcChar8 *)""; + else + p = name; + + if (ret) + { + ret->name = FcStrdup (p); + ret->description = NULL; + ret->domain = NULL; + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + ret->subst[k] = FcPtrListCreate ((FcDestroyFunc) FcRuleDestroy); + FcRefInit (&ret->ref, 1); + } + + return ret; +} + +void +FcRuleSetDestroy (FcRuleSet *rs) +{ + FcMatchKind k; + + if (!rs) + return; + if (FcRefDec (&rs->ref) != 1) + return; + + if (rs->name) + FcStrFree (rs->name); + if (rs->description) + FcStrFree (rs->description); + if (rs->domain) + FcStrFree (rs->domain); + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + FcPtrListDestroy (rs->subst[k]); + + free (rs); +} + +void +FcRuleSetReference (FcRuleSet *rs) +{ + if (!FcRefIsConst (&rs->ref)) + FcRefInc (&rs->ref); +} + +void +FcRuleSetEnable (FcRuleSet *rs, + FcBool flag) +{ + if (rs) + { + rs->enabled = flag; + /* XXX: we may want to provide a feature + * to enable/disable rulesets through API + * in the future? + */ + } +} + +void +FcRuleSetAddDescription (FcRuleSet *rs, + const FcChar8 *domain, + const FcChar8 *description) +{ + if (rs->domain) + FcStrFree (rs->domain); + if (rs->description) + FcStrFree (rs->description); + + rs->domain = domain ? FcStrdup (domain) : NULL; + rs->description = description ? FcStrdup (description) : NULL; +} + +int +FcRuleSetAdd (FcRuleSet *rs, + FcRule *rule, + FcMatchKind kind) +{ + FcPtrListIter iter; + FcRule *r; + int n = 0, ret; + + if (!rs || + kind < FcMatchKindBegin || kind >= FcMatchKindEnd) + return -1; + FcPtrListIterInitAtLast (rs->subst[kind], &iter); + if (!FcPtrListIterAdd (rs->subst[kind], &iter, rule)) + return -1; + + for (r = rule; r; r = r->next) + { + switch (r->type) + { + case FcRuleTest: + if (r->u.test && + r->u.test->kind == FcMatchDefault) + r->u.test->kind = kind; + + if (n < r->u.test->object) + n = r->u.test->object; + break; + case FcRuleEdit: + if (n < r->u.edit->object) + n = r->u.edit->object; + break; + default: + break; + } + } + if (FcDebug () & FC_DBG_EDIT) + { + printf ("Add Rule(kind:%d, name: %s) ", kind, rs->name); + FcRulePrint (rule); + } + ret = FC_OBJ_ID (n) - FC_MAX_BASE_OBJECT; + + return ret < 0 ? 0 : ret; +} + +void +FcConfigFileInfoIterInit (FcConfig *config, + FcConfigFileInfoIter *iter) +{ + FcConfig *c; + FcPtrListIter *i = (FcPtrListIter *)iter; + + if (!config) + c = FcConfigGetCurrent (); + else + c = config; + FcPtrListIterInit (c->rulesetList, i); +} + +FcBool +FcConfigFileInfoIterNext (FcConfig *config, + FcConfigFileInfoIter *iter) +{ + FcConfig *c; + FcPtrListIter *i = (FcPtrListIter *)iter; + + if (!config) + c = FcConfigGetCurrent (); + else + c = config; + if (FcPtrListIterIsValid (c->rulesetList, i)) + { + FcPtrListIterNext (c->rulesetList, i); + } + else + return FcFalse; + + return FcTrue; +} + +FcBool +FcConfigFileInfoIterGet (FcConfig *config, + FcConfigFileInfoIter *iter, + FcChar8 **name, + FcChar8 **description, + FcBool *enabled) +{ + FcConfig *c; + FcRuleSet *r; + FcPtrListIter *i = (FcPtrListIter *)iter; + + if (!config) + c = FcConfigGetCurrent (); + else + c = config; + if (!FcPtrListIterIsValid (c->rulesetList, i)) + return FcFalse; + r = FcPtrListIterGetValue (c->rulesetList, i); + if (name) + *name = FcStrdup (r->name && r->name[0] ? r->name : (const FcChar8 *) "fonts.conf"); + if (description) + *description = FcStrdup (!r->description ? _("No description") : + dgettext (r->domain ? (const char *) r->domain : GETTEXT_PACKAGE "-conf", + (const char *) r->description)); + if (enabled) + *enabled = r->enabled; + + return FcTrue; +} + #define __fccfg__ #include "fcaliastail.h" #undef __fccfg__ diff --git a/src/fccharset.c b/src/fccharset.c index 3f17892..114f948 100644 --- a/src/fccharset.c +++ b/src/fccharset.c @@ -274,7 +274,7 @@ FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4) if (!leaf) return FcFalse; b = &leaf->map[(ucs4 & 0xff) >> 5]; - *b |= (1 << (ucs4 & 0x1f)); + *b |= (1U << (ucs4 & 0x1f)); return FcTrue; } @@ -290,7 +290,7 @@ FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4) if (!leaf) return FcTrue; b = &leaf->map[(ucs4 & 0xff) >> 5]; - *b &= ~(1 << (ucs4 & 0x1f)); + *b &= ~(1U << (ucs4 & 0x1f)); /* We don't bother removing the leaf if it's empty */ return FcTrue; } @@ -594,7 +594,7 @@ FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4) leaf = FcCharSetFindLeaf (fcs, ucs4); if (!leaf) return FcFalse; - return (leaf->map[(ucs4 & 0xff) >> 5] & (1 << (ucs4 & 0x1f))) != 0; + return (leaf->map[(ucs4 & 0xff) >> 5] & (1U << (ucs4 & 0x1f))) != 0; } static FcChar32 @@ -1113,14 +1113,14 @@ FcCharSetHash (FcCharSet *fcs) hash = ((hash << 1) | (hash >> 31)) ^ FcCharLeafHash (FcCharSetLeaf(fcs,i)); /* hash in numbers */ for (i = 0; i < fcs->num; i++) - hash = ((hash << 1) | (hash >> 31)) ^ *FcCharSetNumbers(fcs); + hash = ((hash << 1) | (hash >> 31)) ^ FcCharSetNumbers(fcs)[i]; return hash; } static FcBool FcCharSetFreezeOrig (FcCharSetFreezer *freezer, const FcCharSet *orig, const FcCharSet *frozen) { - FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) & FC_CHAR_SET_HASH_SIZE]; + FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) % FC_CHAR_SET_HASH_SIZE]; FcCharSetOrigEnt *ent; ent = malloc (sizeof (FcCharSetOrigEnt)); @@ -1204,7 +1204,7 @@ FcCharSetFreezeBase (FcCharSetFreezer *freezer, FcCharSet *fcs) static const FcCharSet * FcCharSetFindFrozen (FcCharSetFreezer *freezer, const FcCharSet *orig) { - FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) & FC_CHAR_SET_HASH_SIZE]; + FcCharSetOrigEnt **bucket = &freezer->orig_hash_table[((uintptr_t) orig) % FC_CHAR_SET_HASH_SIZE]; FcCharSetOrigEnt *ent; for (ent = *bucket; ent; ent = ent->next) diff --git a/src/fccompat.c b/src/fccompat.c index 31d80be..16f108d 100644 --- a/src/fccompat.c +++ b/src/fccompat.c @@ -37,6 +37,9 @@ #if HAVE_FCNTL_H #include #endif +#if HAVE_UNISTD_H +#include +#endif #include #include #include @@ -256,6 +259,22 @@ FcMakeDirectory (const FcChar8 *dir) return ret; } +ssize_t +FcReadLink (const FcChar8 *pathname, + FcChar8 *buf, + size_t bufsiz) +{ +#ifdef HAVE_READLINK + return readlink ((const char *) pathname, (char *)buf, bufsiz); +#else + /* XXX: this function is only used for FcConfigRealFilename() so far + * and returning -1 as an error still just works. + */ + errno = ENOSYS; + return -1; +#endif +} + #define __fccompat__ #include "fcaliastail.h" #undef __fccompat__ diff --git a/src/fcdbg.c b/src/fcdbg.c index c2853ff..2e16a31 100644 --- a/src/fcdbg.c +++ b/src/fcdbg.c @@ -46,7 +46,10 @@ _FcValuePrintFile (FILE *f, const FcValue v) fprintf (f, "\"%s\"", v.u.s); break; case FcTypeBool: - fprintf (f, "%s", v.u.b ? "True" : "False"); + fprintf (f, + v.u.b == FcTrue ? "True" : + v.u.b == FcFalse ? "False" : + "DontCare"); break; case FcTypeMatrix: fprintf (f, "[%g %g; %g %g]", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); @@ -62,7 +65,7 @@ _FcValuePrintFile (FILE *f, const FcValue v) fprintf (f, "face"); break; case FcTypeRange: - fprintf (f, "[%g %g)", v.u.r->begin, v.u.r->end); + fprintf (f, "[%g %g]", v.u.r->begin, v.u.r->end); break; } } @@ -476,6 +479,9 @@ FcTestPrint (const FcTest *test) case FcMatchScan: printf ("scan "); break; + case FcMatchKindEnd: + /* shouldn't be reached */ + return; } switch (test->qual) { case FcQualAny: @@ -508,13 +514,12 @@ FcEditPrint (const FcEdit *edit) } void -FcSubstPrint (const FcSubst *subst) +FcRulePrint (const FcRule *rule) { - FcRule *r; FcRuleType last_type = FcRuleUnknown; + const FcRule *r; - printf ("match\n"); - for (r = subst->rule; r; r = r->next) + for (r = rule; r; r = r->next) { if (last_type != r->type) { diff --git a/src/fcdefault.c b/src/fcdefault.c index 6647a8f..35973d7 100644 --- a/src/fcdefault.c +++ b/src/fcdefault.c @@ -39,6 +39,7 @@ static const struct { { FC_EMBEDDED_BITMAP_OBJECT, FcTrue }, /* !FC_LOAD_NO_BITMAP */ { FC_DECORATIVE_OBJECT, FcFalse }, { FC_SYMBOL_OBJECT, FcFalse }, + { FC_VARIABLE_OBJECT, FcFalse }, }; #define NUM_FC_BOOL_DEFAULTS (int) (sizeof FcBoolDefaults / sizeof FcBoolDefaults[0]) @@ -148,17 +149,34 @@ retry: prgname = FcStrdup (""); #else # if defined (HAVE_GETEXECNAME) - const char *p = getexecname (); + char *p = FcStrdup(getexecname ()); # elif defined (HAVE_READLINK) - char buf[PATH_MAX + 1]; - int len; + size_t size = FC_PATH_MAX; char *p = NULL; - len = readlink ("/proc/self/exe", buf, sizeof (buf) - 1); - if (len != -1) + while (1) { - buf[len] = '\0'; - p = buf; + char *buf = malloc (size); + ssize_t len; + + if (!buf) + break; + + len = readlink ("/proc/self/exe", buf, size - 1); + if (len < 0) + { + free (buf); + break; + } + if (len < size - 1) + { + buf[len] = 0; + p = buf; + break; + } + + free (buf); + size *= 2; } # else char *p = NULL; @@ -176,6 +194,9 @@ retry: if (!prgname) prgname = FcStrdup (""); + + if (p) + free (p); #endif if (!fc_atomic_ptr_cmpexch (&default_prgname, NULL, prgname)) { @@ -235,7 +256,14 @@ FcDefaultSubstitute (FcPattern *pattern) FcPatternObjectAddBool (pattern, FcBoolDefaults[i].field, FcBoolDefaults[i].value); if (FcPatternObjectGetDouble (pattern, FC_SIZE_OBJECT, 0, &size) != FcResultMatch) - size = 12.0L; + { + FcRange *r; + double b, e; + if (FcPatternObjectGetRange (pattern, FC_SIZE_OBJECT, 0, &r) == FcResultMatch && FcRangeGetDouble (r, &b, &e)) + size = (b + e) * .5; + else + size = 12.0L; + } if (FcPatternObjectGetDouble (pattern, FC_SCALE_OBJECT, 0, &scale) != FcResultMatch) scale = 1.0; if (FcPatternObjectGetDouble (pattern, FC_DPI_OBJECT, 0, &dpi) != FcResultMatch) diff --git a/src/fcdir.c b/src/fcdir.c index fd62a34..bfcdf95 100644 --- a/src/fcdir.c +++ b/src/fcdir.c @@ -23,9 +23,6 @@ */ #include "fcint.h" -#include "fcftint.h" -#include -#include FT_FREETYPE_H #include FcBool @@ -64,51 +61,35 @@ FcFileIsFile (const FcChar8 *file) static FcBool FcFileScanFontConfig (FcFontSet *set, - FcBlanks *blanks, const FcChar8 *file, FcConfig *config) { - FT_Library ftLibrary; - FT_Face face; - FcPattern *font; + int i; FcBool ret = FcTrue; - int num_faces = 0; - int num_instances = 0; - int face_num = 0; - int instance_num = 0; - int id; + int old_nfont = set->nfont; const FcChar8 *sysroot = FcConfigGetSysRoot (config); - if (FT_Init_FreeType (&ftLibrary)) + if (FcDebug () & FC_DBG_SCAN) + { + printf ("\tScanning file %s...", file); + fflush (stdout); + } + + if (!FcFreeTypeQueryAll (file, -1, NULL, NULL, set)) return FcFalse; - do - { - font = 0; - /* - * Nothing in the cache, scan the file - */ - if (FcDebug () & FC_DBG_SCAN) - { - printf ("\tScanning file %s...", file); - fflush (stdout); - } + if (FcDebug () & FC_DBG_SCAN) + printf ("done\n"); - 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); + for (i = old_nfont; i < set->nfont; i++) + { + FcPattern *font = set->fonts[i]; - 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) + if (sysroot) { size_t len = strlen ((const char *)sysroot); FcChar8 *f = NULL; @@ -130,43 +111,15 @@ FcFileScanFontConfig (FcFontSet *set, /* * Edit pattern with user-defined rules */ - if (font && config && !FcConfigSubstitute (config, font, FcMatchScan)) - { - FcPatternDestroy (font); - font = NULL; - ret = FcFalse; - } - - /* - * Add the font - */ - if (font) - { - if (FcDebug() & FC_DBG_SCANV) - { - printf ("Final font pattern:\n"); - FcPatternPrint (font); - } - if (!FcFontSetAdd (set, font)) - { - FcPatternDestroy (font); - font = NULL; - ret = FcFalse; - } - } - else + if (config && !FcConfigSubstitute (config, font, FcMatchScan)) ret = FcFalse; - if (instance_num < num_instances) - instance_num++; - else + if (FcDebug() & FC_DBG_SCANV) { - face_num++; - instance_num = 0; + printf ("Final font pattern:\n"); + FcPatternPrint (font); } - } while (font && ret && face_num < num_faces); - - FT_Done_FreeType (ftLibrary); + } return ret; } @@ -174,7 +127,6 @@ FcFileScanFontConfig (FcFontSet *set, FcBool FcFileScanConfig (FcFontSet *set, FcStrSet *dirs, - FcBlanks *blanks, const FcChar8 *file, FcConfig *config) { @@ -201,7 +153,7 @@ FcFileScanConfig (FcFontSet *set, else { if (set) - return FcFileScanFontConfig (set, blanks, file, config); + return FcFileScanFontConfig (set, file, config); else return FcTrue; } @@ -211,11 +163,11 @@ FcBool FcFileScan (FcFontSet *set, FcStrSet *dirs, FcFileCache *cache FC_UNUSED, - FcBlanks *blanks, + FcBlanks *blanks FC_UNUSED, const FcChar8 *file, FcBool force FC_UNUSED) { - return FcFileScanConfig (set, dirs, blanks, file, FcConfigGetCurrent ()); + return FcFileScanConfig (set, dirs, file, FcConfigGetCurrent ()); } /* @@ -230,7 +182,6 @@ cmpstringp(const void *p1, const void *p2) FcBool FcDirScanConfig (FcFontSet *set, FcStrSet *dirs, - FcBlanks *blanks, const FcChar8 *dir, FcBool force, /* XXX unused */ FcConfig *config) @@ -249,9 +200,6 @@ FcDirScanConfig (FcFontSet *set, if (!set && !dirs) return FcTrue; - if (!blanks) - blanks = FcConfigGetBlanks (config); - /* freed below */ file = (FcChar8 *) malloc (strlen ((char *) dir) + 1 + FC_MAX_FILE_LEN + 1); if (!file) { @@ -302,7 +250,7 @@ FcDirScanConfig (FcFontSet *set, * Scan file files to build font patterns */ for (i = 0; i < files->num; i++) - FcFileScanConfig (set, dirs, blanks, files->strs[i], config); + FcFileScanConfig (set, dirs, files->strs[i], config); bail2: FcStrSetDestroy (files); @@ -318,15 +266,15 @@ bail: FcBool FcDirScan (FcFontSet *set, FcStrSet *dirs, - FcFileCache *cache, /* XXX unused */ - FcBlanks *blanks, + FcFileCache *cache FC_UNUSED, + FcBlanks *blanks FC_UNUSED, const FcChar8 *dir, - FcBool force /* XXX unused */) + FcBool force FC_UNUSED) { if (cache || !force) return FcFalse; - return FcDirScanConfig (set, dirs, blanks, dir, force, FcConfigGetCurrent ()); + return FcDirScanConfig (set, dirs, dir, force, FcConfigGetCurrent ()); } /* @@ -341,7 +289,9 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config) struct stat dir_stat; const FcChar8 *sysroot = FcConfigGetSysRoot (config); FcChar8 *d; +#ifndef _WIN32 int fd = -1; +#endif if (sysroot) d = FcStrBuildFilename (sysroot, dir, NULL); @@ -362,11 +312,13 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config) if (!dirs) goto bail1; +#ifndef _WIN32 fd = FcDirCacheLock (dir, config); +#endif /* * Scan the dir */ - if (!FcDirScanConfig (set, dirs, NULL, d, FcTrue, config)) + if (!FcDirScanConfig (set, dirs, d, FcTrue, config)) goto bail2; /* @@ -382,7 +334,9 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config) FcDirCacheWrite (cache, config); bail2: +#ifndef _WIN32 FcDirCacheUnlock (fd); +#endif FcStrSetDestroy (dirs); bail1: FcFontSetDestroy (set); @@ -401,7 +355,9 @@ FcDirCacheRescan (const FcChar8 *dir, FcConfig *config) FcStrSet *dirs; const FcChar8 *sysroot = FcConfigGetSysRoot (config); FcChar8 *d = NULL; +#ifndef _WIN32 int fd = -1; +#endif cache = FcDirCacheLoad (dir, config, NULL); if (!cache) @@ -417,11 +373,13 @@ FcDirCacheRescan (const FcChar8 *dir, FcConfig *config) if (!dirs) goto bail; +#ifndef _WIN32 fd = FcDirCacheLock (dir, config); +#endif /* * Scan the dir */ - if (!FcDirScanConfig (NULL, dirs, NULL, d, FcTrue, config)) + if (!FcDirScanConfig (NULL, dirs, d, FcTrue, config)) goto bail1; /* * Rebuild the cache object @@ -436,7 +394,9 @@ FcDirCacheRescan (const FcChar8 *dir, FcConfig *config) FcDirCacheWrite (new, config); bail1: +#ifndef _WIN32 FcDirCacheUnlock (fd); +#endif FcStrSetDestroy (dirs); bail: if (d) @@ -453,6 +413,7 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) { FcCache *cache = NULL; + FcDirCacheCreateUUID ((FcChar8 *) dir, FcFalse, config); /* Try to use existing cache file */ if (!force) cache = FcDirCacheLoad (dir, config, NULL); diff --git a/src/fcfreetype.c b/src/fcfreetype.c index b4d926d..36f5aed 100644 --- a/src/fcfreetype.c +++ b/src/fcfreetype.c @@ -51,6 +51,7 @@ #include #include #include FT_FREETYPE_H +#include FT_ADVANCES_H #include FT_TRUETYPE_TABLES_H #include FT_SFNT_NAMES_H #include FT_TRUETYPE_IDS_H @@ -66,16 +67,6 @@ #include "ftglue.h" -#if HAVE_WARNING_CPP_DIRECTIVE -#if !HAVE_FT_GET_BDF_PROPERTY -#warning "No FT_Get_BDF_Property: Please install freetype 2.1.4 or later" -#endif - -#if !HAVE_FT_GET_PS_FONT_INFO -#warning "No FT_Get_PS_Font_Info: Please install freetype 2.1.1 or later" -#endif -#endif - /* * Keep Han languages separated by eliminating languages * that the codePageRange bits says aren't supported @@ -385,12 +376,7 @@ static const FcFtLanguage fcFtLanguage[] = { { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_LATVIAN_LATVIA, "lv" }, { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_LITHUANIAN_LITHUANIA, "lt" }, { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA,"lt" }, - -#ifdef TT_MS_LANGID_MAORI_NEW_ZELAND - /* this seems to be an error that have been dropped */ { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_MAORI_NEW_ZEALAND, "mi" }, -#endif - { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_FARSI_IRAN, "fa" }, { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_VIETNAMESE_VIET_NAM, "vi" }, { TT_PLATFORM_MICROSOFT, TT_MS_LANGID_ARMENIAN_ARMENIA, "hy" }, @@ -557,6 +543,9 @@ static const FcMacRomanFake fcMacRomanFake[] = { static FcChar8 * FcFontCapabilities(FT_Face face); +static int +FcFreeTypeSpacing (FT_Face face); + #define NUM_FC_MAC_ROMAN_FAKE (int) (sizeof (fcMacRomanFake) / sizeof (fcMacRomanFake[0])) @@ -1108,11 +1097,7 @@ FcGetPixelSize (FT_Face face, int i) return (double) prop.u.integer; } #endif -#if HAVE_FT_BITMAP_SIZE_Y_PPEM return (double) face->available_sizes[i].y_ppem / 64.0; -#else - return (double) face->available_sizes[i].height; -#endif } static FcBool @@ -1132,20 +1117,17 @@ static const FT_UShort platform_order[] = { TT_PLATFORM_MICROSOFT, TT_PLATFORM_APPLE_UNICODE, TT_PLATFORM_MACINTOSH, + TT_PLATFORM_ISO, }; #define NUM_PLATFORM_ORDER (sizeof (platform_order) / sizeof (platform_order[0])) static const FT_UShort nameid_order[] = { -#ifdef TT_NAME_ID_WWS_FAMILY TT_NAME_ID_WWS_FAMILY, -#endif TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_FONT_FAMILY, TT_NAME_ID_MAC_FULL_NAME, TT_NAME_ID_FULL_NAME, -#ifdef TT_NAME_ID_WWS_SUBFAMILY TT_NAME_ID_WWS_SUBFAMILY, -#endif TT_NAME_ID_PREFERRED_SUBFAMILY, TT_NAME_ID_FONT_SUBFAMILY, TT_NAME_ID_TRADEMARK, @@ -1153,20 +1135,51 @@ static const FT_UShort nameid_order[] = { }; #define NUM_NAMEID_ORDER (sizeof (nameid_order) / sizeof (nameid_order[0])) -FcPattern * -FcFreeTypeQueryFace (const FT_Face face, - const FcChar8 *file, - int id, - FcBlanks *blanks) + +static FcBool +FcFreeTypeGetName (const FT_Face face, + unsigned int platform, + unsigned int nameid, + FT_SfntName *sname) +{ + int min = 0, max = (int) FT_Get_Sfnt_Name_Count (face) - 1; + + while (min <= max) + { + int mid = (min + max) / 2; + + if (FT_Get_Sfnt_Name (face, mid, sname) != 0) + return FcFalse; + + if (platform < sname->platform_id || (platform == sname->platform_id && nameid < sname->name_id)) + max = mid - 1; + else if (platform > sname->platform_id || (platform == sname->platform_id && nameid > sname->name_id)) + min = mid + 1; + else + return FcTrue; + } + + return FcFalse; +} + +static FcPattern * +FcFreeTypeQueryFaceInternal (const FT_Face face, + const FcChar8 *file, + unsigned int id, + FcCharSet **cs_share, + FcLangSet **ls_share) { FcPattern *pat; int slant = -1; - int weight = -1; - int width = -1; + double weight = -1; + double width = -1; FcBool decorative = FcFalse; - int i; - FcCharSet *cs; - FcLangSet *ls; + FcBool variable = FcFalse; + FcBool variable_weight = FcFalse; + FcBool variable_width = FcFalse; + FcBool variable_size = FcFalse; + FcCharSet *cs; + FcLangSet *ls; #if 0 FcChar8 *family = 0; #endif @@ -1189,8 +1202,6 @@ FcFreeTypeQueryFace (const FT_Face face, #endif TT_Header *head; const FcChar8 *exclusiveLang = 0; - FT_SfntName sname; - FT_UInt snamei, snamec; int nfamily = 0; int nfamily_lang = 0; @@ -1199,14 +1210,9 @@ FcFreeTypeQueryFace (const FT_Face face, int nfullname = 0; int nfullname_lang = 0; unsigned int p, n; - int platform, nameid; FcChar8 *style = 0; int st; - char psname[256]; - const char *tmp; - - FcRange *r = NULL; FcBool symbol = FcFalse; @@ -1220,17 +1226,12 @@ FcFreeTypeQueryFace (const FT_Face face, 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 + has_color = !!(face->face_flags & 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 @@ -1241,40 +1242,106 @@ FcFreeTypeQueryFace (const FT_Face face, if (id >> 16) { - if (!FT_Get_MM_Var (face, &master)) - instance = &master->namedstyle[(id >> 16) - 1]; + if (FT_Get_MM_Var (face, &master)) + goto bail1; - if (instance) + if (id >> 16 == 0x8000) { - /* Pull out weight and width from named-instance. */ + /* Query variable font itself. */ 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; + double min_value = master->axis[i].minimum / (double) (1 << 16); + double def_value = master->axis[i].def / (double) (1 << 16); + double max_value = master->axis[i].maximum / (double) (1 << 16); + const char *elt = NULL; + + if (min_value > def_value || def_value > max_value || min_value == max_value) + continue; + + switch (master->axis[i].tag) + { + case FT_MAKE_TAG ('w','g','h','t'): + elt = FC_WEIGHT; + min_value = FcWeightFromOpenTypeDouble (min_value); + max_value = FcWeightFromOpenTypeDouble (max_value); + variable_weight = FcTrue; + weight = 0; /* To stop looking for weight. */ + break; + + case FT_MAKE_TAG ('w','d','t','h'): + elt = FC_WIDTH; + /* Values in 'wdth' match Fontconfig FC_WIDTH_* scheme directly. */ + variable_width = FcTrue; + width = 0; /* To stop looking for width. */ + break; + + case FT_MAKE_TAG ('o','p','s','z'): + elt = FC_SIZE; + /* Values in 'opsz' match Fontconfig FC_SIZE, both are in points. */ + variable_size = FcTrue; + break; + } + + if (elt) + { + FcRange *r = FcRangeCreateDouble (min_value, max_value); + if (!FcPatternAddRange (pat, elt, r)) + { + FcRangeDestroy (r); + goto bail1; + } + FcRangeDestroy (r); + variable = FcTrue; + } + } - case FT_MAKE_TAG ('w','d','t','h'): - width_mult = mult; - break; + if (!variable) + goto bail1; - /* TODO optical size! */ + id &= 0xFFFF; + } + else if ((id >> 16) - 1 < master->num_namedstyles) + { + /* Pull out weight and width from named-instance. */ + unsigned int i; + + instance = &master->namedstyle[(id >> 16) - 1]; + + 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 = default_value ? value / default_value : 1; + //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; + + case FT_MAKE_TAG ('w','d','t','h'): + width_mult = mult; + break; + + case FT_MAKE_TAG ('o','p','s','z'): + if (!FcPatternAddDouble (pat, FC_SIZE, value)) + goto bail1; + break; } } } + else + goto bail1; } + if (!FcPatternAddBool (pat, FC_VARIABLE, variable)) + goto bail1; /* * Get the OS/2 table */ - os2 = (TT_OS2 *) FT_Get_Sfnt_Table (face, ft_sfnt_os2); + os2 = (TT_OS2 *) FT_Get_Sfnt_Table (face, FT_SFNT_OS2); /* * Look first in the OS/2 table for the foundry, if @@ -1302,13 +1369,9 @@ FcFreeTypeQueryFace (const FT_Face face, * and style names. FreeType makes quite a hash * of them */ - snamec = FT_Get_Sfnt_Name_Count (face); - for (p = 0; p <= NUM_PLATFORM_ORDER; p++) + for (p = 0; p < NUM_PLATFORM_ORDER; p++) { - if (p < NUM_PLATFORM_ORDER) - platform = platform_order[p]; - else - platform = 0xffff; + int platform = platform_order[p]; /* * Order nameids so preferred names appear first @@ -1316,159 +1379,138 @@ FcFreeTypeQueryFace (const FT_Face face, */ for (n = 0; n < NUM_NAMEID_ORDER; n++) { - nameid = nameid_order[n]; + FT_SfntName sname; + const FcChar8 *lang; + const char *elt = 0, *eltlang = 0; + int *np = 0, *nlangp = 0; + size_t len; + int nameid, lookupid; - for (snamei = 0; snamei < snamec; snamei++) - { - FcChar8 *utf8, *pp; - const FcChar8 *lang; - const char *elt = 0, *eltlang = 0; - int *np = 0, *nlangp = 0; - size_t len; + nameid = lookupid = nameid_order[n]; - if (FT_Get_Sfnt_Name (face, snamei, &sname) != 0) + if (instance) + { + /* For named-instances, we skip regular style nameIDs, + * and treat the instance's nameid as FONT_SUBFAMILY. + * Postscript name is automatically handled by FreeType. */ + if (nameid == TT_NAME_ID_WWS_SUBFAMILY || + nameid == TT_NAME_ID_PREFERRED_SUBFAMILY) 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 (nameid == TT_NAME_ID_FONT_SUBFAMILY) + lookupid = instance->strid; + } - if (sname.name_id != nameid) - continue; + if (!FcFreeTypeGetName (face, platform, lookupid, &sname)) + continue; - /* - * Sort platforms in preference order, accepting - * all other platforms last - */ - if (p < NUM_PLATFORM_ORDER) + switch (nameid) { + case TT_NAME_ID_WWS_FAMILY: + case TT_NAME_ID_PREFERRED_FAMILY: + case TT_NAME_ID_FONT_FAMILY: +#if 0 + case TT_NAME_ID_UNIQUE_ID: +#endif + if (FcDebug () & FC_DBG_SCANV) + printf ("found family (n %2d p %d e %d l 0x%04x)", + sname.name_id, sname.platform_id, + sname.encoding_id, sname.language_id); + + elt = FC_FAMILY; + eltlang = FC_FAMILYLANG; + np = &nfamily; + nlangp = &nfamily_lang; + break; + case TT_NAME_ID_MAC_FULL_NAME: + case TT_NAME_ID_FULL_NAME: + if (FcDebug () & FC_DBG_SCANV) + printf ("found full (n %2d p %d e %d l 0x%04x)", + sname.name_id, sname.platform_id, + sname.encoding_id, sname.language_id); + + elt = FC_FULLNAME; + eltlang = FC_FULLNAMELANG; + np = &nfullname; + nlangp = &nfullname_lang; + break; + case TT_NAME_ID_WWS_SUBFAMILY: + case TT_NAME_ID_PREFERRED_SUBFAMILY: + case TT_NAME_ID_FONT_SUBFAMILY: + if (variable) + break; + if (FcDebug () & FC_DBG_SCANV) + printf ("found style (n %2d p %d e %d l 0x%04x) ", + sname.name_id, sname.platform_id, + sname.encoding_id, sname.language_id); + + elt = FC_STYLE; + eltlang = FC_STYLELANG; + np = &nstyle; + nlangp = &nstyle_lang; + break; + case TT_NAME_ID_TRADEMARK: + case TT_NAME_ID_MANUFACTURER: + /* If the foundry wasn't found in the OS/2 table, look here */ + if(!foundry) { - if (sname.platform_id != platform) - continue; + FcChar8 *utf8; + utf8 = FcSfntNameTranscode (&sname); + foundry = FcNoticeFoundry((FT_String *) utf8); + free (utf8); } - else - { - unsigned int sp; + break; + } + if (elt) + { + FcChar8 *utf8, *pp; - for (sp = 0; sp < NUM_PLATFORM_ORDER; sp++) - if (sname.platform_id == platform_order[sp]) - break; - if (sp != NUM_PLATFORM_ORDER) - continue; - } utf8 = FcSfntNameTranscode (&sname); lang = FcSfntNameLanguage (&sname); + if (FcDebug () & FC_DBG_SCANV) + printf ("%s\n", utf8); + if (!utf8) continue; - switch (sname.name_id) { -#ifdef TT_NAME_ID_WWS_FAMILY - case TT_NAME_ID_WWS_FAMILY: -#endif - case TT_NAME_ID_PREFERRED_FAMILY: - case TT_NAME_ID_FONT_FAMILY: -#if 0 - case TT_NAME_ID_UNIQUE_ID: -#endif - if (FcDebug () & FC_DBG_SCANV) - printf ("found family (n %2d p %d e %d l 0x%04x) %s\n", - sname.name_id, sname.platform_id, - sname.encoding_id, sname.language_id, - utf8); - - elt = FC_FAMILY; - eltlang = FC_FAMILYLANG; - np = &nfamily; - nlangp = &nfamily_lang; - break; - case TT_NAME_ID_MAC_FULL_NAME: - case TT_NAME_ID_FULL_NAME: - if (FcDebug () & FC_DBG_SCANV) - printf ("found full (n %2d p %d e %d l 0x%04x) %s\n", - sname.name_id, sname.platform_id, - sname.encoding_id, sname.language_id, - utf8); - - elt = FC_FULLNAME; - eltlang = FC_FULLNAMELANG; - np = &nfullname; - nlangp = &nfullname_lang; - break; -#ifdef TT_NAME_ID_WWS_SUBFAMILY - case TT_NAME_ID_WWS_SUBFAMILY: -#endif - case TT_NAME_ID_PREFERRED_SUBFAMILY: - case TT_NAME_ID_FONT_SUBFAMILY: - if (utf8) - { - pp = utf8; - while (*pp == ' ') - pp++; - len = strlen ((const char *) pp); - memmove (utf8, pp, len + 1); - pp = utf8 + len - 1; - while (*pp == ' ') - pp--; - *(pp + 1) = 0; - } - if (FcDebug () & FC_DBG_SCANV) - printf ("found style (n %2d p %d e %d l 0x%04x) %s\n", - sname.name_id, sname.platform_id, - sname.encoding_id, sname.language_id, - utf8); - - elt = FC_STYLE; - eltlang = FC_STYLELANG; - np = &nstyle; - nlangp = &nstyle_lang; - break; - case TT_NAME_ID_TRADEMARK: - case TT_NAME_ID_MANUFACTURER: - /* If the foundry wasn't found in the OS/2 table, look here */ - if(!foundry) - foundry = FcNoticeFoundry((FT_String *) utf8); - break; - } - if (elt) + /* Trim surrounding whitespace. */ + pp = utf8; + while (*pp == ' ') + pp++; + len = strlen ((const char *) pp); + memmove (utf8, pp, len + 1); + pp = utf8 + len; + while (pp > utf8 && *(pp - 1) == ' ') + pp--; + *pp = 0; + + if (FcStringInPatternElement (pat, elt, utf8)) { - if (FcStringInPatternElement (pat, elt, utf8)) - { - free (utf8); - continue; - } + free (utf8); + continue; + } - /* add new element */ - if (!FcPatternAddString (pat, elt, utf8)) - { - free (utf8); - goto bail1; - } + /* add new element */ + if (!FcPatternAddString (pat, elt, utf8)) + { free (utf8); - if (lang) + goto bail1; + } + free (utf8); + if (lang) + { + /* pad lang list with 'und' to line up with elt */ + while (*nlangp < *np) { - /* pad lang list with 'und' to line up with elt */ - while (*nlangp < *np) - { - if (!FcPatternAddString (pat, eltlang, (FcChar8 *) "und")) - goto bail1; - ++*nlangp; - } - if (!FcPatternAddString (pat, eltlang, lang)) + if (!FcPatternAddString (pat, eltlang, (FcChar8 *) "und")) goto bail1; ++*nlangp; } - ++*np; + if (!FcPatternAddString (pat, eltlang, lang)) + goto bail1; + ++*nlangp; } - else - free (utf8); + ++*np; } } } @@ -1485,11 +1527,12 @@ FcFreeTypeQueryFace (const FT_Face face, ++nfamily; } - if (!nstyle && face->style_name && + if (!variable && !nstyle && face->style_name && FcStrCmpIgnoreBlanksAndCase ((FcChar8 *) face->style_name, (FcChar8 *) "") != 0) { if (FcDebug () & FC_DBG_SCANV) 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")) @@ -1526,51 +1569,57 @@ FcFreeTypeQueryFace (const FT_Face face, } /* Add the PostScript name into the cache */ - tmp = FT_Get_Postscript_Name (face); - if (!tmp) + if (!variable) { - FcChar8 *family, *familylang = NULL; - size_t len; - int n = 0; - - /* Workaround when FT_Get_Postscript_Name didn't give any name. - * try to find out the English family name and convert. - */ - while (FcPatternObjectGetString (pat, FC_FAMILYLANG_OBJECT, n, &familylang) == FcResultMatch) + char psname[256]; + const char *tmp; + tmp = FT_Get_Postscript_Name (face); + if (!tmp) { - if (FcStrCmp (familylang, (const FcChar8 *)"en") == 0) - break; - n++; - familylang = NULL; - } - if (!familylang) - n = 0; + unsigned int i; + FcChar8 *family, *familylang = NULL; + size_t len; + int n = 0; - if (FcPatternObjectGetString (pat, FC_FAMILY_OBJECT, n, &family) != FcResultMatch) - goto bail1; - len = strlen ((const char *)family); - /* the literal name in PostScript Language is limited to 127 characters though, - * It is the architectural limit. so assuming 255 characters may works enough. - */ - for (i = 0; i < len && i < 255; i++) - { - /* those characters are not allowed to be the literal name in PostScript */ - static const char exclusive_chars[] = "\x04()/<>[]{}\t\f\r\n "; + /* Workaround when FT_Get_Postscript_Name didn't give any name. + * try to find out the English family name and convert. + */ + while (FcPatternObjectGetString (pat, FC_FAMILYLANG_OBJECT, n, &familylang) == FcResultMatch) + { + if (FcStrCmp (familylang, (const FcChar8 *)"en") == 0) + break; + n++; + familylang = NULL; + } + if (!familylang) + n = 0; + + if (FcPatternObjectGetString (pat, FC_FAMILY_OBJECT, n, &family) != FcResultMatch) + goto bail1; + len = strlen ((const char *)family); + /* the literal name in PostScript Language is limited to 127 characters though, + * It is the architectural limit. so assuming 255 characters may works enough. + */ + for (i = 0; i < len && i < 255; i++) + { + /* those characters are not allowed to be the literal name in PostScript */ + static const char exclusive_chars[] = "\x04()/<>[]{}\t\f\r\n "; - if (strchr(exclusive_chars, family[i]) != NULL) - psname[i] = '-'; - else - psname[i] = family[i]; + if (strchr(exclusive_chars, family[i]) != NULL) + psname[i] = '-'; + else + psname[i] = family[i]; + } + psname[i] = 0; } - psname[i] = 0; - } - else - { - strncpy (psname, tmp, 255); - psname[255] = 0; + else + { + strncpy (psname, tmp, 255); + psname[255] = 0; + } + if (!FcPatternAddString (pat, FC_POSTSCRIPT_NAME, (const FcChar8 *)psname)) + goto bail1; } - if (!FcPatternAddString (pat, FC_POSTSCRIPT_NAME, (const FcChar8 *)psname)) - goto bail1; if (file && *file && !FcPatternAddString (pat, FC_FILE, file)) goto bail1; @@ -1606,6 +1655,7 @@ FcFreeTypeQueryFace (const FT_Face face, if (os2 && os2->version >= 0x0001 && os2->version != 0xffff) { + unsigned int i; for (i = 0; i < NUM_CODE_PAGE_RANGE; i++) { FT_ULong bits; @@ -1620,7 +1670,7 @@ FcFreeTypeQueryFace (const FT_Face face, bits = os2->ulCodePageRange2; bit = FcCodePageRange[i].bit - 32; } - if (bits & (1 << bit)) + if (bits & (1U << bit)) { /* * If the font advertises support for multiple @@ -1640,21 +1690,12 @@ 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)); + weight = FcWeightFromOpenTypeDouble (weight * weight_mult); if ((FcDebug() & FC_DBG_SCANV) && weight != -1) - printf ("\tos2 weight class %d multiplier %g maps to weight %d\n", + printf ("\tos2 weight class %d multiplier %g maps to weight %g\n", os2->usWeightClass, weight_mult, 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; @@ -1665,8 +1706,9 @@ FcFreeTypeQueryFace (const FT_Face face, case 8: width = FC_WIDTH_EXTRAEXPANDED; break; case 9: width = FC_WIDTH_ULTRAEXPANDED; break; } + width *= width_mult; if ((FcDebug() & FC_DBG_SCANV) && width != -1) - printf ("\tos2 width class %d multiplier %g maps to width %d\n", + printf ("\tos2 width class %d multiplier %g maps to width %g\n", os2->usWidthClass, width_mult, width); } if (os2 && (complex_ = FcFontCapabilities(face))) @@ -1679,24 +1721,31 @@ 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) + if (!variable_size && os2 && os2->version >= 0x0005 && os2->version != 0xffff) { double lower_size, upper_size; + FcRange *r; /* 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)) + if (lower_size == upper_size) { + if (!FcPatternAddDouble (pat, FC_SIZE, lower_size)) + goto bail1; + } + else + { + r = FcRangeCreateDouble (lower_size, upper_size); + if (!FcPatternAddRange (pat, FC_SIZE, r)) + { + FcRangeDestroy (r); + goto bail1; + } FcRangeDestroy (r); - goto bail1; } - FcRangeDestroy (r); } -#endif /* * Type 1: Check for FontInfo dictionary information @@ -1710,7 +1759,7 @@ FcFreeTypeQueryFace (const FT_Face face, { weight = FcIsWeight ((FcChar8 *) psfontinfo.weight); if (FcDebug() & FC_DBG_SCANV) - printf ("\tType1 weight %s maps to %d\n", + printf ("\tType1 weight %s maps to %g\n", psfontinfo.weight, weight); } @@ -1774,7 +1823,7 @@ FcFreeTypeQueryFace (const FT_Face face, { width = FcIsWidth ((FcChar8 *) prop.u.atom); if (FcDebug () & FC_DBG_SCANV) - printf ("\tsetwidth %s maps to %d\n", prop.u.atom, width); + printf ("\tsetwidth %s maps to %g\n", prop.u.atom, width); } } #endif @@ -1788,13 +1837,13 @@ FcFreeTypeQueryFace (const FT_Face face, { weight = FcContainsWeight (style); if (FcDebug() & FC_DBG_SCANV) - printf ("\tStyle %s maps to weight %d\n", style, weight); + printf ("\tStyle %s maps to weight %g\n", style, weight); } if (width == -1) { width = FcContainsWidth (style); if (FcDebug() & FC_DBG_SCANV) - printf ("\tStyle %s maps to width %d\n", style, width); + printf ("\tStyle %s maps to width %g\n", style, width); } if (slant == -1) { @@ -1836,10 +1885,10 @@ FcFreeTypeQueryFace (const FT_Face face, if (!FcPatternAddInteger (pat, FC_SLANT, slant)) goto bail1; - if (!FcPatternAddInteger (pat, FC_WEIGHT, weight)) + if (!variable_weight && !FcPatternAddDouble (pat, FC_WEIGHT, weight)) goto bail1; - if (!FcPatternAddInteger (pat, FC_WIDTH, width)) + if (!variable_width && !FcPatternAddDouble (pat, FC_WIDTH, width)) goto bail1; if (!FcPatternAddString (pat, FC_FOUNDRY, foundry)) @@ -1852,15 +1901,23 @@ FcFreeTypeQueryFace (const FT_Face face, /* * Compute the unicode coverage for the font */ - cs = FcFreeTypeCharSetAndSpacing (face, blanks, &spacing); + if (cs_share && *cs_share) + cs = FcCharSetCopy (*cs_share); + else + { + cs = FcFreeTypeCharSet (face, NULL); + if (cs_share) + *cs_share = FcCharSetCopy (cs); + } if (!cs) goto bail1; - /* The FcFreeTypeCharSetAndSpacing() chose the encoding; test it for symbol. */ + /* The FcFreeTypeCharSet() 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; + spacing = FcFreeTypeSpacing (face); #if HAVE_FT_GET_BDF_PROPERTY /* For PCF fonts, override the computed spacing with the one from the property */ @@ -1895,7 +1952,14 @@ FcFreeTypeQueryFace (const FT_Face face, if (!symbol) { - ls = FcFreeTypeLangSet (cs, exclusiveLang); + if (ls_share && *ls_share) + ls = FcLangSetCopy (*ls_share); + else + { + ls = FcFreeTypeLangSet (cs, exclusiveLang); + if (ls_share) + *ls_share = FcLangSetCopy (ls); + } if (!ls) goto bail2; } @@ -1920,6 +1984,7 @@ FcFreeTypeQueryFace (const FT_Face face, if (!(face->face_flags & FT_FACE_FLAG_SCALABLE)) { + int i; for (i = 0; i < face->num_fixed_sizes; i++) if (!FcPatternAddDouble (pat, FC_PIXEL_SIZE, FcGetPixelSize (face, i))) @@ -1965,9 +2030,18 @@ bail0: } FcPattern * +FcFreeTypeQueryFace (const FT_Face face, + const FcChar8 *file, + unsigned int id, + FcBlanks *blanks FC_UNUSED) +{ + return FcFreeTypeQueryFaceInternal (face, file, id, NULL, NULL); +} + +FcPattern * FcFreeTypeQuery(const FcChar8 *file, - int id, - FcBlanks *blanks, + unsigned int id, + FcBlanks *blanks FC_UNUSED, int *count) { FT_Face face; @@ -1977,12 +2051,13 @@ FcFreeTypeQuery(const FcChar8 *file, if (FT_Init_FreeType (&ftLibrary)) return NULL; - if (FT_New_Face (ftLibrary, (char *) file, id, &face)) + if (FT_New_Face (ftLibrary, (char *) file, id & 0x7FFFFFFFF, &face)) goto bail; - *count = face->num_faces; + if (count) + *count = face->num_faces; - pat = FcFreeTypeQueryFace (face, file, id, blanks); + pat = FcFreeTypeQueryFaceInternal (face, file, id, NULL, NULL); FT_Done_Face (face); bail: @@ -1990,138 +2065,132 @@ bail: return pat; } -/* - * For our purposes, this approximation is sufficient - */ -#if !HAVE_FT_GET_NEXT_CHAR -#define FT_Get_Next_Char(face, ucs4, gi) ((ucs4) >= 0xffffff ? \ - (*(gi) = 0), 0 : \ - (*(gi) = 1), (ucs4) + 1) -#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 -}; - -#define NUM_DECODE (int) (sizeof (fcFontEncodings) / sizeof (fcFontEncodings[0])) +unsigned int +FcFreeTypeQueryAll(const FcChar8 *file, + unsigned int id, + FcBlanks *blanks, + int *count, + FcFontSet *set) +{ + FT_Face face = NULL; + FT_Library ftLibrary = NULL; + FcCharSet *cs = NULL; + FcLangSet *ls = NULL; + FT_MM_Var *mm_var = NULL; + FcBool index_set = id != (unsigned int) -1; + unsigned int set_face_num = index_set ? id & 0xFFFF : 0; + unsigned int set_instance_num = index_set ? id >> 16 : 0; + unsigned int face_num = set_face_num; + unsigned int instance_num = set_instance_num; + unsigned int num_faces = 0; + unsigned int num_instances = 0; + unsigned int ret = 0; + int err = 0; + + if (count) + *count = 0; -#include "../fc-glyphname/fcglyphname.h" + if (FT_Init_FreeType (&ftLibrary)) + return 0; -static FcChar32 -FcHashGlyphName (const FcChar8 *name) -{ - FcChar32 h = 0; - FcChar8 c; + if (FT_New_Face (ftLibrary, (const char *) file, face_num, &face)) + goto bail; - while ((c = *name++)) + num_faces = face->num_faces; + num_instances = face->style_flags >> 16; + if (num_instances && (!index_set || instance_num)) { - h = ((h << 1) | (h >> 31)) ^ c; + FT_Get_MM_Var (face, &mm_var); + if (!mm_var) + num_instances = 0; } - return h; -} -#if HAVE_FT_HAS_PS_GLYPH_NAMES -/* - * Use Type1 glyph names for fonts which have reliable names - * and which export an Adobe Custom mapping - */ -static FcBool -FcFreeTypeUseNames (FT_Face face) -{ - FT_Int map; + if (count) + *count = num_faces; - if (!FT_Has_PS_Glyph_Names (face)) - return FcFalse; - for (map = 0; map < face->num_charmaps; map++) - if (face->charmaps[map]->encoding == ft_encoding_adobe_custom) - return FcTrue; - return FcFalse; -} + do { + FcPattern *pat = NULL; -static const FcChar8 * -FcUcs4ToGlyphName (FcChar32 ucs4) -{ - int i = (int) (ucs4 % FC_GLYPHNAME_HASH); - int r = 0; - FcGlyphId gn; - - while ((gn = _fc_ucs_to_name[i]) != -1) - { - if (_fc_glyph_names[gn].ucs == ucs4) - return _fc_glyph_names[gn].name; - if (!r) + if (instance_num == 0x8000 || instance_num > num_instances) + FT_Set_Var_Design_Coordinates (face, 0, NULL); /* Reset variations. */ + else if (instance_num) { - r = (int) (ucs4 % FC_GLYPHNAME_REHASH); - if (!r) - r = 1; + FT_Var_Named_Style *instance = &mm_var->namedstyle[instance_num - 1]; + FT_Fixed *coords = instance->coords; + FcBool nonzero; + unsigned int i; + + /* Skip named-instance that coincides with base instance. */ + nonzero = FcFalse; + for (i = 0; i < mm_var->num_axis; i++) + if (coords[i] != mm_var->axis[i].def) + { + nonzero = FcTrue; + break; + } + if (!nonzero) + goto skip; + + FT_Set_Var_Design_Coordinates (face, mm_var->num_axis, coords); } - i += r; - if (i >= FC_GLYPHNAME_HASH) - i -= FC_GLYPHNAME_HASH; - } - return 0; -} -static FcChar32 -FcGlyphNameToUcs4 (FcChar8 *name) -{ - FcChar32 h = FcHashGlyphName (name); - int i = (int) (h % FC_GLYPHNAME_HASH); - int r = 0; - FcGlyphId gn; + id = ((instance_num << 16) + face_num); + pat = FcFreeTypeQueryFaceInternal (face, (const FcChar8 *) file, id, &cs, &ls); - while ((gn = _fc_name_to_ucs[i]) != -1) - { - if (!strcmp ((char *) name, (char *) _fc_glyph_names[gn].name)) - return _fc_glyph_names[gn].ucs; - if (!r) + if (pat) { - r = (int) (h % FC_GLYPHNAME_REHASH); - if (!r) - r = 1; - } - i += r; - if (i >= FC_GLYPHNAME_HASH) - i -= FC_GLYPHNAME_HASH; - } - return 0xffff; -} -/* - * Work around a bug in some FreeType versions which fail - * to correctly bounds check glyph name buffers and overwrite - * the stack. As Postscript names have a limit of 127 characters, - * this should be sufficient. - */ + ret++; + if (!set || ! FcFontSetAdd (set, pat)) + FcPatternDestroy (pat); + } + else if (instance_num != 0x8000) + err = 1; + +skip: + if (!index_set && instance_num < num_instances) + instance_num++; + else if (!index_set && instance_num == num_instances) + instance_num = 0x8000; /* variable font */ + else + { + FcLangSetDestroy (ls); + ls = NULL; + FcCharSetDestroy (cs); + cs = NULL; + FT_Done_Face (face); + face = NULL; + + face_num++; + instance_num = set_instance_num; + + if (FT_New_Face (ftLibrary, (const char *) file, face_num, &face)) + break; + } + } while (!err && (!index_set || face_num == set_face_num) && face_num < num_faces); -#if FC_GLYPHNAME_MAXLEN < 127 -# define FC_GLYPHNAME_BUFLEN 127 +bail: +#ifdef HAVE_FT_DONE_MM_VAR + FT_Done_MM_Var (ftLibrary, mm_var); #else -# define FC_GLYPHNAME_BUFLEN FC_GLYPHNAME_MAXLEN + free (mm_var); #endif + FcLangSetDestroy (ls); + FcCharSetDestroy (cs); + if (face) + FT_Done_Face (face); + FT_Done_FreeType (ftLibrary); -/* - * Search through a font for a glyph by name. This is - * currently a linear search as there doesn't appear to be - * any defined order within the font - */ -static FT_UInt -FcFreeTypeGlyphNameIndex (FT_Face face, const FcChar8 *name) -{ - FT_UInt gindex; - FcChar8 name_buf[FC_GLYPHNAME_BUFLEN + 2]; - - for (gindex = 0; gindex < (FT_UInt) face->num_glyphs; gindex++) - { - if (FT_Get_Glyph_Name (face, gindex, name_buf, FC_GLYPHNAME_BUFLEN+1) == 0) - if (!strcmp ((char *) name, (char *) name_buf)) - return gindex; - } - return 0; + return ret; } -#endif + + +static const FT_Encoding fcFontEncodings[] = { + FT_ENCODING_UNICODE, + FT_ENCODING_MS_SYMBOL +}; + +#define NUM_DECODE (int) (sizeof (fcFontEncodings) / sizeof (fcFontEncodings[0])) /* * Map a UCS4 glyph to a glyph index. Use all available encoding @@ -2180,38 +2249,23 @@ FcFreeTypeCharIndex (FT_Face face, FcChar32 ucs4) return glyphindex; } } -#if HAVE_FT_HAS_PS_GLYPH_NAMES - /* - * Check postscript name table if present - */ - if (FcFreeTypeUseNames (face)) - { - const FcChar8 *name = FcUcs4ToGlyphName (ucs4); - if (name) - { - glyphindex = FcFreeTypeGlyphNameIndex (face, name); - if (glyphindex) - return glyphindex; - } - } -#endif return 0; } -static FcBool -FcFreeTypeCheckGlyph (FT_Face face, FcChar32 ucs4, - FT_UInt glyph, FcBlanks *blanks, - FT_Pos *advance, - FcBool using_strike) +static inline int fc_min (int a, int b) { return a <= b ? a : b; } +static inline int fc_max (int a, int b) { return a >= b ? a : b; } +static inline FcBool fc_approximately_equal (int x, int y) +{ return abs (x - y) * 33 <= fc_max (abs (x), abs (y)); } + +static int +FcFreeTypeSpacing (FT_Face face) { FT_Int load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - FT_GlyphSlot slot; - - if (using_strike) - load_flags &= ~FT_LOAD_NO_SCALE; + FT_Pos advances[3] = {0}; + unsigned int num_advances = 0; + int o; - /* - * When using scalable fonts, only report those glyphs + /* When using scalable fonts, only report those glyphs * which can be scaled; otherwise those fonts will * only be available at some sizes, and never when * transformed. Avoid this by simply reporting bitmap-only @@ -2220,273 +2274,162 @@ FcFreeTypeCheckGlyph (FT_Face face, FcChar32 ucs4, if (face->face_flags & FT_FACE_FLAG_SCALABLE) load_flags |= FT_LOAD_NO_BITMAP; - if (FT_Load_Glyph (face, glyph, load_flags)) - return FcFalse; + if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) && + face->num_fixed_sizes > 0 && + FT_Get_Sfnt_Table (face, ft_sfnt_head)) + { + FT_Int strike_index = 0, i; + /* Select the face closest to 16 pixels tall */ + for (i = 1; i < face->num_fixed_sizes; i++) + { + if (abs (face->available_sizes[i].height - 16) < + abs (face->available_sizes[strike_index].height - 16)) + strike_index = i; + } - slot = face->glyph; - if (!glyph) - return FcFalse; + FT_Select_Size (face, strike_index); + } - *advance = slot->metrics.horiAdvance; + for (o = 0; o < NUM_DECODE; o++) + { + FcChar32 ucs4; + FT_UInt glyph; - switch ((int) slot->format) { - case ft_glyph_format_bitmap: - /* - * Bitmaps are assumed to be reasonable; if - * this proves to be a rash assumption, this - * code can be easily modified - */ - return FcTrue; - case ft_glyph_format_outline: - /* - * Glyphs with contours are always OK - */ - if (slot->outline.n_contours != 0) - return FcTrue; - /* - * Glyphs with no contours are only OK if - * they're members of the Blanks set specified - * in the configuration. If blanks isn't set, - * then allow any glyph to be blank - */ - if (!blanks || FcBlanksIsMember (blanks, ucs4)) - return FcTrue; - /* fall through ... */ - default: + if (FT_Select_Charmap (face, fcFontEncodings[o]) != 0) + continue; + + ucs4 = FT_Get_First_Char (face, &glyph); + while (glyph != 0 && num_advances < 3) + { + FT_Pos advance = 0; + if (!FT_Get_Advance (face, glyph, load_flags, &advance) && advance) + { + unsigned int j; + for (j = 0; j < num_advances; j++) + if (fc_approximately_equal (advance, advances[j])) + break; + if (j == num_advances) + advances[num_advances++] = advance; + } + + ucs4 = FT_Get_Next_Char (face, ucs4, &glyph); + } break; } - return FcFalse; -} -#define APPROXIMATELY_EQUAL(x,y) (FC_ABS ((x) - (y)) <= FC_MAX (FC_ABS (x), FC_ABS (y)) / 33) + if (num_advances <= 1) + return FC_MONO; + else if (num_advances == 2 && + fc_approximately_equal (fc_min (advances[0], advances[1]) * 2, + fc_max (advances[0], advances[1]))) + return FC_DUAL; + else + return FC_PROPORTIONAL; +} -static FcCharSet * -FcFreeTypeCharSetAndSpacingForSize (FT_Face face, FcBlanks *blanks, int *spacing, FT_Int strike_index) +FcCharSet * +FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks FC_UNUSED) { - FcChar32 page, off, ucs4; -#ifdef CHECK - FcChar32 font_max = 0; -#endif + const FT_Int load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; FcCharSet *fcs; - FcCharLeaf *leaf; int o; - FT_UInt glyph; - FT_Pos advance, advance_one = 0, advance_two = 0; - FcBool has_advance = FcFalse, fixed_advance = FcTrue, dual_advance = FcFalse; - FcBool using_strike = FcFalse; fcs = FcCharSetCreate (); if (!fcs) - goto bail0; - -#if HAVE_FT_SELECT_SIZE - if (strike_index >= 0) { - if (FT_Select_Size (face, strike_index) != FT_Err_Ok) - goto bail1; - using_strike = FcTrue; - } -#endif + goto bail; #ifdef CHECK printf ("Family %s style %s\n", face->family_name, face->style_name); #endif for (o = 0; o < NUM_DECODE; o++) { + FcChar32 page, off, ucs4; + FcCharLeaf *leaf; + FT_UInt glyph; + if (FT_Select_Charmap (face, fcFontEncodings[o]) != 0) continue; + page = ~0; + leaf = NULL; + ucs4 = FT_Get_First_Char (face, &glyph); + while (glyph != 0) { - page = ~0; - leaf = NULL; - ucs4 = FT_Get_First_Char (face, &glyph); - while (glyph != 0) - { - if (FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike)) - { - 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; - } - } + FcBool good = FcTrue; - if ((ucs4 >> 8) != page) - { - page = (ucs4 >> 8); - leaf = FcCharSetFindLeafCreate (fcs, ucs4); - if (!leaf) - goto bail1; - } - off = ucs4 & 0xff; - leaf->map[off >> 5] |= (1 << (off & 0x1f)); -#ifdef CHECK - if (ucs4 > font_max) - font_max = ucs4; -#endif - } - ucs4 = FT_Get_Next_Char (face, ucs4, &glyph); - } - if (fcFontEncodings[o] == FT_ENCODING_MS_SYMBOL) + /* CID fonts built by Adobe used to make ASCII control chars to cid1 + * (space glyph). As such, always check contour for those characters. */ + if (ucs4 <= 0x001F) { - /* 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); - } + if (FT_Load_Glyph (face, glyph, load_flags) || + (face->glyph->format == FT_GLYPH_FORMAT_OUTLINE && + face->glyph->outline.n_contours == 0)) + good = FcFalse; } -#ifdef CHECK - for (ucs4 = 0; ucs4 < 0x10000; ucs4++) - { - FcBool FT_Has, FC_Has; - FT_Has = FT_Get_Char_Index (face, ucs4) != 0; - FC_Has = FcCharSetHasChar (fcs, ucs4); - if (FT_Has != FC_Has) + if (good) + { + FcCharSetAddChar (fcs, ucs4); + if ((ucs4 >> 8) != page) { - printf ("0x%08x FT says %d FC says %d\n", ucs4, FT_Has, FC_Has); + page = (ucs4 >> 8); + leaf = FcCharSetFindLeafCreate (fcs, ucs4); + if (!leaf) + goto bail; } + off = ucs4 & 0xff; + leaf->map[off >> 5] |= (1U << (off & 0x1f)); } -#endif - } - - break; - } -#if HAVE_FT_HAS_PS_GLYPH_NAMES - /* - * Add mapping from PS glyph names if available - */ - if (FcFreeTypeUseNames (face)) - { - FcChar8 name_buf[FC_GLYPHNAME_BUFLEN + 2]; - for (glyph = 0; glyph < (FT_UInt) face->num_glyphs; glyph++) + ucs4 = FT_Get_Next_Char (face, ucs4, &glyph); + } + if (fcFontEncodings[o] == FT_ENCODING_MS_SYMBOL) { - if (FT_Get_Glyph_Name (face, glyph, name_buf, FC_GLYPHNAME_BUFLEN+1) == 0) + /* 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++) { - ucs4 = FcGlyphNameToUcs4 (name_buf); - if (ucs4 != 0xffff && - FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike)) - { - 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 - } + if (FcCharSetHasChar (fcs, ucs4)) + FcCharSetAddChar (fcs, ucs4 - 0xF000); } } - } -#endif #ifdef CHECK - printf ("%d glyphs %d encoded\n", (int) face->num_glyphs, FcCharSetCount (fcs)); - for (ucs4 = 0; ucs4 <= font_max; ucs4++) - { - FcBool has_char = (glyph = FcFreeTypeCharIndex (face, ucs4)) != 0; - FcBool has_bit = FcCharSetHasChar (fcs, ucs4); - - if (has_char && !has_bit) + for (ucs4 = 0x0020; ucs4 < 0x10000; ucs4++) { - if (!FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance, using_strike)) - printf ("Bitmap missing broken char 0x%x\n", ucs4); - else - printf ("Bitmap missing char 0x%x\n", ucs4); + FcBool FT_Has, FC_Has; + + FT_Has = FT_Get_Char_Index (face, ucs4) != 0; + FC_Has = FcCharSetHasChar (fcs, ucs4); + if (FT_Has != FC_Has) + { + printf ("0x%08x FT says %d FC says %d\n", ucs4, FT_Has, FC_Has); + } } - else if (!has_char && has_bit) - printf ("Bitmap extra char 0x%x\n", ucs4); - } #endif - if (fixed_advance) - *spacing = FC_MONO; - else if (dual_advance && APPROXIMATELY_EQUAL (2 * FC_MIN (advance_one, advance_two), FC_MAX (advance_one, advance_two))) - *spacing = FC_DUAL; - else - *spacing = FC_PROPORTIONAL; + break; + } + return fcs; -bail1: +bail: FcCharSetDestroy (fcs); -bail0: return 0; } FcCharSet * -FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing) +FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks FC_UNUSED, int *spacing) { - FcCharSet *cs; - - /* - * Check for bitmap-only ttf fonts that are missing the glyf table. - * In that case, pick a size and look for glyphs in that size instead - */ - if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) && - face->num_fixed_sizes > 0 && - FT_Get_Sfnt_Table (face, ft_sfnt_head)) - { - FT_Int strike_index = 0; - int i; - /* Select the face closest to 16 pixels tall */ - for (i = 1; i < face->num_fixed_sizes; i++) { - if (abs (face->available_sizes[i].height - 16) < - abs (face->available_sizes[strike_index].height - 16)) - strike_index = i; - } - cs = FcFreeTypeCharSetAndSpacingForSize (face, blanks, spacing, strike_index); - } - else - cs = FcFreeTypeCharSetAndSpacingForSize (face, blanks, spacing, -1); - return cs; -} - -FcCharSet * -FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks) -{ - int spacing; + if (spacing) + *spacing = FcFreeTypeSpacing (face); - return FcFreeTypeCharSetAndSpacing (face, blanks, &spacing); + return FcFreeTypeCharSet (face, blanks); } diff --git a/src/fchash.c b/src/fchash.c new file mode 100644 index 0000000..396f452 --- /dev/null +++ b/src/fchash.c @@ -0,0 +1,216 @@ +/* + * 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. + */ +#include "fcint.h" +#ifndef _WIN32 +#include +#endif + +#define FC_HASH_SIZE 227 + +typedef struct _FcHashBucket { + struct _FcHashBucket *next; + void *key; + void *value; +} FcHashBucket; + +struct _FcHashTable { + FcHashBucket *buckets[FC_HASH_SIZE]; + FcHashFunc hash_func; + FcCompareFunc compare_func; + FcCopyFunc key_copy_func; + FcCopyFunc value_copy_func; + FcDestroyFunc key_destroy_func; + FcDestroyFunc value_destroy_func; +}; + + +FcBool +FcHashStrCopy (const void *src, + void **dest) +{ + *dest = FcStrdup (src); + + return *dest != NULL; +} + +FcBool +FcHashUuidCopy (const void *src, + void **dest) +{ +#ifndef _WIN32 + *dest = malloc (sizeof (uuid_t)); + uuid_copy (*dest, src); +#endif + return FcTrue; +} + +void +FcHashUuidFree (void *data) +{ + free (data); +} + +FcHashTable * +FcHashTableCreate (FcHashFunc hash_func, + FcCompareFunc compare_func, + FcCopyFunc key_copy_func, + FcCopyFunc value_copy_func, + FcDestroyFunc key_destroy_func, + FcDestroyFunc value_destroy_func) +{ + FcHashTable *ret = malloc (sizeof (FcHashTable)); + + if (ret) + { + memset (ret->buckets, 0, sizeof (FcHashBucket *) * FC_HASH_SIZE); + ret->hash_func = hash_func; + ret->compare_func = compare_func; + ret->key_copy_func = key_copy_func; + ret->value_copy_func = value_copy_func; + ret->key_destroy_func = key_destroy_func; + ret->value_destroy_func = value_destroy_func; + } + return ret; +} + +void +FcHashTableDestroy (FcHashTable *table) +{ + int i; + + for (i = 0; i < FC_HASH_SIZE; i++) + { + FcHashBucket *bucket = table->buckets[i], *prev; + + while (bucket) + { + if (table->key_destroy_func) + table->key_destroy_func (bucket->key); + if (table->value_destroy_func) + table->value_destroy_func (bucket->value); + prev = bucket; + bucket = bucket->next; + free (prev); + } + table->buckets[i] = NULL; + } + free (table); +} + +FcBool +FcHashTableFind (FcHashTable *table, + const void *key, + void **value) +{ + FcHashBucket *bucket; + FcChar32 hash = table->hash_func (key); + + for (bucket = table->buckets[hash % FC_HASH_SIZE]; bucket; bucket = bucket->next) + { + if (!table->compare_func(bucket->key, key)) + { + if (table->value_copy_func) + { + if (!table->value_copy_func (bucket->value, value)) + return FcFalse; + } + else + *value = bucket->value; + return FcTrue; + } + } + return FcFalse; +} + +static FcBool +FcHashTableAddInternal (FcHashTable *table, + void *key, + void *value, + FcBool replace) +{ + FcHashBucket **prev, *bucket, *b; + FcChar32 hash = table->hash_func (key); + FcBool ret = FcFalse; + + bucket = (FcHashBucket *) malloc (sizeof (FcHashBucket)); + if (!bucket) + return FcFalse; + memset (bucket, 0, sizeof (FcHashBucket)); + if (table->key_copy_func) + ret |= !table->key_copy_func (key, &bucket->key); + else + bucket->key = key; + if (table->value_copy_func) + ret |= !table->value_copy_func (value, &bucket->value); + else + bucket->value = value; + if (ret) + { + destroy: + if (bucket->key && table->key_destroy_func) + table->key_destroy_func (bucket->key); + if (bucket->value && table->value_destroy_func) + table->value_destroy_func (bucket->value); + free (bucket); + + return !ret; + } + retry: + for (prev = &table->buckets[hash % FC_HASH_SIZE]; + (b = fc_atomic_ptr_get (prev)); prev = &(b->next)) + { + if (!table->compare_func (b->key, key)) + { + if (replace) + { + bucket->next = b->next; + if (!fc_atomic_ptr_cmpexch (prev, b, bucket)) + goto retry; + bucket = b; + } + else + ret = FcTrue; + goto destroy; + } + } + bucket->next = NULL; + if (!fc_atomic_ptr_cmpexch (prev, b, bucket)) + goto retry; + + return FcTrue; +} + +FcBool +FcHashTableAdd (FcHashTable *table, + void *key, + void *value) +{ + return FcHashTableAddInternal (table, key, value, FcFalse); +} + +FcBool +FcHashTableReplace (FcHashTable *table, + void *key, + void *value) +{ + return FcHashTableAddInternal (table, key, value, FcTrue); +} diff --git a/src/fcinit.c b/src/fcinit.c index 5e7c2f1..5831a19 100644 --- a/src/fcinit.c +++ b/src/fcinit.c @@ -39,15 +39,23 @@ static FcConfig * FcInitFallbackConfig (const FcChar8 *sysroot) { FcConfig *config; + const FcChar8 *fallback = (const FcChar8 *) "" \ + "" \ + " " FC_DEFAULT_FONTS "" \ + " fonts" \ + " " FC_CACHEDIR "" \ + " fontconfig" \ + " fontconfig/conf.d" \ + " fontconfig/fonts.conf" \ + ""; config = FcConfigCreate (); if (!config) goto bail0; FcConfigSetSysRoot (config, sysroot); - if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS)) - goto bail1; - if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR)) + if (!FcConfigParseAndLoadFromMemory (config, fallback, FcFalse)) goto bail1; + return config; bail1: @@ -86,6 +94,7 @@ FcInitLoadOwnConfig (FcConfig *config) return fallback; } + (void) FcConfigParseOnly (config, (const FcChar8 *)FC_TEMPLATEDIR, FcFalse); if (config->cacheDirs && config->cacheDirs->num == 0) { diff --git a/src/fcint.h b/src/fcint.h index ac911ad..5de311f 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -70,6 +70,12 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA; # define FC_DIR_SEPARATOR_S "/" #endif +#ifdef PATH_MAX +#define FC_PATH_MAX PATH_MAX +#else +#define FC_PATH_MAX 128 +#endif + #if __GNUC__ >= 4 #define FC_UNUSED __attribute__((unused)) #else @@ -95,7 +101,6 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA; #define FC_MIN(a,b) ((a) < (b) ? (a) : (b)) #define FC_MAX(a,b) ((a) > (b) ? (a) : (b)) -#define FC_ABS(a) ((a) < 0 ? -(a) : (a)) /* slim_internal.h */ #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun) @@ -108,13 +113,18 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA; #define FcPrivate #endif -FC_ASSERT_STATIC (sizeof (FcRef) == sizeof (int)); +/* NLS */ +#ifdef ENABLE_NLS +#include +#define _(x) (dgettext(GETTEXT_PACKAGE, x)) +#else +#define dgettext(d, s) (s) +#define _(x) (x) +#endif + +#define N_(x) x -typedef enum _FcValueBinding { - FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame, - /* to make sure sizeof (FcValueBinding) == 4 even with -fshort-enums */ - FcValueBindingEnd = INT_MAX -} FcValueBinding; +FC_ASSERT_STATIC (sizeof (FcRef) == sizeof (int)); #define FcStrdup(s) ((FcChar8 *) strdup ((const char *) (s))) #define FcFree(s) (free ((FcChar8 *) (s))) @@ -304,6 +314,16 @@ typedef struct _FcEdit { FcValueBinding binding; } FcEdit; +typedef void (* FcDestroyFunc) (void *data); + +typedef struct _FcPtrList FcPtrList; +/* need to sync with FcConfigFileInfoIter at fontconfig.h */ +typedef struct _FcPtrListIter { + void *dummy1; + void *dummy2; + void *dummy3; +} FcPtrListIter; + typedef enum _FcRuleType { FcRuleUnknown, FcRuleTest, FcRuleEdit } FcRuleType; @@ -317,10 +337,14 @@ typedef struct _FcRule { } u; } FcRule; -typedef struct _FcSubst { - struct _FcSubst *next; - FcRule *rule; -} FcSubst; +typedef struct _FcRuleSet { + FcRef ref; + FcChar8 *name; + FcChar8 *description; + FcChar8 *domain; + FcBool enabled; + FcPtrList *subst[FcMatchKindEnd]; +} FcRuleSet; typedef struct _FcCharLeaf { FcChar32 map[256/32]; @@ -368,6 +392,13 @@ typedef struct _FcStrBuf { FcChar8 buf_static[16 * sizeof (void *)]; } FcStrBuf; +typedef struct _FcHashTable FcHashTable; + +typedef FcChar32 (* FcHashFunc) (const void *data); +typedef int (* FcCompareFunc) (const void *v1, const void *v2); +typedef FcBool (* FcCopyFunc) (const void *src, void **dest); + + struct _FcCache { unsigned int magic; /* FC_CACHE_MAGIC_MMAP or FC_CACHE_ALLOC */ int version; /* FC_CACHE_VERSION_NUMBER */ @@ -471,12 +502,6 @@ struct _FcAtomic { FcChar8 *tmp; /* tmpfile name (used for locking) */ }; -struct _FcBlanks { - int nblank; - int sblank; - FcChar32 *blanks; -}; - struct _FcConfig { /* * File names loaded from the configuration -- saved here as the @@ -485,11 +510,6 @@ struct _FcConfig { */ FcStrSet *configDirs; /* directories to scan for fonts */ /* - * Set of allowed blank chars -- used to - * trim fonts of bogus glyphs - */ - FcBlanks *blanks; - /* * List of directories containing fonts, * built by recursively scanning the set * of configured directories @@ -508,10 +528,12 @@ struct _FcConfig { * Substitution instructions for patterns and fonts; * maxObjects is used to allocate appropriate intermediate storage * while performing a whole set of substitutions + * + * 0.. substitutions for patterns + * 1.. substitutions for fonts + * 2.. substitutions for scanned fonts */ - FcSubst *substPattern; /* substitutions for patterns */ - FcSubst *substFont; /* substitutions for fonts */ - FcSubst *substScan; /* substitutions for scanned fonts */ + FcPtrList *subst[FcMatchKindEnd]; int maxObjects; /* maximum number of tests in all substs */ /* * List of patterns used to control font file selection @@ -541,6 +563,10 @@ struct _FcConfig { FcExprPage *expr_pool; /* pool of FcExpr's */ FcChar8 *sysRoot; /* override the system root directory */ + FcStrSet *availConfigFiles; /* config files available */ + FcPtrList *rulesetList; /* List of rulesets being installed */ + FcHashTable *uuid_table; /* UUID table for cachedirs */ + FcHashTable *alias_table; /* alias table for cachedirs */ }; typedef struct _FcFileTime { @@ -568,8 +594,6 @@ struct _FcValuePromotionBuffer { } u; }; -/* fcblanks.c */ - /* fccache.c */ FcPrivate FcCache * @@ -635,10 +659,6 @@ FcConfigAddFontDir (FcConfig *config, const FcChar8 *d); FcPrivate FcBool -FcConfigAddDir (FcConfig *config, - const FcChar8 *d); - -FcPrivate FcBool FcConfigAddCacheDir (FcConfig *config, const FcChar8 *d); @@ -690,6 +710,29 @@ FcPrivate FcBool FcConfigAddCache (FcConfig *config, FcCache *cache, FcSetName set, FcStrSet *dirSet); +FcPrivate FcRuleSet * +FcRuleSetCreate (const FcChar8 *name); + +FcPrivate void +FcRuleSetDestroy (FcRuleSet *rs); + +FcPrivate void +FcRuleSetReference (FcRuleSet *rs); + +FcPrivate void +FcRuleSetEnable (FcRuleSet *rs, + FcBool flag); + +FcPrivate void +FcRuleSetAddDescription (FcRuleSet *rs, + const FcChar8 *domain, + const FcChar8 *description); + +FcPrivate int +FcRuleSetAdd (FcRuleSet *rs, + FcRule *rule, + FcMatchKind kind); + /* fcserialize.c */ FcPrivate intptr_t FcAlignSize (intptr_t size); @@ -775,6 +818,11 @@ FcRandom (void); FcPrivate FcBool FcMakeDirectory (const FcChar8 *dir); +FcPrivate ssize_t +FcReadLink (const FcChar8 *pathname, + FcChar8 *buf, + size_t bufsiz); + /* fcdbg.c */ FcPrivate void @@ -805,7 +853,7 @@ FcPrivate void FcEditPrint (const FcEdit *edit); FcPrivate void -FcSubstPrint (const FcSubst *subst); +FcRulePrint (const FcRule *rule); FcPrivate void FcCharSetPrint (const FcCharSet *c); @@ -841,14 +889,12 @@ FcFileIsFile (const FcChar8 *file); FcPrivate FcBool FcFileScanConfig (FcFontSet *set, FcStrSet *dirs, - FcBlanks *blanks, const FcChar8 *file, FcConfig *config); FcPrivate FcBool FcDirScanConfig (FcFontSet *set, FcStrSet *dirs, - FcBlanks *blanks, const FcChar8 *dir, FcBool force, FcConfig *config); @@ -868,6 +914,42 @@ FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s); FcPrivate FcFontSet * FcFontSetDeserialize (const FcFontSet *set); +/* fcplist.c */ +FcPrivate FcPtrList * +FcPtrListCreate (FcDestroyFunc func); + +FcPrivate void +FcPtrListDestroy (FcPtrList *list); + +FcPrivate void +FcPtrListIterInit (const FcPtrList *list, + FcPtrListIter *iter); + +FcPrivate void +FcPtrListIterInitAtLast (FcPtrList *list, + FcPtrListIter *iter); + +FcPrivate FcBool +FcPtrListIterNext (const FcPtrList *list, + FcPtrListIter *iter); + +FcPrivate FcBool +FcPtrListIterIsValid (const FcPtrList *list, + const FcPtrListIter *iter); + +FcPrivate void * +FcPtrListIterGetValue (const FcPtrList *list, + const FcPtrListIter *iter); + +FcPrivate FcBool +FcPtrListIterAdd (FcPtrList *list, + FcPtrListIter *iter, + void *data); + +FcPrivate FcBool +FcPtrListIterRemove (FcPtrList *list, + FcPtrListIter *iter); + /* fcinit.c */ FcPrivate FcConfig * FcInitLoadOwnConfig (FcConfig *config); @@ -908,6 +990,15 @@ FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls); FcPrivate FcChar8 * FcNameUnparseEscaped (FcPattern *pat, FcBool escape); +FcPrivate FcBool +FcConfigParseOnly (FcConfig *config, + const FcChar8 *name, + FcBool complain); + +FcPrivate FcChar8 * +FcConfigRealFilename (FcConfig *config, + const FcChar8 *url); + /* fclist.c */ FcPrivate FcBool @@ -994,6 +1085,9 @@ FcPrivate FcBool FcPatternObjectAddWeak (FcPattern *p, FcObject object, FcValue value, FcBool append); FcPrivate FcResult +FcPatternObjectGetWithBinding (const FcPattern *p, FcObject object, int id, FcValue *v, FcValueBinding *b); + +FcPrivate FcResult FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v); FcPrivate FcBool @@ -1209,4 +1303,42 @@ FcObjectLookupOtherTypeById (FcObject id); FcPrivate const FcObjectType * FcObjectLookupOtherTypeByName (const char *str); +/* fchash.c */ +FcPrivate FcBool +FcHashStrCopy (const void *src, + void **dest); + +FcPrivate FcBool +FcHashUuidCopy (const void *src, + void **dest); + +FcPrivate void +FcHashUuidFree (void *data); + +FcPrivate FcHashTable * +FcHashTableCreate (FcHashFunc hash_func, + FcCompareFunc compare_func, + FcCopyFunc key_copy_func, + FcCopyFunc value_copy_func, + FcDestroyFunc key_destroy_func, + FcDestroyFunc value_destroy_func); + +FcPrivate void +FcHashTableDestroy (FcHashTable *table); + +FcPrivate FcBool +FcHashTableFind (FcHashTable *table, + const void *key, + void **value); + +FcPrivate FcBool +FcHashTableAdd (FcHashTable *table, + void *key, + void *value); + +FcPrivate FcBool +FcHashTableReplace (FcHashTable *table, + void *key, + void *value); + #endif /* _FC_INT_H_ */ diff --git a/src/fclang.c b/src/fclang.c index b1fd1bc..eadf34b 100644 --- a/src/fclang.c +++ b/src/fclang.c @@ -28,7 +28,7 @@ /* Objects MT-safe for readonly access. */ typedef struct { - const FcChar8 lang[8]; + const FcChar8 lang[16]; const FcCharSet charset; } FcLangCharSet; @@ -188,7 +188,12 @@ FcLangNormalize (const FcChar8 *lang) if (!lang || !*lang) return NULL; + /* might be called without initialization */ + FcInitDebug (); + if (FcStrCmpIgnoreCase (lang, (const FcChar8 *)"C") == 0 || + FcStrCmpIgnoreCase (lang, (const FcChar8 *)"C.UTF-8") == 0 || + FcStrCmpIgnoreCase (lang, (const FcChar8 *)"C.utf8") == 0 || FcStrCmpIgnoreCase (lang, (const FcChar8 *)"POSIX") == 0) { result = FcStrCopy ((const FcChar8 *)"en"); @@ -257,7 +262,8 @@ FcLangNormalize (const FcChar8 *lang) lang); goto bail0; } - if (territory && (tlen < 2 || tlen > 3)) + if (territory && (tlen < 2 || tlen > 3) && + !(territory[0] == 'z' && tlen < 5)) { fprintf (stderr, "Fontconfig warning: ignoring %s: not a valid region tag\n", lang); @@ -349,6 +355,13 @@ FcLangCompare (const FcChar8 *s1, const FcChar8 *s2) { FcChar8 c1, c2; FcLangResult result = FcLangDifferentLang; + const FcChar8 *s1_orig = s1; + FcBool is_und; + + is_und = FcToLower (s1[0]) == 'u' && + FcToLower (s1[1]) == 'n' && + FcToLower (s1[2]) == 'd' && + FcLangEnd (s1[3]); for (;;) { @@ -359,14 +372,24 @@ FcLangCompare (const FcChar8 *s1, const FcChar8 *s2) c2 = FcToLower (c2); if (c1 != c2) { - if (FcLangEnd (c1) && FcLangEnd (c2)) + if (!is_und && FcLangEnd (c1) && FcLangEnd (c2)) result = FcLangDifferentTerritory; return result; } else if (!c1) - return FcLangEqual; + { + return is_und ? result : FcLangEqual; + } else if (c1 == '-') - result = FcLangDifferentTerritory; + { + if (!is_und) + result = FcLangDifferentTerritory; + } + + /* If we parsed past "und-", then do not consider it undefined anymore, + * as there's *something* specified. */ + if (is_und && s1 - s1_orig == 4) + is_und = FcFalse; } } @@ -462,6 +485,9 @@ FcLangSetCreate (void) void FcLangSetDestroy (FcLangSet *ls) { + if (!ls) + return; + if (ls->extra) FcStrSetDestroy (ls->extra); free (ls); @@ -472,6 +498,9 @@ FcLangSetCopy (const FcLangSet *ls) { FcLangSet *new; + if (!ls) + return NULL; + new = FcLangSetCreate (); if (!new) goto bail0; @@ -505,6 +534,15 @@ bail0: return 0; } +/* When the language isn't found, the return value r is such that: + * 1) r < 0 + * 2) -r -1 is the index of the first language in fcLangCharSets that comes + * after the 'lang' argument in lexicographic order. + * + * The -1 is necessary to avoid problems with language id 0 (otherwise, we + * wouldn't be able to distinguish between “language found, id is 0” and + * “language not found, sorts right before the language with id 0”). + */ static int FcLangSetIndex (const FcChar8 *lang) { @@ -529,7 +567,7 @@ FcLangSetIndex (const FcChar8 *lang) high = fcLangCharSetRanges[firstChar - 'a'].end; /* no matches */ if (low > high) - return -low; /* next entry after where it would be */ + return -(low+1); /* one past next entry after where it would be */ } while (low <= high) @@ -671,6 +709,7 @@ FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb) { int i, j, count; FcLangResult best, r; + FcChar32 aInCountrySet, bInCountrySet; count = FC_MIN (lsa->map_size, lsb->map_size); count = FC_MIN (NUM_LANG_SET_MAP, count); @@ -679,13 +718,22 @@ FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb) return FcLangEqual; best = FcLangDifferentLang; for (j = 0; j < NUM_COUNTRY_SET; j++) + { + aInCountrySet = 0; + bInCountrySet = 0; + for (i = 0; i < count; i++) - if ((lsa->map[i] & fcLangCountrySets[j][i]) && - (lsb->map[i] & fcLangCountrySets[j][i])) + { + aInCountrySet |= lsa->map[i] & fcLangCountrySets[j][i]; + bInCountrySet |= lsb->map[i] & fcLangCountrySets[j][i]; + + if (aInCountrySet && bInCountrySet) { best = FcLangDifferentTerritory; break; } + } + } if (lsa->extra) { r = FcLangSetCompareStrSet (lsb, lsa->extra); @@ -723,7 +771,7 @@ FcLangSetPromote (const FcChar8 *lang, FcValuePromotionBuffer *vbuf) if (lang) { id = FcLangSetIndex (lang); - if (id > 0) + if (id >= 0) { FcLangSetBitSet (&buf->ls, id); } diff --git a/src/fclist.c b/src/fclist.c index d7e8fc0..5f92a72 100644 --- a/src/fclist.c +++ b/src/fclist.c @@ -448,6 +448,41 @@ FcListAppend (FcListHashTable *table, e = FcPatternObjectFindElt (font, FcObjectFromName (os->objects[o])); if (e) { + if (FcRefIsConst (&font->ref) && !strcmp (os->objects[o], FC_FILE)) + { + FcChar8 *dir, *alias; + FcConfig *config = FcConfigGetCurrent (); /* FIXME: this may need to be exported as API? */ + + for (v = FcPatternEltValues (e); v->value.type != FcTypeString; v = FcValueListNext (v)); + if (!v) + goto bail2; + dir = FcStrDirname (FcValueString (&v->value)); + if (FcHashTableFind (config->alias_table, dir, (void **) &alias)) + { + FcChar8 *base = FcStrBasename (FcValueString (&v->value)); + FcChar8 *s = FcStrBuildFilename (alias, base, NULL); + FcValue vv; + + FcStrFree (alias); + FcStrFree (base); + vv.type = FcTypeString; + vv.u.s = s; + if (!FcPatternAdd (bucket->pattern, + os->objects[o], + FcValueCanonicalize (&vv), + FcTrue)) + { + FcStrFree (s); + FcStrFree (dir); + goto bail2; + } + FcStrFree (s); + FcStrFree (dir); + goto bail3; + } + else + FcStrFree (dir); + } for (v = FcPatternEltValues(e), idx = 0; v; v = FcValueListNext(v), ++idx) { @@ -456,6 +491,7 @@ FcListAppend (FcListHashTable *table, FcValueCanonicalize(&v->value), defidx != idx)) goto bail2; } + bail3:; } } *prev = bucket; diff --git a/src/fcmatch.c b/src/fcmatch.c index 40efbd3..62f8e58 100644 --- a/src/fcmatch.c +++ b/src/fcmatch.c @@ -25,7 +25,7 @@ #include "fcint.h" static double -FcCompareNumber (FcValue *value1, FcValue *value2) +FcCompareNumber (const FcValue *value1, const FcValue *value2, FcValue *bestValue) { double v1, v2, v; @@ -52,23 +52,27 @@ FcCompareNumber (FcValue *value1, FcValue *value2) v = v2 - v1; if (v < 0) v = -v; + *bestValue = FcValueCanonicalize (value2); return v; } static double -FcCompareString (FcValue *v1, FcValue *v2) +FcCompareString (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { + *bestValue = FcValueCanonicalize (v2); return (double) FcStrCmpIgnoreCase (FcValueString(v1), FcValueString(v2)) != 0; } static double -FcCompareFamily (FcValue *v1, FcValue *v2) +FcCompareFamily (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { /* rely on the guarantee in FcPatternObjectAddWithBinding that * families are always FcTypeString. */ const FcChar8* v1_string = FcValueString(v1); const FcChar8* v2_string = FcValueString(v2); + *bestValue = FcValueCanonicalize (v2); + if (FcToLower(*v1_string) != FcToLower(*v2_string) && *v1_string != ' ' && *v2_string != ' ') return 1.0; @@ -77,13 +81,15 @@ FcCompareFamily (FcValue *v1, FcValue *v2) } static double -FcComparePostScript (FcValue *v1, FcValue *v2) +FcComparePostScript (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { const FcChar8 *v1_string = FcValueString (v1); const FcChar8 *v2_string = FcValueString (v2); int n; size_t len; + *bestValue = FcValueCanonicalize (v2); + if (FcToLower (*v1_string) != FcToLower (*v2_string) && *v1_string != ' ' && *v2_string != ' ') return 1.0; @@ -95,7 +101,7 @@ FcComparePostScript (FcValue *v1, FcValue *v2) } static double -FcCompareLang (FcValue *v1, FcValue *v2) +FcCompareLang (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { FcLangResult result; FcValue value1 = FcValueCanonicalize(v1), value2 = FcValueCanonicalize(v2); @@ -130,6 +136,7 @@ FcCompareLang (FcValue *v1, FcValue *v2) default: return -1.0; } + *bestValue = FcValueCanonicalize (v2); switch (result) { case FcLangEqual: return 0; @@ -142,99 +149,133 @@ FcCompareLang (FcValue *v1, FcValue *v2) } static double -FcCompareBool (FcValue *v1, FcValue *v2) +FcCompareBool (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { if (v2->type != FcTypeBool || v1->type != FcTypeBool) return -1.0; - return (double) v2->u.b != v1->u.b; + + if (v2->u.b != FcDontCare) + *bestValue = FcValueCanonicalize (v2); + else + *bestValue = FcValueCanonicalize (v1); + + return (double) ((v2->u.b ^ v1->u.b) == 1); } static double -FcCompareCharSet (FcValue *v1, FcValue *v2) +FcCompareCharSet (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { + *bestValue = FcValueCanonicalize (v2); /* TODO Improve. */ return (double) FcCharSetSubtractCount (FcValueCharSet(v1), FcValueCharSet(v2)); } static double -FcCompareSize (FcValue *value1, FcValue *value2) +FcCompareRange (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { - double v1, v2, v; + FcValue value1 = FcValueCanonicalize (v1); + FcValue value2 = FcValueCanonicalize (v2); + double b1, e1, b2, e2, d; - switch ((int) value1->type) { + switch ((int) value1.type) { case FcTypeInteger: - v1 = value1->u.i; + b1 = e1 = value1.u.i; break; case FcTypeDouble: - v1 = value1->u.d; + b1 = e1 = value1.u.d; + break; + case FcTypeRange: + b1 = value1.u.r->begin; + e1 = value1.u.r->end; break; default: return -1; } - switch ((int) value2->type) { + switch ((int) value2.type) { case FcTypeInteger: - v2 = value2->u.i; + b2 = e2 = value2.u.i; break; case FcTypeDouble: - v2 = value2->u.d; + b2 = e2 = value2.u.d; + break; + case FcTypeRange: + b2 = value2.u.r->begin; + e2 = value2.u.r->end; break; default: return -1; } - if (v2 == 0) - return 0; - v = v2 - v1; - if (v < 0) - v = -v; - return v; + + if (e1 < b2) + d = b2; + else if (e2 < b1) + d = e2; + else + d = (FC_MAX (b1, b2) + FC_MIN (e1, e2)) * .5; + + bestValue->type = FcTypeDouble; + bestValue->u.d = d; + + /* If the ranges overlap, it's a match, otherwise return closest distance. */ + if (e1 < b2 || e2 < b1) + return FC_MIN (fabs (b2 - e1), fabs (b1 - e2)); + else + return 0.0; } static double -FcCompareSizeRange (FcValue *v1, FcValue *v2) +FcCompareSize (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { FcValue value1 = FcValueCanonicalize (v1); FcValue value2 = FcValueCanonicalize (v2); - FcRange *r1 = NULL, *r2 = NULL; - double ret = -1.0; + double b1, e1, b2, e2; switch ((int) value1.type) { + case FcTypeInteger: + b1 = e1 = value1.u.i; + break; case FcTypeDouble: - r1 = FcRangeCreateDouble (value1.u.d, value1.u.d); + b1 = e1 = value1.u.d; break; case FcTypeRange: - r1 = FcRangeCopy (value1.u.r); + abort(); + b1 = value1.u.r->begin; + e1 = value1.u.r->end; break; default: - goto bail; + return -1; } switch ((int) value2.type) { + case FcTypeInteger: + b2 = e2 = value2.u.i; + break; case FcTypeDouble: - r2 = FcRangeCreateDouble (value2.u.d, value2.u.d); + b2 = e2 = value2.u.d; break; case FcTypeRange: - r2 = FcRangeCopy (value2.u.r); + b2 = value2.u.r->begin; + e2 = value2.u.r->end; break; default: - goto bail; + return -1; } - 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); + bestValue->type = FcTypeDouble; + bestValue->u.d = (b1 + e1) * .5; - return ret; + /* If the ranges overlap, it's a match, otherwise return closest distance. */ + if (e1 < b2 || e2 < b1) + return FC_MIN (fabs (b2 - e1), fabs (b1 - e2)); + if (b2 != e2 && b1 == e2) /* Semi-closed interval. */ + return 1e-15; + else + return 0.0; } static double -FcCompareFilename (FcValue *v1, FcValue *v2) +FcCompareFilename (const FcValue *v1, const FcValue *v2, FcValue *bestValue) { const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2); + *bestValue = FcValueCanonicalize (v2); if (FcStrCmp (s1, s2) == 0) return 0.0; else if (FcStrCmpIgnoreCase (s1, s2) == 0) @@ -255,13 +296,13 @@ FcCompareFilename (FcValue *v1, FcValue *v2) #define PRI_FcCompareFamily(n) PRI1(n) #define PRI_FcCompareString(n) PRI1(n) #define PRI_FcCompareNumber(n) PRI1(n) -#define PRI_FcCompareSize(n) PRI1(n) #define PRI_FcCompareBool(n) PRI1(n) #define PRI_FcCompareFilename(n) PRI1(n) #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_FcCompareRange(n) PRI1(n) +#define PRI_FcCompareSize(n) PRI1(n) #define FC_OBJECT(NAME, Type, Cmp) PRI_##Cmp(NAME) @@ -283,6 +324,7 @@ typedef enum _FcMatcherPriorityDummy { typedef enum _FcMatcherPriority { PRI1(FILE), PRI1(FONTFORMAT), + PRI1(VARIABLE), PRI1(SCALABLE), PRI1(COLOR), PRI1(FOUNDRY), @@ -312,7 +354,7 @@ typedef enum _FcMatcherPriority { typedef struct _FcMatcher { FcObject object; - double (*compare) (FcValue *value1, FcValue *value2); + double (*compare) (const FcValue *v1, const FcValue *v2, FcValue *bestValue); int strong, weak; } FcMatcher; @@ -382,7 +424,8 @@ FcCompareValueList (FcObject object, { for (v2 = v2orig, k = 0; v2; v2 = FcValueListNext(v2), k++) { - v = (match->compare) (&v1->value, &v2->value); + FcValue matchValue; + v = (match->compare) (&v1->value, &v2->value, &matchValue); if (v < 0) { *result = FcResultTypeMismatch; @@ -392,7 +435,7 @@ FcCompareValueList (FcObject object, if (v < best) { if (bestValue) - *bestValue = FcValueCanonicalize(&v2->value); + *bestValue = matchValue; best = v; pos = k; } @@ -488,10 +531,17 @@ FcFontRenderPrepare (FcConfig *config, FcPatternElt *fe, *pe; FcValue v; FcResult result; + FcBool variable = FcFalse; + FcStrBuf variations; assert (pat != NULL); assert (font != NULL); + FcPatternObjectGetBool (font, FC_VARIABLE_OBJECT, 0, &variable); + assert (variable != FcDontCare); + if (variable) + FcStrBufInit (&variations, NULL, 0); + new = FcPatternCreate (); if (!new) return NULL; @@ -596,12 +646,79 @@ FcFontRenderPrepare (FcConfig *config, return NULL; } FcPatternObjectAdd (new, fe->object, v, FcFalse); + + /* Set font-variations settings for standard axes in variable fonts. */ + if (variable && + FcPatternEltValues(fe)->value.type == FcTypeRange && + (fe->object == FC_WEIGHT_OBJECT || + fe->object == FC_WIDTH_OBJECT || + fe->object == FC_SIZE_OBJECT)) + { + double num; + FcChar8 temp[128]; + const char *tag = " "; + assert (v.type == FcTypeDouble); + num = v.u.d; + if (variations.len) + FcStrBufChar (&variations, ','); + switch (fe->object) + { + case FC_WEIGHT_OBJECT: + tag = "wght"; + num = FcWeightToOpenType (num); + break; + + case FC_WIDTH_OBJECT: + tag = "wdth"; + break; + + case FC_SIZE_OBJECT: + tag = "opsz"; + break; + } + sprintf ((char *) temp, "%4s=%g", tag, num); + FcStrBufString (&variations, temp); + } } else { + if (FcRefIsConst (&font->ref) && fe->object == FC_FILE_OBJECT) + { + FcValueListPtr l = FcPatternEltValues (fe); + FcChar8 *dir, *alias; + + while (l->value.type != FcTypeString) + l = FcValueListNext (l); + if (!l) + goto bail0; + dir = FcStrDirname (FcValueString (&l->value)); + if (!config) + config = FcConfigGetCurrent (); + if (config && FcHashTableFind (config->alias_table, dir, (void **) &alias)) + { + FcChar8 *base = FcStrBasename (FcValueString (&l->value)); + FcChar8 *s = FcStrBuildFilename (alias, base, NULL); + FcValue v; + + FcStrFree (alias); + FcStrFree (base); + v.type = FcTypeString; + v.u.s = s; + FcPatternObjectAddWithBinding (new, fe->object, + FcValueCanonicalize (&v), + l->binding, + FcTrue); + FcStrFree (s); + FcStrFree (dir); + goto bail0; + } + else + FcStrFree (dir); + } FcPatternObjectListAdd (new, fe->object, FcValueListDuplicate (FcPatternEltValues (fe)), FcTrue); + bail0:; } } for (i = 0; i < pat->num; i++) @@ -619,6 +736,20 @@ FcFontRenderPrepare (FcConfig *config, } } + if (variable && variations.len) + { + FcChar8 *vars = NULL; + if (FcPatternObjectGetString (new, FC_FONT_VARIATIONS_OBJECT, 0, &vars) == FcResultMatch) + { + FcStrBufChar (&variations, ','); + FcStrBufString (&variations, vars); + FcPatternObjectDel (new, FC_FONT_VARIATIONS_OBJECT); + } + + FcPatternObjectAddString (new, FC_FONT_VARIATIONS_OBJECT, FcStrBufDoneStatic (&variations)); + FcStrBufDestroy (&variations); + } + FcConfigSubstituteWithPat (config, new, pat, FcMatchFont); return new; } @@ -1017,7 +1148,8 @@ FcFontSetSort (FcConfig *config FC_UNUSED, FcPatternGet (p, FC_LANG, i, &patternLang) == FcResultMatch && FcPatternGet (nodeps[f]->pattern, FC_LANG, 0, &nodeLang) == FcResultMatch) { - double compare = FcCompareLang (&patternLang, &nodeLang); + FcValue matchValue; + double compare = FcCompareLang (&patternLang, &nodeLang, &matchValue); if (compare >= 0 && compare < 2) { if (FcDebug () & FC_DBG_MATCHV) diff --git a/src/fcname.c b/src/fcname.c index 8be36c7..79e413e 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -258,6 +258,11 @@ FcNameBool (const FcChar8 *v, FcBool *result) *result = FcFalse; return FcTrue; } + if (c0 == 'd' || c0 == 'x' || c0 == '2') + { + *result = FcDontCare; + return FcTrue; + } if (c0 == 'o') { c1 = v[1]; @@ -272,6 +277,11 @@ FcNameBool (const FcChar8 *v, FcBool *result) *result = FcFalse; return FcTrue; } + if (c1 == 'r') + { + *result = FcDontCare; + return FcTrue; + } } return FcFalse; } @@ -318,7 +328,7 @@ FcNameConvert (FcType type, FcChar8 *string) v.type = FcTypeVoid; break; case FcTypeRange: - if (sscanf ((char *) string, "[%lg %lg)", &b, &e) != 2) + if (sscanf ((char *) string, "[%lg %lg]", &b, &e) != 2) { v.u.d = strtod ((char *) string, &p); if (p != NULL && p[0] != 0) @@ -514,7 +524,10 @@ FcNameUnparseValue (FcStrBuf *buf, case FcTypeString: return FcNameUnparseString (buf, v.u.s, escape); case FcTypeBool: - return FcNameUnparseString (buf, v.u.b ? (FcChar8 *) "True" : (FcChar8 *) "False", 0); + return FcNameUnparseString (buf, + v.u.b == FcTrue ? (FcChar8 *) "True" : + v.u.b == FcFalse ? (FcChar8 *) "False" : + (FcChar8 *) "DontCare", 0); case FcTypeMatrix: sprintf ((char *) temp, "%g %g %g %g", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); @@ -526,7 +539,7 @@ FcNameUnparseValue (FcStrBuf *buf, case FcTypeFTFace: return FcTrue; case FcTypeRange: - sprintf ((char *) temp, "[%g %g)", v.u.r->begin, v.u.r->end); + sprintf ((char *) temp, "[%g %g]", v.u.r->begin, v.u.r->end); return FcNameUnparseString (buf, temp, 0); } return FcFalse; diff --git a/src/fcobjs.c b/src/fcobjs.c index 16ff31c..33bba8d 100644 --- a/src/fcobjs.c +++ b/src/fcobjs.c @@ -25,10 +25,10 @@ #include "fcint.h" static unsigned int -FcObjectTypeHash (register const char *str, register unsigned int len); +FcObjectTypeHash (register const char *str, register FC_GPERF_SIZE_T len); static const struct FcObjectTypeInfo * -FcObjectTypeLookup (register const char *str, register unsigned int len); +FcObjectTypeLookup (register const char *str, register FC_GPERF_SIZE_T len); #include "fcobjshash.h" diff --git a/src/fcobjs.h b/src/fcobjs.h index 1fc4f65..e3926cc 100644 --- a/src/fcobjs.h +++ b/src/fcobjs.h @@ -29,11 +29,11 @@ FC_OBJECT (STYLELANG, FcTypeString, NULL) FC_OBJECT (FULLNAME, FcTypeString, NULL) 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 (WEIGHT, FcTypeRange, FcCompareRange) +FC_OBJECT (WIDTH, FcTypeRange, FcCompareRange) +FC_OBJECT (SIZE, FcTypeRange, FcCompareSize) FC_OBJECT (ASPECT, FcTypeDouble, NULL) -FC_OBJECT (PIXEL_SIZE, FcTypeDouble, FcCompareSize) +FC_OBJECT (PIXEL_SIZE, FcTypeDouble, FcCompareNumber) FC_OBJECT (SPACING, FcTypeInteger, FcCompareNumber) FC_OBJECT (FOUNDRY, FcTypeString, FcCompareString) FC_OBJECT (ANTIALIAS, FcTypeBool, FcCompareBool) @@ -51,7 +51,7 @@ FC_OBJECT (DPI, FcTypeDouble, NULL) FC_OBJECT (RGBA, FcTypeInteger, NULL) FC_OBJECT (SCALE, FcTypeDouble, NULL) FC_OBJECT (MINSPACE, FcTypeBool, NULL) -FC_OBJECT (CHAR_WIDTH, FcTypeInteger, NULL) +FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL) FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL) FC_OBJECT (MATRIX, FcTypeMatrix, NULL) FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet) @@ -70,4 +70,6 @@ FC_OBJECT (HASH, FcTypeString, NULL) /* deprecated */ FC_OBJECT (POSTSCRIPT_NAME, FcTypeString, FcComparePostScript) FC_OBJECT (COLOR, FcTypeBool, FcCompareBool) FC_OBJECT (SYMBOL, FcTypeBool, FcCompareBool) +FC_OBJECT (FONT_VARIATIONS, FcTypeString, NULL) +FC_OBJECT (VARIABLE, FcTypeBool, FcCompareBool) /* ^-------------- Add new objects here. */ diff --git a/src/fcobjshash.gperf b/src/fcobjshash.gperf deleted file mode 100644 index 80a0237..0000000 --- a/src/fcobjshash.gperf +++ /dev/null @@ -1,65 +0,0 @@ -%{ -%} -%struct-type -%language=ANSI-C -%includes -%enum -%readonly-tables -%define slot-name name -%define hash-function-name FcObjectTypeHash -%define lookup-function-name FcObjectTypeLookup -%pic -%define string-pool-name FcObjectTypeNamePool -struct FcObjectTypeInfo { -int name; -int id; -}; -%% -"family",FC_FAMILY_OBJECT -"familylang",FC_FAMILYLANG_OBJECT -"style",FC_STYLE_OBJECT -"stylelang",FC_STYLELANG_OBJECT -"fullname",FC_FULLNAME_OBJECT -"fullnamelang",FC_FULLNAMELANG_OBJECT -"slant",FC_SLANT_OBJECT -"weight",FC_WEIGHT_OBJECT -"width",FC_WIDTH_OBJECT -"size",FC_SIZE_OBJECT -"aspect",FC_ASPECT_OBJECT -"pixelsize",FC_PIXEL_SIZE_OBJECT -"spacing",FC_SPACING_OBJECT -"foundry",FC_FOUNDRY_OBJECT -"antialias",FC_ANTIALIAS_OBJECT -"hintstyle",FC_HINT_STYLE_OBJECT -"hinting",FC_HINTING_OBJECT -"verticallayout",FC_VERTICAL_LAYOUT_OBJECT -"autohint",FC_AUTOHINT_OBJECT -"globaladvance",FC_GLOBAL_ADVANCE_OBJECT -"file",FC_FILE_OBJECT -"index",FC_INDEX_OBJECT -"rasterizer",FC_RASTERIZER_OBJECT -"outline",FC_OUTLINE_OBJECT -"scalable",FC_SCALABLE_OBJECT -"dpi",FC_DPI_OBJECT -"rgba",FC_RGBA_OBJECT -"scale",FC_SCALE_OBJECT -"minspace",FC_MINSPACE_OBJECT -"charwidth",FC_CHAR_WIDTH_OBJECT -"charheight",FC_CHAR_HEIGHT_OBJECT -"matrix",FC_MATRIX_OBJECT -"charset",FC_CHARSET_OBJECT -"lang",FC_LANG_OBJECT -"fontversion",FC_FONTVERSION_OBJECT -"capability",FC_CAPABILITY_OBJECT -"fontformat",FC_FONTFORMAT_OBJECT -"embolden",FC_EMBOLDEN_OBJECT -"embeddedbitmap",FC_EMBEDDED_BITMAP_OBJECT -"decorative",FC_DECORATIVE_OBJECT -"lcdfilter",FC_LCD_FILTER_OBJECT -"namelang",FC_NAMELANG_OBJECT -"fontfeatures",FC_FONT_FEATURES_OBJECT -"prgname",FC_PRGNAME_OBJECT -"hash",FC_HASH_OBJECT -"postscriptname",FC_POSTSCRIPT_NAME_OBJECT -"color",FC_COLOR_OBJECT -"symbol",FC_SYMBOL_OBJECT diff --git a/src/fcobjshash.h b/src/fcobjshash.h index 5a4d1ea..867a369 100644 --- a/src/fcobjshash.h +++ b/src/fcobjshash.h @@ -1,5 +1,5 @@ -/* ANSI-C code produced by gperf version 3.0.4 */ -/* Command-line: gperf -m 100 fcobjshash.gperf */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf --pic -m 100 fcobjshash.gperf */ /* Computed positions: -k'2-3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -26,7 +26,7 @@ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ -#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif #line 1 "fcobjshash.gperf" @@ -37,7 +37,7 @@ int name; int id; }; #include -/* maximum key range = 56, duplicates = 0 */ +/* maximum key range = 65, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -47,36 +47,36 @@ inline #endif #endif static unsigned int -FcObjectTypeHash (register const char *str, register unsigned int len) +FcObjectTypeHash (register const char *str, register size_t len) { static const unsigned char asso_values[] = { - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 21, 30, 3, - 36, 45, 60, 3, 15, 0, 60, 60, 0, 9, - 9, 0, 21, 60, 0, 0, 15, 0, 60, 60, - 0, 15, 24, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60 + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 9, 21, 18, + 33, 21, 69, 6, 36, 0, 69, 69, 0, 24, + 9, 0, 21, 69, 33, 15, 18, 0, 69, 69, + 0, 21, 6, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69 }; return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[1]]; } @@ -88,49 +88,51 @@ struct FcObjectTypeNamePool_t char FcObjectTypeNamePool_str7[sizeof("foundry")]; char FcObjectTypeNamePool_str8[sizeof("fullname")]; char FcObjectTypeNamePool_str9[sizeof("pixelsize")]; - char FcObjectTypeNamePool_str10[sizeof("prgname")]; + char FcObjectTypeNamePool_str10[sizeof("size")]; char FcObjectTypeNamePool_str12[sizeof("fullnamelang")]; char FcObjectTypeNamePool_str13[sizeof("globaladvance")]; - char FcObjectTypeNamePool_str14[sizeof("postscriptname")]; + char FcObjectTypeNamePool_str14[sizeof("slant")]; char FcObjectTypeNamePool_str16[sizeof("hinting")]; char FcObjectTypeNamePool_str17[sizeof("minspace")]; char FcObjectTypeNamePool_str18[sizeof("hintstyle")]; char FcObjectTypeNamePool_str19[sizeof("fontformat")]; char FcObjectTypeNamePool_str20[sizeof("fontversion")]; char FcObjectTypeNamePool_str21[sizeof("fontfeatures")]; - char FcObjectTypeNamePool_str22[sizeof("outline")]; - char FcObjectTypeNamePool_str23[sizeof("autohint")]; + char FcObjectTypeNamePool_str22[sizeof("lang")]; + char FcObjectTypeNamePool_str23[sizeof("fontvariations")]; char FcObjectTypeNamePool_str24[sizeof("dpi")]; - char FcObjectTypeNamePool_str25[sizeof("hash")]; - char FcObjectTypeNamePool_str26[sizeof("slant")]; - char FcObjectTypeNamePool_str27[sizeof("aspect")]; - char FcObjectTypeNamePool_str28[sizeof("size")]; - char FcObjectTypeNamePool_str29[sizeof("scale")]; - char FcObjectTypeNamePool_str30[sizeof("symbol")]; - char FcObjectTypeNamePool_str31[sizeof("rasterizer")]; - char FcObjectTypeNamePool_str32[sizeof("scalable")]; - char FcObjectTypeNamePool_str33[sizeof("antialias")]; - char FcObjectTypeNamePool_str34[sizeof("lang")]; - char FcObjectTypeNamePool_str35[sizeof("style")]; - char FcObjectTypeNamePool_str36[sizeof("family")]; - char FcObjectTypeNamePool_str37[sizeof("rgba")]; - char FcObjectTypeNamePool_str38[sizeof("namelang")]; - char FcObjectTypeNamePool_str39[sizeof("stylelang")]; - char FcObjectTypeNamePool_str40[sizeof("familylang")]; - char FcObjectTypeNamePool_str41[sizeof("width")]; - char FcObjectTypeNamePool_str42[sizeof("matrix")]; - char FcObjectTypeNamePool_str43[sizeof("charset")]; - char FcObjectTypeNamePool_str45[sizeof("charwidth")]; - char FcObjectTypeNamePool_str46[sizeof("charheight")]; - char FcObjectTypeNamePool_str47[sizeof("embolden")]; - char FcObjectTypeNamePool_str48[sizeof("lcdfilter")]; - char FcObjectTypeNamePool_str49[sizeof("spacing")]; - char FcObjectTypeNamePool_str50[sizeof("index")]; - char FcObjectTypeNamePool_str51[sizeof("weight")]; - char FcObjectTypeNamePool_str52[sizeof("capability")]; - char FcObjectTypeNamePool_str53[sizeof("embeddedbitmap")]; - char FcObjectTypeNamePool_str58[sizeof("decorative")]; - char FcObjectTypeNamePool_str59[sizeof("verticallayout")]; + char FcObjectTypeNamePool_str25[sizeof("outline")]; + char FcObjectTypeNamePool_str26[sizeof("autohint")]; + char FcObjectTypeNamePool_str27[sizeof("weight")]; + char FcObjectTypeNamePool_str28[sizeof("hash")]; + char FcObjectTypeNamePool_str29[sizeof("postscriptname")]; + char FcObjectTypeNamePool_str31[sizeof("rgba")]; + char FcObjectTypeNamePool_str32[sizeof("scale")]; + char FcObjectTypeNamePool_str33[sizeof("matrix")]; + char FcObjectTypeNamePool_str34[sizeof("rasterizer")]; + char FcObjectTypeNamePool_str35[sizeof("scalable")]; + char FcObjectTypeNamePool_str36[sizeof("antialias")]; + char FcObjectTypeNamePool_str37[sizeof("spacing")]; + char FcObjectTypeNamePool_str38[sizeof("width")]; + char FcObjectTypeNamePool_str39[sizeof("family")]; + char FcObjectTypeNamePool_str40[sizeof("capability")]; + char FcObjectTypeNamePool_str41[sizeof("namelang")]; + char FcObjectTypeNamePool_str42[sizeof("aspect")]; + char FcObjectTypeNamePool_str43[sizeof("familylang")]; + char FcObjectTypeNamePool_str44[sizeof("style")]; + char FcObjectTypeNamePool_str46[sizeof("prgname")]; + char FcObjectTypeNamePool_str47[sizeof("index")]; + char FcObjectTypeNamePool_str48[sizeof("stylelang")]; + char FcObjectTypeNamePool_str49[sizeof("decorative")]; + char FcObjectTypeNamePool_str50[sizeof("variable")]; + char FcObjectTypeNamePool_str51[sizeof("symbol")]; + char FcObjectTypeNamePool_str52[sizeof("charset")]; + char FcObjectTypeNamePool_str53[sizeof("embolden")]; + char FcObjectTypeNamePool_str54[sizeof("charwidth")]; + char FcObjectTypeNamePool_str55[sizeof("charheight")]; + char FcObjectTypeNamePool_str59[sizeof("embeddedbitmap")]; + char FcObjectTypeNamePool_str60[sizeof("lcdfilter")]; + char FcObjectTypeNamePool_str68[sizeof("verticallayout")]; }; static const struct FcObjectTypeNamePool_t FcObjectTypeNamePool_contents = { @@ -139,180 +141,182 @@ static const struct FcObjectTypeNamePool_t FcObjectTypeNamePool_contents = "foundry", "fullname", "pixelsize", - "prgname", + "size", "fullnamelang", "globaladvance", - "postscriptname", + "slant", "hinting", "minspace", "hintstyle", "fontformat", "fontversion", "fontfeatures", + "lang", + "fontvariations", + "dpi", "outline", "autohint", - "dpi", + "weight", "hash", - "slant", - "aspect", - "size", + "postscriptname", + "rgba", "scale", - "symbol", + "matrix", "rasterizer", "scalable", "antialias", - "lang", - "style", + "spacing", + "width", "family", - "rgba", + "capability", "namelang", - "stylelang", + "aspect", "familylang", - "width", - "matrix", + "style", + "prgname", + "index", + "stylelang", + "decorative", + "variable", + "symbol", "charset", + "embolden", "charwidth", "charheight", - "embolden", - "lcdfilter", - "spacing", - "index", - "weight", - "capability", "embeddedbitmap", - "decorative", + "lcdfilter", "verticallayout" }; #define FcObjectTypeNamePool ((const char *) &FcObjectTypeNamePool_contents) -#ifdef __GNUC__ -__inline -#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ -__attribute__ ((__gnu_inline__)) -#endif -#endif const struct FcObjectTypeInfo * -FcObjectTypeLookup (register const char *str, register unsigned int len) +FcObjectTypeLookup (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 48, + TOTAL_KEYWORDS = 50, MIN_WORD_LENGTH = 3, MAX_WORD_LENGTH = 14, MIN_HASH_VALUE = 4, - MAX_HASH_VALUE = 59 + MAX_HASH_VALUE = 68 }; static const struct FcObjectTypeInfo wordlist[] = { {-1}, {-1}, {-1}, {-1}, #line 38 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str4,FC_FILE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str4,FC_FILE_OBJECT}, #line 64 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str5,FC_COLOR_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str5,FC_COLOR_OBJECT}, {-1}, #line 31 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str7,FC_FOUNDRY_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str7,FC_FOUNDRY_OBJECT}, #line 22 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str8,FC_FULLNAME_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str8,FC_FULLNAME_OBJECT}, #line 29 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str9,FC_PIXEL_SIZE_OBJECT}, -#line 61 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str10,FC_PRGNAME_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str9,FC_PIXEL_SIZE_OBJECT}, +#line 27 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str10,FC_SIZE_OBJECT}, {-1}, #line 23 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str12,FC_FULLNAMELANG_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str12,FC_FULLNAMELANG_OBJECT}, #line 37 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str13,FC_GLOBAL_ADVANCE_OBJECT}, -#line 63 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str14,FC_POSTSCRIPT_NAME_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str13,FC_GLOBAL_ADVANCE_OBJECT}, +#line 24 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str14,FC_SLANT_OBJECT}, {-1}, #line 34 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str16,FC_HINTING_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str16,FC_HINTING_OBJECT}, #line 46 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str17,FC_MINSPACE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str17,FC_MINSPACE_OBJECT}, #line 33 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str18,FC_HINT_STYLE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str18,FC_HINT_STYLE_OBJECT}, #line 54 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str19,FC_FONTFORMAT_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str19,FC_FONTFORMAT_OBJECT}, #line 52 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str20,FC_FONTVERSION_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str20,FC_FONTVERSION_OBJECT}, #line 60 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str21,FC_FONT_FEATURES_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str21,FC_FONT_FEATURES_OBJECT}, +#line 51 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str22,FC_LANG_OBJECT}, +#line 66 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str23,FC_FONT_VARIATIONS_OBJECT}, +#line 43 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str24,FC_DPI_OBJECT}, #line 41 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str22,FC_OUTLINE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str25,FC_OUTLINE_OBJECT}, #line 36 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str23,FC_AUTOHINT_OBJECT}, -#line 43 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str24,FC_DPI_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str26,FC_AUTOHINT_OBJECT}, +#line 25 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str27,FC_WEIGHT_OBJECT}, #line 62 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str25,FC_HASH_OBJECT}, -#line 24 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str26,FC_SLANT_OBJECT}, -#line 28 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str27,FC_ASPECT_OBJECT}, -#line 27 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str28,FC_SIZE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str28,FC_HASH_OBJECT}, +#line 63 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str29,FC_POSTSCRIPT_NAME_OBJECT}, + {-1}, +#line 44 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str31,FC_RGBA_OBJECT}, #line 45 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str29,FC_SCALE_OBJECT}, -#line 65 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str30,FC_SYMBOL_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str32,FC_SCALE_OBJECT}, +#line 49 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str33,FC_MATRIX_OBJECT}, #line 40 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str31,FC_RASTERIZER_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str34,FC_RASTERIZER_OBJECT}, #line 42 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str32,FC_SCALABLE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str35,FC_SCALABLE_OBJECT}, #line 32 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str33,FC_ANTIALIAS_OBJECT}, -#line 51 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str34,FC_LANG_OBJECT}, -#line 20 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str35,FC_STYLE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str36,FC_ANTIALIAS_OBJECT}, +#line 30 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str37,FC_SPACING_OBJECT}, +#line 26 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str38,FC_WIDTH_OBJECT}, #line 18 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str36,FC_FAMILY_OBJECT}, -#line 44 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str37,FC_RGBA_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str39,FC_FAMILY_OBJECT}, +#line 53 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str40,FC_CAPABILITY_OBJECT}, #line 59 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str38,FC_NAMELANG_OBJECT}, -#line 21 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str39,FC_STYLELANG_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str41,FC_NAMELANG_OBJECT}, +#line 28 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str42,FC_ASPECT_OBJECT}, #line 19 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str40,FC_FAMILYLANG_OBJECT}, -#line 26 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str41,FC_WIDTH_OBJECT}, -#line 49 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str42,FC_MATRIX_OBJECT}, -#line 50 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_FAMILYLANG_OBJECT}, +#line 20 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str44,FC_STYLE_OBJECT}, {-1}, +#line 61 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_PRGNAME_OBJECT}, +#line 39 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str47,FC_INDEX_OBJECT}, +#line 21 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str48,FC_STYLELANG_OBJECT}, +#line 57 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str49,FC_DECORATIVE_OBJECT}, +#line 67 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str50,FC_VARIABLE_OBJECT}, +#line 65 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str51,FC_SYMBOL_OBJECT}, +#line 50 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str52,FC_CHARSET_OBJECT}, +#line 55 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str53,FC_EMBOLDEN_OBJECT}, #line 47 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str54,FC_CHARWIDTH_OBJECT}, #line 48 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT}, -#line 55 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str47,FC_EMBOLDEN_OBJECT}, -#line 58 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str48,FC_LCD_FILTER_OBJECT}, -#line 30 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str49,FC_SPACING_OBJECT}, -#line 39 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str50,FC_INDEX_OBJECT}, -#line 25 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str51,FC_WEIGHT_OBJECT}, -#line 53 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str52,FC_CAPABILITY_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str55,FC_CHAR_HEIGHT_OBJECT}, + {-1}, {-1}, {-1}, #line 56 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str53,FC_EMBEDDED_BITMAP_OBJECT}, - {-1}, {-1}, {-1}, {-1}, -#line 57 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str58,FC_DECORATIVE_OBJECT}, + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str59,FC_EMBEDDED_BITMAP_OBJECT}, +#line 58 "fcobjshash.gperf" + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str60,FC_LCD_FILTER_OBJECT}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 35 "fcobjshash.gperf" - {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str59,FC_VERTICAL_LAYOUT_OBJECT} + {(int)(size_t)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str68,FC_VERTICAL_LAYOUT_OBJECT} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - register int key = FcObjectTypeHash (str, len); + register unsigned int key = FcObjectTypeHash (str, len); - if (key <= MAX_HASH_VALUE && key >= 0) + if (key <= MAX_HASH_VALUE) { register int o = wordlist[key].name; if (o >= 0) diff --git a/src/fcpat.c b/src/fcpat.c index 3ef1ed2..e624aea 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -883,7 +883,7 @@ FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r) } FcResult -FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v) +FcPatternObjectGetWithBinding (const FcPattern *p, FcObject object, int id, FcValue *v, FcValueBinding *b) { FcPatternElt *e; FcValueListPtr l; @@ -898,6 +898,8 @@ FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v) if (!id) { *v = FcValueCanonicalize(&l->value); + if (b) + *b = l->binding; return FcResultMatch; } id--; @@ -906,9 +908,21 @@ FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v) } FcResult +FcPatternObjectGet (const FcPattern *p, FcObject object, int id, FcValue *v) +{ + return FcPatternObjectGetWithBinding (p, object, id, v, NULL); +} + +FcResult +FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b) +{ + return FcPatternObjectGetWithBinding (p, FcObjectFromName (object), id, v, b); +} + +FcResult FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v) { - return FcPatternObjectGet (p, FcObjectFromName (object), id, v); + return FcPatternObjectGetWithBinding (p, FcObjectFromName (object), id, v, NULL); } FcResult @@ -1007,12 +1021,12 @@ FcPatternGetMatrix(const FcPattern *p, const char *object, int id, FcMatrix **m) FcResult -FcPatternGetBool(const FcPattern *p, const char *object, int id, FcBool *b) +FcPatternObjectGetBool (const FcPattern *p, FcObject object, int id, FcBool *b) { FcValue v; FcResult r; - r = FcPatternGet (p, object, id, &v); + r = FcPatternObjectGet (p, object, id, &v); if (r != FcResultMatch) return r; if (v.type != FcTypeBool) @@ -1022,6 +1036,12 @@ FcPatternGetBool(const FcPattern *p, const char *object, int id, FcBool *b) } FcResult +FcPatternGetBool(const FcPattern *p, const char *object, int id, FcBool *b) +{ + return FcPatternObjectGetBool (p, FcObjectFromName (object), id, b); +} + +FcResult FcPatternGetCharSet(const FcPattern *p, const char *object, int id, FcCharSet **c) { FcValue v; @@ -1099,6 +1119,9 @@ FcPatternDuplicate (const FcPattern *orig) int i; FcValueListPtr l; + if (!orig) + return NULL; + new = FcPatternCreate (); if (!new) goto bail0; diff --git a/src/fcptrlist.c b/src/fcptrlist.c new file mode 100644 index 0000000..a0688dd --- /dev/null +++ b/src/fcptrlist.c @@ -0,0 +1,198 @@ +/* + * fontconfig/src/fcptrlist.c + * + * 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. + */ + +#include "fcint.h" + +typedef struct _FcPtrListEntry { + struct _FcPtrListEntry *next; + void *data; +} FcPtrListEntry; +struct _FcPtrList { + FcDestroyFunc destroy_func; + FcPtrListEntry *list; +}; +typedef struct _FcPtrListIterPrivate { + const FcPtrList *list; + FcPtrListEntry *entry; + FcPtrListEntry *prev; +} FcPtrListIterPrivate; + +FcPtrList * +FcPtrListCreate (FcDestroyFunc func) +{ + FcPtrList *ret = (FcPtrList *) malloc (sizeof (FcPtrList)); + + if (ret) + { + ret->destroy_func = func; + ret->list = NULL; + } + + return ret; +} + +void +FcPtrListDestroy (FcPtrList *list) +{ + FcPtrListIter iter; + + FcPtrListIterInit (list, &iter); + do + { + if (FcPtrListIterGetValue (list, &iter)) + list->destroy_func (FcPtrListIterGetValue (list, &iter)); + FcPtrListIterRemove (list, &iter); + } while (FcPtrListIterIsValid (list, &iter)); + + free (list); +} + +void +FcPtrListIterInit (const FcPtrList *list, + FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + + priv->list = list; + priv->entry = list->list; + priv->prev = NULL; +} + +void +FcPtrListIterInitAtLast (FcPtrList *list, + FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + FcPtrListEntry **e, **p; + + e = &list->list; + p = e; + for (; *e; p = e, e = &(*e)->next); + + priv->list = list; + priv->entry = *e; + priv->prev = *p; +} + +FcBool +FcPtrListIterNext (const FcPtrList *list, + FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + + if (list != priv->list) + return FcFalse; + priv->prev = priv->entry; + priv->entry = priv->entry->next; + + return priv->entry != NULL; +} + +FcBool +FcPtrListIterIsValid (const FcPtrList *list, + const FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + + return list == priv->list && priv->entry; +} + +void * +FcPtrListIterGetValue (const FcPtrList *list, + const FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + + if (list != priv->list || + !priv->entry) + return NULL; + + return priv->entry->data; +} + +FcBool +FcPtrListIterAdd (FcPtrList *list, + FcPtrListIter *iter, + void *data) +{ + FcPtrListEntry *e; + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + + if (list != priv->list) + return FcFalse; + + e = (FcPtrListEntry *) malloc (sizeof (FcPtrListEntry)); + e->data = data; + + if (priv->entry) + { + e->next = priv->entry->next; + priv->entry->next = e; + } + else + { + e->next = NULL; + if (priv->prev) + { + priv->prev->next = e; + priv->entry = priv->prev; + } + else + { + list->list = e; + priv->entry = e; + + return FcTrue; + } + } + + return FcPtrListIterNext (list, iter); +} + +FcBool +FcPtrListIterRemove (FcPtrList *list, + FcPtrListIter *iter) +{ + FcPtrListIterPrivate *priv = (FcPtrListIterPrivate *) iter; + FcPtrListEntry *e; + + if (list != priv->list) + return FcFalse; + if (!priv->entry) + return FcTrue; + + if (list->list == priv->entry) + list->list = list->list->next; + e = priv->entry; + if (priv->prev) + priv->prev->next = priv->entry->next; + priv->entry = priv->entry->next; + free (e); + + return FcTrue; +} + +#define __fcplist__ +#include "fcaliastail.h" +#undef __fcplist__ diff --git a/src/fcrange.c b/src/fcrange.c index f70226c..8689930 100644 --- a/src/fcrange.c +++ b/src/fcrange.c @@ -96,9 +96,6 @@ FcRangePromote (double v, FcValuePromotionBuffer *vbuf) FcBool FcRangeIsInRange (const FcRange *a, const FcRange *b) { - if (!a || !b) - return FcFalse; - return a->begin >= b->begin && a->end <= b->end; } @@ -107,20 +104,22 @@ FcRangeCompare (FcOp op, const FcRange *a, const FcRange *b) { switch ((int) op) { case FcOpEqual: + return a->begin == b->begin && a->end == b->end; case FcOpContains: case FcOpListing: return FcRangeIsInRange (a, b); case FcOpNotEqual: + return a->begin != b->begin || a->end != b->end; case FcOpNotContains: return !FcRangeIsInRange (a, b); case FcOpLess: - return a->begin < b->begin; + return a->end < b->begin; case FcOpLessEqual: - return a->begin <= b->begin; + return a->end <= b->begin; case FcOpMore: - return a->end > b->end; + return a->begin > b->end; case FcOpMoreEqual: - return a->end >= b->end; + return a->begin >= b->end; default: break; } diff --git a/src/fcstat.c b/src/fcstat.c index 1734fa4..f6e1aaa 100644 --- a/src/fcstat.c +++ b/src/fcstat.c @@ -278,8 +278,13 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum) { #endif struct stat statb; - char f[PATH_MAX + 1]; + char *f = malloc (len + 1 + dlen + 1); + if (!f) + { + ret = -1; + goto bail; + } memcpy (f, dir, len); f[len] = FC_DIR_SEPARATOR; memcpy (&f[len + 1], files[n]->d_name, dlen); @@ -287,11 +292,16 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum) if (lstat (f, &statb) < 0) { ret = -1; + free (f); goto bail; } if (S_ISDIR (statb.st_mode)) + { + free (f); goto bail; + } + free (f); dtype = statb.st_mode; #ifdef HAVE_STRUCT_DIRENT_D_TYPE } diff --git a/src/fcstdint.h b/src/fcstdint.h index ff8e647..8fac49a 100644 --- a/src/fcstdint.h +++ b/src/fcstdint.h @@ -1,8 +1,8 @@ #ifndef _FONTCONFIG_SRC_FCSTDINT_H #define _FONTCONFIG_SRC_FCSTDINT_H 1 #ifndef _GENERATED_STDINT_H -#define _GENERATED_STDINT_H "fontconfig 2.12.1" -/* generated using gnu compiler gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3) */ +#define _GENERATED_STDINT_H "fontconfig 2.13.0" +/* generated using gnu compiler gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2) */ #define _STDINT_HAVE_STDINT_H 1 #include #endif diff --git a/src/fcweight.c b/src/fcweight.c index 036a518..276b467 100644 --- a/src/fcweight.c +++ b/src/fcweight.c @@ -29,8 +29,8 @@ static const struct { { 0, FC_WEIGHT_THIN }, { 100, FC_WEIGHT_THIN }, { 200, FC_WEIGHT_EXTRALIGHT }, - { 350, FC_WEIGHT_DEMILIGHT }, { 300, FC_WEIGHT_LIGHT }, + { 350, FC_WEIGHT_DEMILIGHT }, { 380, FC_WEIGHT_BOOK }, { 400, FC_WEIGHT_REGULAR }, { 500, FC_WEIGHT_MEDIUM }, @@ -41,7 +41,7 @@ static const struct { {1000, FC_WEIGHT_EXTRABLACK }, }; -static int lerp(int x, int x1, int x2, int y1, int y2) +static double lerp(double x, int x1, int x2, int y1, int y2) { int dx = x2 - x1; int dy = y2 - y1; @@ -49,32 +49,14 @@ static int lerp(int x, int x1, int x2, int y1, int y2) return y1 + (dy*(x-x1) + dx/2) / dx; } -int -FcWeightFromOpenType (int ot_weight) +double +FcWeightFromOpenTypeDouble (double 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++) @@ -87,8 +69,8 @@ FcWeightFromOpenType (int ot_weight) return lerp (ot_weight, map[i-1].ot, map[i].ot, map[i-1].fc, map[i].fc); } -int -FcWeightToOpenType (int fc_weight) +double +FcWeightToOpenTypeDouble (double fc_weight) { int i; if (fc_weight < 0 || fc_weight > FC_WEIGHT_EXTRABLACK) @@ -104,6 +86,18 @@ FcWeightToOpenType (int fc_weight) return lerp (fc_weight, map[i-1].fc, map[i].fc, map[i-1].ot, map[i].ot); } +int +FcWeightFromOpenType (int ot_weight) +{ + return FcWeightFromOpenTypeDouble (ot_weight) + .5; +} + +int +FcWeightToOpenType (int fc_weight) +{ + return FcWeightToOpenTypeDouble (fc_weight) + .5; +} + #define __fcweight__ #include "fcaliastail.h" #undef __fcweight__ diff --git a/src/fcxml.c b/src/fcxml.c index 031a7da..7c8aaac 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -62,6 +62,11 @@ static FcChar8 *__fc_userconf = NULL; static void FcExprDestroy (FcExpr *e); +static FcBool +_FcConfigParse (FcConfig *config, + const FcChar8 *name, + FcBool complain, + FcBool load); void FcTestDestroy (FcTest *test) @@ -351,8 +356,8 @@ typedef enum _FcElement { FcElementConfig, FcElementMatch, FcElementAlias, + FcElementDescription, - FcElementBlank, FcElementRescan, FcElementPrefer, @@ -414,8 +419,8 @@ static const struct { { "config", FcElementConfig }, { "match", FcElementMatch }, { "alias", FcElementAlias }, + { "description", FcElementDescription }, - { "blank", FcElementBlank }, { "rescan", FcElementRescan }, { "prefer", FcElementPrefer }, @@ -465,6 +470,11 @@ static const struct { }; #define NUM_ELEMENT_MAPS (int) (sizeof fcElementMap / sizeof fcElementMap[0]) +static const char *fcElementIgnoreName[16] = { + "its:", + NULL +}; + static FcElement FcElementMap (const XML_Char *name) { @@ -473,6 +483,9 @@ FcElementMap (const XML_Char *name) for (i = 0; i < NUM_ELEMENT_MAPS; i++) if (!strcmp ((char *) name, fcElementMap[i].name)) return fcElementMap[i].element; + for (i = 0; fcElementIgnoreName[i] != NULL; i++) + if (!strncmp ((char *) name, fcElementIgnoreName[i], strlen (fcElementIgnoreName[i]))) + return FcElementNone; return FcElementUnknown; } @@ -543,11 +556,13 @@ typedef struct _FcConfigParse { FcBool error; const FcChar8 *name; FcConfig *config; + FcRuleSet *ruleset; XML_Parser parser; unsigned int pstack_static_used; FcPStack pstack_static[8]; unsigned int vstack_static_used; FcVStack vstack_static[64]; + FcBool scanOnly; } FcConfigParse; typedef enum _FcConfigSeverity { @@ -1165,7 +1180,9 @@ FcPStackPop (FcConfigParse *parse) return FcFalse; } - if (parse->pstack->attr) + /* Don't check the attributes for FcElementNone */ + if (parse->pstack->element != FcElementNone && + parse->pstack->attr) { /* Warn about unused attrs. */ FcChar8 **attrs = parse->pstack->attr; @@ -1195,7 +1212,11 @@ FcPStackPop (FcConfigParse *parse) } static FcBool -FcConfigParseInit (FcConfigParse *parse, const FcChar8 *name, FcConfig *config, XML_Parser parser) +FcConfigParseInit (FcConfigParse *parse, + const FcChar8 *name, + FcConfig *config, + XML_Parser parser, + FcBool enabled) { parse->pstack = 0; parse->pstack_static_used = 0; @@ -1204,7 +1225,11 @@ FcConfigParseInit (FcConfigParse *parse, const FcChar8 *name, FcConfig *config, parse->error = FcFalse; parse->name = name; parse->config = config; + parse->ruleset = FcRuleSetCreate (name); parse->parser = parser; + parse->scanOnly = !enabled; + FcRuleSetEnable (parse->ruleset, enabled); + return FcTrue; } @@ -1213,6 +1238,8 @@ FcConfigCleanup (FcConfigParse *parse) { while (parse->pstack) FcPStackPop (parse); + FcRuleSetDestroy (parse->ruleset); + parse->ruleset = NULL; } static const FcChar8 * @@ -1257,55 +1284,6 @@ FcStartElement(void *userData, const XML_Char *name, const XML_Char **attr) } 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"); - while (n-- > 0) - { - FcVStack *v = FcVStackFetch (parse, n); - if (!parse->config->blanks) - { - parse->config->blanks = FcBlanksCreate (); - if (!parse->config->blanks) - goto bail; - } - 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) - { - for (i = begin; i <= end; i++) - { - if (!FcBlanksAdd (parse->config->blanks, i)) - goto bail; - } - } -#endif - break; - default: - FcConfigMessage (parse, FcSevereError, "invalid element in blank"); - break; - } - } - return; - bail: - FcConfigMessage (parse, FcSevereError, "out of memory"); -} - -static void FcParseRescan (FcConfigParse *parse) { int n = FcVStackElements (parse); @@ -1778,6 +1756,7 @@ FcParseAlias (FcConfigParse *parse) FcVStack *vstack; FcRule *rule = NULL, *r; FcValueBinding binding; + int n; if (!FcConfigLexBinding (parse, FcConfigGetAttribute (parse, "binding"), &binding)) return; @@ -1920,8 +1899,29 @@ FcParseAlias (FcConfigParse *parse) r = r->next; } } - if (!FcConfigAddRule (parse->config, rule, FcMatchPattern)) + if ((n = FcRuleSetAdd (parse->ruleset, rule, FcMatchPattern)) == -1) FcRuleDestroy (rule); + else + if (parse->config->maxObjects < n) + parse->config->maxObjects = n; +} + +static void +FcParseDescription (FcConfigParse *parse) +{ + const FcChar8 *domain; + FcChar8 *desc; + + domain = FcConfigGetAttribute (parse, "domain"); + desc = FcStrBufDone (&parse->pstack->str); + if (!desc) + { + FcConfigMessage (parse, FcSevereError, "out of memory"); + return; + } + FcRuleSetAddDescription (parse->ruleset, domain, desc); + + FcStrFree (desc); } static FcExpr * @@ -2154,9 +2154,9 @@ FcParseDir (FcConfigParse *parse) #endif if (strlen ((char *) data) == 0) FcConfigMessage (parse, FcSevereWarning, "empty font directory name ignored"); - else if (!FcStrUsesHome (data) || FcConfigHome ()) + else if (!parse->scanOnly && (!FcStrUsesHome (data) || FcConfigHome ())) { - if (!FcConfigAddDir (parse->config, data)) + if (!FcConfigAddFontDir (parse->config, data)) FcConfigMessage (parse, FcSevereError, "out of memory; cannot add directory %s", data); } FcStrBufDestroy (&parse->pstack->str); @@ -2270,7 +2270,7 @@ FcParseCacheDir (FcConfigParse *parse) #endif if (strlen ((char *) data) == 0) FcConfigMessage (parse, FcSevereWarning, "empty cache directory name ignored"); - else if (!FcStrUsesHome (data) || FcConfigHome ()) + else if (!parse->scanOnly && (!FcStrUsesHome (data) || FcConfigHome ())) { if (!FcConfigAddCacheDir (parse->config, data)) FcConfigMessage (parse, FcSevereError, "out of memory; cannot add cache directory %s", data); @@ -2311,6 +2311,8 @@ FcParseInclude (FcConfigParse *parse) #endif FcChar8 *prefix = NULL, *p; FcChar8 *userdir = NULL, *userconf = NULL; + FcRuleSet *ruleset; + FcMatchKind k; s = FcStrBufDoneStatic (&parse->pstack->str); if (!s) @@ -2394,7 +2396,25 @@ FcParseInclude (FcConfigParse *parse) goto userconf; } } - if (!FcConfigParseAndLoad (parse->config, s, !ignore_missing)) + /* flush the ruleset into the queue */ + ruleset = parse->ruleset; + parse->ruleset = FcRuleSetCreate (ruleset->name); + FcRuleSetEnable (parse->ruleset, ruleset->enabled); + FcRuleSetAddDescription (parse->ruleset, ruleset->domain, ruleset->description); + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + { + FcPtrListIter iter; + + FcPtrListIterInit (ruleset->subst[k], &iter); + if (FcPtrListIterIsValid (ruleset->subst[k], &iter)) + { + FcPtrListIterInitAtLast (parse->config->subst[k], &iter); + FcRuleSetReference (ruleset); + FcPtrListIterAdd (parse->config->subst[k], &iter, ruleset); + } + } + FcRuleSetDestroy (ruleset); + if (!_FcConfigParse (parse->config, s, !ignore_missing, !parse->scanOnly)) parse->error = FcTrue; #ifndef _WIN32 else @@ -2672,6 +2692,7 @@ FcParseMatch (FcConfigParse *parse) FcMatchKind kind; FcVStack *vstack; FcRule *rule = NULL, *r; + int n; kind_name = FcConfigGetAttribute (parse, "target"); if (!kind_name) @@ -2727,8 +2748,14 @@ FcParseMatch (FcConfigParse *parse) FcConfigMessage (parse, FcSevereWarning, "No nor elements in "); return; } - if (!FcConfigAddRule (parse->config, rule, kind)) + if ((n = FcRuleSetAdd (parse->ruleset, rule, kind)) == -1) + { FcConfigMessage (parse, FcSevereError, "out of memory"); + FcRuleDestroy (rule); + } + else + if (parse->config->maxObjects < n) + parse->config->maxObjects = n; } static void @@ -2740,17 +2767,17 @@ FcParseAcceptRejectFont (FcConfigParse *parse, FcElement element) { switch ((int) vstack->tag) { case FcVStackGlob: - if (!FcConfigGlobAdd (parse->config, - vstack->u.string, - element == FcElementAcceptfont)) + if (!parse->scanOnly && !FcConfigGlobAdd (parse->config, + vstack->u.string, + element == FcElementAcceptfont)) { FcConfigMessage (parse, FcSevereError, "out of memory"); } break; case FcVStackPattern: - if (!FcConfigPatternsAdd (parse->config, - vstack->u.pattern, - element == FcElementAcceptfont)) + if (!parse->scanOnly && !FcConfigPatternsAdd (parse->config, + vstack->u.pattern, + element == FcElementAcceptfont)) { FcConfigMessage (parse, FcSevereError, "out of memory"); } @@ -2935,10 +2962,10 @@ FcEndElement(void *userData, const XML_Char *name FC_UNUSED) case FcElementAlias: FcParseAlias (parse); break; - - case FcElementBlank: - FcParseBlank (parse); + case FcElementDescription: + FcParseDescription (parse); break; + case FcElementRescan: FcParseRescan (parse); break; @@ -3139,7 +3166,8 @@ static FcBool FcConfigParseAndLoadDir (FcConfig *config, const FcChar8 *name, const FcChar8 *dir, - FcBool complain) + FcBool complain, + FcBool load) { DIR *d; struct dirent *e; @@ -3178,7 +3206,10 @@ FcConfigParseAndLoadDir (FcConfig *config, if (FcDebug () & FC_DBG_CONFIG) printf ("\tScanning config dir %s\n", dir); - + + if (load) + FcConfigAddConfigDir (config, dir); + while (ret && (e = readdir (d))) { int d_len; @@ -3206,7 +3237,7 @@ FcConfigParseAndLoadDir (FcConfig *config, qsort (files->strs, files->num, sizeof (FcChar8 *), (int (*)(const void *, const void *)) FcSortCmpStr); for (i = 0; ret && i < files->num; i++) - ret = FcConfigParseAndLoad (config, files->strs[i], complain); + ret = _FcConfigParse (config, files->strs[i], complain, load); } bail3: FcStrSetDestroy (files); @@ -3223,79 +3254,34 @@ pfnGetSystemWindowsDirectory pGetSystemWindowsDirectory = NULL; pfnSHGetFolderPathA pSHGetFolderPathA = NULL; #endif -FcBool -FcConfigParseAndLoad (FcConfig *config, - const FcChar8 *name, - FcBool complain) +static FcBool +FcConfigParseAndLoadFromMemoryInternal (FcConfig *config, + const FcChar8 *filename, + const FcChar8 *buffer, + FcBool complain, + FcBool load) { XML_Parser p; - FcChar8 *filename, *f; - int fd; - int len; + size_t len; FcConfigParse parse; FcBool error = FcTrue; - const FcChar8 *sysroot = FcConfigGetSysRoot (config); + FcMatchKind k; + FcPtrListIter liter; #ifdef ENABLE_LIBXML2 xmlSAXHandler sax; - char buf[BUFSIZ]; #else - void *buf; + void *buf; + const FcChar8 *s; + size_t buflen; #endif -#ifdef _WIN32 - if (!pGetSystemWindowsDirectory) - { - HMODULE hk32 = GetModuleHandleA("kernel32.dll"); - if (!(pGetSystemWindowsDirectory = (pfnGetSystemWindowsDirectory) GetProcAddress(hk32, "GetSystemWindowsDirectoryA"))) - pGetSystemWindowsDirectory = (pfnGetSystemWindowsDirectory) GetWindowsDirectory; - } - if (!pSHGetFolderPathA) - { - HMODULE hSh = LoadLibraryA("shfolder.dll"); - /* the check is done later, because there is no provided fallback */ - if (hSh) - pSHGetFolderPathA = (pfnSHGetFolderPathA) GetProcAddress(hSh, "SHGetFolderPathA"); - } -#endif - - f = FcConfigFilename (name); - if (!f) - goto bail0; - if (sysroot) - filename = FcStrBuildFilename (sysroot, f, NULL); - else - filename = FcStrdup (f); - FcStrFree (f); - - if (FcStrSetMember (config->configFiles, filename)) - { - FcStrFree (filename); - return FcTrue; - } - - if (!FcStrSetAdd (config->configFiles, filename)) - { - FcStrFree (filename); - goto bail0; - } - - if (FcFileIsDir (filename)) - { - FcBool ret = FcConfigParseAndLoadDir (config, name, filename, complain); - FcStrFree (filename); - return ret; - } - + if (!buffer) + return FcFalse; + len = strlen ((const char *) buffer); if (FcDebug () & FC_DBG_CONFIG) - printf ("\tLoading config file %s\n", filename); - - fd = FcOpen ((char *) filename, O_RDONLY); - if (fd == -1) { - FcStrFree (filename); - goto bail0; - } + printf ("\t%s config file from %s\n", load ? "Loading" : "Scanning", filename); #ifdef ENABLE_LIBXML2 memset(&sax, 0, sizeof(sax)); @@ -3310,12 +3296,11 @@ FcConfigParseAndLoad (FcConfig *config, #else p = XML_ParserCreate ("UTF-8"); #endif - FcStrFree (filename); if (!p) goto bail1; - if (!FcConfigParseInit (&parse, name, config, p)) + if (!FcConfigParseInit (&parse, filename, config, p, load)) goto bail2; #ifndef ENABLE_LIBXML2 @@ -3328,52 +3313,196 @@ FcConfigParseAndLoad (FcConfig *config, #endif /* ENABLE_LIBXML2 */ - do { #ifndef ENABLE_LIBXML2 + s = buffer; + do { buf = XML_GetBuffer (p, BUFSIZ); if (!buf) { FcConfigMessage (&parse, FcSevereError, "cannot get parse buffer"); goto bail3; } -#endif - len = read (fd, buf, BUFSIZ); - if (len < 0) + if (len > BUFSIZ) { - FcConfigMessage (&parse, FcSevereError, "failed reading config file"); - goto bail3; + buflen = BUFSIZ; + len -= BUFSIZ; + } + else + { + buflen = len; + len = 0; } + memcpy (buf, s, buflen); + s = s + buflen; +#endif #ifdef ENABLE_LIBXML2 - if (xmlParseChunk (p, buf, len, len == 0)) + if (xmlParseChunk (p, (const char *)buffer, len, len == 0)) #else - if (!XML_ParseBuffer (p, len, len == 0)) + if (!XML_ParseBuffer (p, buflen, buflen == 0)) #endif { FcConfigMessage (&parse, FcSevereError, "%s", XML_ErrorString (XML_GetErrorCode (p))); goto bail3; } - } while (len != 0); +#ifndef ENABLE_LIBXML2 + } while (buflen != 0); +#endif error = parse.error; + if (load) + { + for (k = FcMatchKindBegin; k < FcMatchKindEnd; k++) + { + FcPtrListIter iter; + + FcPtrListIterInit (parse.ruleset->subst[k], &iter); + if (FcPtrListIterIsValid (parse.ruleset->subst[k], &iter)) + { + FcPtrListIterInitAtLast (parse.config->subst[k], &iter); + FcRuleSetReference (parse.ruleset); + FcPtrListIterAdd (parse.config->subst[k], &iter, parse.ruleset); + } + } + } + FcPtrListIterInitAtLast (parse.config->rulesetList, &liter); + FcRuleSetReference (parse.ruleset); + FcPtrListIterAdd (parse.config->rulesetList, &liter, parse.ruleset); bail3: FcConfigCleanup (&parse); bail2: XML_ParserFree (p); bail1: + if (error && complain) + { + FcConfigMessage (0, FcSevereError, "Cannot %s config file from %s", load ? "load" : "scan", filename); + return FcFalse; + } + if (FcDebug () & FC_DBG_CONFIG) + printf ("\t%s config file from %s done\n", load ? "Loading" : "Scanning", filename); + return FcTrue; +} + +static FcBool +_FcConfigParse (FcConfig *config, + const FcChar8 *name, + FcBool complain, + FcBool load) +{ + FcChar8 *filename = NULL, *realfilename = NULL; + int fd; + int len; + FcStrBuf sbuf; + char buf[BUFSIZ]; + FcBool ret = FcFalse; + +#ifdef _WIN32 + if (!pGetSystemWindowsDirectory) + { + HMODULE hk32 = GetModuleHandleA("kernel32.dll"); + if (!(pGetSystemWindowsDirectory = (pfnGetSystemWindowsDirectory) GetProcAddress(hk32, "GetSystemWindowsDirectoryA"))) + pGetSystemWindowsDirectory = (pfnGetSystemWindowsDirectory) GetWindowsDirectory; + } + if (!pSHGetFolderPathA) + { + HMODULE hSh = LoadLibraryA("shfolder.dll"); + /* the check is done later, because there is no provided fallback */ + if (hSh) + pSHGetFolderPathA = (pfnSHGetFolderPathA) GetProcAddress(hSh, "SHGetFolderPathA"); + } +#endif + + filename = FcConfigFilename (name); + if (!filename) + goto bail0; + realfilename = FcConfigRealFilename (config, name); + if (!realfilename) + goto bail0; + if (FcStrSetMember (config->availConfigFiles, realfilename)) + { + FcStrFree (filename); + FcStrFree (realfilename); + return FcTrue; + } + + if (load) + { + if (!FcStrSetAdd (config->configFiles, filename)) + goto bail0; + } + if (!FcStrSetAdd (config->availConfigFiles, realfilename)) + goto bail0; + + if (FcFileIsDir (realfilename)) + { + ret = FcConfigParseAndLoadDir (config, name, realfilename, complain, load); + FcStrFree (filename); + FcStrFree (realfilename); + return ret; + } + + FcStrBufInit (&sbuf, NULL, 0); + + fd = FcOpen ((char *) filename, O_RDONLY); + if (fd == -1) + goto bail1; + + do { + len = read (fd, buf, BUFSIZ); + if (len < 0) + { + FcConfigMessage (0, FcSevereError, "failed reading config file"); + close (fd); + goto bail1; + } + FcStrBufData (&sbuf, (const FcChar8 *)buf, len); + } while (len != 0); close (fd); - fd = -1; + + ret = FcConfigParseAndLoadFromMemoryInternal (config, filename, FcStrBufDoneStatic (&sbuf), complain, load); + complain = FcFalse; /* no need to reclaim here */ +bail1: + FcStrBufDestroy (&sbuf); bail0: - if (error && complain) + if (filename) + FcStrFree (filename); + if (realfilename) + FcStrFree (realfilename); + if (!ret && complain) { if (name) - FcConfigMessage (0, FcSevereError, "Cannot load config file \"%s\"", name); + FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\"", load ? "load" : "scan", name); else - FcConfigMessage (0, FcSevereError, "Cannot load default config file"); + FcConfigMessage (0, FcSevereError, "Cannot %s default config file", load ? "load" : "scan"); return FcFalse; } return FcTrue; } + +FcBool +FcConfigParseOnly (FcConfig *config, + const FcChar8 *name, + FcBool complain) +{ + return _FcConfigParse (config, name, complain, FcFalse); +} + +FcBool +FcConfigParseAndLoad (FcConfig *config, + const FcChar8 *name, + FcBool complain) +{ + return _FcConfigParse (config, name, complain, FcTrue); +} + +FcBool +FcConfigParseAndLoadFromMemory (FcConfig *config, + const FcChar8 *buffer, + FcBool complain) +{ + return FcConfigParseAndLoadFromMemoryInternal (config, (const FcChar8 *)"memory", buffer, complain, FcTrue); +} + #define __fcxml__ #include "fcaliastail.h" #undef __fcxml__ diff --git a/src/ftglue.h b/src/ftglue.h index e0fd171..650ee28 100644 --- a/src/ftglue.h +++ b/src/ftglue.h @@ -69,14 +69,14 @@ FT_BEGIN_HEADER #define GET_Byte() (*stream->cursor++) #define GET_Short() (stream->cursor += 2, (FT_Short)( \ - (*(((FT_Byte*)stream->cursor)-2) << 8) | \ - *(((FT_Byte*)stream->cursor)-1) \ + ((FT_ULong)*(((FT_Byte*)stream->cursor)-2) << 8) | \ + (FT_ULong)*(((FT_Byte*)stream->cursor)-1) \ )) #define GET_Long() (stream->cursor += 4, (FT_Long)( \ - (*(((FT_Byte*)stream->cursor)-4) << 24) | \ - (*(((FT_Byte*)stream->cursor)-3) << 16) | \ - (*(((FT_Byte*)stream->cursor)-2) << 8) | \ - *(((FT_Byte*)stream->cursor)-1) \ + ((FT_ULong)*(((FT_Byte*)stream->cursor)-4) << 24) | \ + ((FT_ULong)*(((FT_Byte*)stream->cursor)-3) << 16) | \ + ((FT_ULong)*(((FT_Byte*)stream->cursor)-2) << 8) | \ + (FT_ULong)*(((FT_Byte*)stream->cursor)-1) \ )) #define GET_Char() ((FT_Char)GET_Byte()) diff --git a/src/makealias b/src/makealias index e2f31c6..21de72e 100755 --- a/src/makealias +++ b/src/makealias @@ -14,7 +14,7 @@ while read name; do ;; *) alias="IA__$name" - hattr='__attribute((visibility("hidden")))' + hattr='FC_ATTRIBUTE_VISIBILITY_HIDDEN' echo "extern __typeof ($name) $alias $hattr;" >> $HEAD echo "#define $name $alias" >> $HEAD ifdef=`grep -l '^'$name'[ (]' "$SRCDIR"/*.c | sed -n 1p | sed -e 's/^.*\/\([^.]*\)\.c/__\1__/'` @@ -28,7 +28,7 @@ while read name; do last=$ifdef fi echo "# undef $name" >> $TAIL - cattr='__attribute((alias("'$alias'"), visibility("default")))' + cattr='__attribute((alias("'$alias'"))) FC_ATTRIBUTE_VISIBILITY_EXPORT' echo "extern __typeof ($name) $name $cattr;" >> $TAIL ;; esac diff --git a/test-driver b/test-driver index 8e575b0..0218a01 100755 --- a/test-driver +++ b/test-driver @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2013-07-13.22; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2017 Free Software Foundation, Inc. # # 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 @@ -143,6 +143,6 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/test/Makefile.am b/test/Makefile.am index 72923fa..75e326c 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -8,12 +8,21 @@ AM_TESTS_ENVIRONMENT= \ EXEEXT=${EXEEXT}; export EXEEXT; \ $(NULL) -SH_LOG_COMPILER = sh +BUILT_SOURCES = out.expected +SH_LOG_COMPILER = sh TESTS=run-test.sh TESTDATA=4x6.pcf 8x16.pcf out.expected fonts.conf.in +if FREETYPE_PCF_LONG_FAMILY_NAMES +$(srcdir)/out.expected: $(srcdir)/out.expected-long-family-names + cp $(srcdir)/out.expected-long-family-names $(srcdir)/out.expected +else +$(srcdir)/out.expected: $(srcdir)/out.expected-no-long-family-names + cp $(srcdir)/out.expected-no-long-family-names $(srcdir)/out.expected +endif + AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) check_PROGRAMS = @@ -31,6 +40,10 @@ test_bz89617_CFLAGS = \ test_bz89617_LDADD = $(top_builddir)/src/libfontconfig.la TESTS += test-bz89617 +check_PROGRAMS += test-bz131804 +test_bz131804_LDADD = $(top_builddir)/src/libfontconfig.la +TESTS += test-bz131804 + noinst_PROGRAMS = $(check_PROGRAMS) if !OS_WIN32 @@ -42,8 +55,10 @@ check_PROGRAMS += test-bz96676 test_bz96676_LDADD = $(top_builddir)/src/libfontconfig.la TESTS += test-bz96676 -EXTRA_DIST=$(check_SCRIPTS) $(TESTDATA) +EXTRA_DIST=run-test.sh $(TESTDATA) out.expected-long-family-names out.expected-no-long-family-names + +CLEANFILES=out fonts.conf -CLEANFILES= +MAINTAINERCLEANFILES=out.expected -include $(top_srcdir)/git.mk diff --git a/test/Makefile.in b/test/Makefile.in index 8436375..7ed1c78 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -88,9 +88,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -TESTS = run-test.sh test-bz89617$(EXEEXT) test-bz96676$(EXEEXT) -check_PROGRAMS = $(am__EXEEXT_1) test-bz89617$(EXEEXT) $(am__EXEEXT_2) \ +TESTS = run-test.sh test-bz89617$(EXEEXT) test-bz131804$(EXEEXT) \ test-bz96676$(EXEEXT) +check_PROGRAMS = $(am__EXEEXT_1) test-bz89617$(EXEEXT) \ + test-bz131804$(EXEEXT) $(am__EXEEXT_2) test-bz96676$(EXEEXT) @HAVE_PTHREAD_TRUE@am__append_1 = test-pthread @OS_WIN32_FALSE@am__append_2 = test-migration subdir = test @@ -98,10 +99,15 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_symbol.m4 \ $(top_srcdir)/m4/ax_cc_for_build.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -112,13 +118,16 @@ CONFIG_CLEAN_VPATH_FILES = @HAVE_PTHREAD_TRUE@am__EXEEXT_1 = test-pthread$(EXEEXT) @OS_WIN32_FALSE@am__EXEEXT_2 = test-migration$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) -test_bz89617_SOURCES = test-bz89617.c -test_bz89617_OBJECTS = test_bz89617-test-bz89617.$(OBJEXT) -test_bz89617_DEPENDENCIES = $(top_builddir)/src/libfontconfig.la +test_bz131804_SOURCES = test-bz131804.c +test_bz131804_OBJECTS = test-bz131804.$(OBJEXT) +test_bz131804_DEPENDENCIES = $(top_builddir)/src/libfontconfig.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = +test_bz89617_SOURCES = test-bz89617.c +test_bz89617_OBJECTS = test_bz89617-test-bz89617.$(OBJEXT) +test_bz89617_DEPENDENCIES = $(top_builddir)/src/libfontconfig.la test_bz89617_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_bz89617_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @@ -167,10 +176,10 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = test-bz89617.c test-bz96676.c test-migration.c \ - test-pthread.c -DIST_SOURCES = test-bz89617.c test-bz96676.c test-migration.c \ - test-pthread.c +SOURCES = test-bz131804.c test-bz89617.c test-bz96676.c \ + test-migration.c test-pthread.c +DIST_SOURCES = test-bz131804.c test-bz89617.c test-bz96676.c \ + test-migration.c test-pthread.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -440,7 +449,11 @@ FC_FONTPATH = @FC_FONTPATH@ FGREP = @FGREP@ FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ FREETYPE_LIBS = @FREETYPE_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GIT = @GIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GPERF = @GPERF@ GREP = @GREP@ HASDOCBOOK = @HASDOCBOOK@ @@ -452,8 +465,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -465,11 +482,16 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -489,15 +511,13 @@ PKGCONFIG_REQUIRES_PRIVATELY = @PKGCONFIG_REQUIRES_PRIVATELY@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PKG_EXPAT_CFLAGS = @PKG_EXPAT_CFLAGS@ +PKG_EXPAT_LIBS = @PKG_EXPAT_LIBS@ +POSUB = @POSUB@ PREFERRED_HINTING = @PREFERRED_HINTING@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ RM = @RM@ SED = @SED@ @@ -505,8 +525,14 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TEMPLATEDIR = @TEMPLATEDIR@ +USE_NLS = @USE_NLS@ +UUID_CFLAGS = @UUID_CFLAGS@ +UUID_LIBS = @UUID_LIBS@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLDIR = @XMLDIR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -553,13 +579,9 @@ ms_librarian = @ms_librarian@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -578,6 +600,7 @@ AM_TESTS_ENVIRONMENT = \ EXEEXT=${EXEEXT}; export EXEEXT; \ $(NULL) +BUILT_SOURCES = out.expected SH_LOG_COMPILER = sh TESTDATA = 4x6.pcf 8x16.pcf out.expected fonts.conf.in AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) @@ -586,12 +609,15 @@ test_bz89617_CFLAGS = \ -DSRCDIR="\"$(abs_srcdir)\"" test_bz89617_LDADD = $(top_builddir)/src/libfontconfig.la +test_bz131804_LDADD = $(top_builddir)/src/libfontconfig.la noinst_PROGRAMS = $(check_PROGRAMS) @OS_WIN32_FALSE@test_migration_LDADD = $(top_builddir)/src/libfontconfig.la test_bz96676_LDADD = $(top_builddir)/src/libfontconfig.la -EXTRA_DIST = $(check_SCRIPTS) $(TESTDATA) -CLEANFILES = -all: all-am +EXTRA_DIST = run-test.sh $(TESTDATA) out.expected-long-family-names out.expected-no-long-family-names +CLEANFILES = out fonts.conf +MAINTAINERCLEANFILES = out.expected +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs @@ -643,6 +669,10 @@ clean-noinstPROGRAMS: echo " rm -f" $$list; \ rm -f $$list +test-bz131804$(EXEEXT): $(test_bz131804_OBJECTS) $(test_bz131804_DEPENDENCIES) $(EXTRA_test_bz131804_DEPENDENCIES) + @rm -f test-bz131804$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_bz131804_OBJECTS) $(test_bz131804_LDADD) $(LIBS) + test-bz89617$(EXEEXT): $(test_bz89617_OBJECTS) $(test_bz89617_DEPENDENCIES) $(EXTRA_test_bz89617_DEPENDENCIES) @rm -f test-bz89617$(EXEEXT) $(AM_V_CCLD)$(test_bz89617_LINK) $(test_bz89617_OBJECTS) $(test_bz89617_LDADD) $(LIBS) @@ -665,6 +695,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-bz131804.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-bz96676.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-migration.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pthread.Po@am__quote@ @@ -911,6 +942,13 @@ test-bz89617.log: test-bz89617$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-bz131804.log: test-bz131804$(EXEEXT) + @p='test-bz131804$(EXEEXT)'; \ + b='test-bz131804'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-bz96676.log: test-bz96676$(EXEEXT) @p='test-bz96676$(EXEEXT)'; \ b='test-bz96676'; \ @@ -966,10 +1004,12 @@ distdir: $(DISTFILES) check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: -install: install-am +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -1003,6 +1043,8 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ @@ -1074,7 +1116,7 @@ ps-am: uninstall-am: -.MAKE: check-am install-am install-strip +.MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool \ @@ -1094,6 +1136,11 @@ uninstall-am: .PRECIOUS: Makefile +@FREETYPE_PCF_LONG_FAMILY_NAMES_TRUE@$(srcdir)/out.expected: $(srcdir)/out.expected-long-family-names +@FREETYPE_PCF_LONG_FAMILY_NAMES_TRUE@ cp $(srcdir)/out.expected-long-family-names $(srcdir)/out.expected +@FREETYPE_PCF_LONG_FAMILY_NAMES_FALSE@$(srcdir)/out.expected: $(srcdir)/out.expected-no-long-family-names +@FREETYPE_PCF_LONG_FAMILY_NAMES_FALSE@ cp $(srcdir)/out.expected-no-long-family-names $(srcdir)/out.expected + -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/test/out.expected-long-family-names b/test/out.expected-long-family-names new file mode 100644 index 0000000..d069723 --- /dev/null +++ b/test/out.expected-long-family-names @@ -0,0 +1,8 @@ +Misc Fixed:pixelsize=6 +Sony Fixed:pixelsize=16 += +Misc Fixed:pixelsize=6 +Sony Fixed:pixelsize=16 += +Misc Fixed:pixelsize=6 +Sony Fixed:pixelsize=16 diff --git a/test/out.expected-no-long-family-names b/test/out.expected-no-long-family-names new file mode 100644 index 0000000..39634c5 --- /dev/null +++ b/test/out.expected-no-long-family-names @@ -0,0 +1,8 @@ +Fixed:pixelsize=16 +Fixed:pixelsize=6 += +Fixed:pixelsize=16 +Fixed:pixelsize=6 += +Fixed:pixelsize=16 +Fixed:pixelsize=6 diff --git a/test/run-test.sh b/test/run-test.sh index 97df6e5..436dee1 100644 --- a/test/run-test.sh +++ b/test/run-test.sh @@ -29,12 +29,18 @@ TESTDIR=${srcdir-"$MyPWD"} FONTDIR="$MyPWD"/fonts CACHEDIR="$MyPWD"/cache.dir +EXPECTED=${EXPECTED-"out.expected"} ECHO=true FCLIST=../fc-list/fc-list$EXEEXT FCCACHE=../fc-cache/fc-cache$EXEEXT +which bwrap > /dev/null 2>&1 +if [ $? -eq 0 ]; then + BWRAP=`which bwrap` +fi + FONT1=$TESTDIR/4x6.pcf FONT2=$TESTDIR/8x16.pcf @@ -45,9 +51,9 @@ check () { echo "=" >> out $FCLIST - family pixelsize | sort >> out tr -d '\015' out.tmp; mv out.tmp out - if cmp out $TESTDIR/out.expected > /dev/null ; then : ; else + if cmp out $TESTDIR/$EXPECTED > /dev/null ; then : ; else echo "*** Test failed: $TEST" - echo "*** output is in 'out', expected output in 'out.expected'" + echo "*** output is in 'out', expected output in '$EXPECTED'" exit 1 fi rm out @@ -115,4 +121,85 @@ mkdir $FONTDIR/a cp $FONT2 $FONTDIR/a check +dotest "Re-creating .uuid" +prep +cp $FONT1 $FONTDIR +$FCCACHE $FONTDIR +cat $FONTDIR/.uuid > out1 +$FCCACHE -f $FONTDIR +cat $FONTDIR/.uuid > out2 +if cmp out1 out2 > /dev/null ; then : ; else + echo "*** Test failed: $TEST" + echo "*** .uuid was modified unexpectedly" + exit 1 +fi +$FCCACHE -r $FONTDIR +cat $FONTDIR/.uuid > out2 +if cmp out1 out2 > /dev/null ; then + echo "*** Test failed: $TEST" + echo "*** .uuid wasn't modified" + exit 1 +fi +rm out1 out2 + +dotest "Consistency between .uuid and cache name" +prep +cp $FONT1 $FONTDIR +$FCCACHE $FONTDIR +cat $FONTDIR/.uuid +$FCCACHE -r $FONTDIR +uuid=`cat $FONTDIR/.uuid` +ls $CACHEDIR/$uuid* +if [ $? != 0 ]; then + echo "*** Test failed: $TEST" + echo "No cache for $uuid" + ls $CACHEDIR + exit 1 +fi +n=`ls -1 $CACHEDIR/*cache-* | wc -l` +if [ $n != 1 ]; then + echo "*** Test failed: $TEST" + echo "Unexpected cache was created" + ls $CACHEDIR + exit 1 +fi + +dotest "Keep mtime of the font directory" +prep +cp $FONT1 $FONTDIR +touch -d @0 $FONTDIR +stat $FONTDIR | grep Modify > out1 +$FCCACHE $FONTDIR +stat $FONTDIR | grep Modify > out2 +if cmp out1 out2 > /dev/null ; then : ; else + echo "*** Test failed: $TEST" + echo "mtime was modified" + exit 1 +fi + +if [ x"$BWRAP" != "x" ]; then +dotest "Basic functionality with the bind-mounted cache dir" +prep +cp $FONT1 $FONT2 $FONTDIR +$FCCACHE $FONTDIR +sleep 1 +ls -l $CACHEDIR > out1 +TESTTMPDIR=`mktemp -d /tmp/fontconfig.XXXXXXXX` +sed "s!@FONTDIR@!$TESTTMPDIR/fonts! +s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < $TESTDIR/fonts.conf.in > bind-fonts.conf +$BWRAP --bind / / --bind $CACHEDIR $TESTTMPDIR/cache.dir --bind $FONTDIR $TESTTMPDIR/fonts --bind .. $TESTTMPDIR/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE $TESTTMPDIR/build/test/bind-fonts.conf $TESTTMPDIR/build/fc-match/fc-match$EXEEXT -f "%{file}\n" ":foundry=Misc" > xxx +ls -l $CACHEDIR > out2 +if cmp out1 out2 > /dev/null ; then : ; else + echo "*** Test failed: $TEST" + echo "cache was updated." + exit 1 +fi +if [ x`cat xxx` != "x$TESTTMPDIR/fonts/4x6.pcf" ]; then + echo "*** Test failed: $TEST" + echo "file property doesn't points to the new place: $TESTTMPDIR/fonts/4x6.pcf" + exit 1 +fi +rm -rf $TESTTMPDIR out1 out2 xxx bind-fonts.conf +fi + rm -rf $FONTDIR $CACHEFILE $CACHEDIR $FONTCONFIG_FILE out diff --git a/test/test-bz131804.c b/test/test-bz131804.c new file mode 100644 index 0000000..99f87e9 --- /dev/null +++ b/test/test-bz131804.c @@ -0,0 +1,135 @@ +/* + * fontconfig/test/test-bz89617.c + * + * Copyright © 2000 Keith Packard + * Copyright © 2015 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 +#include + +FcLangResult +comp(const FcChar8 *l1, const FcChar8 *l2) +{ + FcLangSet *ls1, *ls2; + FcLangResult result; + + ls1 = FcLangSetCreate(); + ls2 = FcLangSetCreate(); + FcLangSetAdd(ls1, l1); + FcLangSetAdd(ls2, l2); + + result = FcLangSetCompare(ls1, ls2); + FcLangSetDestroy(ls1); + FcLangSetDestroy(ls2); + + return result; +} + +int +main(void) +{ + int i = 1; + + /* 1 */ + if (comp((const FcChar8 *)"ku-am", (const FcChar8 *)"ku-iq") != FcLangDifferentTerritory) + return i; + i++; + /* 2 */ + if (comp((const FcChar8 *)"ku-am", (const FcChar8 *)"ku-ir") != FcLangDifferentTerritory) + return i; + i++; + /* 3 */ + if (comp((const FcChar8 *)"ku-am", (const FcChar8 *)"ku-tr") != FcLangDifferentTerritory) + return i; + i++; + /* 4 */ + if (comp((const FcChar8 *)"ku-iq", (const FcChar8 *)"ku-ir") != FcLangDifferentTerritory) + return i; + i++; + /* 5 */ + if (comp((const FcChar8 *)"ku-iq", (const FcChar8 *)"ku-tr") != FcLangDifferentTerritory) + return i; + i++; + /* 6 */ + if (comp((const FcChar8 *)"ku-ir", (const FcChar8 *)"ku-tr") != FcLangDifferentTerritory) + return i; + i++; + /* 7 */ + if (comp((const FcChar8 *)"ps-af", (const FcChar8 *)"ps-pk") != FcLangDifferentTerritory) + return i; + i++; + /* 8 */ + if (comp((const FcChar8 *)"ti-er", (const FcChar8 *)"ti-et") != FcLangDifferentTerritory) + return i; + i++; + /* 9 */ + if (comp((const FcChar8 *)"zh-cn", (const FcChar8 *)"zh-hk") != FcLangDifferentTerritory) + return i; + i++; + /* 10 */ + if (comp((const FcChar8 *)"zh-cn", (const FcChar8 *)"zh-mo") != FcLangDifferentTerritory) + return i; + i++; + /* 11 */ + if (comp((const FcChar8 *)"zh-cn", (const FcChar8 *)"zh-sg") != FcLangDifferentTerritory) + return i; + i++; + /* 12 */ + if (comp((const FcChar8 *)"zh-cn", (const FcChar8 *)"zh-tw") != FcLangDifferentTerritory) + return i; + i++; + /* 13 */ + if (comp((const FcChar8 *)"zh-hk", (const FcChar8 *)"zh-mo") != FcLangDifferentTerritory) + return i; + i++; + /* 14 */ + if (comp((const FcChar8 *)"zh-hk", (const FcChar8 *)"zh-sg") != FcLangDifferentTerritory) + return i; + i++; + /* 15 */ + if (comp((const FcChar8 *)"zh-hk", (const FcChar8 *)"zh-tw") != FcLangDifferentTerritory) + return i; + i++; + /* 16 */ + if (comp((const FcChar8 *)"zh-mo", (const FcChar8 *)"zh-sg") != FcLangDifferentTerritory) + return i; + i++; + /* 17 */ + if (comp((const FcChar8 *)"zh-mo", (const FcChar8 *)"zh-tw") != FcLangDifferentTerritory) + return i; + i++; + /* 18 */ + if (comp((const FcChar8 *)"zh-sg", (const FcChar8 *)"zh-tw") != FcLangDifferentTerritory) + return i; + i++; + /* 19 */ + if (comp((const FcChar8 *)"mn-mn", (const FcChar8 *)"mn-cn") != FcLangDifferentTerritory) + return i; + i++; + /* 20 */ + if (comp((const FcChar8 *)"pap-an", (const FcChar8 *)"pap-aw") != FcLangDifferentTerritory) + return i; + i++; + + return 0; +} + + diff --git a/test/test-migration.c b/test/test-migration.c index bcd805d..b7d96dc 100644 --- a/test/test-migration.c +++ b/test/test-migration.c @@ -22,6 +22,9 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include #include #include